diff --git a/.eslintrc.json b/.eslintrc.json index d69801c82..817b1966d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,7 +8,9 @@ "mocha": true }, "rules": { - "@typescript-eslint/indent": ["error", 2, { "SwitchCase": 1, "ignoredNodes": ["PropertyDefinition"] }] + "@typescript-eslint/indent": ["error", 2, { "SwitchCase": 1, "ignoredNodes": ["PropertyDefinition"] }], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unsafe-declaration-merging": "off" }, "overrides": [{ "files": ["*.test.ts"], diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b0bd700b1..dc7707c19 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -42,7 +42,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set e2e environment variables - run: echo -e "\nVUE_APP_E2E=true\nVUE_APP_X_USER=john-doe\nVUE_APP_X_PERMISSION=pipelines:read,pipelines:write" >> .local.env + run: echo -e "\nVITE_E2E=true\nVITE_X_USER=john-doe\nVITE_X_PERMISSION=pipelines:read,pipelines:write" >> .local.env - uses: ./.github/workflows/setup-env - run: yarn seed-data diff --git a/.lando.yml b/.lando.yml index f98ab0a77..64b28bfe6 100644 --- a/.lando.yml +++ b/.lando.yml @@ -5,7 +5,7 @@ env_file: services: core: type: node:custom - command: mkdir -p /var/www/.npm-global/lib && npx nodemon -w packages -w apis --verbose --ext ts,ttl,js,trig --ignore **/*.test.ts --ignore **/*.spec-graphs.ts --exec node --inspect=0.0.0.0:45671 -r ts-node/register --inspect apis/core/index.ts + command: mkdir -p /var/www/.npm-global/lib && npx nodemon -w packages -w apis --verbose --ext ts,ttl,js,trig --ignore **/*.test.ts --ignore **/*.spec-graphs.ts --exec node --inspect=0.0.0.0:45671 --loader ts-node/esm --inspect apis/core/index.ts ssl: true overrides: image: node:18 @@ -23,7 +23,7 @@ services: - 45671 ui: type: node:custom - command: (cd ui; yarn serve --public app.cube-creator.lndo.site --hostname 0.0.0.0 --port 80) + command: (cd ui; npm i; yarn serve --host 0.0.0.0 --port 80) ssl: true overrides: image: node:18 diff --git a/.local.env b/.local.env index ffbae4f53..8976f6b62 100644 --- a/.local.env +++ b/.local.env @@ -19,11 +19,11 @@ AUTH_ISSUER=https://keycloak.zazukoians.org/realms/zazuko-dev AUTH_CLIENT_ID=cube-creator AUTH_ACCESS_REQUEST=https://sts001-r.bar.admin.ch/_pep/accessRequest?appl=BAR-Pipelines -# VUE_APP_ prefix to expose them to the ui/public/index.html template. +# VITE_ prefix to expose them to the ui/public/index.html template. # Keep in sync with the variables above -VUE_APP_AUTH_ISSUER=https://keycloak.zazukoians.org/realms/zazuko-dev -VUE_APP_AUTH_CLIENT_ID=cube-creator -VUE_APP_API_CORE_BASE=https://cube-creator.lndo.site/ +VITE_AUTH_ISSUER=https://keycloak.zazukoians.org/realms/zazuko-dev +VITE_AUTH_CLIENT_ID=cube-creator +VITE_API_CORE_BASE=https://cube-creator.lndo.site/ # S3 config AWS_S3_ENDPOINT=https://s3.cube-creator.lndo.site diff --git a/README.md b/README.md index 03af437d8..379e2b703 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,9 @@ It is obtained from [keycloak](https://keycloak.zazukoians.org/admin/master/cons Alternatively, you can bypass authentication altogether by setting the environment variables in `.env` similar to the following example: ```dotenv -VUE_APP_E2E=true -VUE_APP_X_USER=john-doe -VUE_APP_X_PERMISSION=pipelines:read,pipelines:write +VITE_E2E=true +VITE_X_USER=john-doe +VITE_X_PERMISSION=pipelines:read,pipelines:write ``` If you have already started the application, make sure to run `lando rebuild -y` to apply the changes. @@ -94,9 +94,9 @@ We use Cypress to run UI e2e tests. To simplify the tests, we circumvent authentication in the app. For that, the following variables need to be set in `.env` before running the UI: ``` -VUE_APP_E2E=true -VUE_APP_X_USER=john-doe -VUE_APP_X_PERMISSION=pipelines:read,pipelines:write +VITE_E2E=true +VITE_X_USER=john-doe +VITE_X_PERMISSION=pipelines:read,pipelines:write ``` We need a running instance of the app to test. The easiest way is to start lando: `lando start` diff --git a/apis/core/bootstrap/entrypoint.ts b/apis/core/bootstrap/entrypoint.ts index a792ab2fd..5bebc3cab 100644 --- a/apis/core/bootstrap/entrypoint.ts +++ b/apis/core/bootstrap/entrypoint.ts @@ -1,7 +1,7 @@ import { turtle } from '@tpluscode/rdf-string' import { dcat, hydra } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' export const entrypoint = turtle` <> { diff --git a/apis/core/bootstrap/index.ts b/apis/core/bootstrap/index.ts index c73c16ad5..f8d56331e 100644 --- a/apis/core/bootstrap/index.ts +++ b/apis/core/bootstrap/index.ts @@ -1,11 +1,11 @@ import * as core from '@cube-creator/core/bootstrap' -import env from '@cube-creator/core/env' -import { log } from '../lib/log' -import { cubeProjects } from './cube-projects' -import { entrypoint } from './entrypoint' -import { organizations } from './organizations' -import shapes from './shapes' -import { users } from './users' +import env from '@cube-creator/core/env/node' +import { log } from '../lib/log.js' +import { cubeProjects } from './cube-projects.js' +import { entrypoint } from './entrypoint.js' +import { organizations } from './organizations.js' +import shapes from './shapes/index.js' +import { users } from './users.js' const resources = [cubeProjects, entrypoint, organizations, ...shapes, users] diff --git a/apis/core/bootstrap/lib/query.ts b/apis/core/bootstrap/lib/query.ts index 425e7c851..e6f5d53f4 100644 --- a/apis/core/bootstrap/lib/query.ts +++ b/apis/core/bootstrap/lib/query.ts @@ -1,7 +1,7 @@ import type { NamedNode } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { SparqlTemplateResult } from '@tpluscode/rdf-string' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' export function lindasQuery(query: SparqlTemplateResult): NamedNode { return $rdf.namedNode(`${env.PUBLIC_QUERY_ENDPOINT}?query=${encodeURIComponent(query.toString())}`) diff --git a/apis/core/bootstrap/shapes/column-mapping.ts b/apis/core/bootstrap/shapes/column-mapping.ts index c65198ccd..c64c6bb10 100644 --- a/apis/core/bootstrap/shapes/column-mapping.ts +++ b/apis/core/bootstrap/shapes/column-mapping.ts @@ -3,7 +3,7 @@ import { supportedLanguages } from '@cube-creator/core/languages' import { datatypes } from '@cube-creator/core/datatypes' import { dash, hydra, rdfs, sh, csvw, xsd } from '@tpluscode/rdf-ns-builders' import { turtle } from '@tpluscode/rdf-string' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' const literalShapeId = shape('column-mapping/literal') const referenceShapeId = shape('column-mapping/reference') diff --git a/apis/core/bootstrap/shapes/csv-source.ts b/apis/core/bootstrap/shapes/csv-source.ts index c5b158609..a55f3cea0 100644 --- a/apis/core/bootstrap/shapes/csv-source.ts +++ b/apis/core/bootstrap/shapes/csv-source.ts @@ -1,7 +1,7 @@ import { cc, shape } from '@cube-creator/core/namespace' import { csvw, dash, hydra, rdf, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { turtle } from '@tpluscode/rdf-string' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' const shapeCreateId = shape('csv-source/create') const shapeUpdateId = shape('csv-source/update') diff --git a/apis/core/bootstrap/shapes/cube-project.ts b/apis/core/bootstrap/shapes/cube-project.ts index af9ab29f4..5e545283c 100644 --- a/apis/core/bootstrap/shapes/cube-project.ts +++ b/apis/core/bootstrap/shapes/cube-project.ts @@ -1,7 +1,7 @@ import { cc, sh1, shape, editor } from '@cube-creator/core/namespace' import { dash, dcterms, hydra, rdf, rdfs, schema, sh } from '@tpluscode/rdf-ns-builders' import { turtle } from '@tpluscode/rdf-string' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' const cubeIdPattern = $rdf.literal('^[a-zA-Z0-9/\\-._,]+[^/]$') diff --git a/apis/core/bootstrap/shapes/dataset.ts b/apis/core/bootstrap/shapes/dataset.ts index c0ad13f99..6ed542702 100644 --- a/apis/core/bootstrap/shapes/dataset.ts +++ b/apis/core/bootstrap/shapes/dataset.ts @@ -2,10 +2,10 @@ import { shape, editor, lindasSchema } from '@cube-creator/core/namespace' import { supportedLanguages } from '@cube-creator/core/languages' import { hydra, rdfs, sh, dcat, dcterms, xsd, rdf, vcard, schema, _void, dash, skos } from '@tpluscode/rdf-ns-builders' import { sparql, turtle } from '@tpluscode/rdf-string' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { Draft } from '@cube-creator/model/Cube' -import env from '@cube-creator/core/env' -import { lindasQuery } from '../lib/query' +import env from '@cube-creator/core/env/node' +import { lindasQuery } from '../lib/query.js' const shapeId = shape('dataset/edit-metadata') const temporalFromTo = $rdf.namedNode(shapeId.value + '#temporalFromTo') diff --git a/apis/core/bootstrap/shapes/dimension.ts b/apis/core/bootstrap/shapes/dimension.ts index aa35e5574..9b0163522 100644 --- a/apis/core/bootstrap/shapes/dimension.ts +++ b/apis/core/bootstrap/shapes/dimension.ts @@ -2,10 +2,10 @@ import { cc, meta, shape, sh1, cube, md, relation, editor } from '@cube-creator/ import { supportedLanguages } from '@cube-creator/core/languages' import { sparql, turtle } from '@tpluscode/rdf-string' import { dash, hydra, prov, rdf, rdfs, schema, sh, qudt, time, xsd } from '@tpluscode/rdf-ns-builders' -import namespace from '@rdfjs/namespace' -import { lindasQueryTemplate } from '../lib/query' +import $rdf from '@zazuko/env' +import { lindasQueryTemplate } from '../lib/query.js' -const sou = namespace('http://qudt.org/vocab/sou/') +const sou = $rdf.namespace('http://qudt.org/vocab/sou/') const unitsQuery = sparql` CONSTRUCT diff --git a/apis/core/bootstrap/shapes/index.ts b/apis/core/bootstrap/shapes/index.ts index b12ae734f..8d7acf7bb 100644 --- a/apis/core/bootstrap/shapes/index.ts +++ b/apis/core/bootstrap/shapes/index.ts @@ -1,10 +1,10 @@ -import { CubeProjectShape } from './cube-project' -import { TableShape } from './table' -import { DatasetShape } from './dataset' -import { CSVSourceCreateShape, CSVSourceUpdateShape } from './csv-source' -import { JobUpdateShape, JobTriggerShape } from './jobs' -import { ColumnMappingShape } from './column-mapping' -import { DimensionMetadataShape, SharedDimensionMappingShape, SharedDimensionMappingImportShape } from './dimension' +import { CubeProjectShape } from './cube-project.js' +import { TableShape } from './table.js' +import { DatasetShape } from './dataset.js' +import { CSVSourceCreateShape, CSVSourceUpdateShape } from './csv-source.js' +import { JobUpdateShape, JobTriggerShape } from './jobs.js' +import { ColumnMappingShape } from './column-mapping.js' +import { DimensionMetadataShape, SharedDimensionMappingShape, SharedDimensionMappingImportShape } from './dimension.js' export default [ CubeProjectShape, diff --git a/apis/core/bootstrap/shapes/jobs.ts b/apis/core/bootstrap/shapes/jobs.ts index 8f45fa6bd..d3fd476fa 100644 --- a/apis/core/bootstrap/shapes/jobs.ts +++ b/apis/core/bootstrap/shapes/jobs.ts @@ -1,7 +1,7 @@ import { turtle } from '@tpluscode/rdf-string' import { shape } from '@cube-creator/core/namespaces/shapes' import { dcterms, hydra, rdfs, schema, sh } from '@tpluscode/rdf-ns-builders' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { cc } from '@cube-creator/core/namespace' let jobTriggerProperties = turtle`` diff --git a/apis/core/bootstrap/shapes/table.ts b/apis/core/bootstrap/shapes/table.ts index c7d05a195..922432a42 100644 --- a/apis/core/bootstrap/shapes/table.ts +++ b/apis/core/bootstrap/shapes/table.ts @@ -59,7 +59,7 @@ ${shape('table/create')} { ${commonProperties} ${sh.property} [ ${sh.name} "Columns to map" ; - ${sh.descriptin} "These columns will be mapped in the new table with default parameters that you can change later."; + ${sh.description} "These columns will be mapped in the new table with default parameters that you can change later."; ${sh.path} ${csvw.column} ; ${sh.class} ${csvw.Column} ; ${dash.hidden} ${true} ; diff --git a/apis/core/index.ts b/apis/core/index.ts index 1a7a76312..16f6369ff 100644 --- a/apis/core/index.ts +++ b/apis/core/index.ts @@ -6,22 +6,28 @@ import express from 'express' import * as Sentry from '@sentry/node' import * as Tracing from '@sentry/tracing' import { hydraBox } from '@hydrofoil/labyrinth' -import { problemJson } from '@hydrofoil/labyrinth/errors' +import { problemJson } from '@hydrofoil/labyrinth/errors.js' import { sharedDimensions } from '@cube-creator/shared-dimensions-api' import { resource } from 'express-rdf-request' import cors from 'cors' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { errorMappers } from '@cube-creator/api-errors' -import { error, log } from './lib/log' -import authentication from './lib/auth' -import { bootstrap } from './bootstrap' -import { resourceStore } from './lib/middleware/resource' -import { expectsDisambiguate, preferHydraCollection } from './lib/middleware/operations' -import './lib/domain' -import upload from './lib/upload' -import Loader from './lib/Loader' -import * as s3 from './lib/storage/s3' -import { version } from './package.json' +import $rdf from '@cube-creator/env' +import Environment from '@zazuko/env/Environment.js' +import Fs from '@zazuko/rdf-utils-fs/Factory.js' +import asyncMiddleware from 'middleware-async' +import { error, log } from './lib/log.js' +import authentication from './lib/auth.js' +import { bootstrap } from './bootstrap/index.js' +import { resourceStore } from './lib/middleware/resource.js' +import { expectsDisambiguate, preferHydraCollection } from './lib/middleware/operations.js' +import upload from './lib/upload.js' +import Loader from './lib/Loader.js' +import * as s3 from './lib/storage/s3.js' +import pkg from './package.json' assert { type: 'json' } +import './lib/domain/index.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) const apiPath = path.resolve(__dirname, 'hydra') const codePath = path.resolve(__dirname, 'lib') @@ -48,7 +54,7 @@ async function main() { app.enable('trust proxy') app.use((req, res, next) => { - res.setHeader('x-cube-creator', version) + res.setHeader('x-cube-creator', pkg.version) next() }) @@ -83,7 +89,8 @@ async function main() { app.use('/upload', upload) app.use(resourceStore) - app.use(await hydraBox({ + app.use(asyncMiddleware(await hydraBox({ + env: new Environment([Fs], { parent: $rdf }), apiPath, codePath, baseUri, @@ -100,12 +107,12 @@ async function main() { expectsDisambiguate, ], }, - loader: new Loader({ + loader: new Loader($rdf, { endpointUrl, user, password, }), - })) + }))) app.use(Sentry.Handlers.errorHandler()) app.use(problemJson({ errorMappers, captureNotFound: true })) diff --git a/apis/core/lib/ChangelogDataset.ts b/apis/core/lib/ChangelogDataset.ts index 4ba43ea5a..002d9198e 100644 --- a/apis/core/lib/ChangelogDataset.ts +++ b/apis/core/lib/ChangelogDataset.ts @@ -1,5 +1,5 @@ import type { DatasetCore, Quad } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' interface Changes { added: DatasetCore diff --git a/apis/core/lib/Loader.ts b/apis/core/lib/Loader.ts index 53af5611a..ef2dfb7b5 100644 --- a/apis/core/lib/Loader.ts +++ b/apis/core/lib/Loader.ts @@ -1,14 +1,11 @@ import type { NamedNode } from '@rdfjs/types' -import { SparqlQueryLoader } from '@hydrofoil/labyrinth/lib/loader' -import { PropertyResource, Resource } from 'hydra-box' -import ParsingClient from 'sparql-http-client/ParsingClient' +import { SparqlQueryLoader } from '@hydrofoil/labyrinth/lib/loader.js' +import { PropertyResource, Resource } from '@kopflos-cms/core' +import ParsingClient from 'sparql-http-client/ParsingClient.js' import { SELECT } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' -import TermSet from '@rdfjs/term-set' -import TermMap from '@rdfjs/term-map' +import $rdf from '@zazuko/env' import { as, hydra } from '@tpluscode/rdf-ns-builders' import { IN, VALUES } from '@tpluscode/sparql-builder/expressions' -import clownface from 'clownface' import express from 'express' interface CreateResourceGetters { @@ -28,7 +25,7 @@ export default class Loader extends SparqlQueryLoader { const client: ParsingClient = (this as any).__client const createDatasetGetters: CreateResourceGetters = (this as any).__createDatasetGetters.bind(this) - const supportedProperties = clownface(req.hydra.api) + const supportedProperties = $rdf.clownface(req.hydra.api) .any() .has(hydra.supportedProperty) .out(hydra.supportedProperty) @@ -44,7 +41,7 @@ export default class Loader extends SparqlQueryLoader { FILTER (?link NOT ${IN(...excludedProperties)}) } - `.execute(client.query) + `.execute(client) const resources = links.reduce((set, { parent, link }) => { if (parent.termType !== 'NamedNode' || link.termType !== 'NamedNode') { @@ -56,14 +53,14 @@ export default class Loader extends SparqlQueryLoader { property: link, object: term, prefetchDataset: $rdf.dataset(), - types: new TermSet(), + types: $rdf.termSet(), ...createDatasetGetters(parent), } resource.prefetchDataset.add($rdf.quad(parent, link, term)) return set.set(parent, resource) - }, new TermMap()) + }, $rdf.termMap()) if (resources.size) { const typesQuery = [...resources.keys()].reduce((query, graph) => { @@ -75,7 +72,7 @@ export default class Loader extends SparqlQueryLoader { } `) - const types = await typesQuery.execute(client.query) + const types = await typesQuery.execute(client) for (const { parent, type } of types) { if (parent.termType !== 'NamedNode' || type.termType !== 'NamedNode') { continue diff --git a/apis/core/lib/ResourceStore.ts b/apis/core/lib/ResourceStore.ts index 23ff7e005..a029283c2 100644 --- a/apis/core/lib/ResourceStore.ts +++ b/apis/core/lib/ResourceStore.ts @@ -1,18 +1,16 @@ import type { NamedNode, Quad, Term } from '@rdfjs/types' -import type StreamClient from 'sparql-http-client/StreamClient' -import cf, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { StreamClient } from 'sparql-http-client/StreamClient.js' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { CONSTRUCT, INSERT } from '@tpluscode/sparql-builder' -import TermMap from '@rdfjs/term-map' import { as, hydra, rdf } from '@tpluscode/rdf-ns-builders' -import { warn } from '@hydrofoil/labyrinth/lib/logger' +import { warn } from '@hydrofoil/labyrinth/lib/logger.js' import { sparql, SparqlTemplateResult } from '@tpluscode/rdf-string' -import TermSet from '@rdfjs/term-set' -import RdfResource, { RdfResourceCore, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' +import { RdfResourceCore, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' import { Link } from '@cube-creator/model/lib/Link' -import { ChangelogDataset } from './ChangelogDataset' -import * as Activity from './activity/index' +import { ChangelogDataset } from './ChangelogDataset.js' +import * as Activity from './activity/index.js' interface ResourceCreationOptions { implicitlyDereferencable?: boolean @@ -73,11 +71,11 @@ export class SparqlStoreFacade implements TripleStoreFacade { } async loadResource(term: NamedNode): Promise> | undefined> { - const stream = await CONSTRUCT`?s ?p ?o` + const stream = CONSTRUCT`?s ?p ?o` .WHERE`GRAPH ${term} { ?s ?p ?o }` - .execute(this.__client.query) + .execute(this.__client) - const resource = cf({ dataset: new ChangelogDataset(await $rdf.dataset().import(stream)), term }) + const resource = $rdf.clownface({ dataset: new ChangelogDataset(await $rdf.dataset().import(stream)), term }) if (!resource.dataset.size) { return undefined @@ -90,7 +88,7 @@ export class SparqlStoreFacade implements TripleStoreFacade { const now = Activity.now() const actor = this.getUser?.() - const graphsToDelete = new TermSet([...deletedResources]) + const graphsToDelete = $rdf.termSet([...deletedResources]) let shouldUpdate = graphsToDelete.size > 0 const commands: SparqlTemplateResult[] = [...deletedResources] .flatMap(id => [...SparqlStoreFacade.deleteResourceCommands(id, now, actor)]) @@ -165,13 +163,13 @@ export class SparqlStoreFacade implements TripleStoreFacade { export default class implements ResourceStore { private readonly __storage: TripleStoreFacade - private readonly __resources: TermMap> - private readonly __deletedGraphs: TermSet + private readonly __resources: Map> + private readonly __deletedGraphs: Set constructor(clientOrStore: StreamClient | TripleStoreFacade) { this.__storage = 'store' in clientOrStore ? new SparqlStoreFacade(clientOrStore) : clientOrStore - this.__resources = new TermMap() - this.__deletedGraphs = new TermSet() + this.__resources = $rdf.termMap() + this.__deletedGraphs = $rdf.termSet() } async get(id: string | Term | undefined | Link, opts?: GetOptions): Promise> { @@ -214,7 +212,7 @@ export default class implements ResourceStore { const pointer = await this.get(id, opts) if (!pointer) return undefined - return RdfResource.factory.createEntity(pointer) + return $rdf.rdfine().factory.createEntity(pointer) } async save(): Promise { @@ -231,7 +229,7 @@ export default class implements ResourceStore { throw new Error(`Resource <${id.value}> already exists`) } - const pointer = cf({ dataset: new ChangelogDataset($rdf.dataset()), term: id }) + const pointer = $rdf.clownface({ dataset: new ChangelogDataset($rdf.dataset()), term: id }) if (implicitlyDereferencable) { pointer.addOut(rdf.type, hydra.Resource) diff --git a/apis/core/lib/activity/index.ts b/apis/core/lib/activity/index.ts index 7e8b35efd..fe700f719 100644 --- a/apis/core/lib/activity/index.ts +++ b/apis/core/lib/activity/index.ts @@ -1,5 +1,5 @@ -import $rdf from 'rdf-ext' -import env from '@cube-creator/core/env' +import $rdf from '@zazuko/env' +import env from '@cube-creator/core/env/node' import { nanoid } from 'nanoid' export function newId() { diff --git a/apis/core/lib/auth.ts b/apis/core/lib/auth.ts index 1cd43a8bb..fc4700592 100644 --- a/apis/core/lib/auth.ts +++ b/apis/core/lib/auth.ts @@ -1,14 +1,13 @@ import { Router, Request, Response, NextFunction, RequestHandler } from 'express' import error from 'http-errors' -import env from '@cube-creator/core/env' -import fetch from 'node-fetch' +import env from '@cube-creator/core/env/node' +import $rdf from '@cube-creator/env' import { expressjwt } from 'express-jwt' import { expressJwtSecret, GetVerificationKey } from 'jwks-rsa' import { DELETE } from '@tpluscode/sparql-builder' import { hydra, schema } from '@tpluscode/rdf-ns-builders' -import TermSet from '@rdfjs/term-set' -import { log, warning } from './log' -import * as idOf from './domain/identifiers' +import { log, warning } from './log.js' +import * as idOf from './domain/identifiers.js' declare module '@hydrofoil/labyrinth' { export interface User { @@ -93,7 +92,7 @@ export default async () => { } function updateUserResource(): RequestHandler { - const users = new TermSet() + const users = $rdf.termSet() return (req, res, next) => { if (req.user?.id && !users.has(req.user.id)) { @@ -115,7 +114,7 @@ function updateUserResource(): RequestHandler { ${id} ${schema.name} ?name . } } - `.execute(req.labyrinth.sparql.query) + `.execute(req.labyrinth.sparql) .catch(warning) }) } diff --git a/apis/core/lib/csvw-builder/index.ts b/apis/core/lib/csvw-builder/index.ts index 0938adb3b..b315074f5 100644 --- a/apis/core/lib/csvw-builder/index.ts +++ b/apis/core/lib/csvw-builder/index.ts @@ -1,6 +1,5 @@ import type { Term } from '@rdfjs/types' -import * as Csvw from '@rdfine/csvw' -import TermMap from '@rdfjs/term-map' +import type * as Csvw from '@rdfine/csvw' import { ColumnMapping, CsvColumn, @@ -10,21 +9,15 @@ import { ReferenceColumnMapping, Table, } from '@cube-creator/model' -import cf from 'clownface' -import $rdf from 'rdf-ext' -import RdfResource from '@tpluscode/rdfine' +import $rdf from '@cube-creator/env' import { Initializer } from '@tpluscode/rdfine/RdfResource' import type { Organization } from '@rdfine/schema' import { cc } from '@cube-creator/core/namespace' import { DefaultCsvwLiteral } from '@cube-creator/core/mapping' -import { qudt } from '@tpluscode/rdf-ns-builders/strict' -import { ResourceStore } from '../ResourceStore' -import { warning } from '../log' -import { findOrganization } from '../domain/organization/query' - -RdfResource.factory.addMixin( - ...Object.values(Csvw), -) +import { qudt } from '@tpluscode/rdf-ns-builders' +import { ResourceStore } from '../ResourceStore.js' +import { warning } from '../log.js' +import { findOrganization } from '../domain/organization/query.js' function unmappedColumn({ column }: { column: CsvColumn }): Initializer { const initializer: Initializer = { @@ -118,7 +111,7 @@ async function mappedReferenceColumn({ cubeIdentifier, organization, columnMappi } async function * buildColumns({ cubeIdentifier, table, source, resources, organization }: CsvwBuildingContext & { table: Table }) { - const unmappedColumns = new TermMap([...source.columns.map<[Term, CsvColumn]>(c => [c.id, c])]) + const unmappedColumns = $rdf.termMap([...source.columns.map<[Term, CsvColumn]>(c => [c.id, c])]) for (const columnMappingLink of table.columnMappings) { const columnMapping = await resources.getResource(columnMappingLink.id, { allowMissing: true }) @@ -185,7 +178,7 @@ export async function buildCsvw({ table, resources }: { table: Table; resources: column.push(csvwColumn) } - const csvw = new Csvw.TableMixin.Class(cf({ dataset: $rdf.dataset(), term: table.csvw.id }), { + const csvw = $rdf.rdfine.csvw.Table($rdf.clownface({ dataset: $rdf.dataset(), term: table.csvw.id }), { url: source.id.value, dialect: { ...source.dialect.toJSON(), diff --git a/apis/core/lib/domain/Resource.ts b/apis/core/lib/domain/Resource.ts index ff3761d97..b55dd5b61 100644 --- a/apis/core/lib/domain/Resource.ts +++ b/apis/core/lib/domain/Resource.ts @@ -1,9 +1,10 @@ import type { DatasetCore } from '@rdfjs/types' import { Constructor } from '@tpluscode/rdfine' import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' -import { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' +import toCanonical from 'rdf-dataset-ext/toCanonical.js' declare module '@tpluscode/rdfine' { interface RdfResource { @@ -24,7 +25,7 @@ export default function Mixin(Resource: Base) { const otherCanonical = 'toCanonical' in otherDataset ? otherDataset : $rdf.dataset([...otherDataset]) // compare their canonical N-Quads representations - return thisDatasetExt.toCanonical() === otherCanonical.toCanonical() + return toCanonical(thisDatasetExt) === toCanonical(otherCanonical) } } } diff --git a/apis/core/lib/domain/column-mapping/ColumnMapping.ts b/apis/core/lib/domain/column-mapping/ColumnMapping.ts index 56fd8e3b9..beefb1359 100644 --- a/apis/core/lib/domain/column-mapping/ColumnMapping.ts +++ b/apis/core/lib/domain/column-mapping/ColumnMapping.ts @@ -40,7 +40,7 @@ export function ReferenceColumnMappingMixin createIdentifierMapping(this.pointer.blankNode(), { + this.identifierMapping = referencedColumns.map(referencedColumn => createIdentifierMapping(this.env, this.pointer.blankNode(), { referencedColumn, })) } diff --git a/apis/core/lib/domain/column-mapping/create.ts b/apis/core/lib/domain/column-mapping/create.ts index 4b95996ff..76dc3c8ea 100644 --- a/apis/core/lib/domain/column-mapping/create.ts +++ b/apis/core/lib/domain/column-mapping/create.ts @@ -1,6 +1,6 @@ import type { NamedNode, Term } from '@rdfjs/types' import { cc } from '@cube-creator/core/namespace' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { CsvSource, DimensionMetadataCollection, @@ -10,13 +10,13 @@ import { } from '@cube-creator/model' import { NotFoundError, DomainError } from '@cube-creator/api-errors' import { rdf } from '@tpluscode/rdf-ns-builders' -import TermSet from '@rdfjs/term-set' +import $rdf from '@zazuko/env' import type { Organization } from '@rdfine/schema' import { CsvProject } from '@cube-creator/model/Project' -import { findOrganization } from '../organization/query' -import { ResourceStore } from '../../ResourceStore' -import { getDimensionMetaDataCollection } from '../queries/dimension-metadata' -import { findMapping } from './lib' +import { findOrganization } from '../organization/query.js' +import { ResourceStore } from '../../ResourceStore.js' +import { getDimensionMetaDataCollection } from '../queries/dimension-metadata.js' +import { findMapping } from './lib/index.js' interface CreateColumnMappingCommand { tableId: NamedNode @@ -41,7 +41,7 @@ export async function createColumnMapping({ const source = await store.getResource(table.csvSource?.id) - const resourceTypes = new TermSet(resource.out(rdf.type).terms) + const resourceTypes = $rdf.termSet(resource.out(rdf.type).terms) const columnMapping = resourceTypes.has(cc.ReferenceColumnMapping) ? await createReferenceColumnMapping({ targetProperty, table, source, resource, store }) : await createLiteralColumnMapping({ targetProperty, table, source, resource, store }) diff --git a/apis/core/lib/domain/column-mapping/delete.ts b/apis/core/lib/domain/column-mapping/delete.ts index c5eadf753..535168c63 100644 --- a/apis/core/lib/domain/column-mapping/delete.ts +++ b/apis/core/lib/domain/column-mapping/delete.ts @@ -1,13 +1,15 @@ import type { NamedNode } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' import type { Organization } from '@rdfine/schema' import { ColumnMapping, DimensionMetadataCollection, CsvProject, Table } from '@cube-creator/model' -import { ResourceStore } from '../../ResourceStore' -import { getDimensionMetaDataCollection } from '../queries/dimension-metadata' -import * as TableQueries from '../queries/table' -import * as ColumnMappingQueries from '../queries/column-mapping' -import { findOrganization } from '../organization/query' +import { ResourceStore } from '../../ResourceStore.js' +import { getDimensionMetaDataCollection } from '../queries/dimension-metadata.js' +import * as TableQueries from '../queries/table.js' +import * as ColumnMappingQueries from '../queries/column-mapping.js' +import { findOrganization } from '../organization/query.js' +import { getTableForColumnMapping } from '../queries/table.js' +import { dimensionIsUsedByOtherMapping } from '../queries/column-mapping.js' interface DeleteColumnMappingCommand { resource: NamedNode @@ -19,8 +21,6 @@ interface DeleteColumnMappingCommand { export async function deleteColumnMapping({ resource, store, - tableQueries: { getTableForColumnMapping } = TableQueries, - columnMappingQueries: { dimensionIsUsedByOtherMapping } = ColumnMappingQueries, }: DeleteColumnMappingCommand): Promise { const columnMapping = await store.getResource(resource, { allowMissing: true }) if (!columnMapping) return diff --git a/apis/core/lib/domain/column-mapping/lib/index.ts b/apis/core/lib/domain/column-mapping/lib/index.ts index f82312de2..8c7dbd1ae 100644 --- a/apis/core/lib/domain/column-mapping/lib/index.ts +++ b/apis/core/lib/domain/column-mapping/lib/index.ts @@ -1,8 +1,8 @@ import type { Term } from '@rdfjs/types' import { ColumnMapping, CsvProject, Table } from '@cube-creator/model' import type { Organization } from '@rdfine/schema' -import { ResourceStore } from '../../../ResourceStore' -import { findOrganization } from '../../organization/query' +import { ResourceStore } from '../../../ResourceStore.js' +import { findOrganization } from '../../organization/query.js' export async function findMapping(table: Table, targetProperty: Term, store: ResourceStore): Promise { const { organizationId, projectId } = await findOrganization({ table }) diff --git a/apis/core/lib/domain/column-mapping/update.ts b/apis/core/lib/domain/column-mapping/update.ts index 9fc12ff21..616a62921 100644 --- a/apis/core/lib/domain/column-mapping/update.ts +++ b/apis/core/lib/domain/column-mapping/update.ts @@ -1,5 +1,6 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' import { cc } from '@cube-creator/core/namespace' import { ColumnMapping, @@ -14,28 +15,25 @@ import { NotFoundError, DomainError } from '@cube-creator/api-errors' import { createIdentifierMapping } from '@cube-creator/model/ColumnMapping' import type { Organization } from '@rdfine/schema' import { Dictionary } from '@rdfine/prov' -import { ResourceStore } from '../../ResourceStore' -import { getDimensionMetaDataCollection } from '../queries/dimension-metadata' -import * as TableQueries from '../queries/table' -import * as id from '../identifiers' -import { findOrganization } from '../organization/query' -import { findMapping } from './lib' +import { ResourceStore } from '../../ResourceStore.js' +import { getDimensionMetaDataCollection } from '../queries/dimension-metadata.js' +import { getTableForColumnMapping } from '../queries/table.js' +import * as id from '../identifiers.js' +import { findOrganization } from '../organization/query.js' +import { findMapping } from './lib/index.js' interface UpdateColumnMappingCommand { resource: GraphPointer store: ResourceStore - tableQueries?: Pick } export async function updateLiteralColumnMapping({ resource, store, - tableQueries = TableQueries, }: UpdateColumnMappingCommand): Promise { const { columnMapping, table } = await updateColumnMapping({ resource, store, - tableQueries, }) const columnId = resource.out(cc.sourceColumn).term! @@ -62,12 +60,10 @@ export async function updateLiteralColumnMapping({ export async function updateReferenceColumnMapping({ resource, store, - tableQueries = TableQueries, }: UpdateColumnMappingCommand): Promise { const { columnMapping, table } = await updateColumnMapping({ resource, store, - tableQueries, }) // Update referencedTable @@ -91,6 +87,7 @@ export async function updateReferenceColumnMapping({ if (!referencedColumn) throw new NotFoundError(referencedColumnId) return createIdentifierMapping( + $rdf, columnMapping.pointer.node(id.identifierMapping(columnMapping)), { sourceColumn, referencedColumn }, ) @@ -104,7 +101,6 @@ export async function updateReferenceColumnMapping({ async function updateColumnMapping({ resource, store, - tableQueries: { getTableForColumnMapping } = TableQueries, }: UpdateColumnMappingCommand): Promise<{ columnMapping: T; table: Table }> { const columnMapping = await store.getResource(resource.term) diff --git a/apis/core/lib/domain/csv-mapping/CsvMapping.ts b/apis/core/lib/domain/csv-mapping/CsvMapping.ts index e961f59a5..a5534335f 100644 --- a/apis/core/lib/domain/csv-mapping/CsvMapping.ts +++ b/apis/core/lib/domain/csv-mapping/CsvMapping.ts @@ -2,15 +2,11 @@ import type { NamedNode } from '@rdfjs/types' import { Constructor } from '@tpluscode/rdfine' import { rdf } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import * as Hydra from '@rdfine/hydra' -import RdfResource from '@tpluscode/rdfine/RdfResource' import { CsvMapping } from '@cube-creator/model' import * as CsvSource from '@cube-creator/model/CsvSource' import * as Table from '@cube-creator/model/Table' -import { ResourceStore } from '../../ResourceStore' -import * as id from '../identifiers' - -RdfResource.factory.addMixin(...Object.values(Hydra)) +import { ResourceStore } from '../../ResourceStore.js' +import * as id from '../identifiers.js' interface AddSource { fileName: string @@ -43,7 +39,7 @@ export default function Mixin { const csvMappingResource = await store.get(csvMapping, { allowMissing: true }) diff --git a/apis/core/lib/domain/csv-source/CsvSource.ts b/apis/core/lib/domain/csv-source/CsvSource.ts index e447355da..3d13d79b6 100644 --- a/apis/core/lib/domain/csv-source/CsvSource.ts +++ b/apis/core/lib/domain/csv-source/CsvSource.ts @@ -2,12 +2,10 @@ import type { NamedNode } from '@rdfjs/types' import { cc } from '@cube-creator/core/namespace' import { CsvSource } from '@cube-creator/model' import * as CsvColumn from '@cube-creator/model/CsvColumn' -import { fromPointer as mediaObjectFromPointer } from '@cube-creator/model/MediaObject' import { Constructor, property } from '@tpluscode/rdfine' import { csvw, schema } from '@tpluscode/rdf-ns-builders' import type * as Csvw from '@rdfine/csvw' -import { DialectMixin } from '@rdfine/csvw' -import * as id from '../identifiers' +import * as id from '../identifiers.js' interface CreateOrUpdateColumn { name: string @@ -42,7 +40,7 @@ export default function Mixin 0, }) as any @@ -75,7 +73,7 @@ export default function Mixin @@ -22,7 +22,7 @@ export async function update({ store, getStorage = getMediaStorage, }: UpdateCsvSourceCommand): Promise { - const changed = RdfResource.factory.createEntity(resource) + const changed = $rdf.rdfine().factory.createEntity(resource) const csvSource = await store.getResource(resource.term) csvSource.name = changed.name diff --git a/apis/core/lib/domain/csv-source/upload.ts b/apis/core/lib/domain/csv-source/upload.ts index 01a00aa02..19238bdb1 100644 --- a/apis/core/lib/domain/csv-source/upload.ts +++ b/apis/core/lib/domain/csv-source/upload.ts @@ -1,17 +1,17 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { schema } from '@tpluscode/rdf-ns-builders' -import { Conflict } from 'http-errors' +import httpError from 'http-errors' import { CsvMapping } from '@cube-creator/model' import { cc } from '@cube-creator/core/namespace' -import { error } from '../../log' -import { ResourceStore } from '../../ResourceStore' -import { loadFileHeadString } from '../csv/file-head' -import { sniffParse } from '../csv' -import { sampleValues } from '../csv/sample-values' -import * as CsvSourceQueries from '../queries/csv-source' -import type { GetMediaStorage } from '../../storage' -import { getMediaStorage } from '../../storage' +import { error } from '../../log.js' +import { ResourceStore } from '../../ResourceStore.js' +import { loadFileHeadString } from '../csv/file-head.js' +import { sniffParse } from '../csv/index.js' +import { sampleValues } from '../csv/sample-values.js' +import * as CsvSourceQueries from '../queries/csv-source.js' +import type { GetMediaStorage } from '../../storage/index.js' +import { getMediaStorage } from '../../storage/index.js' interface CreateCSVSourceCommand { csvMappingId: NamedNode @@ -36,7 +36,7 @@ export async function createCSVSource({ const location = (resource.out(schema.contentUrl).term || undefined) as NamedNode | undefined if (await sourceWithFilenameExists(csvMapping.id, fileName)) { - throw new Conflict(`A file with ${fileName} has already been added to the project`) + throw new httpError.Conflict(`A file with ${fileName} has already been added to the project`) } const csvSource = csvMapping.addSource(store, { fileName }) diff --git a/apis/core/lib/domain/cube-projects/Project.ts b/apis/core/lib/domain/cube-projects/Project.ts index 5986a071a..e0e6839d7 100644 --- a/apis/core/lib/domain/cube-projects/Project.ts +++ b/apis/core/lib/domain/cube-projects/Project.ts @@ -2,14 +2,13 @@ import type { NamedNode, Term } from '@rdfjs/types' import { CsvProject, Project, CsvMapping, ImportProject } from '@cube-creator/model' import { Constructor } from '@tpluscode/rdfine' import { create as createMapping } from '@cube-creator/model/CsvMapping' -import '../csv-mapping/CsvMapping' +import '../csv-mapping/CsvMapping.js' import { cc } from '@cube-creator/core/namespace' -import * as Hydra from '@rdfine/hydra' import { rdf } from '@tpluscode/rdf-ns-builders' import { childResource } from '@cube-creator/model/lib/resourceIdentifiers' import { DomainError } from '@cube-creator/api-errors' -import * as id from '../identifiers' -import { ResourceStore } from '../../ResourceStore' +import * as id from '../identifiers.js' +import { ResourceStore } from '../../ResourceStore.js' interface ApiProject { nextRevision: number @@ -53,7 +52,7 @@ export function ProjectMixin @@ -41,7 +42,7 @@ async function createCsvProjectResource({ user, projectNode, store, label, maint throw new DomainError('Another project is already using same identifier') } - const project = Project.createCsvProject(projectNode, { + const project = Project.createCsvProject($rdf, projectNode, { creator: user, label, maintainer, @@ -49,7 +50,7 @@ async function createCsvProjectResource({ user, projectNode, store, label, maint sourceKind, }) - const dataset = Dataset.create(store.create(project.dataset.id)) + const dataset = Dataset.create($rdf, store.create(project.dataset.id)) project.initializeCsvMapping(store) const organization = await store.getResource(project.maintainer) @@ -87,7 +88,7 @@ async function createImportProjectResources({ resource, user, projectNode, store throw new DomainError("Imported cube does not match the Organisation's base URI") } - const project = Project.createImportProject(projectNode, { + const project = Project.createImportProject($rdf, projectNode, { creator: user, label, maintainer, @@ -97,7 +98,7 @@ async function createImportProjectResources({ resource, user, projectNode, store sourceKind, }) - const dataset = Dataset.create(store.create(project.dataset.id), { + const dataset = Dataset.create($rdf, store.create(project.dataset.id), { [dcterms.identifier.value]: project.sourceCube, }) dataset.addCube(project.sourceCube, user) @@ -156,7 +157,7 @@ export async function createProject({ } project.initializeJobCollection(store) - DimensionMetadata.createCollection(store.create(dataset.dimensionMetadata.id)) + DimensionMetadata.createCollection($rdf, store.create(dataset.dimensionMetadata.id)) if (isImportProject) { const job = await createImportJob({ diff --git a/apis/core/lib/domain/cube-projects/delete.ts b/apis/core/lib/domain/cube-projects/delete.ts index c1bcba509..98912e1b6 100644 --- a/apis/core/lib/domain/cube-projects/delete.ts +++ b/apis/core/lib/domain/cube-projects/delete.ts @@ -1,9 +1,9 @@ import type { NamedNode } from '@rdfjs/types' import { Project } from '@cube-creator/model' -import { ParsingClient } from 'sparql-http-client/ParsingClient' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' import { SELECT } from '@tpluscode/sparql-builder' -import { ResourceStore } from '../../ResourceStore' -import { deleteMapping } from '../csv-mapping/delete' +import { ResourceStore } from '../../ResourceStore.js' +import { deleteMapping } from '../csv-mapping/delete.js' interface DeleteProjectCommand { resource: NamedNode @@ -30,7 +30,7 @@ export async function deleteProject({ ?s ?p ?o } filter(strstarts(str(?graph), "${project.id.value}")) - `.execute(client.query) + `.execute(client) for (const { graph } of graphs) { if (graph) { diff --git a/apis/core/lib/domain/cube-projects/details.ts b/apis/core/lib/domain/cube-projects/details.ts index 9567f55a8..c2dc04f2d 100644 --- a/apis/core/lib/domain/cube-projects/details.ts +++ b/apis/core/lib/domain/cube-projects/details.ts @@ -1,10 +1,10 @@ import type { Variable, Literal, NamedNode } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { CONSTRUCT, sparql } from '@tpluscode/sparql-builder' import { SparqlGraphQueryExecutable, SparqlQuery, SparqlQueryExecutable } from '@tpluscode/sparql-builder/lib' -import { schema } from '@tpluscode/rdf-ns-builders/strict' +import { schema } from '@tpluscode/rdf-ns-builders' import { lindasSchema } from '@cube-creator/core/namespace' -import * as DetailParts from './details/index' +import * as DetailParts from './details/index.js' export interface ProjectDetailPart { (project: NamedNode, variable: Variable): [SparqlQueryExecutable, ...[Literal, ...Literal[]]] diff --git a/apis/core/lib/domain/cube-projects/details/index.ts b/apis/core/lib/domain/cube-projects/details/index.ts index a4762af3d..42bf21029 100644 --- a/apis/core/lib/domain/cube-projects/details/index.ts +++ b/apis/core/lib/domain/cube-projects/details/index.ts @@ -1,4 +1,4 @@ -export * from './metadata' -export * from './lastModification' -export * from './versions' -export * from './plannedUpdate' +export * from './metadata.js' +export * from './lastModification.js' +export * from './versions.js' +export * from './plannedUpdate.js' diff --git a/apis/core/lib/domain/cube-projects/details/lastModification.ts b/apis/core/lib/domain/cube-projects/details/lastModification.ts index 8d508e2a1..f97d00551 100644 --- a/apis/core/lib/domain/cube-projects/details/lastModification.ts +++ b/apis/core/lib/domain/cube-projects/details/lastModification.ts @@ -1,7 +1,7 @@ import { SELECT } from '@tpluscode/sparql-builder' import { IN } from '@tpluscode/sparql-builder/expressions' -import { as } from '@tpluscode/rdf-ns-builders/strict' -import $rdf from 'rdf-ext' +import { as } from '@tpluscode/rdf-ns-builders' +import $rdf from '@zazuko/env' import type { ProjectDetailPart } from '../details.js' export const lastModification: ProjectDetailPart = (project, variable) => { diff --git a/apis/core/lib/domain/cube-projects/details/metadata.ts b/apis/core/lib/domain/cube-projects/details/metadata.ts index 1436263a5..6d934e580 100644 --- a/apis/core/lib/domain/cube-projects/details/metadata.ts +++ b/apis/core/lib/domain/cube-projects/details/metadata.ts @@ -1,7 +1,7 @@ import { SELECT } from '@tpluscode/sparql-builder' -import { schema } from '@tpluscode/rdf-ns-builders/strict' +import { schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import type { ProjectDetailPart } from '../details.js' export const projectStatus: ProjectDetailPart = (project, status) => { diff --git a/apis/core/lib/domain/cube-projects/details/plannedUpdate.ts b/apis/core/lib/domain/cube-projects/details/plannedUpdate.ts index 4ead3439a..58b0bf653 100644 --- a/apis/core/lib/domain/cube-projects/details/plannedUpdate.ts +++ b/apis/core/lib/domain/cube-projects/details/plannedUpdate.ts @@ -1,5 +1,5 @@ import { SELECT } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc, lindasSchema } from '@cube-creator/core/namespace' import type { ProjectDetailPart } from '../details.js' diff --git a/apis/core/lib/domain/cube-projects/details/versions.ts b/apis/core/lib/domain/cube-projects/details/versions.ts index c1c36e3e4..cfac58a34 100644 --- a/apis/core/lib/domain/cube-projects/details/versions.ts +++ b/apis/core/lib/domain/cube-projects/details/versions.ts @@ -3,7 +3,7 @@ import { SELECT } from '@tpluscode/sparql-builder' import { Draft, Published } from '@cube-creator/model/Cube' import { cc } from '@cube-creator/core/namespace' import { schema } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import type { ProjectDetailPart } from '../details.js' function versionQuery(project: Term, variable: Term, status: Term) { diff --git a/apis/core/lib/domain/cube-projects/export.ts b/apis/core/lib/domain/cube-projects/export.ts index 5039842c5..47810239f 100644 --- a/apis/core/lib/domain/cube-projects/export.ts +++ b/apis/core/lib/domain/cube-projects/export.ts @@ -5,11 +5,10 @@ import { SELECT } from '@tpluscode/sparql-builder' import { IN } from '@tpluscode/sparql-builder/expressions' import StreamClient from 'sparql-http-client' import through2 from 'through2' -import $rdf from 'rdf-ext' -import { dcterms, schema } from '@tpluscode/rdf-ns-builders' -import { rdfs } from '@tpluscode/rdf-ns-builders/strict' -import { streamClient } from '../../query-client' -import { ResourceStore } from '../../ResourceStore' +import $rdf from '@zazuko/env' +import { dcterms, schema, rdfs } from '@tpluscode/rdf-ns-builders' +import { streamClient } from '../../query-client.js' +import { ResourceStore } from '../../ResourceStore.js' interface GetExportedProject { resource: NamedNode @@ -78,7 +77,7 @@ export async function getExportedProject({ resource, store, client = streamClien ?g != ${project.id} || ( ?g = ${project.id} && ?s = ${project.id} ) ) ` - .execute(client.query) + .execute(client) const projectNamespace = new RegExp(`^${project.id.value}/?`) function removeBase(term: T): T { diff --git a/apis/core/lib/domain/cube-projects/import.ts b/apis/core/lib/domain/cube-projects/import.ts index 0c20f319d..126b591ea 100644 --- a/apis/core/lib/domain/cube-projects/import.ts +++ b/apis/core/lib/domain/cube-projects/import.ts @@ -1,20 +1,20 @@ import { Transform } from 'stream' import type { DatasetCore, NamedNode, Quad, Term } from '@rdfjs/types' -import { BadRequest } from 'http-errors' -import $rdf from 'rdf-ext' +import httpError from 'http-errors' +import $rdf from '@cube-creator/env' import { cc } from '@cube-creator/core/namespace' import { Files } from '@cube-creator/express/multipart' import { createMinimalProject, Project } from '@cube-creator/model/Project' -import { dcterms, rdfs, schema, rdf } from '@tpluscode/rdf-ns-builders/strict' -import clownface, { GraphPointer } from 'clownface' +import { dcterms, rdfs, schema, rdf } from '@tpluscode/rdf-ns-builders' +import type { GraphPointer } from 'clownface' import { obj } from 'through2' -import TermSet from '@rdfjs/term-set' import { Organization } from '@rdfine/schema' -import QuadExt from 'rdf-ext/lib/Quad' -import { DomainError } from '../../../../errors/domain' -import * as id from '../identifiers' -import { ResourceStore } from '../../ResourceStore' -import { exists } from './queries' +import { DomainError } from '../../../../errors/domain.js' +import * as id from '../identifiers.js' +import { ResourceStore } from '../../ResourceStore.js' +import { exists } from './queries.js' + +const { BadRequest } = httpError interface ImportProject { projectsCollection: GraphPointer @@ -29,7 +29,7 @@ interface ImportedProject { importedDataset: DatasetCore } -const sourceKinds = new TermSet([ +const sourceKinds = $rdf.termSet([ cc['projectSourceKind/ExistingCube'], cc['projectSourceKind/CSV'], ]) @@ -66,17 +66,17 @@ function alignCubeNamespace(before: string, after: string) { return term } - return ({ subject, predicate, object, graph }: QuadExt): QuadExt => { + return ({ subject, predicate, object, graph }: Quad): Quad => { return $rdf.quad(rewrite(subject), rewrite(predicate), rewrite(object), graph) } } function setCsvSourceErrors(dataset: DatasetCore) { // errors will notify users that CSVs need to be uploaded - clownface({ dataset }) + $rdf.clownface({ dataset }) .has(rdf.type, cc.CSVSource) .forEach(source => { - clownface({ dataset, graph: source.term }) + $rdf.clownface({ dataset, graph: source.term }) .node(source) .addOut(schema.error, 'CSV must be uploaded after importing project') }) @@ -100,7 +100,7 @@ export async function importProject({ const projectNode = await store.createMember(projectsCollection.term, id.cubeProject(label)) - const project = createMinimalProject(projectNode, { + const project = createMinimalProject($rdf, projectNode, { creator: user, maintainer, label, @@ -116,7 +116,7 @@ export async function importProject({ await importedDataset.import(next(project.id.value + '/').pipe(adjustTerms(project))) } - const importedProject = clownface({ dataset: importedDataset, graph: project.id }).node(project.id) + const importedProject = $rdf.clownface({ dataset: importedDataset, graph: project.id }).node(project.id) const cubeIdentifier = resource.out(dcterms.identifier).value || importedProject.out(dcterms.identifier).value if (!cubeIdentifier) { throw new BadRequest('Missing cube identifier name in imported data') @@ -145,7 +145,7 @@ export async function importProject({ .addOut(dcterms.identifier, cubeIdentifier) if (project.sourceKind.equals(cc['projectSourceKind/CSV'])) { - const originalCubeId = clownface({ dataset: importedDataset }) + const originalCubeId = $rdf.clownface({ dataset: importedDataset }) .has(rdf.type, schema.Dataset) .out(schema.hasPart) .term diff --git a/apis/core/lib/domain/cube-projects/queries.ts b/apis/core/lib/domain/cube-projects/queries.ts index 8c44267a1..7903ec143 100644 --- a/apis/core/lib/domain/cube-projects/queries.ts +++ b/apis/core/lib/domain/cube-projects/queries.ts @@ -1,12 +1,12 @@ import type { NamedNode, Term } from '@rdfjs/types' import { ASK, SELECT } from '@tpluscode/sparql-builder' import { dcterms, schema } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' import { DimensionMetadataCollection, Project } from '@cube-creator/model' import { sparql, SparqlTemplateResult } from '@tpluscode/rdf-string' -import { GraphPointer } from 'clownface' -import { parsingClient } from '../../query-client' +import type { GraphPointer } from 'clownface' +import { parsingClient } from '../../query-client.js' type FindProject = { metadataCollection: DimensionMetadataCollection @@ -36,7 +36,7 @@ export async function findProject(arg: FindProject): Promise sparql`${current} union { ${pattern} }`, sparql`{ ${first} }`) - return ASK`${union}`.execute(client.query) + return ASK`${union}`.execute(client) } export async function previouslyPublished(project: Project, client = parsingClient): Promise { @@ -99,5 +99,5 @@ export async function previouslyPublished(project: Project, client = parsingClie ${schema.actionStatus} ${schema.CompletedActionStatus} ; ${cc.project} ${project.id} ; . - }`.execute(client.query) + }`.execute(client) } diff --git a/apis/core/lib/domain/cube-projects/update.ts b/apis/core/lib/domain/cube-projects/update.ts index 0fcf5f474..1482921a7 100644 --- a/apis/core/lib/domain/cube-projects/update.ts +++ b/apis/core/lib/domain/cube-projects/update.ts @@ -1,5 +1,5 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { DomainError } from '@cube-creator/api-errors' import { cc } from '@cube-creator/core/namespace' import { dcterms, rdfs, schema } from '@tpluscode/rdf-ns-builders' @@ -7,9 +7,9 @@ import { CsvProject, ImportProject, Project } from '@cube-creator/model' import type { Organization } from '@rdfine/schema' import type { Dictionary } from '@rdfine/prov' import { isCsvProject } from '@cube-creator/model/Project' -import { ResourceStore } from '../../ResourceStore' -import { cubeNamespaceAllowed } from '../organization/query' -import { exists, previouslyPublished } from './queries' +import { ResourceStore } from '../../ResourceStore.js' +import { cubeNamespaceAllowed } from '../organization/query.js' +import { exists, previouslyPublished } from './queries.js' interface UpdateProjectCommand { resource: GraphPointer diff --git a/apis/core/lib/domain/dataset/Dataset.ts b/apis/core/lib/domain/dataset/Dataset.ts index 4c9d20e40..4749b6e7e 100644 --- a/apis/core/lib/domain/dataset/Dataset.ts +++ b/apis/core/lib/domain/dataset/Dataset.ts @@ -1,5 +1,5 @@ import type { NamedNode, Term } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { Constructor } from '@tpluscode/rdfine' import { _void, schema } from '@tpluscode/rdf-ns-builders' import { Dataset } from '@cube-creator/model' @@ -19,7 +19,7 @@ declare module '@cube-creator/model' { export default function Mixin>>(Resource: Base) { return class extends Resource implements ApiDataset { addCube(cube: NamedNode, creator: NamedNode) { - Cube.create(this.pointer.node(cube), { creator }) + Cube.create(this.env, this.pointer.node(cube), { creator }) this.pointer.addOut(schema.hasPart, cube) } diff --git a/apis/core/lib/domain/dataset/queries.ts b/apis/core/lib/domain/dataset/queries.ts index 9c7eee7d0..c5d8c55d6 100644 --- a/apis/core/lib/domain/dataset/queries.ts +++ b/apis/core/lib/domain/dataset/queries.ts @@ -2,9 +2,9 @@ import type { Term } from '@rdfjs/types' import { schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' import { SELECT } from '@tpluscode/sparql-builder' -import { ParsingClient } from 'sparql-http-client/ParsingClient' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' import { ResultRow } from 'sparql-http-client/ResultParser' -import { parsingClient } from '../../query-client' +import { parsingClient } from '../../query-client.js' export function getCubesAndGraphs(dataset: Term, client: ParsingClient = parsingClient): Promise { return SELECT`?cube ?graph` @@ -18,5 +18,5 @@ export function getCubesAndGraphs(dataset: Term, client: ParsingClient = parsing graph ${dataset} { ${dataset} ${schema.hasPart} ?cube . } - `.execute(client.query) + `.execute(client) } diff --git a/apis/core/lib/domain/dataset/update.ts b/apis/core/lib/domain/dataset/update.ts index 04e9b16f0..ecd866eb4 100644 --- a/apis/core/lib/domain/dataset/update.ts +++ b/apis/core/lib/domain/dataset/update.ts @@ -1,9 +1,9 @@ import type { NamedNode } from '@rdfjs/types' import { cc, lindasSchema } from '@cube-creator/core/namespace' import { dcat, hydra, rdf, schema, vcard, _void } from '@tpluscode/rdf-ns-builders' -import { GraphPointer } from 'clownface' -import { ResourceStore } from '../../ResourceStore' -import * as projectQuery from '../cube-projects/queries' +import type { GraphPointer } from 'clownface' +import { ResourceStore } from '../../ResourceStore.js' +import * as projectQuery from '../cube-projects/queries.js' interface AddMetaDataCommand { dataset: GraphPointer diff --git a/apis/core/lib/domain/dimension-mapping/DimensionMapping.ts b/apis/core/lib/domain/dimension-mapping/DimensionMapping.ts index bbe62aef1..044f7fd04 100644 --- a/apis/core/lib/domain/dimension-mapping/DimensionMapping.ts +++ b/apis/core/lib/domain/dimension-mapping/DimensionMapping.ts @@ -3,10 +3,8 @@ import { Constructor, property } from '@tpluscode/rdfine' import { prov, rdf, schema } from '@tpluscode/rdf-ns-builders' import { Dictionary } from '@rdfine/prov' import { cc, md } from '@cube-creator/core/namespace' -import TermMap from '@rdfjs/term-map' -import $rdf from 'rdf-ext' -import TermSet from '@rdfjs/term-set' -import { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' +import type { GraphPointer } from 'clownface' interface DictionaryEx { about: NamedNode @@ -54,7 +52,7 @@ export function ProvDictionaryMixinEx>(Reso entriesAdded = true } return pairKey ? map.set(pairKey, pairEntity) : map - }, new TermMap()) + }, $rdf.termMap()) let entriesRemoved = false // Set values for current entries or remove @@ -92,7 +90,7 @@ export function ProvDictionaryMixinEx>(Reso } addMissingEntries(unmappedValues: Set) { - const currentKeys = new TermSet(this.pointer + const currentKeys = $rdf.termSet(this.pointer .out(prov.hadDictionaryMember) .out(prov.pairKey) .terms) diff --git a/apis/core/lib/domain/dimension-mapping/update.ts b/apis/core/lib/domain/dimension-mapping/update.ts index 5c7a0eccb..3c01ae832 100644 --- a/apis/core/lib/domain/dimension-mapping/update.ts +++ b/apis/core/lib/domain/dimension-mapping/update.ts @@ -1,11 +1,11 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import error from 'http-errors' import { Dictionary } from '@rdfine/prov' import { cc, md } from '@cube-creator/core/namespace' import { isNamedNode } from 'is-graph-pointer' import { schema } from '@tpluscode/rdf-ns-builders' -import { ResourceStore } from '../../ResourceStore' +import { ResourceStore } from '../../ResourceStore.js' interface UpdateDimensionMapping { resource: NamedNode diff --git a/apis/core/lib/domain/dimension/DimensionMetadataCollection.ts b/apis/core/lib/domain/dimension/DimensionMetadataCollection.ts index 21575f001..f0442d169 100644 --- a/apis/core/lib/domain/dimension/DimensionMetadataCollection.ts +++ b/apis/core/lib/domain/dimension/DimensionMetadataCollection.ts @@ -1,15 +1,14 @@ import type { BlankNode, DatasetCore, NamedNode, Term } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { Constructor } from '@tpluscode/rdfine' import type { Organization } from '@rdfine/schema' import { cc } from '@cube-creator/core/namespace' import { ColumnMapping, DimensionMetadataCollection } from '@cube-creator/model' import { schema } from '@tpluscode/rdf-ns-builders' import * as DimensionMetadata from '@cube-creator/model/DimensionMetadata' -import $rdf from 'rdf-ext' -import { shrink } from '@zazuko/rdf-vocabularies' -import TermSet from '@rdfjs/term-set' -import { ResourceStore } from '../../ResourceStore' +import $rdf from '@zazuko/env' +import { shrink } from '@zazuko/prefixes' +import { ResourceStore } from '../../ResourceStore.js' interface CreateColumnMetadata { store: ResourceStore @@ -38,7 +37,7 @@ declare module '@cube-creator/model' { } } -function copyMetadata(pointer: GraphPointer, metadata: DatasetCore, visited = new TermSet()) { +function copyMetadata(pointer: GraphPointer, metadata: DatasetCore, visited = $rdf.termSet()) { if (pointer.term.termType === 'BlankNode') { if (visited.has(pointer.term)) { return @@ -96,7 +95,7 @@ export default function Mixin { +function * extractSubgraph(pointer: GraphPointer, visited = $rdf.termSet()): Iterable { if (visited.has(pointer.term)) { return } @@ -60,13 +59,13 @@ export async function update({ } if (!metadata.hasPart.some(dim => dim.isMeasureDimension)) { - metadata.addError?.(createNoMeasureDimensionError) + metadata.addError?.($rdf.rdfine.schema.Thing(noMeasureDimensionError)) } else { metadata.removeError?.(Error.MissingMeasureDimension) } const dataset = $rdf.dataset([...extractSubgraph(metadata.pointer.node(dimensionMetadata.term))]) - return clownface({ dataset }).node(dimensionMetadata.term) + return $rdf.clownface({ dataset }).node(dimensionMetadata.term) } interface ClearDimensionChangedWarning { diff --git a/apis/core/lib/domain/errors/deleteCurrent.ts b/apis/core/lib/domain/errors/deleteCurrent.ts index 07edee29d..496d1dbe9 100644 --- a/apis/core/lib/domain/errors/deleteCurrent.ts +++ b/apis/core/lib/domain/errors/deleteCurrent.ts @@ -1,7 +1,7 @@ import type { Term } from '@rdfjs/types' import { DELETE } from '@tpluscode/sparql-builder' import { cc } from '@cube-creator/core/namespace' -import { schema } from '@tpluscode/rdf-ns-builders/strict' +import { schema } from '@tpluscode/rdf-ns-builders' export function deleteCurrentError(error: string, dimensionMetadataId: Term) { return DELETE` diff --git a/apis/core/lib/domain/errors/duplicateObservations.ts b/apis/core/lib/domain/errors/duplicateObservations.ts index 3460cdaf6..2de584f0e 100644 --- a/apis/core/lib/domain/errors/duplicateObservations.ts +++ b/apis/core/lib/domain/errors/duplicateObservations.ts @@ -2,9 +2,9 @@ import { INSERT, SELECT, sparql } from '@tpluscode/sparql-builder' import { cc, cube } from '@cube-creator/core/namespace' import { Error } from '@cube-creator/model/Dataset' import { TransformJob } from '@cube-creator/model/Job' -import { schema } from '@tpluscode/rdf-ns-builders/strict' -import { streamClient } from '../../query-client' -import { deleteCurrentError } from './deleteCurrent' +import { schema } from '@tpluscode/rdf-ns-builders' +import { streamClient } from '../../query-client.js' +import { deleteCurrentError } from './deleteCurrent.js' function findDuplicateObservations(job: TransformJob) { return SELECT`?observation` diff --git a/apis/core/lib/domain/errors/index.ts b/apis/core/lib/domain/errors/index.ts index 59b2c30e1..4bde465d2 100644 --- a/apis/core/lib/domain/errors/index.ts +++ b/apis/core/lib/domain/errors/index.ts @@ -1,2 +1,2 @@ -export { insertDimensionCardinalityError } from './duplicateObservations' -export { insertMissingDimensionsError } from './missingDimensions' +export { insertDimensionCardinalityError } from './duplicateObservations.js' +export { insertMissingDimensionsError } from './missingDimensions.js' diff --git a/apis/core/lib/domain/errors/missingDimensions.ts b/apis/core/lib/domain/errors/missingDimensions.ts index 73f587d3e..c921d7003 100644 --- a/apis/core/lib/domain/errors/missingDimensions.ts +++ b/apis/core/lib/domain/errors/missingDimensions.ts @@ -2,9 +2,9 @@ import { INSERT, SELECT, sparql } from '@tpluscode/sparql-builder' import { cc, cube } from '@cube-creator/core/namespace' import { Error } from '@cube-creator/model/Dataset' import { TransformJob } from '@cube-creator/model/Job' -import { schema } from '@tpluscode/rdf-ns-builders/strict' -import { streamClient } from '../../query-client' -import { deleteCurrentError } from './deleteCurrent' +import { schema } from '@tpluscode/rdf-ns-builders' +import { streamClient } from '../../query-client.js' +import { deleteCurrentError } from './deleteCurrent.js' function countMissingObservationValues(job: TransformJob) { return SELECT`?dataset ?dim (COUNT(?undef) as ?totalUndefined)` diff --git a/apis/core/lib/domain/identifiers.ts b/apis/core/lib/domain/identifiers.ts index 963c16c16..b8ee388e1 100644 --- a/apis/core/lib/domain/identifiers.ts +++ b/apis/core/lib/domain/identifiers.ts @@ -1,8 +1,8 @@ import type { NamedNode } from '@rdfjs/types' import UrlSlugify from 'url-slugify' -import $rdf from 'rdf-ext' -import { GraphPointer } from 'clownface' -import env from '@cube-creator/core/env' +import $rdf from '@zazuko/env' +import type { GraphPointer } from 'clownface' +import env from '@cube-creator/core/env/node' import { nanoid } from 'nanoid' import { ColumnMapping, CsvMapping, CsvSource, Project, Table } from '@cube-creator/model' diff --git a/apis/core/lib/domain/index.ts b/apis/core/lib/domain/index.ts index 0c7d07ec7..f36e83fb8 100644 --- a/apis/core/lib/domain/index.ts +++ b/apis/core/lib/domain/index.ts @@ -1,29 +1,29 @@ +import $rdf from '@cube-creator/env' import { ThingMixin } from '@rdfine/schema' import { DictionaryBundle } from '@rdfine/prov/bundles' import * as CoreModel from '@cube-creator/model' -import RdfResourceImpl from '@tpluscode/rdfine' -import CsvMapping from './csv-mapping/CsvMapping' -import CsvSource from './csv-source/CsvSource' -import ProjectMixins from './cube-projects/Project' -import Table from './table/Table' -import Dataset from './dataset/Dataset' -import Resource from './Resource' -import OrganizationMixin from './organization/Organization' -import DimensionMetadataCollection from './dimension/DimensionMetadataCollection' -import { ProvDictionaryMixinEx } from './dimension-mapping/DimensionMapping' -import * as ColumnMappings from './column-mapping/ColumnMapping' +import CsvMapping from './csv-mapping/CsvMapping.js' +import CsvSource from './csv-source/CsvSource.js' +import ProjectMixins from './cube-projects/Project.js' +import Table from './table/Table.js' +import Dataset from './dataset/Dataset.js' +import Resource from './Resource.js' +import OrganizationMixin from './organization/Organization.js' +import DimensionMetadataCollection from './dimension/DimensionMetadataCollection.js' +import { ProvDictionaryMixinEx } from './dimension-mapping/DimensionMapping.js' +import * as ColumnMappings from './column-mapping/ColumnMapping.js' -RdfResourceImpl.factory.addMixin(...Object.values(CoreModel)) -RdfResourceImpl.factory.addMixin(CsvMapping) -RdfResourceImpl.factory.addMixin(CsvSource) -RdfResourceImpl.factory.addMixin(...ProjectMixins) -RdfResourceImpl.factory.addMixin(Dataset) -RdfResourceImpl.factory.addMixin(Table) -RdfResourceImpl.factory.addMixin(Resource) -RdfResourceImpl.factory.addMixin(DimensionMetadataCollection) -RdfResourceImpl.factory.addMixin(OrganizationMixin) -RdfResourceImpl.factory.addMixin(ProvDictionaryMixinEx) -RdfResourceImpl.factory.addMixin(...Object.values(ColumnMappings)) +$rdf.rdfine().factory.addMixin(...Object.values(CoreModel)) +$rdf.rdfine().factory.addMixin(CsvMapping) +$rdf.rdfine().factory.addMixin(CsvSource) +$rdf.rdfine().factory.addMixin(...ProjectMixins) +$rdf.rdfine().factory.addMixin(Dataset) +$rdf.rdfine().factory.addMixin(Table) +$rdf.rdfine().factory.addMixin(Resource) +$rdf.rdfine().factory.addMixin(DimensionMetadataCollection) +$rdf.rdfine().factory.addMixin(OrganizationMixin) +$rdf.rdfine().factory.addMixin(ProvDictionaryMixinEx) +$rdf.rdfine().factory.addMixin(...Object.values(ColumnMappings)) -RdfResourceImpl.factory.addMixin(ThingMixin) -RdfResourceImpl.factory.addMixin(...DictionaryBundle) +$rdf.rdfine().factory.addMixin(ThingMixin) +$rdf.rdfine().factory.addMixin(...DictionaryBundle) diff --git a/apis/core/lib/domain/job/create.ts b/apis/core/lib/domain/job/create.ts index 4f352947b..ea78b57fd 100644 --- a/apis/core/lib/domain/job/create.ts +++ b/apis/core/lib/domain/job/create.ts @@ -1,18 +1,18 @@ import type { NamedNode, Term } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { cc } from '@cube-creator/core/namespace' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { DESCRIBE } from '@tpluscode/sparql-builder' import * as Job from '@cube-creator/model/Job' import * as ImportJob from '@cube-creator/model/ImportJob' import { CsvMapping, Project, Dataset, ImportProject, CsvProject } from '@cube-creator/model' import { DomainError } from '@cube-creator/api-errors' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { schema } from '@tpluscode/rdf-ns-builders' import { isCsvProject } from '@cube-creator/model/Project' -import * as id from '../identifiers' -import { ResourceStore } from '../../ResourceStore' -import * as TableQueries from '../queries/table' +import * as id from '../identifiers.js' +import { ResourceStore } from '../../ResourceStore.js' +import * as TableQueries from '../queries/table.js' interface StartTransformationCommand { resource: NamedNode @@ -40,7 +40,7 @@ export async function createTransformJob({ const dataset = await store.getResource(project.dataset.id) const jobPointer = await store.createMember(jobCollection.term, id.job(jobCollection)) - Job.createTransform(jobPointer, { + Job.createTransform($rdf, jobPointer, { cubeGraph: project.cubeGraph, name: 'Transformation job', tableCollection: csvMapping.tableCollection, @@ -77,7 +77,7 @@ export async function createPublishJob({ const metadata = await store.getResource(project.dataset) const jobPointer = await store.createMember(jobCollection.term, id.job(jobCollection)) - const job = Job.createPublish(jobPointer, { + const job = Job.createPublish($rdf, jobPointer, { project: projectPointer, name: 'Publish job', revision: project.nextRevision, @@ -118,7 +118,7 @@ export async function createUnlistJob({ } const jobPointer = await store.createMember(jobCollection.term, id.job(jobCollection)) - Job.createUnlist(jobPointer, { + Job.createUnlist($rdf, jobPointer, { project: projectPointer, name: 'Unlist job', publishGraph: organization.publishGraph, @@ -186,7 +186,7 @@ export async function createImportJob({ store, resource }: StartImportCommand): const dataset = await store.getResource(project.dataset) const jobPointer = await store.createMember(jobCollection.term, id.job(jobCollection)) - ImportJob.create(jobPointer, { + ImportJob.create($rdf, jobPointer, { name: 'Import cube', sourceCube: project.sourceCube, sourceGraph: project.sourceGraph, diff --git a/apis/core/lib/domain/job/update.ts b/apis/core/lib/domain/job/update.ts index db1fbc0d4..34e613c2c 100644 --- a/apis/core/lib/domain/job/update.ts +++ b/apis/core/lib/domain/job/update.ts @@ -1,13 +1,13 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { Job, JobMixin, ImportProject, Dataset, CsvProject } from '@cube-creator/model' import { isPublishJob, isTransformJob, JobErrorMixin } from '@cube-creator/model/Job' -import RdfResource from '@tpluscode/rdfine' +import $rdf from '@cube-creator/env' import { schema } from '@tpluscode/rdf-ns-builders' -import { ResourceStore } from '../../ResourceStore' -import { insertDimensionCardinalityError, insertMissingDimensionsError } from '../errors' -import { error } from '../../log' -import { clearDimensionChangedWarning } from '../dimension/update' +import { ResourceStore } from '../../ResourceStore.js' +import { insertDimensionCardinalityError, insertMissingDimensionsError } from '../errors/index.js' +import { error } from '../../log.js' +import { clearDimensionChangedWarning } from '../dimension/update.js' interface JobUpdateParams { resource: GraphPointer @@ -15,7 +15,7 @@ interface JobUpdateParams { } export async function update({ resource, store }: JobUpdateParams): Promise { - const changes = RdfResource.factory.createEntity(resource, [JobMixin]) + const changes = $rdf.rdfine().factory.createEntity(resource, [JobMixin]) const job = await store.getResource(resource.term) job.modified = changes.modified @@ -48,7 +48,7 @@ export async function update({ resource, store }: JobUpdateParams): Promise Promise + loadResourceLabels?: (ids: Term[]) => Promise> } export async function getObservations({ @@ -67,12 +67,12 @@ export async function getObservations({ // Load labels for linked resources const labelQuads = await getLabels(observations, loadResourceLabels) - labelQuads.forEach((quad) => collection.pointer.dataset.add(quad)) + ;[...labelQuads].forEach((quad) => collection.pointer.dataset.add(quad)) return collection } -async function getLabels(observations: Record[], loadResourceLabels: (ids: Term[]) => Promise): Promise { +async function getLabels(observations: Record[], loadResourceLabels: (ids: Term[]) => Promise>): Promise> { const blackList: string[] = [rdf.type.value, ns.cube.observedBy.value] const resourceIds = new Set(observations.flatMap((observation) => { return Object.entries(observation) diff --git a/apis/core/lib/domain/observations/lib/index.ts b/apis/core/lib/domain/observations/lib/index.ts index 47a10bfd5..894cfc1b8 100644 --- a/apis/core/lib/domain/observations/lib/index.ts +++ b/apis/core/lib/domain/observations/lib/index.ts @@ -1,14 +1,14 @@ import type { Term } from '@rdfjs/types' -import CubeQuery from 'rdf-cube-view-query' -import { Source } from 'rdf-cube-view-query/lib/Source' -import { View } from 'rdf-cube-view-query/lib/View' -import { Cube } from 'rdf-cube-view-query/lib/Cube' -import env from '@cube-creator/core/env' +import * as CubeQuery from 'rdf-cube-view-query' +import { Source } from 'rdf-cube-view-query/lib/Source.js' +import { View } from 'rdf-cube-view-query/lib/View.js' +import { Cube } from 'rdf-cube-view-query/lib/Cube.js' +import env from '@cube-creator/core/env/node' import * as ns from '@cube-creator/core/namespace' -import clownface, { AnyPointer, GraphPointer } from 'clownface' -import { Collection, CollectionMixin, IriTemplate } from '@rdfine/hydra' +import type { AnyPointer, GraphPointer } from 'clownface' +import { Collection, IriTemplate } from '@rdfine/hydra' import { cc } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { hydra } from '@tpluscode/rdf-ns-builders' export function createSource(sourceGraph: string): Source { @@ -61,7 +61,7 @@ interface HydraCollectionParams { } function pageId({ offset, page, template, ...rest }: { template: IriTemplate; templateParams: GraphPointer; page?: number; offset?: number }) { - const templateParams = clownface({ + const templateParams = $rdf.clownface({ dataset: $rdf.dataset([...rest.templateParams.dataset]), term: rest.templateParams.term, }) @@ -82,17 +82,17 @@ function pageId({ offset, page, template, ...rest }: { template: IriTemplate; te export function createHydraCollection({ templateParams, template, observations, totalItems, pageSize }: HydraCollectionParams): Collection { const collectionId = template.expand( - clownface({ dataset: $rdf.dataset() }).blankNode() + $rdf.clownface().blankNode() .addOut(cc.cube, templateParams.out(cc.cube)) .addOut(cc.cubeGraph, templateParams.out(cc.cubeGraph)), ) - const collectionPointer = clownface({ dataset: $rdf.dataset() }) + const collectionPointer = $rdf.clownface() .namedNode(new URL(collectionId, env.API_CORE_BASE).toString()) const lastPage = Math.ceil(totalItems / pageSize) - return new CollectionMixin.Class(collectionPointer, { + return $rdf.rdfine.hydra.Collection(collectionPointer, { member: observations, totalItems, view: { diff --git a/apis/core/lib/domain/organization/query.ts b/apis/core/lib/domain/organization/query.ts index 77482c728..257f2c700 100644 --- a/apis/core/lib/domain/organization/query.ts +++ b/apis/core/lib/domain/organization/query.ts @@ -3,8 +3,8 @@ import { CsvMapping, Table } from '@cube-creator/model' import { ASK, SELECT } from '@tpluscode/sparql-builder' import { cc } from '@cube-creator/core/namespace' import { schema } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' -import { parsingClient } from '../../query-client' +import $rdf from '@zazuko/env' +import { parsingClient } from '../../query-client.js' type FindOrganization = { table: Table @@ -44,7 +44,7 @@ export async function findOrganization(findBy: FindOrganization, client = parsin ` } - const result = await query.execute(client.query) + const result = await query.execute(client) return result[0] } @@ -56,5 +56,5 @@ export function cubeNamespaceAllowed(cube: NamedNode, organization: Term, client FILTER ( STRSTARTS( str(${cube}), str(?ns) ) ) - }`.execute(client.query) + }`.execute(client) } diff --git a/apis/core/lib/domain/queries/column-mapping.ts b/apis/core/lib/domain/queries/column-mapping.ts index 63803b9ff..a953523b8 100644 --- a/apis/core/lib/domain/queries/column-mapping.ts +++ b/apis/core/lib/domain/queries/column-mapping.ts @@ -1,7 +1,7 @@ import type { Term } from '@rdfjs/types' import { ASK, SELECT } from '@tpluscode/sparql-builder' import { cc } from '@cube-creator/core/namespace' -import { streamClient, parsingClient } from '../../query-client' +import { streamClient, parsingClient } from '../../query-client.js' export async function dimensionIsUsedByOtherMapping(columnMapping: Term, client = streamClient): Promise { return ASK` @@ -33,7 +33,7 @@ export async function dimensionIsUsedByOtherMapping(columnMapping: Term, client filter ( ?deletedTargetProperty = ?targetProperty ) filter ( ?otherMapping != ?deletedMapping ) ` - .execute(client.query) + .execute(client) } export async function * getReferencingMappingsForTable(table: Term, client = parsingClient) { @@ -46,7 +46,7 @@ export async function * getReferencingMappingsForTable(table: Term, client = par ${cc.referencedTable} ${table} . } ` - .execute(client.query) + .execute(client) for (const result of results) { const columnMapping = result.columnMapping diff --git a/apis/core/lib/domain/queries/csv-source.ts b/apis/core/lib/domain/queries/csv-source.ts index 137afc524..a14122d15 100644 --- a/apis/core/lib/domain/queries/csv-source.ts +++ b/apis/core/lib/domain/queries/csv-source.ts @@ -2,7 +2,7 @@ import type { Term } from '@rdfjs/types' import { ASK } from '@tpluscode/sparql-builder' import { cc } from '@cube-creator/core/namespace' import { schema } from '@tpluscode/rdf-ns-builders' -import { streamClient } from '../../query-client' +import { streamClient } from '../../query-client.js' export async function sourceWithFilenameExists(csvMapping: Term, fileName: string, client = streamClient): Promise { return ASK` @@ -15,5 +15,5 @@ export async function sourceWithFilenameExists(csvMapping: Term, fileName: strin ?source ${schema.name} "${fileName}" } ` - .execute(client.query) + .execute(client) } diff --git a/apis/core/lib/domain/queries/cube-data.ts b/apis/core/lib/domain/queries/cube-data.ts index e307397a9..4725b075a 100644 --- a/apis/core/lib/domain/queries/cube-data.ts +++ b/apis/core/lib/domain/queries/cube-data.ts @@ -1,6 +1,6 @@ import type { NamedNode, Quad } from '@rdfjs/types' import { DESCRIBE } from '@tpluscode/sparql-builder' -import { ParsingClient } from 'sparql-http-client/ParsingClient' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' interface DescribeResource { resourceId: NamedNode @@ -8,12 +8,12 @@ interface DescribeResource { graph?: NamedNode } -export async function describeResource({ resourceId, client, graph }: DescribeResource): Promise { +export async function describeResource({ resourceId, client, graph }: DescribeResource): Promise> { const describe = DESCRIBE`${resourceId}` if (graph) { - return describe.FROM(graph).execute(client.query) + return describe.FROM(graph).execute(client) } - return describe.execute(client.query) + return describe.execute(client) } diff --git a/apis/core/lib/domain/queries/cube.ts b/apis/core/lib/domain/queries/cube.ts index 0d48306ce..16dd31b67 100644 --- a/apis/core/lib/domain/queries/cube.ts +++ b/apis/core/lib/domain/queries/cube.ts @@ -1,12 +1,11 @@ import { Readable } from 'stream' import type { NamedNode, Stream, Term } from '@rdfjs/types' import { CONSTRUCT, SELECT, sparql } from '@tpluscode/sparql-builder' -import StreamClient from 'sparql-http-client/StreamClient' +import StreamClient from 'sparql-http-client/StreamClient.js' import * as ns from '@cube-creator/core/namespace' import { schema, sh } from '@tpluscode/rdf-ns-builders' -import ParsingClient from 'sparql-http-client/ParsingClient' -import $rdf from 'rdf-ext' -import clownface from 'clownface' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import $rdf from '@zazuko/env' async function selectIdentifiers(datasetId: Term, parsingClient: ParsingClient): Promise | undefined> { const [result] = await SELECT`?cube ?cubeData ?project ?shape` @@ -23,7 +22,7 @@ async function selectIdentifiers(datasetId: Term, parsingClient: ParsingClient): graph ?cubeData { ?cube ${ns.cube.observationConstraint} ?shape . } - `.execute(parsingClient.query) + `.execute(parsingClient) return result as any } @@ -41,14 +40,14 @@ function constructPropertyShapes(shape: NamedNode, cubeData: NamedNode, excludeI ?property ${deepPaths} ?s . ?s ?p ?o ` - .execute(streamClient.query) + .execute(streamClient) } export async function loadCubeShapes(datasetId: Term, excludeInLists: boolean, { parsingClient, streamClient }: { parsingClient: ParsingClient; streamClient: StreamClient }): Promise> { const identifiers = await selectIdentifiers(datasetId, parsingClient) if (identifiers) { const { cube, cubeData, project, shape } = identifiers - const graph = clownface({ dataset: $rdf.dataset() }) + const graph = $rdf.clownface() .node(project).addOut(ns.cc.cubeGraph, cubeData) .node(cube).addOut(ns.cube.observationConstraint, shape) diff --git a/apis/core/lib/domain/queries/dimension-mappings.ts b/apis/core/lib/domain/queries/dimension-mappings.ts index 3abb17657..7b3eada6e 100644 --- a/apis/core/lib/domain/queries/dimension-mappings.ts +++ b/apis/core/lib/domain/queries/dimension-mappings.ts @@ -2,17 +2,14 @@ import { Readable } from 'stream' import type { Literal, NamedNode, Term } from '@rdfjs/types' import { SELECT } from '@tpluscode/sparql-builder' import { sparql, SparqlTemplateResult } from '@tpluscode/rdf-string' -import { rdf, schema, sh } from '@tpluscode/rdf-ns-builders' +import { rdf, schema, sh, prov } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' -import TermSet from '@rdfjs/term-set' -import { prov } from '@tpluscode/rdf-ns-builders/strict' import { ResourceIdentifier } from '@tpluscode/rdfine' import { toRdf } from 'rdf-literal' import through2 from 'through2' -import clownface from 'clownface' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import getStream from 'get-stream' -import { publicClient, streamClient } from '../../query-client' +import { publicClient, streamClient } from '../../query-client.js' async function findCubeGraph(dimensionMapping: Term, client: typeof streamClient): Promise { const patternsToFindCubeGraph = sparql`BIND ( ${dimensionMapping} as ?dimensionMapping ) @@ -39,7 +36,7 @@ async function findCubeGraph(dimensionMapping: Term, client: typeof streamClient const stream = await SELECT`?cubeGraph` .WHERE`${patternsToFindCubeGraph}` - .execute(client.query) + .execute(client) const [{ cubeGraph }] = await getStream.array<{ cubeGraph: NamedNode }>(stream) return cubeGraph @@ -84,10 +81,10 @@ export async function getUnmappedValues(dimensionMapping: Term, client = streamC const cubeGraph = await findCubeGraph(dimensionMapping, client) const stream = await unmappedValuesFromQuery(cubeGraph, dimensionMapping) - .execute(client.query) + .execute(client) const unmappedValues = await getStream.array<{ value: Literal }>(stream) - return new TermSet(unmappedValues.map(result => result.value)) + return $rdf.termSet(unmappedValues.map(result => result.value)) } interface ImportMappingsFromSharedDimension { @@ -108,7 +105,7 @@ export async function importMappingsFromSharedDimension({ dimensionMapping, dime unmappedValues = unmappedValuesOverride.map(value => ({ value })) } else { const cubeGraph = await findCubeGraph(dimensionMapping, client) - unmappedValues = await unmappedValuesFromQuery(cubeGraph, dimensionMapping).execute(client.query) + unmappedValues = await unmappedValuesFromQuery(cubeGraph, dimensionMapping).execute(client) } const terms = await getSharedDimensionTerms({ dimension, predicate, validThrough }) @@ -118,7 +115,7 @@ export async function importMappingsFromSharedDimension({ dimensionMapping, dime return next() } - const pointer = clownface({ dataset: $rdf.dataset(), graph: dimensionMapping }) + const pointer = $rdf.clownface({ dataset: $rdf.dataset(), graph: dimensionMapping }) .node(dimensionMapping) .addOut(prov.hadDictionaryMember, member => { member @@ -165,7 +162,7 @@ async function getSharedDimensionTerms({ dimension, predicate, validThrough }: G ${validThroughFilter} ` - .execute(publicClient.query) as any + .execute(publicClient) as any return new Map(bindings.map(({ identifier, term }) => [identifier.value, { key: identifier, entity: term }])) } diff --git a/apis/core/lib/domain/queries/dimension-metadata.ts b/apis/core/lib/domain/queries/dimension-metadata.ts index 410adf4bc..4bab2568b 100644 --- a/apis/core/lib/domain/queries/dimension-metadata.ts +++ b/apis/core/lib/domain/queries/dimension-metadata.ts @@ -2,12 +2,12 @@ import type { Term } from '@rdfjs/types' import { cc } from '@cube-creator/core/namespace' import { CONSTRUCT, SELECT } from '@tpluscode/sparql-builder' import { dcterms, rdfs, schema } from '@tpluscode/rdf-ns-builders' -import { GraphPointer } from 'clownface' -import { ParsingClient } from 'sparql-http-client/ParsingClient' -import TermMap from '@rdfjs/term-map' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' import type { Organization } from '@rdfine/schema' -import { parsingClient } from '../../query-client' -import { ResourceStore } from '../../ResourceStore' +import { parsingClient } from '../../query-client.js' +import { ResourceStore } from '../../ResourceStore.js' export async function findByDimensionMapping(dimensionMapping: Term, client = parsingClient) { const [{ metadata }] = await SELECT`?metadata` @@ -17,7 +17,7 @@ export async function findByDimensionMapping(dimensionMapping: Term, client = pa } ` .LIMIT(1) - .execute(client.query) + .execute(client) return metadata } @@ -36,12 +36,12 @@ export async function getDimensionMetaDataCollection(csvMapping: Term, client = ?dataset ${cc.dimensionMetadata} ?dimensionMetadata . } ` - .execute(client.query) + .execute(client) if (results.length < 1) { - throw new Error(`No DimensionMetadata for table ${csvMapping} found`) + throw new Error(`No DimensionMetadata for table ${csvMapping.value} found`) } if (results.length > 1) { - throw new Error(`More than one DimensionMetadata for table ${csvMapping} found`) + throw new Error(`More than one DimensionMetadata for table ${csvMapping.value} found`) } return results[0].dimensionMetadata } @@ -60,9 +60,9 @@ export async function getMappedDimensions(metadata: GraphPointer, dimensionsEndp ?mapping ${cc.sharedDimension} ?dimension . } ` - .execute(parsingClient.query) + .execute(parsingClient) - const dimensions = dimensionQuads.map(({ object }) => object) + const dimensions = [...dimensionQuads].map(({ object }) => object) const labelQuads = await CONSTRUCT` ?dimension ${rdfs.label} ?label . ` @@ -73,7 +73,7 @@ export async function getMappedDimensions(metadata: GraphPointer, dimensionsEndp ?dimension ${rdfs.label}|${schema.name} ?label } ` - .execute(dimensionsEndpoint.query) + .execute(dimensionsEndpoint) return [...dimensionQuads, ...labelQuads] } @@ -105,10 +105,10 @@ export async function getDimensionTypes(metadata: GraphPointer, store: ResourceS OPTIONAL { ?column ${cc.dimensionType} ?dimensionType . } } ` - .execute(client.query) + .execute(client) if (!first) { - return new TermMap() + return $rdf.termMap() } const organization = await store.getResource(first.organization) @@ -124,5 +124,5 @@ export async function getDimensionTypes(metadata: GraphPointer, store: ResourceS } return map - }, new TermMap()) + }, $rdf.termMap()) } diff --git a/apis/core/lib/domain/queries/observations.ts b/apis/core/lib/domain/queries/observations.ts index 052d83155..117802628 100644 --- a/apis/core/lib/domain/queries/observations.ts +++ b/apis/core/lib/domain/queries/observations.ts @@ -1,9 +1,9 @@ import type { Term, Quad } from '@rdfjs/types' import { CONSTRUCT } from '@tpluscode/sparql-builder' import { schema } from '@tpluscode/rdf-ns-builders' -import { parsingClient } from '../../query-client' +import { parsingClient } from '../../query-client.js' -export async function loadResourceLabels(ids: Term[], client = parsingClient): Promise { +export async function loadResourceLabels(ids: Term[], client = parsingClient): Promise> { return CONSTRUCT`?resource ${schema.name} ?object` .WHERE` values ?resource { @@ -14,5 +14,5 @@ export async function loadResourceLabels(ids: Term[], client = parsingClient): P GRAPH ?g { ?resource ${schema.name} ?object . } - `.execute(client.query) + `.execute(client) } diff --git a/apis/core/lib/domain/queries/resources-types.ts b/apis/core/lib/domain/queries/resources-types.ts index a91bcf047..d7a2f7738 100644 --- a/apis/core/lib/domain/queries/resources-types.ts +++ b/apis/core/lib/domain/queries/resources-types.ts @@ -1,15 +1,16 @@ import type { Term, Quad } from '@rdfjs/types' import { CONSTRUCT } from '@tpluscode/sparql-builder' import { rdf } from '@tpluscode/rdf-ns-builders' -import env from '@cube-creator/core/env' -import TermSet from '@rdfjs/term-set' -import { parsingClient } from '../../query-client' +import env from '@cube-creator/core/env/node' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' +import $rdf from '@zazuko/env' +import { parsingClient } from '../../query-client.js' interface Clients { - sparql?: typeof parsingClient + sparql?: ParsingClient } -async function loadRemoteResourceTypes(ids: TermSet, sparql: typeof parsingClient): Promise { +async function loadRemoteResourceTypes(ids: Set, sparql: ParsingClient): Promise> { if (!ids.size) { return [] } @@ -24,10 +25,10 @@ async function loadRemoteResourceTypes(ids: TermSet, sparql: typeof parsingClien GRAPH ?g { ?resource a ?type . } - }`.execute(sparql.query) + }`.execute(sparql) } -function loadLocalResourceTypes(local: TermSet, sparql: typeof parsingClient) { +function loadLocalResourceTypes(local: Set, sparql: ParsingClient) { if (!local.size) { return [] } @@ -40,7 +41,7 @@ function loadLocalResourceTypes(local: TermSet, sparql: typeof parsingClient) { ` .WHERE`GRAPH ?g { ?resource a ?type . - }`.execute(sparql.query) + }`.execute(sparql) } export async function loadResourcesTypes(ids: Term[], { sparql = parsingClient }: Clients = {}): Promise { @@ -53,8 +54,8 @@ export async function loadResourcesTypes(ids: Term[], { sparql = parsingClient } return separated }, { - local: new TermSet(), - remote: new TermSet(), + local: $rdf.termSet(), + remote: $rdf.termSet(), }) const typesFoundRemotely = loadRemoteResourceTypes(remote, sparql) diff --git a/apis/core/lib/domain/queries/table.ts b/apis/core/lib/domain/queries/table.ts index 672e2db43..5585eeb99 100644 --- a/apis/core/lib/domain/queries/table.ts +++ b/apis/core/lib/domain/queries/table.ts @@ -4,7 +4,7 @@ import { CsvMapping, Table } from '@cube-creator/model' import { cc } from '@cube-creator/core/namespace' import { ResourceIdentifier } from '@tpluscode/rdfine' import { DomainError } from '@cube-creator/api-errors' -import { parsingClient } from '../../query-client' +import { parsingClient } from '../../query-client.js' export async function * getTablesForMapping(csvMapping: NamedNode, client = parsingClient) { const results = await SELECT @@ -16,7 +16,7 @@ export async function * getTablesForMapping(csvMapping: NamedNode, client = pars ${cc.csvMapping} ${csvMapping} . } ` - .execute(client.query) + .execute(client) for (const result of results) { const table = result.table @@ -36,7 +36,7 @@ export async function * getLinkedTablesForSource(csvSource: ResourceIdentifier, ${cc.csvSource} ${csvSource} . } ` - .execute(client.query) + .execute(client) for (const result of results) { const table = result.table @@ -59,7 +59,7 @@ export async function * getTableReferences(referencedTable: Table, client = pars ${cc.referencedTable} ${referencedTable.id} . } ` - .execute(client.query) + .execute(client) for (const result of results) { const { columnMapping } = result @@ -79,7 +79,7 @@ export async function getTableForColumnMapping(columnMapping: NamedNode, client ${cc.columnMapping} ${columnMapping} . } ` - .execute(client.query) + .execute(client) if (results.length < 1) { throw new Error(`No table for column mapping ${columnMapping.value} found`) @@ -98,7 +98,7 @@ export async function getCubeTable(csvMapping: CsvMapping): Promise>(Resource: Base): columnMappings!: Array> addLiteralColumnMapping({ store, sourceColumn, targetProperty, datatype, language, defaultValue, dimensionType }: CreateLiteralColumnMapping): ColumnMapping.LiteralColumnMapping { - const columnMapping = ColumnMapping.createLiteral(store.create(id.columnMapping(this, sourceColumn.name)), { + const columnMapping = ColumnMapping.createLiteral(this.env, store.create(id.columnMapping(this, sourceColumn.name)), { sourceColumn, targetProperty, datatype, @@ -70,7 +70,7 @@ export default function mixin>(Resource: Base): } addReferenceColumnMapping({ store, targetProperty, referencedTable, identifierMappings, dimensionType }: CreateReferenceColumnMapping): ColumnMapping.ReferenceColumnMapping { - const columnMapping = ColumnMapping.createReference(store.create(id.columnMapping(this, targetProperty.value)), { + const columnMapping = ColumnMapping.createReference(this.env, store.create(id.columnMapping(this, targetProperty.value)), { targetProperty, referencedTable, dimensionType, @@ -78,6 +78,7 @@ export default function mixin>(Resource: Base): columnMapping.identifierMapping = identifierMappings.map((properties) => ColumnMapping.createIdentifierMapping( + this.env, columnMapping.pointer.node(id.identifierMapping(columnMapping)), properties, ), diff --git a/apis/core/lib/domain/table/create.ts b/apis/core/lib/domain/table/create.ts index 64ba02876..e16aa5474 100644 --- a/apis/core/lib/domain/table/create.ts +++ b/apis/core/lib/domain/table/create.ts @@ -1,8 +1,8 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { csvw, schema, xsd } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { CsvColumn, CsvMapping, @@ -13,12 +13,11 @@ import { Table, } from '@cube-creator/model' import type { Organization } from '@rdfine/schema' -import TermSet from '@rdfjs/term-set' import { DomainError } from '@cube-creator/api-errors' -import * as DimensionMetadataQueries from '../queries/dimension-metadata' -import { ResourceStore } from '../../ResourceStore' -import { findOrganization } from '../organization/query' -import * as TableQueries from '../queries/table' +import * as DimensionMetadataQueries from '../queries/dimension-metadata.js' +import { ResourceStore } from '../../ResourceStore.js' +import { findOrganization } from '../organization/query.js' +import * as TableQueries from '../queries/table.js' const trueTerm = $rdf.literal('true', xsd.boolean) @@ -113,7 +112,7 @@ export async function createTable({ } async function assertNoDuplicateTargetProperties(table: Table, store: ResourceStore, organization: Organization, cubeIdentifier: string) { - const targetProperties = new TermSet( + const targetProperties = $rdf.termSet( await Promise.all( table.columnMappings.map(async link => { const columnMapping = await store.getResource(link.id) diff --git a/apis/core/lib/domain/table/csvw.ts b/apis/core/lib/domain/table/csvw.ts index ea2753da4..83155088c 100644 --- a/apis/core/lib/domain/table/csvw.ts +++ b/apis/core/lib/domain/table/csvw.ts @@ -1,10 +1,10 @@ import type { NamedNode } from '@rdfjs/types' -import * as Table from '@cube-creator/model/Table' import * as Csvw from '@rdfine/csvw' import { NotFoundError } from '@cube-creator/api-errors' -import { ResourceStore } from '../../ResourceStore' -import { buildCsvw } from '../../csvw-builder' -import '../../domain' +import $rdf from '@cube-creator/env' +import { ResourceStore } from '../../ResourceStore.js' +import { buildCsvw } from '../../csvw-builder/index.js' +import '../../domain/index.js' interface Command { tableResource: NamedNode @@ -20,7 +20,7 @@ export async function createCsvw({ throw new NotFoundError(tableResource) } - const table = Table.fromPointer(tablePointer) + const table = $rdf.rdfine.cc.Table(tablePointer) return buildCsvw({ table, resources }) } diff --git a/apis/core/lib/domain/table/delete.ts b/apis/core/lib/domain/table/delete.ts index e96b307a9..c8f3aec71 100644 --- a/apis/core/lib/domain/table/delete.ts +++ b/apis/core/lib/domain/table/delete.ts @@ -1,22 +1,17 @@ import type { NamedNode } from '@rdfjs/types' import { cc } from '@cube-creator/core/namespace' -import { ResourceStore } from '../../ResourceStore' -import * as TableQueries from '../queries/table' -import * as ColumnMappingQueries from '../queries/column-mapping' -import { deleteColumnMapping } from '../column-mapping/delete' +import { ResourceStore } from '../../ResourceStore.js' +import { deleteColumnMapping } from '../column-mapping/delete.js' +import { getReferencingMappingsForTable } from '../queries/column-mapping.js' interface DeleteTableCommand { resource: NamedNode store: ResourceStore - tableQueries?: Pick - columnMappingQueries?: Pick } export async function deleteTable({ resource: tableTerm, store, - tableQueries: { getTableForColumnMapping } = TableQueries, - columnMappingQueries: { dimensionIsUsedByOtherMapping, getReferencingMappingsForTable } = ColumnMappingQueries, }: DeleteTableCommand): Promise { if (tableTerm.termType !== 'NamedNode') return @@ -30,8 +25,6 @@ export async function deleteTable({ await deleteColumnMapping({ resource: columnMapping, store, - tableQueries: { getTableForColumnMapping }, - columnMappingQueries: { dimensionIsUsedByOtherMapping }, }) } } @@ -43,8 +36,6 @@ export async function deleteTable({ await deleteColumnMapping({ resource: columnMapping, store, - tableQueries: { getTableForColumnMapping }, - columnMappingQueries: { dimensionIsUsedByOtherMapping }, }) } } diff --git a/apis/core/lib/domain/table/update.ts b/apis/core/lib/domain/table/update.ts index 5af34d807..2a4eb6542 100644 --- a/apis/core/lib/domain/table/update.ts +++ b/apis/core/lib/domain/table/update.ts @@ -7,14 +7,14 @@ import { } from '@cube-creator/model' import type { Organization } from '@rdfine/schema' import { schema, xsd } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' -import { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' +import type { GraphPointer } from 'clownface' import { cc } from '@cube-creator/core/namespace' -import { ResourceStore } from '../../ResourceStore' -import { getDimensionMetaDataCollection } from '../queries/dimension-metadata' -import * as ColumnMappingQueries from '../queries/column-mapping' -import { findOrganization } from '../organization/query' -import { getTableReferences } from '../queries/table' +import { ResourceStore } from '../../ResourceStore.js' +import { getDimensionMetaDataCollection } from '../queries/dimension-metadata.js' +import * as ColumnMappingQueries from '../queries/column-mapping.js' +import { findOrganization } from '../organization/query.js' +import { getTableReferences } from '../queries/table.js' const trueTerm = $rdf.literal('true', xsd.boolean) diff --git a/apis/core/lib/handlers/column-mapping.ts b/apis/core/lib/handlers/column-mapping.ts index 6ba646cdc..25c1f326e 100644 --- a/apis/core/lib/handlers/column-mapping.ts +++ b/apis/core/lib/handlers/column-mapping.ts @@ -1,10 +1,10 @@ import asyncMiddleware from 'middleware-async' -import * as labyrinth from '@hydrofoil/labyrinth/resource' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import { shaclValidate } from '../middleware/shacl' -import { createColumnMapping } from '../domain/column-mapping/create' -import { updateLiteralColumnMapping, updateReferenceColumnMapping } from '../domain/column-mapping/update' -import { deleteColumnMapping } from '../domain/column-mapping/delete' +import * as labyrinth from '@hydrofoil/labyrinth/resource.js' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import { shaclValidate } from '../middleware/shacl.js' +import { createColumnMapping } from '../domain/column-mapping/create.js' +import { updateLiteralColumnMapping, updateReferenceColumnMapping } from '../domain/column-mapping/update.js' +import { deleteColumnMapping } from '../domain/column-mapping/delete.js' export const postLiteral = protectedResource(shaclValidate, asyncMiddleware(async (req, res) => { const columnMapping = await createColumnMapping({ diff --git a/apis/core/lib/handlers/csv-mapping.ts b/apis/core/lib/handlers/csv-mapping.ts index c928ed805..eef7ca64a 100644 --- a/apis/core/lib/handlers/csv-mapping.ts +++ b/apis/core/lib/handlers/csv-mapping.ts @@ -1,7 +1,7 @@ import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import { shaclValidate } from '../middleware/shacl' -import { createCSVMapping } from '../domain/csv-mapping/create' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import { shaclValidate } from '../middleware/shacl.js' +import { createCSVMapping } from '../domain/csv-mapping/create.js' export const post = protectedResource(shaclValidate, asyncMiddleware(async (req, res) => { const project = await createCSVMapping({ diff --git a/apis/core/lib/handlers/csv-source.ts b/apis/core/lib/handlers/csv-source.ts index 63fdc35bc..508cae071 100644 --- a/apis/core/lib/handlers/csv-source.ts +++ b/apis/core/lib/handlers/csv-source.ts @@ -1,19 +1,18 @@ import * as express from 'express' import asyncMiddleware from 'middleware-async' -import * as labyrinth from '@hydrofoil/labyrinth/resource' +import * as labyrinth from '@hydrofoil/labyrinth/resource.js' import { Enrichment } from '@hydrofoil/labyrinth/lib/middleware/preprocessResource' import { cc } from '@cube-creator/core/namespace' -import { fromPointer as mediaObjectFromPointer } from '@cube-creator/model/MediaObject' -import clownface, { AnyPointer, GraphPointer } from 'clownface' +import type { AnyPointer, GraphPointer } from 'clownface' import { schema } from '@tpluscode/rdf-ns-builders' import { ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' -import type { DatasetCore, NamedNode } from '@rdfjs/types' -import { shaclValidate } from '../middleware/shacl' -import { createCSVSource } from '../domain/csv-source/upload' -import { deleteSource } from '../domain/csv-source/delete' -import { update } from '../domain/csv-source/update' -import { replaceFile } from '../domain/csv-source/replace' -import { getMediaStorage } from '../storage' +import $rdf from '@cube-creator/env' +import { shaclValidate } from '../middleware/shacl.js' +import { createCSVSource } from '../domain/csv-source/upload.js' +import { deleteSource } from '../domain/csv-source/delete.js' +import { update } from '../domain/csv-source/update.js' +import { replaceFile } from '../domain/csv-source/replace.js' +import { getMediaStorage } from '../storage/index.js' export const post = labyrinth.protectedResource( shaclValidate, @@ -67,8 +66,8 @@ const getCSVSource: express.RequestHandler = asyncMiddleware(async (req, res, ne return next() } - const csvSource: { term: NamedNode; dataset: DatasetCore } = await req.hydra.resource.clownface() - const directDownload = getPresignedLink(clownface(csvSource)) + const csvSource = await req.hydra.resource.clownface() + const directDownload = getPresignedLink(csvSource) if (!directDownload) { return next(new Error('s3 key not found')) } @@ -115,7 +114,7 @@ function isGraphPointer(ptr: AnyPointer): ptr is GraphPointer { const resourceUri = req.query.resource diff --git a/apis/core/lib/handlers/cube-projects.ts b/apis/core/lib/handlers/cube-projects.ts index ba7689609..96565cb1b 100644 --- a/apis/core/lib/handlers/cube-projects.ts +++ b/apis/core/lib/handlers/cube-projects.ts @@ -1,23 +1,21 @@ import asyncMiddleware from 'middleware-async' import conditional from 'express-conditional-middleware' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import { serializers } from '@rdfjs-elements/formats-pretty' -import env from '@cube-creator/core/env' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import formats from '@rdfjs-elements/formats-pretty' +import env from '@cube-creator/core/env/node' import { cc, cube, meta } from '@cube-creator/core/namespace' import * as ns from '@tpluscode/rdf-ns-builders' import cors from 'cors' import { isMultipart } from '@cube-creator/express/multipart' -import type { DatasetCore, NamedNode } from '@rdfjs/types' -import clownface from 'clownface' -import { shaclValidate } from '../middleware/shacl' -import { createProject } from '../domain/cube-projects/create' -import { updateProject } from '../domain/cube-projects/update' -import { deleteProject } from '../domain/cube-projects/delete' -import { getExportedProject } from '../domain/cube-projects/export' -import { getProjectDetails } from '../domain/cube-projects/details' -import { triggers } from '../pipeline/trigger' -import { parsingClient, streamClient } from '../query-client' -import { postImportedProject } from './cube-projects/import' +import { shaclValidate } from '../middleware/shacl.js' +import { createProject } from '../domain/cube-projects/create.js' +import { updateProject } from '../domain/cube-projects/update.js' +import { deleteProject } from '../domain/cube-projects/delete.js' +import { getExportedProject } from '../domain/cube-projects/export.js' +import { getProjectDetails } from '../domain/cube-projects/details.js' +import { triggers } from '../pipeline/trigger.js' +import { parsingClient, streamClient } from '../query-client.js' +import { postImportedProject } from './cube-projects/import.js' const trigger = triggers[env.PIPELINE_TYPE] @@ -30,9 +28,8 @@ const postDirect = protectedResource( throw new Error('User is not defined') } - const pointer: { term: NamedNode; dataset: DatasetCore } = await req.hydra.resource.clownface() const { project: { pointer: project }, job } = await createProject({ - projectsCollection: clownface(pointer), + projectsCollection: await req.hydra.resource.clownface(), resource: await req.resource(), user, store: req.resourceStore(), @@ -88,7 +85,7 @@ export const getExport = protectedResource(cors({ exposedHeaders: 'content-dispo res.setHeader('Content-Disposition', `attachment; filename="${project.label}.trig"`) res.setHeader('Content-Type', 'application/trig') - const quadStream: any = serializers.import('application/trig', data, { + const quadStream: any = formats.serializers.import('application/trig', data, { prefixes: { cc: cc().value, rdf: ns.rdf().value, @@ -117,7 +114,7 @@ export const getDetails = protectedResource(asyncMiddleware(async (req, res) => const quadStream = await getProjectDetails({ project: req.hydra.resource.term, resource: req.hydra.term, - }).execute(streamClient.query) + }).execute(streamClient) return res.quadStream(quadStream) })) diff --git a/apis/core/lib/handlers/cube-projects/import.ts b/apis/core/lib/handlers/cube-projects/import.ts index 1a7e983fb..d1b0bb679 100644 --- a/apis/core/lib/handlers/cube-projects/import.ts +++ b/apis/core/lib/handlers/cube-projects/import.ts @@ -1,17 +1,15 @@ -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { multiPartResourceHandler } from '@cube-creator/express/multipart' import asyncMiddleware from 'middleware-async' import { INSERT } from '@tpluscode/sparql-builder' -import clownface from 'clownface' -import $rdf from 'rdf-ext' -import { parsers } from '@rdfjs-elements/formats-pretty' +import $rdf from '@zazuko/env' +import formats from '@rdfjs-elements/formats-pretty' import toStream from 'string-to-stream' -import type { DatasetCore, NamedNode } from '@rdfjs/types' -import { shaclValidate } from '../../middleware/shacl' -import { importProject } from '../../domain/cube-projects/import' -import { streamClient } from '../../query-client' -import { DatasetShape } from '../../../bootstrap/shapes/dataset' -import { ColumnMappingShape } from '../../../bootstrap/shapes/column-mapping' +import { shaclValidate } from '../../middleware/shacl.js' +import { importProject } from '../../domain/cube-projects/import.js' +import { streamClient } from '../../query-client.js' +import { DatasetShape } from '../../../bootstrap/shapes/dataset.js' +import { ColumnMappingShape } from '../../../bootstrap/shapes/column-mapping.js' export const postImportedProject = protectedResource( multiPartResourceHandler, @@ -25,9 +23,8 @@ export const postImportedProject = protectedResource( throw new Error('User is not defined') } - const pointer: { term: NamedNode; dataset: DatasetCore } = await req.hydra.resource.clownface() const { project, importedDataset } = await importProject({ - projectsCollection: clownface(pointer), + projectsCollection: await req.hydra.resource.clownface(), resource: await req.parseFromMultipart(), files: req.multipartFileQuadsStreams(), store: req.resourceStore(), @@ -41,7 +38,7 @@ export const postImportedProject = protectedResource( disableShClass: true, async parseResource(req, res) { const { project, importedDataset } = res.locals - return clownface({ dataset: importedDataset }).node(project.id) + return $rdf.clownface({ dataset: importedDataset }).node(project.id) }, async loadShapes() { const shapes = [ @@ -49,14 +46,14 @@ export const postImportedProject = protectedResource( ColumnMappingShape, ].map(ttlStr => ttlStr.toString()).join('\n') - return $rdf.dataset().import(parsers.import('text/turtle', toStream(shapes))!) + return $rdf.dataset().import(formats.parsers.import('text/turtle', toStream(shapes))!) }, }), asyncMiddleware(async (req, res) => { const { project, importedDataset } = res.locals await req.resourceStore().save() - await INSERT.DATA`${importedDataset}`.execute(streamClient.query) + await INSERT.DATA`${importedDataset}`.execute(streamClient) res.status(201) res.header('Location', project.pointer.value) diff --git a/apis/core/lib/handlers/dataset.ts b/apis/core/lib/handlers/dataset.ts index 34a77d358..d783fa938 100644 --- a/apis/core/lib/handlers/dataset.ts +++ b/apis/core/lib/handlers/dataset.ts @@ -1,29 +1,26 @@ import { PassThrough } from 'stream' -import toStream from 'rdf-dataset-ext/toStream.js' -import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' +import type { Term } from '@rdfjs/types' import asyncMiddleware from 'middleware-async' -import clownface from 'clownface' import parsePreferHeader from 'parse-prefer-header' -import $rdf from 'rdf-ext' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import $rdf from '@cube-creator/env' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { loadLinkedResources } from '@hydrofoil/labyrinth/lib/query/eagerLinks' import merge from 'merge2' import { hydra, rdf } from '@tpluscode/rdf-ns-builders' import { cc, query, view } from '@cube-creator/core/namespace' -import { fromPointer } from '@rdfine/hydra/lib/IriTemplate' -import env from '@cube-creator/core/env' -import { shaclValidate } from '../middleware/shacl' -import { update } from '../domain/dataset/update' -import { loadCubeShapes } from '../domain/queries/cube' -import * as clients from '../query-client' -import { getCubesAndGraphs } from '../domain/dataset/queries' +import env from '@cube-creator/core/env/node' +import toStream from 'rdf-dataset-ext/toStream.js' +import { shaclValidate } from '../middleware/shacl.js' +import { update } from '../domain/dataset/update.js' +import { loadCubeShapes } from '../domain/queries/cube.js' +import * as clients from '../query-client.js' +import { getCubesAndGraphs } from '../domain/dataset/queries.js' export const put = protectedResource( shaclValidate, asyncMiddleware(async (req, res) => { - const pointer: { term: NamedNode; dataset: DatasetCore } = await req.hydra.resource.clownface() const dataset = await update({ - dataset: clownface(pointer), + dataset: await req.hydra.resource.clownface(), resource: await req.resource(), store: req.resourceStore(), }) @@ -37,21 +34,20 @@ export const put = protectedResource( export const get = protectedResource(asyncMiddleware(async (req, res) => { const { includeInLists } = parsePreferHeader(req.header('Prefer')) - const ptr: { term: NamedNode; dataset: DatasetCore } = await req.hydra.resource.clownface() - const dataset = clownface(ptr) + const dataset = await req.hydra.resource.clownface() const shapeStreams = [...await loadCubeShapes(req.hydra.resource.term, !includeInLists, clients)] const outStream = new PassThrough({ objectMode: true, }) - const types = clownface({ + const types = $rdf.clownface({ dataset: req.hydra.api.dataset, term: dataset.out(rdf.type).terms, }) - const linkedResources = await loadLinkedResources(dataset, types.out(query.include).toArray(), req.labyrinth.sparql) + const linkedResources = await loadLinkedResources($rdf, dataset, types.out(query.include).toArray(), req.labyrinth.sparql) const observationsTemplateStream = await observationTemplate(dataset.term) - merge([toStream(dataset.dataset), ...shapeStreams, linkedResources.toStream(), observationsTemplateStream], { objectMode: true }) + merge([toStream(dataset.dataset), ...shapeStreams, toStream(linkedResources), observationsTemplateStream], { objectMode: true }) .pipe(outStream) return res.quadStream(outStream) @@ -59,10 +55,10 @@ export const get = protectedResource(asyncMiddleware(async (req, res) => { async function observationTemplate(dataset: Term) { const results = await getCubesAndGraphs(dataset) - const cf = clownface({ dataset: $rdf.dataset() }) + const cf = $rdf.clownface() for (const { cube, graph } of results) { - const template = fromPointer(cf.blankNode(), { + const template = $rdf.rdfine.hydra.IriTemplate(cf.blankNode(), { template: `${env.API_CORE_BASE}observations?cube=${encodeURIComponent(cube.value)}&graph=${encodeURIComponent(graph.value)}{&view,pageSize,page}`, mapping: [{ property: view.view, diff --git a/apis/core/lib/handlers/dimension-mapping.ts b/apis/core/lib/handlers/dimension-mapping.ts index 0eabadfd2..b67db49c9 100644 --- a/apis/core/lib/handlers/dimension-mapping.ts +++ b/apis/core/lib/handlers/dimension-mapping.ts @@ -1,24 +1,22 @@ import type { Term } from '@rdfjs/types' import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { Enrichment } from '@hydrofoil/labyrinth/lib/middleware/preprocessResource' -import { fromPointer } from '@rdfine/prov/lib/Dictionary' -import env from '@cube-creator/shared-dimensions-api/lib/env' -import $rdf from 'rdf-ext' -import clownface from 'clownface' +import env from '@cube-creator/shared-dimensions-api/lib/env.js' +import $rdf from '@cube-creator/env' import { Dictionary } from '@rdfine/prov' import { cc, md } from '@cube-creator/core/namespace' -import { rdf } from '@tpluscode/rdf-ns-builders/strict' +import { rdf } from '@tpluscode/rdf-ns-builders' import error from 'http-errors' import { isNamedNode } from 'is-graph-pointer' import { toRdf } from 'rdf-literal' import { DimensionMetadataCollection } from '@cube-creator/model' import { dimensionChangedWarning } from '@cube-creator/model/DimensionMetadata' import parsePreferHeader from 'parse-prefer-header' -import { shaclValidate } from '../middleware/shacl' -import { update } from '../domain/dimension-mapping/update' -import { getUnmappedValues, importMappingsFromSharedDimension } from '../domain/queries/dimension-mappings' -import { findByDimensionMapping } from '../domain/queries/dimension-metadata' +import { shaclValidate } from '../middleware/shacl.js' +import { update } from '../domain/dimension-mapping/update.js' +import { getUnmappedValues, importMappingsFromSharedDimension } from '../domain/queries/dimension-mappings.js' +import { findByDimensionMapping } from '../domain/queries/dimension-metadata.js' function rewrite(term: T, from: string, to: string): T { if (term.termType === 'NamedNode') { @@ -52,7 +50,7 @@ export const put = protectedResource( const { dimensionMapping, hasChanges } = await update({ resource: req.hydra.resource.term, - mappings: clownface({ dataset }).node(mappings.term), + mappings: $rdf.clownface({ dataset }).node(mappings.term), store: req.resourceStore(), }) @@ -60,7 +58,7 @@ export const put = protectedResource( const metadataId = await findByDimensionMapping(dimensionMapping.term) const dimensionMetadata = await store.getResource(metadataId) - dimensionMetadata.addError?.(dimensionChangedWarning) + dimensionMetadata.addError?.(dimensionChangedWarning($rdf)) } await store.save() @@ -87,7 +85,7 @@ export const prepareEntries: Enrichment = async (req, pointer) => { } if (!preferences.onlyMapped) { - const dictionary = fromPointer(pointer) + const dictionary = $rdf.rdfine.prov.Dictionary(pointer) const unmappedValues = await getUnmappedValues(dictionary.id) dictionary.addMissingEntries(unmappedValues) @@ -122,7 +120,7 @@ export const importMappingsRequest = protectedResource( const metadataId = await findByDimensionMapping(dimensionMapping.id) const dimensionMetadata = await store.getResource(metadataId) - dimensionMetadata.addError?.(dimensionChangedWarning) + dimensionMetadata.addError?.(dimensionChangedWarning($rdf)) await store.save() res.end() diff --git a/apis/core/lib/handlers/dimension.ts b/apis/core/lib/handlers/dimension.ts index 6bd93a2a6..8d2bff2a5 100644 --- a/apis/core/lib/handlers/dimension.ts +++ b/apis/core/lib/handlers/dimension.ts @@ -1,17 +1,17 @@ import type { NamedNode } from '@rdfjs/types' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { Enrichment } from '@hydrofoil/labyrinth/lib/middleware/preprocessResource' import asyncMiddleware from 'middleware-async' -import { parsingClient } from '@cube-creator/shared-dimensions-api/lib/sparql' +import { parsingClient } from '@cube-creator/shared-dimensions-api/lib/sparql.js' import { cube } from '@cube-creator/core/namespace' import { rdf, schema } from '@tpluscode/rdf-ns-builders' -import { ParsingClient } from 'sparql-http-client/ParsingClient' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' import { Request } from 'express' -import { GraphPointer } from 'clownface' -import { shaclValidate } from '../middleware/shacl' -import { update } from '../domain/dimension/update' -import { getDimensionTypes, getMappedDimensions } from '../domain/queries/dimension-metadata' -import * as client from '../query-client' +import type { GraphPointer } from 'clownface' +import { shaclValidate } from '../middleware/shacl.js' +import { update } from '../domain/dimension/update.js' +import { getDimensionTypes, getMappedDimensions } from '../domain/queries/dimension-metadata.js' +import * as client from '../query-client.js' export const get = protectedResource(asyncMiddleware((req, res) => { return res.quadStream(req.hydra.resource.quadStream()) diff --git a/apis/core/lib/handlers/jobs.ts b/apis/core/lib/handlers/jobs.ts index 5a6a643f4..9d2774734 100644 --- a/apis/core/lib/handlers/jobs.ts +++ b/apis/core/lib/handlers/jobs.ts @@ -1,17 +1,17 @@ import type { NamedNode } from '@rdfjs/types' import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import { GraphPointer } from 'clownface' -import env from '@cube-creator/core/env' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import type { GraphPointer } from 'clownface' +import env from '@cube-creator/core/env/node' import express from 'express' -import { shaclValidate } from '../middleware/shacl' -import { createPublishJob, createUnlistJob, createTransformJob, createImportJob } from '../domain/job/create' -import { triggers } from '../pipeline/trigger' -import { callbacks as publishCallbacks } from '../pipeline/publishCallbacks' -import { update } from '../domain/job/update' -import { ResourceStore } from '../ResourceStore' -import { TriggerCallbackMap } from '../pipeline/index' -import { parsingClient } from '../query-client' +import { shaclValidate } from '../middleware/shacl.js' +import { createPublishJob, createUnlistJob, createTransformJob, createImportJob } from '../domain/job/create.js' +import { triggers } from '../pipeline/trigger.js' +import { callbacks as publishCallbacks } from '../pipeline/publishCallbacks.js' +import { update } from '../domain/job/update.js' +import { ResourceStore } from '../ResourceStore.js' +import { TriggerCallbackMap } from '../pipeline/index.js' +import { parsingClient } from '../query-client.js' const trigger = triggers[env.PIPELINE_TYPE] diff --git a/apis/core/lib/handlers/observations.ts b/apis/core/lib/handlers/observations.ts index 2bb648a86..81b0ceef9 100644 --- a/apis/core/lib/handlers/observations.ts +++ b/apis/core/lib/handlers/observations.ts @@ -1,21 +1,16 @@ -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import asyncMiddleware from 'middleware-async' import error from 'http-errors' import { IriTemplate, IriTemplateMixin } from '@rdfine/hydra' -import clownface, { AnyContext, AnyPointer } from 'clownface' -import $rdf from 'rdf-ext' -import Parser from '@rdfjs/parser-n3' +import type { AnyContext, AnyPointer } from 'clownface' +import $rdf from '@cube-creator/env' import toStream from 'string-to-stream' -import DatasetExt from 'rdf-ext/lib/Dataset' -import RdfResourceImpl from '@tpluscode/rdfine' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import * as ns from '@cube-creator/core/namespace' import { cc, hydraBox } from '@cube-creator/core/namespace' import { hydra } from '@tpluscode/rdf-ns-builders' -import type { DatasetCore, Term } from '@rdfjs/types' -import { warning } from '../log' -import { getObservations } from '../domain/observations' - -const parser = new Parser() +import { warning } from '../log.js' +import { getObservations } from '../domain/observations/index.js' export const query = protectedResource( asyncMiddleware(async (req, res, next) => { @@ -23,7 +18,7 @@ export const query = protectedResource( return next(new error.BadRequest()) } - const query = clownface({ dataset: await req.dataset() }).has(cc.cube) + const query = $rdf.clownface({ dataset: await req.dataset() }).has(cc.cube) const cubeId = query.out(cc.cube).value if (!cubeId) { @@ -43,7 +38,7 @@ export const query = protectedResource( const viewArgument = query.out(ns.view.view).value if (viewArgument) { try { - filters = clownface({ dataset: await $rdf.dataset().import(parser.import(toStream(viewArgument))) }) + filters = $rdf.clownface({ dataset: await $rdf.dataset().import($rdf.formats.parsers.import('text/turtle', toStream(viewArgument))!) }) } catch (e: any) { warning('Failed to parse cube view') warning(e.toString()) @@ -51,8 +46,8 @@ export const query = protectedResource( } } - const templatePointer: { term: Term; dataset: DatasetCore } = req.hydra.operation.out(hydraBox.variables).toArray()[0] - const template = RdfResourceImpl.factory.createEntity(clownface(templatePointer), [IriTemplateMixin]) + const templatePointer = req.hydra.operation.out(hydraBox.variables).toArray()[0] + const template = $rdf.rdfine().factory.createEntity(templatePointer, [IriTemplateMixin]) const collection = await getObservations({ sourceGraph, pageSize, diff --git a/apis/core/lib/handlers/table/create.ts b/apis/core/lib/handlers/table/create.ts index aebbca1bb..ce5cab105 100644 --- a/apis/core/lib/handlers/table/create.ts +++ b/apis/core/lib/handlers/table/create.ts @@ -1,20 +1,17 @@ import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { loadLinkedResources } from '@hydrofoil/labyrinth/lib/query/eagerLinks' import { query } from '@cube-creator/core/namespace' -import clownface from 'clownface' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { rdf } from '@tpluscode/rdf-ns-builders' -import type { DatasetCore, NamedNode } from '@rdfjs/types' -import { createTable } from '../../domain/table/create' -import { shaclValidate } from '../../middleware/shacl' +import { createTable } from '../../domain/table/create.js' +import { shaclValidate } from '../../middleware/shacl.js' export const post = protectedResource( shaclValidate, asyncMiddleware(async (req, res) => { - const cfLike: { term: NamedNode; dataset: DatasetCore } = await req.hydra.resource.clownface() const table = await createTable({ - tableCollection: clownface(cfLike), + tableCollection: await req.hydra.resource.clownface(), resource: await req.resource(), store: req.resourceStore(), }) @@ -24,11 +21,11 @@ export const post = protectedResource( res.header('Location', table.value) // Include resources defined with `query:include` - const types = clownface({ + const types = $rdf.clownface({ dataset: req.hydra.api.dataset, term: table.out(rdf.type).terms, }) - const linkedResources = await loadLinkedResources(table, types.out(query.include).toArray(), req.labyrinth.sparql) + const linkedResources = await loadLinkedResources($rdf, table, types.out(query.include).toArray(), req.labyrinth.sparql) await res.dataset($rdf.dataset([...table.dataset, ...linkedResources])) }), ) diff --git a/apis/core/lib/handlers/table/csvw.ts b/apis/core/lib/handlers/table/csvw.ts index 1ca1d613b..c85962494 100644 --- a/apis/core/lib/handlers/table/csvw.ts +++ b/apis/core/lib/handlers/table/csvw.ts @@ -1,6 +1,6 @@ -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import asyncMiddleware from 'middleware-async' -import { createCsvw } from '../../domain/table/csvw' +import { createCsvw } from '../../domain/table/csvw.js' export const get = protectedResource(asyncMiddleware(async (req, res) => { const csvwTable = await createCsvw({ diff --git a/apis/core/lib/handlers/table/delete.ts b/apis/core/lib/handlers/table/delete.ts index 2681154fa..b53291ee3 100644 --- a/apis/core/lib/handlers/table/delete.ts +++ b/apis/core/lib/handlers/table/delete.ts @@ -1,6 +1,6 @@ import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import { deleteTable } from '../../domain/table/delete' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import { deleteTable } from '../../domain/table/delete.js' export const remove = protectedResource( asyncMiddleware(async (req, res) => { diff --git a/apis/core/lib/handlers/table/update.ts b/apis/core/lib/handlers/table/update.ts index 372a817ef..a8b0871b1 100644 --- a/apis/core/lib/handlers/table/update.ts +++ b/apis/core/lib/handlers/table/update.ts @@ -1,11 +1,10 @@ import asyncMiddleware from 'middleware-async' -import clownface from 'clownface' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { loadLinkedResources } from '@hydrofoil/labyrinth/lib/query/eagerLinks' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { query } from '@cube-creator/core/namespace' -import { shaclValidate } from '../../middleware/shacl' -import { updateTable } from '../../domain/table/update' +import { shaclValidate } from '../../middleware/shacl.js' +import { updateTable } from '../../domain/table/update.js' export const put = protectedResource( shaclValidate, @@ -17,11 +16,11 @@ export const put = protectedResource( await req.resourceStore().save() // Include resources defined with `query:include` - const types = clownface({ + const types = $rdf.clownface({ dataset: req.hydra.api.dataset, term: [...req.hydra.resource.types], }) - const linkedResources = await loadLinkedResources(table, types.out(query.include).toArray(), req.labyrinth.sparql) + const linkedResources = await loadLinkedResources($rdf, table, types.out(query.include).toArray(), req.labyrinth.sparql) return res.dataset($rdf.dataset([...table.dataset, ...linkedResources])) }), ) diff --git a/apis/core/lib/middleware/operations.ts b/apis/core/lib/middleware/operations.ts index 06647f064..ae319671f 100644 --- a/apis/core/lib/middleware/operations.ts +++ b/apis/core/lib/middleware/operations.ts @@ -1,9 +1,8 @@ import { RequestHandler } from 'express' -import clownface from 'clownface' +import $rdf from '@zazuko/env' import asyncMiddleware from 'middleware-async' import { hydra, rdf } from '@tpluscode/rdf-ns-builders' -import TermSet from '@rdfjs/term-set' -import { log } from '../log' +import { log } from '../log.js' function logRemovedOperation(operation: any) { const method = operation.out(hydra.method).value @@ -17,9 +16,9 @@ export const expectsDisambiguate: RequestHandler = asyncMiddleware(async (req, r return next() } - const api = clownface(req.hydra.api) + const api = $rdf.clownface(req.hydra.api) const resource = await req.resource() - const resourceTypes = new TermSet(api.node(resource.out(rdf.type)).terms) + const resourceTypes = $rdf.termSet(api.node(resource.out(rdf.type)).terms) req.hydra.operations = req.hydra.operations.filter(({ operation }) => { const expectedClasses = api.node(operation.out(hydra.expects).terms) @@ -41,9 +40,9 @@ export const preferHydraCollection: RequestHandler = (req, res, next) => { } const collectionOperations = req.hydra.operations - .filter(({ operation }) => new TermSet(operation.in(hydra.supportedOperation).terms).has(hydra.Collection)) + .filter(({ operation }) => $rdf.termSet(operation.in(hydra.supportedOperation).terms).has(hydra.Collection)) const resourceOperations = req.hydra.operations - .filter(({ operation }) => new TermSet(operation.in(hydra.supportedOperation).terms).has(hydra.Resource)) + .filter(({ operation }) => $rdf.termSet(operation.in(hydra.supportedOperation).terms).has(hydra.Resource)) if (collectionOperations) { req.hydra.operations = req.hydra.operations.filter(value => { diff --git a/apis/core/lib/middleware/resource.ts b/apis/core/lib/middleware/resource.ts index 5748fac7b..c50100121 100644 --- a/apis/core/lib/middleware/resource.ts +++ b/apis/core/lib/middleware/resource.ts @@ -1,7 +1,7 @@ import express from 'express' import once from 'once' -import ResourceStoreImpl, { ResourceStore, SparqlStoreFacade } from '../ResourceStore' -import { streamClient } from '../query-client' +import ResourceStoreImpl, { ResourceStore, SparqlStoreFacade } from '../ResourceStore.js' +import { streamClient } from '../query-client.js' declare module 'express-serve-static-core' { export interface Request { diff --git a/apis/core/lib/middleware/shacl.ts b/apis/core/lib/middleware/shacl.ts index 10489f172..e204d34d1 100644 --- a/apis/core/lib/middleware/shacl.ts +++ b/apis/core/lib/middleware/shacl.ts @@ -1,8 +1,8 @@ import type { NamedNode } from '@rdfjs/types' import * as expressMiddlewareShacl from 'hydra-box-middleware-shacl' -import ResourceStoreImpl from '../ResourceStore' -import { streamClient } from '../query-client' -import { loadResourcesTypes } from '../domain/queries/resources-types' +import ResourceStoreImpl from '../ResourceStore.js' +import { streamClient } from '../query-client.js' +import { loadResourcesTypes } from '../domain/queries/resources-types.js' type CreateMiddleware = Pick[0], 'parseResource' | 'loadShapes' | 'disableShClass'> diff --git a/apis/core/lib/pipeline/index.ts b/apis/core/lib/pipeline/index.ts index 55e80fdb8..2e0658e3a 100644 --- a/apis/core/lib/pipeline/index.ts +++ b/apis/core/lib/pipeline/index.ts @@ -1,11 +1,10 @@ -import { GraphPointer } from 'clownface' -import nodeFetch, { Response } from 'node-fetch' -import type { ParsingClient } from 'sparql-http-client/ParsingClient' +import type { GraphPointer } from 'clownface' +import type { ParsingClient } from 'sparql-http-client/ParsingClient.js' interface TriggerCallback { job: GraphPointer res: Response - fetch?: typeof nodeFetch + fetch?: typeof fetch client: ParsingClient } diff --git a/apis/core/lib/pipeline/publishCallbacks.ts b/apis/core/lib/pipeline/publishCallbacks.ts index fcdaa3349..0d5482e33 100644 --- a/apis/core/lib/pipeline/publishCallbacks.ts +++ b/apis/core/lib/pipeline/publishCallbacks.ts @@ -1,16 +1,15 @@ -import nodeFetch from 'node-fetch' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { SELECT } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' import { schema } from '@tpluscode/rdf-ns-builders' -import { warning } from '../log' -import { TriggerCallbackMap, TriggerCallbacks } from './index' +import { warning } from '../log.js' +import { TriggerCallbackMap, TriggerCallbacks } from './index.js' const pipelineUrlTerm = $rdf.namedNode('urn:gitlab:pipelineUrl') const gitlab: TriggerCallbacks = { - onSuccess: async function cancelConcurrentJobs({ job, res, fetch = nodeFetch, client }) { + onSuccess: async function cancelConcurrentJobs({ job, res, client }) { if (!env.has('GITLAB_TOKEN') || !env.has('GITLAB_API_URL')) { return } @@ -29,7 +28,7 @@ const gitlab: TriggerCallbacks = { ${cc.revision} ${job.out(cc.revision).term} ; . } - `.execute(client.query) + `.execute(client) const cancelPipelines = previousJobs.map(async ({ pipelineUrl }) => { return fetch(`${pipelineUrl.value}/cancel`, { diff --git a/apis/core/lib/pipeline/trigger.ts b/apis/core/lib/pipeline/trigger.ts index ea6027f71..25d6b3ebc 100644 --- a/apis/core/lib/pipeline/trigger.ts +++ b/apis/core/lib/pipeline/trigger.ts @@ -1,21 +1,20 @@ import { URLSearchParams } from 'url' import type { NamedNode } from '@rdfjs/types' -import nodeFetch, { RequestInit, Response } from 'node-fetch' -import env from '@cube-creator/core/env' -import { GraphPointer } from 'clownface' +import env from '@cube-creator/core/env/node' +import type { GraphPointer } from 'clownface' import { dcterms, rdf } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import TermMap from '@rdfjs/term-map' +import $rdf from '@zazuko/env' const pipelineURI = env.PIPELINE_URI function trigger(triggerRequestInit: (job: GraphPointer, params?: GraphPointer) => RequestInit) { - return async (job: GraphPointer, params?: GraphPointer, fetch = nodeFetch) => { + return async (job: GraphPointer, params?: GraphPointer, _fetch = fetch) => { if (!job) { throw new Error('Job URI missing') } - const res = await fetch(pipelineURI, triggerRequestInit(job, params)) + const res = await _fetch(pipelineURI, triggerRequestInit(job, params)) if (!res.ok) { const message = await res.text() @@ -74,7 +73,7 @@ export const gitlab = trigger(job => { } }) -const githubJobTypes = new TermMap([ +const githubJobTypes = $rdf.termMap([ [cc.TransformJob, 'transform_job'], [cc.PublishJob, 'transform_job'], [cc.UnlistJob, 'unlist_job'], diff --git a/apis/core/lib/query-client.ts b/apis/core/lib/query-client.ts index 39a2269c5..63ae4e483 100644 --- a/apis/core/lib/query-client.ts +++ b/apis/core/lib/query-client.ts @@ -1,6 +1,6 @@ import StreamClient from 'sparql-http-client' -import ParsingClient from 'sparql-http-client/ParsingClient' -import env from '@cube-creator/core/env' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import env from '@cube-creator/core/env/node' const clientConfig = { endpointUrl: env.STORE_QUERY_ENDPOINT, diff --git a/apis/core/lib/resources/hydraManages.ts b/apis/core/lib/resources/hydraManages.ts index ba9d510c6..8d0d40ffe 100644 --- a/apis/core/lib/resources/hydraManages.ts +++ b/apis/core/lib/resources/hydraManages.ts @@ -1,5 +1,5 @@ import type { NamedNode } from '@rdfjs/types' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { hydra } from '@tpluscode/rdf-ns-builders' type ManagesBlock = { diff --git a/apis/core/lib/storage/http.ts b/apis/core/lib/storage/http.ts index 4004a9219..38c6fe82c 100644 --- a/apis/core/lib/storage/http.ts +++ b/apis/core/lib/storage/http.ts @@ -1,14 +1,13 @@ import { Readable } from 'stream' import type { MediaObject } from '@rdfine/schema' -import fetch from 'node-fetch' -import type { MediaStorage } from './types' +import type { MediaStorage } from './types.js' export const httpStorage: MediaStorage = { async getStream(media: MediaObject): Promise { const url = getUrl(media) const response = await fetch(url) - return response.body as Readable + return response.body as unknown as Readable }, // Deleting remote file is a noop diff --git a/apis/core/lib/storage/index.ts b/apis/core/lib/storage/index.ts index 128cd5bfb..a0c75d78b 100644 --- a/apis/core/lib/storage/index.ts +++ b/apis/core/lib/storage/index.ts @@ -2,11 +2,11 @@ import { MediaObject } from '@rdfine/schema' import { cc } from '@cube-creator/core/namespace' -import { httpStorage } from './http' -import * as s3 from './s3' -import { MediaStorage } from './types' +import { httpStorage } from './http.js' +import * as s3 from './s3.js' +import { MediaStorage } from './types.js' -export type { GetMediaStorage, MediaStorage } from './types' +export type { GetMediaStorage, MediaStorage } from './types.js' export function getMediaStorage(media: MediaObject): MediaStorage { const sourceKind = media.sourceKind diff --git a/apis/core/lib/storage/s3.ts b/apis/core/lib/storage/s3.ts index ed7613ae0..fde632bc2 100644 --- a/apis/core/lib/storage/s3.ts +++ b/apis/core/lib/storage/s3.ts @@ -2,9 +2,9 @@ import { Readable } from 'stream' import aws from 'aws-sdk' import { PromiseResult } from 'aws-sdk/lib/request' import type { MediaObject } from '@rdfine/schema' -import env from '@cube-creator/core/env' -import { log } from '../log' -import type { MediaStorage } from './types' +import env from '@cube-creator/core/env/node' +import { log } from '../log.js' +import type { MediaStorage } from './types.js' const logError = log.extend('s3').extend('error') const logWarning = log.extend('s3').extend('warning') diff --git a/apis/core/lib/upload.ts b/apis/core/lib/upload.ts index 4982f0419..7ab0ba081 100644 --- a/apis/core/lib/upload.ts +++ b/apis/core/lib/upload.ts @@ -1,12 +1,12 @@ import os from 'os' import express from 'express' import * as companion from '@uppy/companion' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import bodyParser from 'body-parser' import { nanoid } from 'nanoid' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' -import { sourceWithFilenameExists } from './domain/queries/csv-source' +import { sourceWithFilenameExists } from './domain/queries/csv-source.js' const apiURL = new URL(env.API_CORE_BASE) diff --git a/apis/core/package.json b/apis/core/package.json index 2793b79bf..ced316fc7 100644 --- a/apis/core/package.json +++ b/apis/core/package.json @@ -2,38 +2,36 @@ "name": "@cube-creator/core-api", "version": "2.3.4", "private": true, + "type": "module", "scripts": { "build": "tsc" }, "dependencies": { "@cube-creator/api-errors": "0.0.6", "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", "@cube-creator/express": "0.0.0", "@cube-creator/model": "0.1.27", "@cube-creator/shared-dimensions-api": "3.0.4", - "@hydrofoil/labyrinth": "^0.4.4", - "@rdfine/csvw": "^0.6.3", - "@rdfine/hydra": "^0.8.0", - "@rdfine/prov": "^0.1.1", - "@rdfine/schema": "^0.6.3", - "@rdfjs-elements/formats-pretty": "^0.4.3", - "@rdfjs/express-handler": "^1.2.1", - "@rdfjs/fetch": "^2.1.0", - "@rdfjs/namespace": "^1.1.0", - "@rdfjs/parser-n3": "^1.1.4", - "@rdfjs/term-map": "^1.0.0", - "@rdfjs/term-set": "^1.0.1", + "@hydrofoil/labyrinth": "^0.4.5", + "@rdfine/csvw": "^0.8.5", + "@rdfine/hydra": "^0.10.5", + "@rdfine/prov": "^0.3.5", + "@rdfine/schema": "^0.8.5", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs/express-handler": "^2.0.0", "@sentry/node": "^6.2.0", "@sentry/tracing": "^6.2.0", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdf-string": "^0.2.28", - "@tpluscode/rdfine": "^0.5.43", - "@tpluscode/sparql-builder": "^0.3.24", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", "@uppy/companion": "^4.1.1", - "@zazuko/rdf-vocabularies": ">=2021.3.17", + "@zazuko/env": "^2.0.6", + "@zazuko/prefixes": "^2", + "@zazuko/rdf-utils-fs": "^3.3.1", "aws-sdk": "^2.1361.0", - "body-parser": "^1.19.0", - "clownface": "^1.0.0", + "body-parser": "^1.20.2", "commander": "^6.1.0", "content-disposition": "^0.5.3", "cors": "^2.8.5", @@ -44,27 +42,26 @@ "express-conditional-middleware": "^2.1.1", "express-jwt": "^8.3.0", "express-jwt-permissions": "^1.3.7", - "express-rdf-request": "0.1.0", + "express-rdf-request": "^2.0.1", "get-stream": "^6.0.1", "http-errors": "^2.0.0", - "hydra-box": "^0.6.6", + "@kopflos-cms/core": "^0.2.0", "hydra-box-middleware-shacl": "1.1.0", - "is-graph-pointer": "^1.3.0", + "is-graph-pointer": "^2.1.0", "is-stream": "^2", "jwks-rsa": "^3.0.0", "merge2": "^1.4.1", "middleware-async": "^1.2.7", - "nanoid": "^3.1.16", - "node-fetch": "^2.6.1", + "nanoid": "^5.0.6", "once": "^1.4.0", "parse-prefer-header": "^1.0.0", - "rdf-cube-view-query": "^1.8.2", + "rdf-cube-view-query": "^2.1.1", "rdf-dataset-ext": "^1.1.0", - "rdf-ext": "^1.3.0", - "rdf-literal": "^1.3.0", + "rdf-dataset-ext": "^1.0.0", + "rdf-literal": "^1.3.2", "set-link": "^1.0.0", "slug": "^5.0.0", - "sparql-http-client": "^2.2.2", + "sparql-http-client": "^3.0.0", "string-to-stream": "^3.0.1", "through2": "^4.0.2", "url-slugify": "^1.0.6" @@ -78,7 +75,6 @@ "@types/chai": "^4.2.13", "@types/chai-as-promised": "^7.1.3", "@types/chai-snapshot-matcher": "^1.0.0", - "@types/clownface": "^1.0.3", "@types/commander": "^2.12.2", "@types/content-disposition": "^0.5.3", "@types/cors": "^2.8.7", @@ -89,23 +85,17 @@ "@types/merge-stream": "^1.1.2", "@types/merge2": "^1.3.0", "@types/mocha": "^10", - "@types/node-fetch": "^2.5.7", - "@types/once": "^1.4.0", + "@types/once": "^1.4.4", "@types/parse-prefer-header": "^1.0.1", - "@types/rdf-ext": "^1.3.8", "@rdfjs/types": "^1.1.0", - "@types/rdf-transform-triple-to-quad": "^1.0.0", - "@types/rdfjs__express-handler": "^1.1.1", - "@types/rdfjs__fetch": "^2", - "@types/rdfjs__parser-n3": "^1.1.2", - "@types/rdfjs__term-map": "^1.0.0", - "@types/rdfjs__term-set": "^1.0.2", + "@types/rdf-transform-triple-to-quad": "^2.0.5", + "@types/rdfjs__express-handler": "^2.0.6", "@types/readable-stream": "^2.3.9", "@types/set-link": "^1.0.1", "@types/sinon": "^10.0.0", - "@types/sinon-chai": "^3.2.4", + "@types/sinon-chai": "^3.2.12", "@types/slug": "^5.0.0", - "@types/sparql-http-client": "^2", + "@types/sparql-http-client": "^3.0.2", "@types/sparqljs": "^3.1.3", "@types/supertest": "^2.0.10", "@types/through2": "^2.0.36", @@ -113,9 +103,10 @@ "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "chai-snapshot-matcher": "^2.0.0", + "esmock": "^2.6.5", "mocha": "^10.2.0", "rdf-literal": "^1.3.0", - "sinon": "^13.0.0", + "sinon": "^17.0.1", "sinon-chai": "^3.5.0", "sparqljs": "^3.5.1", "supertest": "^6.3.3" diff --git a/apis/core/test/ChangelogDataset.test.ts b/apis/core/test/ChangelogDataset.test.ts index fc64bb684..24ccd945c 100644 --- a/apis/core/test/ChangelogDataset.test.ts +++ b/apis/core/test/ChangelogDataset.test.ts @@ -2,9 +2,9 @@ import { foaf, rdf, schema } from '@tpluscode/rdf-ns-builders' import { expect } from 'chai' import { describe, it } from 'mocha' import sinon from 'sinon' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { ex } from '@cube-creator/testing/lib/namespace' -import { ChangelogDataset } from '../lib/ChangelogDataset' +import { ChangelogDataset } from '../lib/ChangelogDataset.js' describe('ChangelogDataset', () => { it('does not have changes when a triple is added and removed', () => { diff --git a/apis/core/test/ResourceStore.test.ts b/apis/core/test/ResourceStore.test.ts index 8c772a619..86aebdc8f 100644 --- a/apis/core/test/ResourceStore.test.ts +++ b/apis/core/test/ResourceStore.test.ts @@ -1,23 +1,24 @@ import { describe, it, beforeEach, before, after } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' -import { StreamClient } from 'sparql-http-client/StreamClient' -import StreamQuery from 'sparql-http-client/StreamQuery' -import StreamStore from 'sparql-http-client/StreamStore' +import $rdf from '@zazuko/env' +import { StreamClient } from 'sparql-http-client/StreamClient.js' +import StreamQuery from 'sparql-http-client/StreamQuery.js' +import StreamStore from 'sparql-http-client/StreamStore.js' import { ex } from '@cube-creator/testing/lib/namespace' import { as, hydra, rdf, rdfs, schema } from '@tpluscode/rdf-ns-builders' import { ASK, DELETE, INSERT } from '@tpluscode/sparql-builder' import { ccClients } from '@cube-creator/testing/lib' -import ResourceStore, { SparqlStoreFacade } from '../lib/ResourceStore' -import { manages } from '../lib/resources/hydraManages' -import * as Activity from '../lib/activity' +import esmock from 'esmock' +import { manages } from '../lib/resources/hydraManages.js' describe('ResourceStore', () => { let client: StreamClient let query: sinon.SinonStubbedInstance let store: sinon.SinonStubbedInstance + let ResourceStore: typeof import('../lib/ResourceStore.js').default + beforeEach(() => { query = sinon.createStubInstance(StreamQuery) @@ -27,11 +28,15 @@ describe('ResourceStore', () => { } }) - before(() => { - sinon.stub(Activity, 'now') - .returns(new Date(Date.parse('2021-10-26T08:00:00.000Z'))) - sinon.stub(Activity, 'newId') - .returns($rdf.namedNode('https://cube-creator.lndo.site/activity/test-activity')) + before(async () => { + ({ default: ResourceStore } = await esmock('../lib/ResourceStore.js', { + '../lib/activity/index.js': { + now: sinon.stub() + .returns(new Date(Date.parse('2021-10-26T08:00:00.000Z'))), + newId: sinon.stub() + .returns($rdf.namedNode('https://cube-creator.lndo.site/activity/test-activity')), + }, + })) }) after(() => { @@ -42,7 +47,7 @@ describe('ResourceStore', () => { it('loads resource from sparql endpoint', async () => { // given const store = new ResourceStore(client) - query.construct.resolves($rdf.dataset([ + query.construct.returns($rdf.dataset([ $rdf.quad(ex.Foo, rdfs.label, $rdf.literal('foo')), ]).toStream()) @@ -56,7 +61,7 @@ describe('ResourceStore', () => { it('called twice returns same object', async () => { // given const store = new ResourceStore(client) - query.construct.resolves($rdf.dataset([ + query.construct.returns($rdf.dataset([ $rdf.quad(ex.Foo, rdfs.label, $rdf.literal('foo')), ]).toStream()) const expected = await store.get(ex.Foo) @@ -84,7 +89,7 @@ describe('ResourceStore', () => { it('returns "undefined" when it is allowed resource comes back empty', async () => { // given const store = new ResourceStore(client) - query.construct.resolves($rdf.dataset().toStream()) + query.construct.returns($rdf.dataset().toStream()) // when const resource = await store.get('foo', { allowMissing: true }) @@ -96,7 +101,7 @@ describe('ResourceStore', () => { it('throws if resource comes back empty', async () => { // given const store = new ResourceStore(client) - query.construct.resolves($rdf.dataset().toStream()) + query.construct.returns($rdf.dataset().toStream()) // when const promise = store.get('foo') @@ -208,7 +213,7 @@ describe('ResourceStore', () => { it('does not update store if nothing changes', async () => { // given const store = new ResourceStore(client) - query.construct.callsFake(async () => $rdf.dataset([ + query.construct.callsFake(() => $rdf.dataset([ $rdf.quad(ex.Resource, rdfs.label, $rdf.literal('foo')), ]).toStream()) @@ -225,7 +230,7 @@ describe('ResourceStore', () => { it('only saves changed resources', async function () { // given const store = new ResourceStore(client) - query.construct.callsFake(async () => $rdf.dataset([ + query.construct.callsFake(() => $rdf.dataset([ $rdf.quad($rdf.namedNode('baz'), rdfs.label, $rdf.literal('foo')), ]).toStream()) @@ -243,7 +248,7 @@ describe('ResourceStore', () => { it('only deletes graph if all resource triples were removed', async function () { // given const store = new ResourceStore(client) - query.construct.resolves($rdf.dataset([ + query.construct.returns($rdf.dataset([ $rdf.quad($rdf.namedNode('baz'), rdfs.label, $rdf.literal('foo')), $rdf.quad($rdf.namedNode('baz'), rdfs.comment, $rdf.literal('bar')), ]).toStream()) @@ -288,9 +293,10 @@ describe('ResourceStore', () => { describe('ResourceStore @SPARQL', () => { const testResource = ex.TestResource - let store: ResourceStore + let store: import('../lib/ResourceStore.js').default beforeEach(async () => { + const { default: ResourceStore, SparqlStoreFacade } = await import('../lib/ResourceStore.js') store = new ResourceStore(new SparqlStoreFacade(ccClients.streamClient, () => ex.User)) await DELETE` graph ?resource { ?rs ?rp ?ro } @@ -309,7 +315,7 @@ describe('ResourceStore @SPARQL', () => { ?as ?ap ?ao . } } - `.execute(ccClients.streamClient.query) + `.execute(ccClients.streamClient) }) describe('created', () => { @@ -327,7 +333,7 @@ describe('ResourceStore @SPARQL', () => { ${as.startTime} ?time ; ${as.endTime} ?time ; . - }`.execute(ccClients.streamClient.query) + }`.execute(ccClients.streamClient) await expect(activityCreated).to.eventually.be.true }) @@ -335,7 +341,7 @@ describe('ResourceStore @SPARQL', () => { it('stores changed resource', async () => { const resourceCreated = ASK` ${testResource} a ${schema.Person} . - `.FROM(testResource).execute(ccClients.streamClient.query) + `.FROM(testResource).execute(ccClients.streamClient) await expect(resourceCreated).to.eventually.be.true }) @@ -347,7 +353,7 @@ describe('ResourceStore @SPARQL', () => { graph ${testResource} { ${testResource} a ${schema.Person} ; ${schema.name} "john" } - `.execute(ccClients.streamClient.query) + `.execute(ccClients.streamClient) const ptr = await store.get(testResource) ptr.addOut(schema.name, 'John') @@ -362,7 +368,7 @@ describe('ResourceStore @SPARQL', () => { ${as.startTime} ?time ; ${as.endTime} ?time ; . - }`.execute(ccClients.streamClient.query) + }`.execute(ccClients.streamClient) await expect(activityCreated).to.eventually.be.true }) @@ -370,7 +376,7 @@ describe('ResourceStore @SPARQL', () => { it('stores changed resource', async () => { const resourceCreated = ASK` ${testResource} a ${schema.Person}; ${schema.name} "John" . - `.FROM(testResource).execute(ccClients.streamClient.query) + `.FROM(testResource).execute(ccClients.streamClient) await expect(resourceCreated).to.eventually.be.true }) @@ -382,7 +388,7 @@ describe('ResourceStore @SPARQL', () => { graph ${testResource} { ${testResource} a ${schema.Person} } - `.execute(ccClients.streamClient.query) + `.execute(ccClients.streamClient) store.delete(testResource) await store.save() @@ -391,7 +397,7 @@ describe('ResourceStore @SPARQL', () => { it('removes resource data', async () => { const resourceExists = ASK` ?s ?p ?o - `.FROM(testResource).execute(ccClients.streamClient.query) + `.FROM(testResource).execute(ccClients.streamClient) await expect(resourceExists).to.eventually.be.false }) @@ -404,7 +410,7 @@ describe('ResourceStore @SPARQL', () => { ${as.startTime} ?time ; ${as.endTime} ?time ; . - }`.execute(ccClients.streamClient.query) + }`.execute(ccClients.streamClient) await expect(activityCreated).to.eventually.be.true }) diff --git a/apis/core/test/csvw-builder/index.test.ts b/apis/core/test/csvw-builder/index.test.ts index b8154d61c..27137d632 100644 --- a/apis/core/test/csvw-builder/index.test.ts +++ b/apis/core/test/csvw-builder/index.test.ts @@ -1,26 +1,23 @@ import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import clownface, { AnyContext, AnyPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { AnyContext, AnyPointer } from 'clownface' +import $rdf from '@cube-creator/env' import * as CsvMapping from '@cube-creator/model/CsvMapping' import * as CsvSource from '@cube-creator/model/CsvSource' import * as CsvColumn from '@cube-creator/model/CsvColumn' import * as ColumnMapping from '@cube-creator/model/ColumnMapping' import * as Table from '@cube-creator/model/Table' -import * as Organization from '@cube-creator/model/Organization' -import * as Project from '@cube-creator/model/Project' import { cc } from '@cube-creator/core/namespace' import * as ns from '@tpluscode/rdf-ns-builders' -import { schema, xsd, qudt } from '@tpluscode/rdf-ns-builders/strict' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { schema, xsd, qudt } from '@tpluscode/rdf-ns-builders' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import sinon from 'sinon' import { namedNode } from '@cube-creator/testing/clownface' import { DefaultCsvwLiteral } from '@cube-creator/core/mapping' -import { buildCsvw } from '../../lib/csvw-builder' -import '../../lib/domain' -import * as orgQueries from '../../lib/domain/organization/query' -import { TestResourceStore } from '../support/TestResourceStore' -import { findColumn } from './support' +import esmock from 'esmock' +import { TestResourceStore } from '../support/TestResourceStore.js' +import { findColumn } from './support.js' +import '../../lib/domain/index.js' describe('lib/csvw-builder', () => { let graph: AnyPointer @@ -29,25 +26,27 @@ describe('lib/csvw-builder', () => { let csvMapping: CsvMapping.CsvMapping let resources: TestResourceStore - beforeEach(() => { + let buildCsvw: typeof import('../../lib/csvw-builder/index.js').buildCsvw + + beforeEach(async () => { sinon.restore() - graph = clownface({ dataset: $rdf.dataset() }) + graph = $rdf.clownface() const csvSourcePointer = graph.namedNode('csv-mapping') const csvMappingPointer = graph.namedNode('table-source') - const organization = Organization.fromPointer(namedNode('org'), { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, cubeIdentifier: 'test-cube', }) - csvMapping = CsvMapping.create(csvMappingPointer, { + csvMapping = CsvMapping.create($rdf, csvMappingPointer, { project: $rdf.namedNode('project'), }) - csvSource = CsvSource.create(csvSourcePointer, { + csvSource = CsvSource.create($rdf, csvSourcePointer, { name: 'test-observation.csv', csvMapping, dialect: { @@ -66,7 +65,7 @@ describe('lib/csvw-builder', () => { }], }) - table = Table.create(graph.namedNode('table'), { + table = Table.create($rdf, graph.namedNode('table'), { name: 'test observation table', identifierTemplate: '{id}-{sub_id}', csvMapping, @@ -80,10 +79,15 @@ describe('lib/csvw-builder', () => { organization, ]) - sinon.stub(orgQueries, 'findOrganization').resolves({ - projectId: project.id, - organizationId: organization.id, - }) + ;({ buildCsvw } = await esmock('../../lib/csvw-builder/index.js', { + '../../lib/domain/organization/query.js': { + findOrganization: async () => + ({ + projectId: project.id, + organizationId: organization.id, + }), + }, + })) }) it("create a csvw resource with table's csvw URI", async () => { @@ -145,7 +149,7 @@ describe('lib/csvw-builder', () => { it('returns unmapped source column as suppressed', async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.blankNode(), { name: 'id' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.blankNode(), { name: 'id' }), ] // when @@ -160,9 +164,9 @@ describe('lib/csvw-builder', () => { it("combines namespace and source column's target property csvw:propertyUrl", async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: $rdf.literal('year'), }) @@ -180,9 +184,9 @@ describe('lib/csvw-builder', () => { it('does not add a duplicate csvw:column as suppressed', async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: $rdf.literal('year'), }) @@ -200,9 +204,9 @@ describe('lib/csvw-builder', () => { it("takes source column's target property as-is when it is a NamedNode", async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: schema.yearBuilt, }) @@ -220,9 +224,9 @@ describe('lib/csvw-builder', () => { it('maps column with datatype', async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: schema.yearBuilt, datatype: xsd.gYear, @@ -241,9 +245,9 @@ describe('lib/csvw-builder', () => { it('maps column with language', async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: schema.yearBuilt, language: 'de-DE', @@ -262,9 +266,9 @@ describe('lib/csvw-builder', () => { it('maps column with default value', async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: schema.yearBuilt, defaultValue: '2020', @@ -283,9 +287,9 @@ describe('lib/csvw-builder', () => { it('sets substitution default value for observation table literal columns without explicit default', async () => { // given csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('jahr-column'), { name: 'JAHR' }), ] - const columnMapping = ColumnMapping.literalFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('year-mapping'), { + const columnMapping = ColumnMapping.literalFromPointer($rdf, $rdf.clownface().namedNode('year-mapping'), { sourceColumn: $rdf.namedNode('jahr-column') as any, targetProperty: schema.yearBuilt, }) @@ -303,17 +307,17 @@ describe('lib/csvw-builder', () => { it('maps column from reference column mapping', async () => { // given - const stationSource = CsvSource.create(graph.namedNode('station-source'), { + const stationSource = CsvSource.create($rdf, graph.namedNode('station-source'), { name: 'test-station.csv', csvMapping, dialect: { delimiter: '-', quoteChar: '""' }, }) stationSource.columns = [ - CsvColumn.fromPointer(stationSource.pointer.namedNode('column-station-id'), { name: 'ID' }), - CsvColumn.fromPointer(stationSource.pointer.namedNode('column-station-name'), { name: 'NAME' }), + CsvColumn.fromPointer($rdf, stationSource.pointer.namedNode('column-station-id'), { name: 'ID' }), + CsvColumn.fromPointer($rdf, stationSource.pointer.namedNode('column-station-name'), { name: 'NAME' }), ] resources.push(stationSource.pointer as any) - const stationTable = Table.create(graph.namedNode('table-station'), { + const stationTable = Table.create($rdf, graph.namedNode('table-station'), { name: 'test station table', identifierTemplate: 'Station/{ID}/{NAME}', csvMapping, @@ -321,10 +325,10 @@ describe('lib/csvw-builder', () => { }) resources.push(stationTable.pointer as any) csvSource.columns = [ - CsvColumn.fromPointer(csvSource.pointer.namedNode('ref-station'), { name: 'STATION' }), - CsvColumn.fromPointer(csvSource.pointer.namedNode('ref-station-name'), { name: 'STATION-NAME' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('ref-station'), { name: 'STATION' }), + CsvColumn.fromPointer($rdf, csvSource.pointer.namedNode('ref-station-name'), { name: 'STATION-NAME' }), ] - const columnMapping = ColumnMapping.referenceFromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('station-mapping'), { + const columnMapping = ColumnMapping.referenceFromPointer($rdf, $rdf.clownface().namedNode('station-mapping'), { targetProperty: $rdf.namedNode('station'), referencedTable: stationTable, identifierMapping: [ diff --git a/apis/core/test/domain/column-mapping/create.test.ts b/apis/core/test/domain/column-mapping/create.test.ts index d9021914e..d69a60ae3 100644 --- a/apis/core/test/domain/column-mapping/create.test.ts +++ b/apis/core/test/domain/column-mapping/create.test.ts @@ -1,21 +1,16 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' import { csvw, hydra, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import * as Organization from '@cube-creator/model/Organization' -import * as Project from '@cube-creator/model/Project' import { DomainError } from '@cube-creator/api-errors' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { namedNode } from '@cube-creator/testing/clownface' -import { createColumnMapping } from '../../../lib/domain/column-mapping/create' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as DimensionMetadataQueries from '../../../lib/domain/queries/dimension-metadata' -import * as orgQueries from '../../../lib/domain/organization/query' -import '../../../lib/domain' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/column-mapping/create', () => { let store: TestResourceStore @@ -23,38 +18,38 @@ describe('domain/column-mapping/create', () => { let observationTable: GraphPointer let dimensionMetadata: GraphPointer - beforeEach(() => { - sinon.restore() + let createColumnMapping: typeof import('../../../lib/domain/column-mapping/create.js').createColumnMapping - const csvMapping = clownface({ dataset: $rdf.dataset() }) + beforeEach(async () => { + const csvMapping = $rdf.clownface() .namedNode('csv-mapping') .addOut(rdf.type, cc.CsvMapping) - const csvSource = clownface({ dataset: $rdf.dataset() }) + const csvSource = $rdf.clownface() .namedNode('foo') .addOut(rdf.type, cc.CSVSource) .addOut(csvw.column, $rdf.namedNode('my-column'), (column) => { column.addOut(schema.name, $rdf.literal('My Column')) }) - table = clownface({ dataset: $rdf.dataset() }) + table = $rdf.clownface() .namedNode('myTable') .addOut(rdf.type, cc.Table) .addOut(cc.csvMapping, csvMapping) .addOut(cc.csvSource, csvSource) - observationTable = clownface({ dataset: $rdf.dataset() }) + observationTable = $rdf.clownface() .namedNode('myObservationTable') .addOut(rdf.type, cc.Table) .addOut(rdf.type, cc.ObservationTable) .addOut(cc.csvMapping, csvMapping) .addOut(cc.csvSource, csvSource) - dimensionMetadata = clownface({ dataset: $rdf.dataset() }) + dimensionMetadata = $rdf.clownface() .namedNode('myDimensionMetadata') .addOut(rdf.type, cc.DimensionMetadataCollection) - const organization = Organization.fromPointer(namedNode('org'), { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, cubeIdentifier: 'test-cube', }) @@ -69,18 +64,24 @@ describe('domain/column-mapping/create', () => { project, ]) - sinon.restore() - sinon.stub(DimensionMetadataQueries, 'getDimensionMetaDataCollection').resolves(dimensionMetadata.term) - - sinon.stub(orgQueries, 'findOrganization').resolves({ - projectId: project.id, - organizationId: organization.id, - }) + ;({ createColumnMapping } = await esmock('../../../lib/domain/column-mapping/create.js', { + '../../../lib/domain/queries/dimension-metadata.js': { + getDimensionMetaDataCollection: async () => dimensionMetadata.term, + }, + }, { + '../../../lib/domain/organization/query.js': { + findOrganization: async () => + ({ + projectId: project.id, + organizationId: organization.id, + }), + }, + })) }) it('creates identifier by slugifying the column schema:name', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, 'test') @@ -94,7 +95,7 @@ describe('domain/column-mapping/create', () => { it('creates correctly shaped cc:ColumnMapping', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -137,7 +138,7 @@ describe('domain/column-mapping/create', () => { it('links column mapping from table', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -157,7 +158,7 @@ describe('domain/column-mapping/create', () => { it('No metadata when not observation table', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -176,7 +177,7 @@ describe('domain/column-mapping/create', () => { it('creates Dimension Metadata for column', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -213,7 +214,7 @@ describe('domain/column-mapping/create', () => { store.push(dimensionMetadata) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('existingDimension')) @@ -233,7 +234,7 @@ describe('domain/column-mapping/create', () => { it('creates Dimension Metadata for column, literal property', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.literal('testLiteral')) @@ -263,7 +264,7 @@ describe('domain/column-mapping/create', () => { it('do not throw if same column mapping with same targetProperty is added twice', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -278,7 +279,7 @@ describe('domain/column-mapping/create', () => { it('throw if same column mapping with same targetProperty is added twice to an observation table', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -291,13 +292,13 @@ describe('domain/column-mapping/create', () => { describe('when some column mappings exist on observation table', () => { it('throws when exact targetProperty is used for new property', async () => { // given - const existingMapping = clownface({ dataset: $rdf.dataset() }) + const existingMapping = $rdf.clownface() .namedNode('mapping') .addOut(rdf.type, cc.ColumnMapping) .addOut(cc.targetProperty, $rdf.literal('year')) store.push(existingMapping) observationTable.addOut(cc.columnMapping, existingMapping) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.literal('year')) @@ -311,13 +312,13 @@ describe('domain/column-mapping/create', () => { it('throws when exact targetProperty URI is used for new property', async () => { // given - const existingMapping = clownface({ dataset: $rdf.dataset() }) + const existingMapping = $rdf.clownface() .namedNode('mapping') .addOut(rdf.type, cc.ColumnMapping) .addOut(cc.targetProperty, $rdf.namedNode('year')) store.push(existingMapping) observationTable.addOut(cc.columnMapping, existingMapping) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('year')) @@ -331,13 +332,13 @@ describe('domain/column-mapping/create', () => { it('throws when target property would result in an URI used explicitly', async () => { // given - const existingMapping = clownface({ dataset: $rdf.dataset() }) + const existingMapping = $rdf.clownface() .namedNode('mapping') .addOut(rdf.type, cc.ColumnMapping) .addOut(cc.targetProperty, $rdf.namedNode('http://example.com/test-cube/year')) store.push(existingMapping) observationTable.addOut(cc.columnMapping, existingMapping) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.literal('year')) diff --git a/apis/core/test/domain/column-mapping/delete.test.ts b/apis/core/test/domain/column-mapping/delete.test.ts index 79fb02b91..d83c9c26d 100644 --- a/apis/core/test/domain/column-mapping/delete.test.ts +++ b/apis/core/test/domain/column-mapping/delete.test.ts @@ -2,30 +2,21 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import { csvw, hydra, rdf, schema, xsd, prov } from '@tpluscode/rdf-ns-builders/strict' +import type { GraphPointer } from 'clownface' +import $rdf from '@Cube-creator/env' +import { csvw, hydra, rdf, schema, xsd, prov } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { ColumnMapping } from '@cube-creator/model' -import * as Organization from '@cube-creator/model/Organization' -import * as Project from '@cube-creator/model/Project' import { namedNode } from '@cube-creator/testing/clownface' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as DimensionMetadataQueries from '../../../lib/domain/queries/dimension-metadata' -import type * as TableQueries from '../../../lib/domain/queries/table' -import type * as ColumnMappingQueries from '../../../lib/domain/queries/column-mapping' -import '../../../lib/domain' -import { deleteColumnMapping } from '../../../lib/domain/column-mapping/delete' -import * as orgQueries from '../../../lib/domain/organization/query' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/column-mapping/delete', () => { let store: TestResourceStore const getLinkedTablesForSource = sinon.stub() const getTablesForMapping = sinon.stub() - let tableQueries: typeof TableQueries - let getTableForColumnMapping: sinon.SinonStub - let columnMappingQueries: typeof ColumnMappingQueries let dimensionIsUsedByOtherMapping: sinon.SinonStub let dimensionMetadataCollection: GraphPointer let columnMapping: GraphPointer @@ -33,21 +24,21 @@ describe('domain/column-mapping/delete', () => { let observationTable: GraphPointer let dimensionMapping: GraphPointer - beforeEach(() => { - sinon.restore() + let deleteColumnMapping: typeof import('../../../lib/domain/column-mapping/delete.js').deleteColumnMapping - const organization = Organization.fromPointer(namedNode('org'), { + beforeEach(async () => { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, cubeIdentifier: 'test-cube', }) - const csvMapping = clownface({ dataset: $rdf.dataset() }) + const csvMapping = $rdf.clownface() .namedNode('csv-mapping') .addOut(rdf.type, cc.CsvMapping) - const csvSource = clownface({ dataset: $rdf.dataset() }) + const csvSource = $rdf.clownface() .namedNode('foo') .addOut(rdf.type, cc.CSVSource) .addOut(csvw.column, $rdf.namedNode('my-column'), (column) => { @@ -57,7 +48,7 @@ describe('domain/column-mapping/delete', () => { column.addOut(schema.name, $rdf.literal('My Column 2')) }) - columnMapping = clownface({ dataset: $rdf.dataset() }) + columnMapping = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) @@ -67,14 +58,14 @@ describe('domain/column-mapping/delete', () => { .addOut(cc.language, $rdf.literal('fr')) .addOut(cc.defaultValue, $rdf.literal('test')) - const otherColumnMapping = clownface({ dataset: $rdf.dataset() }) + const otherColumnMapping = $rdf.clownface() .node($rdf.namedNode('otherColumnMapping')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-column2')) .addOut(cc.targetProperty, $rdf.namedNode('other')) - const table = clownface({ dataset: $rdf.dataset() }) + const table = $rdf.clownface() .namedNode('myTable') .addOut(rdf.type, cc.Table) .addOut(rdf.type, cc.ObservationTable) @@ -83,7 +74,7 @@ describe('domain/column-mapping/delete', () => { .addOut(cc.columnMapping, columnMapping) .addOut(cc.columnMapping, otherColumnMapping) - columnMappingObservation = clownface({ dataset: $rdf.dataset() }) + columnMappingObservation = $rdf.clownface() .node($rdf.namedNode('columnMappingObservation')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) @@ -91,7 +82,7 @@ describe('domain/column-mapping/delete', () => { .addOut(cc.targetProperty, $rdf.namedNode('test')) .addOut(cc.datatype, xsd.integer) - observationTable = clownface({ dataset: $rdf.dataset() }) + observationTable = $rdf.clownface() .namedNode('myObservationTable') .addOut(rdf.type, cc.Table) .addOut(rdf.type, cc.ObservationTable) @@ -100,11 +91,11 @@ describe('domain/column-mapping/delete', () => { .addOut(cc.columnMapping, columnMappingObservation) .addOut(cc.columnMapping, columnMapping) - dimensionMapping = clownface({ dataset: $rdf.dataset() }) + dimensionMapping = $rdf.clownface() .namedNode('myDimensionMapping') .addOut(rdf.type, prov.Dictionary) - dimensionMetadataCollection = clownface({ dataset: $rdf.dataset() }) + dimensionMetadataCollection = $rdf.clownface() .namedNode('dimensionMetadataCollection') .addOut(rdf.type, cc.DimensionMetadataCollection) .addOut(schema.hasPart, $rdf.namedNode('myDimension'), dim => { @@ -129,29 +120,32 @@ describe('domain/column-mapping/delete', () => { dimensionMapping, ]) - sinon.restore() - sinon.stub(DimensionMetadataQueries, 'getDimensionMetaDataCollection').resolves(dimensionMetadataCollection.term) - - getTableForColumnMapping = sinon.stub().resolves(observationTable.term.value) - tableQueries = { - getLinkedTablesForSource, - getTablesForMapping, - getTableForColumnMapping, - getTableReferences: sinon.stub(), - getCubeTable: sinon.stub(), - } - + const getDimensionMetaDataCollection = sinon.stub().resolves(dimensionMetadataCollection.term) + const getTableForColumnMapping = sinon.stub().resolves(observationTable.term.value) dimensionIsUsedByOtherMapping = sinon.stub().resolves(false) - const getReferencingMappingsForTable = sinon.stub().returns([]) - columnMappingQueries = { - dimensionIsUsedByOtherMapping, - getReferencingMappingsForTable, - } - - sinon.stub(orgQueries, 'findOrganization').resolves({ - projectId: project.id, - organizationId: organization.id, - }) + + ;({ deleteColumnMapping } = await esmock('../../../lib/domain/column-mapping/delete.js', { + '../../../lib/domain/queries/table.js': { + getLinkedTablesForSource, + getTablesForMapping, + getTableForColumnMapping, + getTableReferences: sinon.stub(), + getCubeTable: sinon.stub(), + }, + '../../../lib/domain/queries/dimension-metadata.js': { + getDimensionMetaDataCollection, + }, + '../../../lib/domain/queries/column-mapping.js': { + dimensionIsUsedByOtherMapping, + getReferencingMappingsForTable: sinon.stub().returns([]), + }, + '../../../lib/domain/organization/query.js': { + findOrganization: sinon.stub().resolves({ + projectId: project.id, + organizationId: organization.id, + }), + }, + })) }) it('deletes a column mapping and its dimensions', async () => { @@ -160,7 +154,7 @@ describe('domain/column-mapping/delete', () => { const dimensionsCount = dimensionMetadataCollection.out(schema.hasPart).terms.length const columnMappingsCount = observationTable.out(cc.columnMapping).terms.length - await deleteColumnMapping({ resource: resourceId, store, tableQueries, columnMappingQueries }) + await deleteColumnMapping({ resource: resourceId, store }) await store.save() const columnMapping = await store.getResource(resourceId, { allowMissing: true }) @@ -180,7 +174,7 @@ describe('domain/column-mapping/delete', () => { const columnMappingsCount = observationTable.out(cc.columnMapping).terms.length const dimensionMetadataCount = dimensionMetadataCollection.node($rdf.namedNode('myDimension')).out().values.length - await deleteColumnMapping({ resource: resourceId, store, tableQueries, columnMappingQueries }) + await deleteColumnMapping({ resource: resourceId, store }) await store.save() const columnMapping = await store.getResource(resourceId, { allowMissing: true }) @@ -196,7 +190,7 @@ describe('domain/column-mapping/delete', () => { const resourceId = $rdf.namedNode('columnMappingObservation') // when - await deleteColumnMapping({ resource: resourceId, store, tableQueries, columnMappingQueries }) + await deleteColumnMapping({ resource: resourceId, store }) await store.save() // then diff --git a/apis/core/test/domain/column-mapping/update.test.ts b/apis/core/test/domain/column-mapping/update.test.ts index 731efa576..2fa195434 100644 --- a/apis/core/test/domain/column-mapping/update.test.ts +++ b/apis/core/test/domain/column-mapping/update.test.ts @@ -2,27 +2,23 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' import { csvw, hydra, prov, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' import { DomainError, NotFoundError } from '@cube-creator/api-errors' -import DatasetExt from 'rdf-ext/lib/Dataset' -import * as Organization from '@cube-creator/model/Organization' -import * as Project from '@cube-creator/model/Project' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { namedNode } from '@cube-creator/testing/clownface' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as DimensionMetadataQueries from '../../../lib/domain/queries/dimension-metadata' -import type * as TableQueries from '../../../lib/domain/queries/table' -import '../../../lib/domain' -import { updateLiteralColumnMapping } from '../../../lib/domain/column-mapping/update' -import * as orgQueries from '../../../lib/domain/organization/query' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/column-mapping/update', () => { let store: TestResourceStore const getLinkedTablesForSource = sinon.stub() const getTablesForMapping = sinon.stub() - let tableQueries: typeof TableQueries + let getDimensionMetaDataCollection: sinon.SinonStub + let findOrganization: sinon.SinonStub let getTableForColumnMapping: sinon.SinonStub let dimensionMetadata: GraphPointer let dimensionMappings: GraphPointer @@ -30,12 +26,14 @@ describe('domain/column-mapping/update', () => { let columnMappingObservation: GraphPointer let observationTable: GraphPointer - beforeEach(() => { - const csvMapping = clownface({ dataset: $rdf.dataset() }) + let updateLiteralColumnMapping: typeof import('../../../lib/domain/column-mapping/update.js').updateLiteralColumnMapping + + beforeEach(async () => { + const csvMapping = $rdf.clownface() .namedNode('csv-mapping') .addOut(rdf.type, cc.CsvMapping) .addOut(cc.namespace, 'http://example.com/') - const csvSource = clownface({ dataset: $rdf.dataset() }) + const csvSource = $rdf.clownface() .namedNode('foo') .addOut(rdf.type, cc.CSVSource) .addOut(csvw.column, $rdf.namedNode('my-column'), (column) => { @@ -45,7 +43,7 @@ describe('domain/column-mapping/update', () => { column.addOut(schema.name, $rdf.literal('My Column 2')) }) - columnMapping = clownface({ dataset: $rdf.dataset() }) + columnMapping = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(rdf.type, [cc.ColumnMapping, cc.LiteralColumnMapping]) .addOut(rdf.type, hydra.Resource) @@ -55,14 +53,14 @@ describe('domain/column-mapping/update', () => { .addOut(cc.language, $rdf.literal('fr')) .addOut(cc.defaultValue, $rdf.literal('test')) - const otherColumnMapping = clownface({ dataset: $rdf.dataset() }) + const otherColumnMapping = $rdf.clownface() .node($rdf.namedNode('otherColumnMapping')) .addOut(rdf.type, [cc.ColumnMapping, cc.LiteralColumnMapping]) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-column2')) .addOut(cc.targetProperty, $rdf.namedNode('other')) - const table = clownface({ dataset: $rdf.dataset() }) + const table = $rdf.clownface() .namedNode('myTable') .addOut(rdf.type, cc.Table) .addOut(cc.csvMapping, csvMapping) @@ -70,7 +68,7 @@ describe('domain/column-mapping/update', () => { .addOut(cc.columnMapping, columnMapping) .addOut(cc.columnMapping, otherColumnMapping) - columnMappingObservation = clownface({ dataset: $rdf.dataset() }) + columnMappingObservation = $rdf.clownface() .node($rdf.namedNode('columnMappingObservation')) .addOut(rdf.type, [cc.ColumnMapping, cc.LiteralColumnMapping]) .addOut(rdf.type, hydra.Resource) @@ -78,14 +76,14 @@ describe('domain/column-mapping/update', () => { .addOut(cc.targetProperty, $rdf.namedNode('test')) .addOut(cc.datatype, xsd.integer) - const otherColumnMappingObservation = clownface({ dataset: $rdf.dataset() }) + const otherColumnMappingObservation = $rdf.clownface() .node($rdf.namedNode('otherColumnMappingObservation')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-other-column')) .addOut(cc.targetProperty, $rdf.namedNode('other')) - observationTable = clownface({ dataset: $rdf.dataset() }) + observationTable = $rdf.clownface() .namedNode('myObservationTable') .addOut(rdf.type, cc.Table) .addOut(rdf.type, cc.ObservationTable) @@ -96,12 +94,12 @@ describe('domain/column-mapping/update', () => { const dimensionProperty = $rdf.namedNode('test') - dimensionMappings = clownface({ dataset: $rdf.dataset() }) + dimensionMappings = $rdf.clownface() .namedNode('dimension-mappings') .addOut(rdf.type, prov.Dictionary) .addOut(schema.about, dimensionProperty) - dimensionMetadata = clownface({ dataset: $rdf.dataset() }) + dimensionMetadata = $rdf.clownface() .namedNode('myDimensionMetadata') .addOut(rdf.type, cc.DimensionMetadataCollection) .addOut(schema.hasPart, $rdf.namedNode('myDimension'), dim => { @@ -110,10 +108,10 @@ describe('domain/column-mapping/update', () => { .addOut(cc.dimensionMapping, dimensionMappings) }) - const organization = Organization.fromPointer(namedNode('org'), { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, cubeIdentifier: 'test-cube', }) @@ -133,26 +131,42 @@ describe('domain/column-mapping/update', () => { organization, ]) - sinon.restore() - sinon.stub(DimensionMetadataQueries, 'getDimensionMetaDataCollection').resolves(dimensionMetadata.term) - - getTableForColumnMapping = sinon.stub().resolves(table.term.value) - tableQueries = { - getLinkedTablesForSource, - getTablesForMapping, - getTableForColumnMapping, - getTableReferences: sinon.stub(), - getCubeTable: sinon.stub(), - } + getTableForColumnMapping.resolves(table.term.value) - sinon.stub(orgQueries, 'findOrganization').resolves({ + findOrganization.resolves({ projectId: project.id, organizationId: organization.id, }) + + getDimensionMetaDataCollection.resolves(dimensionMetadata.term) + }) + + before(async function () { + this.timeout(5000) + + findOrganization = sinon.stub() + getTableForColumnMapping = sinon.stub() + getDimensionMetaDataCollection = sinon.stub(); + ({ updateLiteralColumnMapping } = await esmock('../../../lib/domain/column-mapping/update.js', { + '../../../lib/domain/queries/table.js': { + getLinkedTablesForSource, + getTablesForMapping, + getTableForColumnMapping, + getTableReferences: sinon.stub(), + getCubeTable: sinon.stub(), + }, + }, { + '../../../lib/domain/organization/query.js': { + findOrganization, + }, + '../../../lib/domain/queries/dimension-metadata.js': { + getDimensionMetaDataCollection, + }, + })) }) it('updates simple properties', async () => { - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test2')) @@ -160,7 +174,7 @@ describe('domain/column-mapping/update', () => { .addOut(cc.language, $rdf.literal('de')) .addOut(cc.defaultValue, $rdf.literal('test2')) - const columnMapping = await updateLiteralColumnMapping({ resource, store, tableQueries }) + const columnMapping = await updateLiteralColumnMapping({ resource, store }) expect(columnMapping).to.matchShape({ property: [{ @@ -192,12 +206,12 @@ describe('domain/column-mapping/update', () => { }) it('delete non mandatory properties', async () => { - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) - const columnMapping = await updateLiteralColumnMapping({ resource, store, tableQueries }) + const columnMapping = await updateLiteralColumnMapping({ resource, store }) expect(columnMapping).to.matchShape({ property: [{ @@ -226,7 +240,7 @@ describe('domain/column-mapping/update', () => { }) it('changes source column', async () => { - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column2')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -234,13 +248,13 @@ describe('domain/column-mapping/update', () => { .addOut(cc.language, $rdf.literal('fr')) .addOut(cc.defaultValue, $rdf.literal('test')) - const columnMapping = await updateLiteralColumnMapping({ resource, store, tableQueries }) + const columnMapping = await updateLiteralColumnMapping({ resource, store }) expect(columnMapping.out(cc.sourceColumn).value).to.eq('my-column2') }) - it('throw if column does not exit', async () => { - const resource = clownface({ dataset: $rdf.dataset() }) + it('throw if column does not exist', async () => { + const resource = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column3')) .addOut(cc.targetProperty, $rdf.namedNode('test')) @@ -248,7 +262,7 @@ describe('domain/column-mapping/update', () => { .addOut(cc.language, $rdf.literal('fr')) .addOut(cc.defaultValue, $rdf.literal('test')) - const promise = updateLiteralColumnMapping({ resource, store, tableQueries }) + const promise = updateLiteralColumnMapping({ resource, store }) await expect(promise).to.have.rejectedWith(NotFoundError) }) @@ -256,23 +270,23 @@ describe('domain/column-mapping/update', () => { it('throw if targetProperty already in use on observation table', async () => { getTableForColumnMapping.resolves(observationTable.term.value) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('columnMappingObservation')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('other')) - const promise = updateLiteralColumnMapping({ resource, store, tableQueries }) + const promise = updateLiteralColumnMapping({ resource, store }) await expect(promise).to.have.rejectedWith(DomainError) }) it('do not throw if targetProperty already in use on non-observation table', async () => { - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('other')) - const columnMapping = await updateLiteralColumnMapping({ resource, store, tableQueries }) + const columnMapping = await updateLiteralColumnMapping({ resource, store }) expect(columnMapping.out(cc.targetProperty).value).to.eq('other') }) @@ -280,7 +294,7 @@ describe('domain/column-mapping/update', () => { it('change targetProperty for obeservation table', async () => { getTableForColumnMapping.resolves(observationTable.term.value) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('columnMappingObservation')) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test2')) @@ -288,7 +302,7 @@ describe('domain/column-mapping/update', () => { .addOut(cc.language, $rdf.literal('fr')) .addOut(cc.defaultValue, $rdf.literal('test')) - const columnMapping = await updateLiteralColumnMapping({ resource, store, tableQueries }) + const columnMapping = await updateLiteralColumnMapping({ resource, store }) expect(columnMapping.out(cc.targetProperty).value).to.eq('test2') const myDimension = dimensionMetadata.node($rdf.namedNode('myDimension')) diff --git a/apis/core/test/domain/csv-source/delete.test.ts b/apis/core/test/domain/csv-source/delete.test.ts index fbc39bec7..34e45bec1 100644 --- a/apis/core/test/domain/csv-source/delete.test.ts +++ b/apis/core/test/domain/csv-source/delete.test.ts @@ -1,22 +1,22 @@ import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' import { rdf, schema } from '@tpluscode/rdf-ns-builders' -import clownface from 'clownface' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as TableQueries from '../../../lib/domain/queries/table' -import '../../../lib/domain' -import { deleteSource } from '../../../lib/domain/csv-source/delete' -import * as DeleteTable from '../../../lib/domain/table/delete' -import type { GetMediaStorage, MediaStorage } from '../../../lib/storage' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import type { GetMediaStorage, MediaStorage } from '../../../lib/storage/index.js' +import '../../../lib/domain/index.js' describe('domain/csv-sources/delete', () => { let storage: MediaStorage let getStorage: GetMediaStorage + let deleteTable: sinon.SinonStub - beforeEach(() => { + let deleteSource: typeof import('../../../lib/domain/csv-source/delete.js').deleteSource + + beforeEach(async () => { storage = { getStream: sinon.spy(), delete: sinon.spy(), @@ -28,23 +28,28 @@ describe('domain/csv-sources/delete', () => { yield $rdf.namedNode('table') } - sinon.restore() - sinon.stub(TableQueries, 'getLinkedTablesForSource').returns(tableGenerator()) - sinon.stub(TableQueries, 'getTablesForMapping').returns(tableGenerator()) - sinon.stub(TableQueries, 'getTableForColumnMapping') - - sinon.stub(DeleteTable, 'deleteTable') + deleteTable = sinon.stub() + ;({ deleteSource } = await esmock('../../../lib/domain/csv-source/delete.js', { + '../../../lib/domain/queries/table.js': { + getLinkedTablesForSource: sinon.stub().returns(tableGenerator()), + getTablesForMapping: sinon.stub().returns(tableGenerator()), + getTableForColumnMapping: sinon.stub(), + }, + '../../../lib/domain/table/delete.js': { + deleteTable, + }, + })) }) - const csvSource = clownface({ dataset: $rdf.dataset() }) + const csvSource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.associatedMedia, file => { file.addOut(schema.identifier, 'FileKey') }) .addOut(cc.csvMapping, $rdf.namedNode('csv-mapping')) - const csvMapping = clownface({ dataset: $rdf.dataset() }) + const csvMapping = $rdf.clownface() .namedNode('csv-mapping') .addOut(rdf.type, cc.CsvMapping) .addOut(cc.csvSource, csvSource) - const table = clownface({ dataset: $rdf.dataset() }) + const table = $rdf.clownface() .namedNode('table') .addOut(rdf.type, cc.Table) .addOut(cc.csvSource, csvSource) @@ -55,14 +60,14 @@ describe('domain/csv-sources/delete', () => { csvSource, table, ]) // when - await deleteSource({ resource: csvSource.term, store: store, getStorage }) + await deleteSource({ resource: csvSource.term, store, getStorage }) // then expect(storage.delete).to.have.been.calledWith(sinon.match({ id: csvSource.out(schema.associatedMedia).term, })) expect(csvMapping.out(cc.csvSource).term).to.be.undefined - expect(DeleteTable.deleteTable).to.have.been.calledWith(sinon.match({ + expect(deleteTable).to.have.been.calledWith(sinon.match({ resource: table.term, })) }) diff --git a/apis/core/test/domain/csv-source/replace.test.ts b/apis/core/test/domain/csv-source/replace.test.ts index 7564c7395..e02812c61 100644 --- a/apis/core/test/domain/csv-source/replace.test.ts +++ b/apis/core/test/domain/csv-source/replace.test.ts @@ -4,22 +4,24 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { csvw, dtype, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' -import clownface, { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { DomainError } from '@cube-creator/api-errors' -import { TestResourceStore } from '../../support/TestResourceStore' -import { replaceFile } from '../../../lib/domain/csv-source/replace' -import type { GetMediaStorage, MediaStorage } from '../../../lib/storage' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import { replaceFile } from '../../../lib/domain/csv-source/replace.js' +import type { GetMediaStorage, MediaStorage } from '../../../lib/storage/index.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) describe('domain/csv-sources/replace', () => { let storage: MediaStorage let getStorage: GetMediaStorage let csvSource: GraphPointer let csvMapping: GraphPointer - const data = clownface({ dataset: $rdf.dataset() }) + const data = $rdf.clownface() .namedNode('') .addOut(cc.sourceKind, cc.MediaLocal) .addOut(schema.name, $rdf.literal('source.csv')) @@ -34,7 +36,7 @@ describe('domain/csv-sources/replace', () => { } getStorage = () => (storage) - csvMapping = clownface({ dataset: $rdf.dataset() }) + csvMapping = $rdf.clownface() .namedNode('csv-mapping') .addOut(rdf.type, cc.CsvMapping) }) @@ -43,7 +45,7 @@ describe('domain/csv-sources/replace', () => { let csvSourceUpdate: GraphPointer beforeEach(async () => { // given - csvSource = clownface({ dataset: $rdf.dataset() }) + csvSource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Name') @@ -178,7 +180,7 @@ describe('domain/csv-sources/replace', () => { let csvSourceUpdate: GraphPointer beforeEach(async () => { // given - csvSource = clownface({ dataset: $rdf.dataset() }) + csvSource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Name') @@ -307,7 +309,7 @@ describe('domain/csv-sources/replace', () => { describe('when columns are missing', () => { it('throws', () => { // given - csvSource = clownface({ dataset: $rdf.dataset() }) + csvSource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Name') diff --git a/apis/core/test/domain/csv-source/update.test.ts b/apis/core/test/domain/csv-source/update.test.ts index 831343d7f..44ca7c9c0 100644 --- a/apis/core/test/domain/csv-source/update.test.ts +++ b/apis/core/test/domain/csv-source/update.test.ts @@ -5,15 +5,17 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import $rdf from '@zazuko/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { csvw, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import clownface, { GraphPointer } from 'clownface' -import { TestResourceStore } from '../../support/TestResourceStore' -import '../../../lib/domain' -import { update } from '../../../lib/domain/csv-source/update' -import type { GetMediaStorage, MediaStorage } from '../../../lib/storage' +import type { GraphPointer } from 'clownface' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' +import { update } from '../../../lib/domain/csv-source/update.js' +import type { GetMediaStorage, MediaStorage } from '../../../lib/storage/index.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) describe('domain/csv-sources/upload', () => { let storage: MediaStorage @@ -29,7 +31,7 @@ describe('domain/csv-sources/upload', () => { getDownloadLink: sinon.spy(), } getStorage = () => (storage) - csvSource = clownface({ dataset: $rdf.dataset() }) + csvSource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Old name') @@ -45,7 +47,7 @@ describe('domain/csv-sources/upload', () => { it('it updates the name', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'New name') @@ -76,7 +78,7 @@ describe('domain/csv-sources/upload', () => { it('it does not load source if dialect does not change', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Old name') @@ -101,7 +103,7 @@ describe('domain/csv-sources/upload', () => { it('loads the source file when dialect changes', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Old name') @@ -126,7 +128,7 @@ describe('domain/csv-sources/upload', () => { it('it updates dialect when necessary', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Old name') @@ -171,7 +173,7 @@ describe('domain/csv-sources/upload', () => { it('when updating to incompatible dialect, data get cleared', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('source') .addOut(rdf.type, cc.CSVSource) .addOut(schema.name, 'Old name') diff --git a/apis/core/test/domain/csv-source/upload.test.ts b/apis/core/test/domain/csv-source/upload.test.ts index 5c541ba97..34bc36ed9 100644 --- a/apis/core/test/domain/csv-source/upload.test.ts +++ b/apis/core/test/domain/csv-source/upload.test.ts @@ -4,16 +4,18 @@ import { Readable } from 'stream' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' -import { Conflict } from 'http-errors' +import httpError from 'http-errors' import { csvw, dtype, hydra, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' -import clownface, { GraphPointer } from 'clownface' -import { createCSVSource } from '../../../lib/domain/csv-source/upload' -import { TestResourceStore } from '../../support/TestResourceStore' -import type * as CsvSourceQueries from '../../../lib/domain/queries/csv-source' -import '../../../lib/domain' -import type { GetMediaStorage, MediaStorage } from '../../../lib/storage' +import type { GraphPointer } from 'clownface' +import { createCSVSource } from '../../../lib/domain/csv-source/upload.js' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import type * as CsvSourceQueries from '../../../lib/domain/queries/csv-source.js' +import '../../../lib/domain/index.js' +import type { GetMediaStorage, MediaStorage } from '../../../lib/storage/index.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) describe('domain/csv-sources/upload', () => { let storage: MediaStorage @@ -21,7 +23,7 @@ describe('domain/csv-sources/upload', () => { let csvSourceQueries: typeof CsvSourceQueries let sourceWithFilenameExists: sinon.SinonStub let fileStream: Readable - const data = clownface({ dataset: $rdf.dataset() }) + const data = $rdf.clownface() .namedNode('') .addOut(cc.sourceKind, cc.MediaLocal) .addOut(schema.name, $rdf.literal('source.csv')) @@ -41,7 +43,7 @@ describe('domain/csv-sources/upload', () => { } }) - const csvMapping = clownface({ dataset: $rdf.dataset() }) + const csvMapping = $rdf.clownface() .namedNode('csv-mapping') .addOut(rdf.type, cc.CsvMapping) @@ -176,7 +178,7 @@ describe('domain/csv-sources/upload', () => { }) // then - expect(creatingSource).to.be.rejectedWith(Conflict) + expect(creatingSource).to.be.rejectedWith(httpError.Conflict) }) }) diff --git a/apis/core/test/domain/csv/file-head.test.ts b/apis/core/test/domain/csv/file-head.test.ts index b6ae287ea..9ac2f85b2 100644 --- a/apis/core/test/domain/csv/file-head.test.ts +++ b/apis/core/test/domain/csv/file-head.test.ts @@ -3,8 +3,10 @@ import { resolve } from 'path' import { Readable } from 'stream' import { describe, it } from 'mocha' import { expect } from 'chai' -import { sniffParse } from '../../../lib/domain/csv' -import { loadFileHeadString } from '../../../lib/domain/csv/file-head' +import { sniffParse } from '../../../lib/domain/csv/index.js' +import { loadFileHeadString } from '../../../lib/domain/csv/file-head.js' + +const __dirname = new URL('.', import.meta.url).pathname describe('domain/csv/file-head', () => { it('sniffs and parses', async () => { diff --git a/apis/core/test/domain/csv/parse.test.ts b/apis/core/test/domain/csv/parse.test.ts index 63cb11723..96a607ad0 100644 --- a/apis/core/test/domain/csv/parse.test.ts +++ b/apis/core/test/domain/csv/parse.test.ts @@ -1,5 +1,5 @@ import { expect } from 'chai' -import { parse } from '../../../lib/domain/csv' +import { parse } from '../../../lib/domain/csv/index.js' describe('domain/csv/parse', () => { it('trims headers', async () => { diff --git a/apis/core/test/domain/cube-projects/create.test.ts b/apis/core/test/domain/cube-projects/create.test.ts index c5962e2bc..ae8898c89 100644 --- a/apis/core/test/domain/cube-projects/create.test.ts +++ b/apis/core/test/domain/cube-projects/create.test.ts @@ -1,21 +1,17 @@ import type { NamedNode } from '@rdfjs/types' -import { describe, it, beforeEach, afterEach } from 'mocha' +import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import clownface from 'clownface' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { dcat, rdf, rdfs, schema, sh, _void, hydra, xsd, dcterms } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' import { Dataset } from '@cube-creator/model' -import '../../../lib/domain' import { Project } from '@cube-creator/model/Project' -import { fromPointer } from '@cube-creator/model/Organization' import sinon from 'sinon' import { namedNode } from '@cube-creator/testing/clownface' import { DomainError } from '@cube-creator/api-errors' -import * as orgQueries from '../../../lib/domain/organization/query' -import * as projectQueries from '../../../lib/domain/cube-projects/queries' -import { TestResourceStore } from '../../support/TestResourceStore' -import { createProject } from '../../../lib/domain/cube-projects/create' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/cube-projects/create', () => { let store: TestResourceStore @@ -23,31 +19,34 @@ describe('domain/cube-projects/create', () => { const projectsCollection = namedNode('projects') let projectExists: sinon.SinonStub - const organization = fromPointer(namedNode('org'), { + let createProject: typeof import('../../../lib/domain/cube-projects/create.js').createProject + + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { publishGraph: $rdf.namedNode('http://example.com/published-cube'), namespace: $rdf.namedNode('http://example.com/'), }) - beforeEach(() => { + beforeEach(async () => { store = new TestResourceStore([ projectsCollection, organization, ]) - sinon.stub(orgQueries, 'findOrganization').resolves({ - organizationId: organization.id, - }) - projectExists = sinon.stub(projectQueries, 'exists').resolves(false) - sinon.stub(orgQueries, 'cubeNamespaceAllowed').resolves(true) - }) - - afterEach(() => { - sinon.restore() + projectExists = sinon.stub() + ;({ createProject } = await esmock('../../../lib/domain/cube-projects/create.js', { + '../../../lib/domain/organization/query.js': { + findOrganization: sinon.stub().resolves({ organizationId: organization.id }), + cubeNamespaceAllowed: sinon.stub().resolves(true), + }, + '../../../lib/domain/cube-projects/queries.js': { + exists: projectExists, + }, + })) }) it('creates identifier by slugifying rdfs:label', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(dcterms.identifier, 'ubd/28') @@ -68,7 +67,7 @@ describe('domain/cube-projects/create', () => { beforeEach(async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(dcterms.identifier, 'ubd/28') @@ -125,7 +124,7 @@ describe('domain/cube-projects/create', () => { it('initializes a dimension metadata collection resource', async function () { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(dcterms.identifier, 'ubd/28') @@ -150,7 +149,7 @@ describe('domain/cube-projects/create', () => { it('creates a job collection resource linked to itself', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(dcterms.identifier, 'ubd/28') @@ -200,7 +199,7 @@ describe('domain/cube-projects/create', () => { it('throws when another project uses same cube identifier', async () => { // given projectExists.resolves(true) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(dcterms.identifier, 'ubd/28') @@ -217,7 +216,7 @@ describe('domain/cube-projects/create', () => { it('keeps the project source kind', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(schema.maintainer, organization.id) @@ -234,7 +233,7 @@ describe('domain/cube-projects/create', () => { describe('CSV project', () => { it('creates a CSV Mapping resource', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(schema.maintainer, organization.id) @@ -250,7 +249,7 @@ describe('domain/cube-projects/create', () => { it('initializes export link', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(schema.maintainer, organization.id) @@ -266,7 +265,7 @@ describe('domain/cube-projects/create', () => { it('initializes project details link', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(schema.maintainer, organization.id) @@ -282,7 +281,7 @@ describe('domain/cube-projects/create', () => { it('initializes project links to child resources dataset and cube graph', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(schema.maintainer, organization.id) @@ -313,7 +312,7 @@ describe('domain/cube-projects/create', () => { it('initializes a CsvMapping resource', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) @@ -345,7 +344,7 @@ describe('domain/cube-projects/create', () => { it("generates dataset's cube id", async function () { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) @@ -383,7 +382,7 @@ describe('domain/cube-projects/create', () => { it('creates a properly defined sources collection', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) @@ -430,7 +429,7 @@ describe('domain/cube-projects/create', () => { it('creates a properly defined tables collection', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) @@ -479,7 +478,7 @@ describe('domain/cube-projects/create', () => { describe('Existing cube', () => { it('does not create a CSV Mapping resource', async () => { // given - const resource = await clownface({ dataset: $rdf.dataset() }) + const resource = await $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(cc.projectSourceKind, cc['projectSourceKind/ExistingCube']) @@ -496,7 +495,7 @@ describe('domain/cube-projects/create', () => { it('initializes export link', async () => { // given - const resource = await clownface({ dataset: $rdf.dataset() }) + const resource = await $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Foo bar project') .addOut(cc.projectSourceKind, cc['projectSourceKind/ExistingCube']) @@ -513,7 +512,7 @@ describe('domain/cube-projects/create', () => { it('throws when cube URI is missing', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Import project') .addOut(schema.maintainer, organization.id) @@ -529,7 +528,7 @@ describe('domain/cube-projects/create', () => { it('throws when cube URI is string', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Import project') .addOut(schema.maintainer, organization.id) @@ -546,7 +545,7 @@ describe('domain/cube-projects/create', () => { it('throws when source endpoint is missing', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Import project') .addOut(schema.maintainer, organization.id) @@ -562,7 +561,7 @@ describe('domain/cube-projects/create', () => { it('initializes project links to child resources dataset and cube graph', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('') .addOut(rdfs.label, 'Import project') .addOut(schema.maintainer, organization.id) diff --git a/apis/core/test/domain/cube-projects/delete.test.ts b/apis/core/test/domain/cube-projects/delete.test.ts index 4bb60360a..99ccbb11d 100644 --- a/apis/core/test/domain/cube-projects/delete.test.ts +++ b/apis/core/test/domain/cube-projects/delete.test.ts @@ -2,14 +2,13 @@ import { before, beforeEach, describe, it } from 'mocha' import sinon from 'sinon' import { expect } from 'chai' import { ASK, SELECT } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { ccClients } from '@cube-creator/testing/lib' import { insertPxCube, insertTestProject } from '@cube-creator/testing/lib/seedData' import { cc } from '@cube-creator/core/namespace' -import { deleteProject } from '../../../lib/domain/cube-projects/delete' -import ResourceStore from '../../../lib/ResourceStore' -import '../../../lib/domain' -import * as storage from '../../../lib/storage' +import esmock from 'esmock' +import ResourceStore from '../../../lib/ResourceStore.js' +import '../../../lib/domain/index.js' describe('@cube-creator/core-api/lib/domain/cube-projects/delete @SPARQL', function () { this.timeout(20000) @@ -17,10 +16,16 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/delete @SPARQL', funct const project = $rdf.namedNode('https://cube-creator.lndo.site/cube-project/ubd') const deleteFile = sinon.stub() - before(() => { - sinon.stub(storage, 'getMediaStorage').returns({ - delete: deleteFile, - } as any) + let deleteProject: typeof import('../../../lib/domain/cube-projects/delete').deleteProject + + before(async () => { + ({ deleteProject } = await esmock('../../../lib/domain/cube-projects/delete.js', {}, { + '../../../lib/storage/index.js': { + getMediaStorage: () => ({ + delete: deleteFile, + }), + }, + })) }) beforeEach(async () => { @@ -45,7 +50,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/delete @SPARQL', funct ?s ?p ?o } - filter (strstarts(str(?g), "${project.value}"))`.execute(ccClients.parsingClient.query) + filter (strstarts(str(?g), "${project.value}"))`.execute(ccClients.parsingClient) await expect(anyGraph).to.eventually.deep.equal([]) }) @@ -54,7 +59,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/delete @SPARQL', funct const otherProjectStillExists = ASK`graph ${pxCube} { ${pxCube} a ${cc.CubeProject} }` - .execute(ccClients.parsingClient.query, { + .execute(ccClients.parsingClient, { base: 'https://cube-creator.lndo.site/', }) diff --git a/apis/core/test/domain/cube-projects/details.test.ts b/apis/core/test/domain/cube-projects/details.test.ts index be79e68fe..78e6209c5 100644 --- a/apis/core/test/domain/cube-projects/details.test.ts +++ b/apis/core/test/domain/cube-projects/details.test.ts @@ -1,11 +1,11 @@ import { describe, it } from 'mocha' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { Parser, ConstructQuery, GroupPattern } from 'sparqljs' import { expect } from 'chai' import { SELECT } from '@tpluscode/sparql-builder' import sinon from 'sinon' -import { schema } from '@tpluscode/rdf-ns-builders/strict' -import { getProjectDetails, ProjectDetailPart } from '../../../lib/domain/cube-projects/details' +import { schema } from '@tpluscode/rdf-ns-builders' +import { getProjectDetails, ProjectDetailPart } from '../../../lib/domain/cube-projects/details.js' describe('@cube-creator/core-api/lib/domain/cube-projects/details', () => { const project = $rdf.namedNode('project') diff --git a/apis/core/test/domain/cube-projects/details/lastModification.test.ts b/apis/core/test/domain/cube-projects/details/lastModification.test.ts index 3362039f1..e8440f161 100644 --- a/apis/core/test/domain/cube-projects/details/lastModification.test.ts +++ b/apis/core/test/domain/cube-projects/details/lastModification.test.ts @@ -1,11 +1,11 @@ import { describe, it, before } from 'mocha' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { expect } from 'chai' -import { xsd } from '@tpluscode/rdf-ns-builders/strict' -import { lastModification } from '../../../../lib/domain/cube-projects/details/lastModification' -import { removeActivities } from './support' +import { xsd } from '@tpluscode/rdf-ns-builders' +import { lastModification } from '../../../../lib/domain/cube-projects/details/lastModification.js' +import { removeActivities } from './support.js' describe('@cube-creator/core-api/lib/domain/cube-projects/details/lastModification @SPARQL', () => { const project = $rdf.namedNode('https://cube-creator.lndo.site/cube-project/ubd') @@ -21,7 +21,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/details/lastModificati const [query] = lastModification(project, $rdf.variable('lastModification')) // when - const [result] = await query.execute(ccClients.parsingClient.query) + const [result] = await query.execute(ccClients.parsingClient) // then expect(result.lastModification).to.deep.eq($rdf.literal('2020-10-30T12:01:00', xsd.dateTime)) diff --git a/apis/core/test/domain/cube-projects/details/metadata.test.ts b/apis/core/test/domain/cube-projects/details/metadata.test.ts index 4630e00e8..e94fc799a 100644 --- a/apis/core/test/domain/cube-projects/details/metadata.test.ts +++ b/apis/core/test/domain/cube-projects/details/metadata.test.ts @@ -1,11 +1,11 @@ import { describe, it, before } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { Draft } from '@cube-creator/model/Cube' -import { projectTargets, projectStatus } from '../../../../lib/domain/cube-projects/details/metadata' -import { removeActivities } from './support' +import { projectTargets, projectStatus } from '../../../../lib/domain/cube-projects/details/metadata.js' +import { removeActivities } from './support.js' describe('@cube-creator/core-api/lib/domain/cube-projects/details/metadata @SPARQL', () => { const project = $rdf.namedNode('https://cube-creator.lndo.site/cube-project/ubd') @@ -22,7 +22,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/details/metadata @SPAR const [query] = projectStatus(project, $rdf.variable('status')) // when - const [result] = await query.execute(ccClients.parsingClient.query) + const [result] = await query.execute(ccClients.parsingClient) // then expect(result.status).to.deep.eq(Draft) @@ -35,7 +35,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/details/metadata @SPAR const [query] = projectTargets(project, $rdf.variable('targets')) // when - const [result] = await query.execute(ccClients.parsingClient.query) + const [result] = await query.execute(ccClients.parsingClient) // then expect(result.targets).to.deep.eq($rdf.namedNode('https://ld.admin.ch/application/visualize')) diff --git a/apis/core/test/domain/cube-projects/details/support.ts b/apis/core/test/domain/cube-projects/details/support.ts index 30c253982..e868c8bc2 100644 --- a/apis/core/test/domain/cube-projects/details/support.ts +++ b/apis/core/test/domain/cube-projects/details/support.ts @@ -1,5 +1,5 @@ import { DELETE } from '@tpluscode/sparql-builder' -import { as } from '@tpluscode/rdf-ns-builders/strict' +import { as } from '@tpluscode/rdf-ns-builders' import { IN } from '@tpluscode/sparql-builder/expressions' import { ccClients } from '@cube-creator/testing/lib' @@ -23,5 +23,5 @@ export function removeActivities() { ) } ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) } diff --git a/apis/core/test/domain/cube-projects/details/versions.test.ts b/apis/core/test/domain/cube-projects/details/versions.test.ts index bb334299e..4eef8cac0 100644 --- a/apis/core/test/domain/cube-projects/details/versions.test.ts +++ b/apis/core/test/domain/cube-projects/details/versions.test.ts @@ -1,11 +1,11 @@ import { describe, it, before } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { toRdf } from 'rdf-literal' -import { lastDraftVersion, lastPublishedVersion } from '../../../../lib/domain/cube-projects/details/versions' -import { removeActivities } from './support' +import { lastDraftVersion, lastPublishedVersion } from '../../../../lib/domain/cube-projects/details/versions.js' +import { removeActivities } from './support.js' describe('@cube-creator/core-api/lib/domain/cube-projects/details/versions @SPARQL', () => { const project = $rdf.namedNode('https://cube-creator.lndo.site/cube-project/ubd') @@ -21,7 +21,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/details/versions @SPAR const [query] = lastDraftVersion(project, $rdf.variable('lastVersion')) // when - const [result] = await query.execute(ccClients.parsingClient.query) + const [result] = await query.execute(ccClients.parsingClient) // then expect(result.lastVersion).to.deep.eq(toRdf(1)) @@ -34,7 +34,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/details/versions @SPAR const [query] = lastPublishedVersion(project, $rdf.variable('lastVersion')) // when - const [result] = await query.execute(ccClients.parsingClient.query) + const [result] = await query.execute(ccClients.parsingClient) // then expect(result).to.be.undefined diff --git a/apis/core/test/domain/cube-projects/export.test.ts b/apis/core/test/domain/cube-projects/export.test.ts index 5bf3f6403..be14782f2 100644 --- a/apis/core/test/domain/cube-projects/export.test.ts +++ b/apis/core/test/domain/cube-projects/export.test.ts @@ -4,11 +4,10 @@ import { expect } from 'chai' import { cc } from '@cube-creator/core/namespace' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { ccClients } from '@cube-creator/testing/lib' -import clownface from 'clownface' -import $rdf from 'rdf-ext' -import { dcterms, rdf, schema } from '@tpluscode/rdf-ns-builders/strict' -import { getExportedProject } from '../../../lib/domain/cube-projects/export' -import ResourceStore from '../../../lib/ResourceStore' +import $rdf from '@zazuko/env' +import { dcterms, rdf, schema } from '@tpluscode/rdf-ns-builders' +import { getExportedProject } from '../../../lib/domain/cube-projects/export.js' +import ResourceStore from '../../../lib/ResourceStore.js' describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => { let dataset: DatasetCore @@ -45,7 +44,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => describe('cc:dataset', () => { it('exports properties', () => { // given - const project = clownface({ dataset, term: projectId }) + const project = $rdf.clownface({ dataset, term: projectId }) // when const cubeDataset = project.out(cc.dataset) @@ -63,7 +62,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => describe('cc:dimensionMetadata', () => { it('exports all metadata', () => { // given - const project = clownface({ dataset, term: projectId }) + const project = $rdf.clownface({ dataset, term: projectId }) // when const dimensionMetadata = project.out(cc.dataset).out(cc.dimensionMetadata) @@ -89,7 +88,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => it('does not export published version', () => { // given - const project = clownface({ dataset, graph: projectId, term: projectId }) + const project = $rdf.clownface({ dataset, graph: projectId, term: projectId }) // then expect(project.out(cc.latestPublishedRevision).terms).to.have.length(0) @@ -97,7 +96,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => it('does not export creator', () => { // given - const creator = clownface({ dataset, graph: projectId }) + const creator = $rdf.clownface({ dataset, graph: projectId }) .namedNode('https://cube-creator.lndo.site/user') // then @@ -107,7 +106,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => it('does not export maintainer (organization)', () => { // given - const project = clownface({ dataset, graph: projectId, term: projectId }) + const project = $rdf.clownface({ dataset, graph: projectId, term: projectId }) // then expect(project.out(schema.maintainer).terms).to.have.length(0) @@ -115,9 +114,9 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => it('does not export csv S3 links', () => { // given - const sources = clownface({ dataset }) + const sources = $rdf.clownface({ dataset }) .has(rdf.type, cc.CSVSource) - const medias = clownface({ dataset }) + const medias = $rdf.clownface({ dataset }) .namedNode('csv-source/ubd') .has(schema.associatedMedia) @@ -128,9 +127,9 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/export @SPARQL', () => it('does export external csv links', () => { // given - const sources = clownface({ dataset }) + const sources = $rdf.clownface({ dataset }) .has(rdf.type, cc.CSVSource) - const media = clownface({ dataset }) + const media = $rdf.clownface({ dataset }) .namedNode('csv-source/external') .out(schema.associatedMedia) .out(schema.contentUrl) diff --git a/apis/core/test/domain/cube-projects/import.test.ts b/apis/core/test/domain/cube-projects/import.test.ts index d2ff8d806..de9c4bbb6 100644 --- a/apis/core/test/domain/cube-projects/import.test.ts +++ b/apis/core/test/domain/cube-projects/import.test.ts @@ -1,23 +1,24 @@ import type { NamedNode } from '@rdfjs/types' -import { describe, it, beforeEach, afterEach } from 'mocha' -import clownface, { GraphPointer } from 'clownface' +import { describe, it, beforeEach } from 'mocha' +import type { GraphPointer } from 'clownface' import { blankNode, namedNode } from '@cube-creator/testing/clownface' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { expect } from 'chai' -import { BadRequest } from 'http-errors' -import { dcterms, rdf, rdfs, schema } from '@tpluscode/rdf-ns-builders/strict' +import httpError from 'http-errors' +import { dcterms, rdf, rdfs, schema } from '@tpluscode/rdf-ns-builders' import { ex } from '@cube-creator/testing/lib/namespace' -import DatasetExt from 'rdf-ext/lib/Dataset' -import { fromPointer } from '@cube-creator/model/Project' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { cc, cube } from '@cube-creator/core/namespace' -import namespace from '@rdfjs/namespace' +import { Project } from '@cube-creator/model' import sinon from 'sinon' -import * as projectQueries from '../../../lib/domain/cube-projects/queries' -import { TestResourceStore } from '../../support/TestResourceStore' -import { ResourceStore } from '../../../lib/ResourceStore' -import { adjustTerms, importProject } from '../../../lib/domain/cube-projects/import' -import { DomainError } from '../../../../errors/domain' -import '../../../lib/domain' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import { ResourceStore } from '../../../lib/ResourceStore.js' +import { adjustTerms } from '../../../lib/domain/cube-projects/import.js' +import { DomainError } from '../../../../errors/domain.js' +import '../../../lib/domain/index.js' + +const { BadRequest } = httpError describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { describe('importProject', () => { @@ -26,8 +27,10 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { let store: ResourceStore let projectExists: sinon.SinonStub - beforeEach(() => { - projectExists = sinon.stub(projectQueries, 'exists').resolves(false) + let importProject: typeof import('../../../lib/domain/cube-projects/import.js').importProject + + beforeEach(async () => { + projectExists = sinon.stub().resolves(false) projectsCollection = namedNode('projects') resource = blankNode() .addOut(rdfs.label, 'UBD Imported') @@ -39,10 +42,10 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { projectsCollection, organization, ]) - }) - afterEach(() => { - projectExists.restore() + ;({ importProject } = await esmock('../../../lib/domain/cube-projects/import.js', { + '../../../lib/domain/cube-projects/queries.js': { exists: projectExists }, + })) }) function testImportProject({ files }: Pick[0], 'files'>) { @@ -75,7 +78,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - clownface({ dataset, graph: $rdf.namedNode(project) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') @@ -100,7 +103,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - clownface({ dataset, graph: $rdf.namedNode(project) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') @@ -161,7 +164,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - const ptr = clownface({ dataset, graph: $rdf.namedNode(project) }) + const ptr = $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') if (term) { @@ -189,11 +192,11 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - clownface({ dataset, graph: $rdf.namedNode(project) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) - clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) .namedNode(`${project}dataset`) .addOut(rdf.type, schema.Dataset) .addOut(schema.hasPart, $rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28')) @@ -239,18 +242,18 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - clownface({ dataset, graph: $rdf.namedNode(project) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) .addOut(cc.csvMapping, $rdf.namedNode(`${project}mapping`)) - clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) .namedNode(`${project}dataset`) .addOut(rdf.type, schema.Dataset) .addOut(schema.hasPart, $rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28')) .namedNode('https://environment.ld.admin.ch/foen/ubd/28') .addOut(rdf.type, cube.Cube) - clownface({ dataset, graph: $rdf.namedNode(`${project}dimensions-metadata`) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(`${project}dimensions-metadata`) }) .namedNode(`${project}dimensions-metadata/dimension-year`) .addOut(schema.about, $rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28/dimension/year')) @@ -268,8 +271,8 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { }) // then - const ns = namespace(project.id.value) - const data = clownface({ dataset: importedDataset }) + const ns = $rdf.namespace(project.id.value) + const data = $rdf.clownface({ dataset: importedDataset }) expect( data.namedNode(ns('/dimensions-metadata/dimension-year')).out(schema.about).term, ).to.deep.equal($rdf.namedNode('https://test.ld.admin.ch/org/cube/id/dimension/year')) @@ -294,7 +297,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - clownface({ dataset, graph: $rdf.namedNode(project) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') .addOut(dcterms.creator, $rdf.namedNode('previous creator')) @@ -302,7 +305,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { .addOut(schema.maintainer, ex.Bar) .addOut(rdfs.label, 'UBD29') .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) - clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) .namedNode(`${project}dataset`) .addOut(rdf.type, schema.Dataset) .addOut(schema.hasPart, $rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28')) @@ -319,7 +322,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { }) // then - const importedProject = clownface({ dataset: importedDataset, graph: project.id, term: project.id }) + const importedProject = $rdf.clownface({ dataset: importedDataset, graph: project.id, term: project.id }) expect(importedProject.out([ dcterms.creator, schema.maintainer, @@ -333,7 +336,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { const exported = (project: string) => { const dataset = $rdf.dataset() - clownface({ dataset, graph: $rdf.namedNode(project) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(project) }) .namedNode(project) .addOut(dcterms.identifier, 'UBD') .addOut(dcterms.creator, $rdf.namedNode('previous creator')) @@ -343,10 +346,10 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { .addOut(cc.projectSourceKind, cc['projectSourceKind/CSV']) const csvSource = $rdf.namedNode(`${project}source`) - clownface({ dataset, graph: csvSource }) + $rdf.clownface({ dataset, graph: csvSource }) .namedNode(csvSource) .addOut(rdf.type, cc.CSVSource) - clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) + $rdf.clownface({ dataset, graph: $rdf.namedNode(`${project}dataset`) }) .namedNode(`${project}dataset`) .addOut(rdf.type, schema.Dataset) .addOut(schema.hasPart, $rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28')) @@ -363,7 +366,7 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { }) // then - const importedCsvSource = clownface({ + const importedCsvSource = $rdf.clownface({ dataset: importedDataset, graph: $rdf.namedNode(`${project.id.value}/source`), term: $rdf.namedNode(`${project.id.value}/source`), @@ -375,8 +378,8 @@ describe('@cube-creator/core-api/lib/domain/cube-projects/import', () => { describe('adjustTerms', () => { it('rewrites project URI at all quad terms', async () => { // given - const ns = namespace('https://example.com/project/') - const project = fromPointer(namedNode(ns.ubd)) + const ns = $rdf.namespace('https://example.com/project/') + const project = $rdf.rdfine.cc.Project(namedNode(ns.ubd)) as unknown as Project const dataset = $rdf.dataset([ $rdf.quad(ns('ubd/'), rdf.type, cc.CubeProject, ns('ubd/')), $rdf.quad(ns('ubd/'), cc.dataset, ns('ubd/data'), ns('ubd/')), diff --git a/apis/core/test/domain/cube-projects/queries.test.ts b/apis/core/test/domain/cube-projects/queries.test.ts index 3be41db7a..fdb88fd93 100644 --- a/apis/core/test/domain/cube-projects/queries.test.ts +++ b/apis/core/test/domain/cube-projects/queries.test.ts @@ -1,12 +1,11 @@ -import namespace from '@rdfjs/namespace' import { expect } from 'chai' import { describe, it, before } from 'mocha' import { ccClients } from '@cube-creator/testing/lib' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { insertTestProject } from '@cube-creator/testing/lib/seedData' -import { exists } from '../../../lib/domain/cube-projects/queries' +import { exists } from '../../../lib/domain/cube-projects/queries.js' -const ns = namespace('https://cube-creator.lndo.site/') +const ns = $rdf.namespace('https://cube-creator.lndo.site/') describe('@cube-creator/core-api/lib/domain/cube-projects/queries @SPARQL', () => { before(async () => { diff --git a/apis/core/test/domain/cube-projects/update.test.ts b/apis/core/test/domain/cube-projects/update.test.ts index f4c5970ca..986157062 100644 --- a/apis/core/test/domain/cube-projects/update.test.ts +++ b/apis/core/test/domain/cube-projects/update.test.ts @@ -1,36 +1,35 @@ import type { NamedNode } from '@rdfjs/types' -import { describe, it, beforeEach, afterEach } from 'mocha' +import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' import { DomainError } from '@cube-creator/api-errors' import sinon from 'sinon' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { ResourceIdentifier } from '@tpluscode/rdfine' -import { dcterms, prov, rdfs, schema, rdf } from '@tpluscode/rdf-ns-builders/strict' +import { dcterms, prov, rdfs, schema, rdf } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' import { namedNode } from '@cube-creator/testing/clownface' import { Dataset, Project } from '@cube-creator/model' -import { fromPointer } from '@cube-creator/model/Organization' -import { createProject } from '../../../lib/domain/cube-projects/create' -import { TestResourceStore } from '../../support/TestResourceStore' -import '../../../lib/domain' -import { updateProject } from '../../../lib/domain/cube-projects/update' -import * as projectQueries from '../../../lib/domain/cube-projects/queries' -import * as orgQueries from '../../../lib/domain/organization/query' +import esmock from 'esmock' +import { createProject } from '../../../lib/domain/cube-projects/create.js' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/cube-projects/update', () => { let store: TestResourceStore const user = $rdf.namedNode('userId') - const projectsCollection = clownface({ dataset: $rdf.dataset() }).namedNode('projects') + const projectsCollection = $rdf.clownface().namedNode('projects') let projectExists: sinon.SinonStub let previouslyPublished: sinon.SinonStub - const bafu = fromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('bafu'), { + let updateProject: typeof import('../../../lib/domain/cube-projects/update').updateProject + + const bafu = $rdf.rdfine.cc.Organization($rdf.clownface().namedNode('bafu'), { namespace: $rdf.namedNode('http://bafu.namespace/'), publishGraph: $rdf.namedNode('http://bafu.cubes/'), }) - const bar = fromPointer(clownface({ dataset: $rdf.dataset() }).namedNode('bar'), { + const bar = $rdf.rdfine.cc.Organization($rdf.clownface().namedNode('bar'), { namespace: $rdf.namedNode('http://bar.namespace/'), publishGraph: $rdf.namedNode('http://bar.cubes/'), }) @@ -42,16 +41,23 @@ describe('domain/cube-projects/update', () => { bafu, bar, ]) - projectExists = sinon.stub(projectQueries, 'exists').resolves(false) - previouslyPublished = sinon.stub(projectQueries, 'previouslyPublished').resolves(false) - sinon.stub(orgQueries, 'cubeNamespaceAllowed').resolves(true) - }) - afterEach(sinon.restore) + projectExists = sinon.stub().resolves(false) + previouslyPublished = sinon.stub().resolves(false) + ;({ updateProject } = await esmock('../../../lib/domain/cube-projects/update.js', { + '../../../lib/domain/cube-projects/queries.js': { + exists: projectExists, + previouslyPublished, + }, + '../../../lib/domain/organization/query.js': { + cubeNamespaceAllowed: sinon.stub().resolves(true), + }, + })) + }) describe('CSV project', () => { function projectPointer(id: ResourceIdentifier = $rdf.namedNode('')) { - return clownface({ dataset: $rdf.dataset() }) + return $rdf.clownface() .node(id) .addOut(rdfs.label, 'Created name') .addOut(schema.maintainer, bafu.id) @@ -356,7 +362,7 @@ describe('domain/cube-projects/update', () => { describe('Import project', () => { function projectPointer(id: ResourceIdentifier = $rdf.namedNode('')) { - return clownface({ dataset: $rdf.dataset() }) + return $rdf.clownface() .node(id) .addOut(rdfs.label, 'Created name') .addOut(schema.maintainer, bafu.id) diff --git a/apis/core/test/domain/dataset/update.test.ts b/apis/core/test/domain/dataset/update.test.ts index 15ecfb637..0dd80666b 100644 --- a/apis/core/test/domain/dataset/update.test.ts +++ b/apis/core/test/domain/dataset/update.test.ts @@ -2,15 +2,15 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' -import { dcat, dcterms, hydra, rdf, schema, sh, vcard, _void, xsd } from '@tpluscode/rdf-ns-builders' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' +import { dcat, dcterms, hydra, rdf, schema, sh, vcard, _void, xsd } from '@tpluscode/rdf-ns-builders/loose' import { cc, cube, lindasSchema } from '@cube-creator/core/namespace' import { ex } from '@cube-creator/testing/lib/namespace' import { namedNode } from '@cube-creator/testing/clownface' -import { TestResourceStore } from '../../support/TestResourceStore' -import { update } from '../../../lib/domain/dataset/update' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import { update } from '../../../lib/domain/dataset/update.js' describe('domain/dataset/update', () => { let store: TestResourceStore @@ -172,7 +172,7 @@ describe('domain/dataset/update', () => { it('populates schema contact point from dcat contact point', async () => { // given - const updatedResource = clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('dataset') }) + const updatedResource = $rdf.clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('dataset') }) .addOut(dcterms.title, 'title') .addOut(dcat.contactPoint, org => { org diff --git a/apis/core/test/domain/dimension-mapping/DimensionMappings.test.ts b/apis/core/test/domain/dimension-mapping/DimensionMappings.test.ts index d36464602..c966c96ae 100644 --- a/apis/core/test/domain/dimension-mapping/DimensionMappings.test.ts +++ b/apis/core/test/domain/dimension-mapping/DimensionMappings.test.ts @@ -1,16 +1,13 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' -import { fromPointer } from '@rdfine/prov/lib/Dictionary' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { expect } from 'chai' -import $rdf from 'rdf-ext' -import namespace from '@rdfjs/namespace' -import TermSet from '@rdfjs/term-set' +import $rdf from '@cube-creator/env' import { prov, rdf, xsd } from '@tpluscode/rdf-ns-builders' import { blankNode, namedNode } from '@cube-creator/testing/clownface' -import '../../../lib/domain' +import '../../../lib/domain/index.js' -const wtd = namespace('http://www.wikidata.org/entity/') +const wtd = $rdf.namespace('http://www.wikidata.org/entity/') const wikidata = { arsenic: wtd.Q871, @@ -29,13 +26,13 @@ describe('lib/domain/DimensionMappings', () => { describe('addMissingEntries', function () { it('creates prov:KeyEntityPairs for missing keys', () => { // given - const dictionary = fromPointer(pointer, { + const dictionary = $rdf.rdfine.prov.Dictionary(pointer, { hadDictionaryMember: [{ pairKey: 'so2', pairEntity: wikidata.sulphurDioxide, }], }) - const unmappedKeys = new TermSet([ + const unmappedKeys = $rdf.termSet([ $rdf.literal('As'), $rdf.literal('Pb'), ]) @@ -84,8 +81,8 @@ describe('lib/domain/DimensionMappings', () => { it('uses string value for keys', () => { // given - const dictionary = fromPointer(pointer) - const unmappedKeys = new TermSet([ + const dictionary = $rdf.rdfine.prov.Dictionary(pointer) + const unmappedKeys = $rdf.termSet([ $rdf.literal('1', xsd.integer), $rdf.literal('foobar', xsd.anyAtomicType), ]) @@ -124,7 +121,7 @@ describe('lib/domain/DimensionMappings', () => { it('skips keys which already have entries', () => { // given - const dictionary = fromPointer(pointer, { + const dictionary = $rdf.rdfine.prov.Dictionary(pointer, { hadDictionaryMember: [{ pairKey: 'so2', pairEntity: wikidata.sulphurDioxide, @@ -132,7 +129,7 @@ describe('lib/domain/DimensionMappings', () => { pairKey: 'As', }], }) - const unmappedKeys = new TermSet([ + const unmappedKeys = $rdf.termSet([ $rdf.literal('so2'), $rdf.literal('As'), ]) @@ -175,11 +172,11 @@ describe('lib/domain/DimensionMappings', () => { describe('replaceEntries', () => { it('adds rdf:type to all dictionary entries', () => { // given - const dictionary = fromPointer(pointer) + const dictionary = $rdf.rdfine.prov.Dictionary(pointer) // when const newEntries = blankNode() - fromPointer(newEntries, { + $rdf.rdfine.prov.Dictionary(newEntries, { hadDictionaryMember: [{ pairKey: 'so2', pairEntity: wikidata.sulphurDioxide, @@ -197,7 +194,7 @@ describe('lib/domain/DimensionMappings', () => { it('returns true when entries are added', () => { // given - const dictionary = fromPointer(pointer, { + const dictionary = $rdf.rdfine.prov.Dictionary(pointer, { hadDictionaryMember: [{ pairKey: 'so2', pairEntity: wikidata.sulphurDioxide, @@ -206,7 +203,7 @@ describe('lib/domain/DimensionMappings', () => { // when const newEntries = blankNode() - fromPointer(newEntries, { + $rdf.rdfine.prov.Dictionary(newEntries, { hadDictionaryMember: [{ pairKey: 'so2', pairEntity: wikidata.sulphurDioxide, @@ -223,7 +220,7 @@ describe('lib/domain/DimensionMappings', () => { it('returns true when entries are removed', () => { // given - const dictionary = fromPointer(pointer, { + const dictionary = $rdf.rdfine.prov.Dictionary(pointer, { hadDictionaryMember: [{ pairKey: 'so2', pairEntity: wikidata.sulphurDioxide, @@ -235,7 +232,7 @@ describe('lib/domain/DimensionMappings', () => { // when const newEntries = blankNode() - fromPointer(newEntries, { + $rdf.rdfine.prov.Dictionary(newEntries, { hadDictionaryMember: [{ pairKey: 'co', pairEntity: wikidata.carbonMonoxide, @@ -249,7 +246,7 @@ describe('lib/domain/DimensionMappings', () => { it('returns true when entries are exactly the same', () => { // given - const dictionary = fromPointer(pointer, { + const dictionary = $rdf.rdfine.prov.Dictionary(pointer, { hadDictionaryMember: [{ pairKey: 'co', pairEntity: wikidata.carbonMonoxide, @@ -258,7 +255,7 @@ describe('lib/domain/DimensionMappings', () => { // when const newEntries = blankNode() - fromPointer(newEntries, { + $rdf.rdfine.prov.Dictionary(newEntries, { hadDictionaryMember: [{ pairKey: 'co', pairEntity: wikidata.carbonMonoxide, diff --git a/apis/core/test/domain/dimension-mapping/update.test.ts b/apis/core/test/domain/dimension-mapping/update.test.ts index ee870e195..27b94e515 100644 --- a/apis/core/test/domain/dimension-mapping/update.test.ts +++ b/apis/core/test/domain/dimension-mapping/update.test.ts @@ -2,20 +2,19 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import DatasetExt from 'rdf-ext/lib/Dataset' -import $rdf from 'rdf-ext' -import { GraphPointer } from 'clownface' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' +import $rdf from '@zazuko/env' +import type { GraphPointer } from 'clownface' import { prov, rdf, schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import namespace from '@rdfjs/namespace' import httpError from 'http-errors' import { namedNode } from '@cube-creator/testing/clownface' import { ex } from '@cube-creator/testing/lib/namespace' -import { update } from '../../../lib/domain/dimension-mapping/update' -import { TestResourceStore } from '../../support/TestResourceStore' -import '../../../lib/domain' +import { update } from '../../../lib/domain/dimension-mapping/update.js' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' -const wtd = namespace('http://www.wikidata.org/entity/') +const wtd = $rdf.namespace('http://www.wikidata.org/entity/') const wikidata = { arsenic: wtd.Q871, diff --git a/apis/core/test/domain/dimension/update.test.ts b/apis/core/test/domain/dimension/update.test.ts index caa82d85c..831e9bc33 100644 --- a/apis/core/test/domain/dimension/update.test.ts +++ b/apis/core/test/domain/dimension/update.test.ts @@ -1,25 +1,26 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' import sinon from 'sinon' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { prov, rdf, schema, sh, qudt, time } from '@tpluscode/rdf-ns-builders' import { cc, meta } from '@cube-creator/core/namespace' import { ex } from '@cube-creator/testing/lib/namespace' import { namedNode } from '@cube-creator/testing/clownface' -import { update } from '../../../lib/domain/dimension/update' -import { TestResourceStore } from '../../support/TestResourceStore' -import '../../../lib/domain' -import * as projectQuery from '../../../lib/domain/cube-projects/queries' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/dimension/update', function () { let store: TestResourceStore let metadataCollection: GraphPointer let findProject: sinon.SinonStub - beforeEach(() => { + let update: typeof import('../../../lib/domain/dimension/update').update + + beforeEach(async () => { const project = namedNode(ex('project/test')) metadataCollection = namedNode('dimension') @@ -40,8 +41,12 @@ describe('domain/dimension/update', function () { project, ]) - sinon.restore() - findProject = sinon.stub(projectQuery, 'findProject') + findProject = sinon.stub() + ;({ update } = await esmock('../../../lib/domain/dimension/update.js', { + '../../../lib/domain/cube-projects/queries.js': { + findProject, + }, + })) }) it('replaces all triples about a dimension', async () => { @@ -215,7 +220,7 @@ describe('domain/dimension/update', function () { it('replaces child blank nodes recursively', async () => { // given - const dimensionMetadata = clownface({ dataset: $rdf.dataset() }) + const dimensionMetadata = $rdf.clownface() .namedNode('dimension') .addOut(schema.about, ex.pollutantDimension) .addOut(meta.dataKind, dataKind => { diff --git a/apis/core/test/domain/job/create.test.ts b/apis/core/test/domain/job/create.test.ts index 47b483e0e..b510effde 100644 --- a/apis/core/test/domain/job/create.test.ts +++ b/apis/core/test/domain/job/create.test.ts @@ -1,27 +1,25 @@ import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { dcterms, rdf, schema, xsd } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import '../../../lib/domain' +import '../../../lib/domain/index.js' import { DomainError } from '@cube-creator/api-errors' import sinon from 'sinon' -import * as Organization from '@cube-creator/model/Organization' import { namedNode } from '@cube-creator/testing/clownface' -import * as Project from '@cube-creator/model/Project' import { ex } from '@cube-creator/testing/lib/namespace' -import { createPublishJob, createTransformJob } from '../../../lib/domain/job/create' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as TableQueries from '../../../lib/domain/queries/table' +import { createPublishJob, createTransformJob } from '../../../lib/domain/job/create.js' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import * as TableQueries from '../../../lib/domain/queries/table.js' describe('domain/job/create', () => { let store: TestResourceStore - const organization = Organization.fromPointer(namedNode('org'), { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), publishGraph: $rdf.namedNode('publishGraph'), }) - const project = Project.fromPointer(namedNode('myProject'), { + const project = $rdf.rdfine.cc.Project(namedNode('myProject'), { csvMapping: $rdf.namedNode('myCsvMapping'), cubeGraph: $rdf.namedNode('myCubeGraph'), maintainer: organization, diff --git a/apis/core/test/domain/job/update.test.ts b/apis/core/test/domain/job/update.test.ts index a513b758e..13f410a6f 100644 --- a/apis/core/test/domain/job/update.test.ts +++ b/apis/core/test/domain/job/update.test.ts @@ -1,15 +1,15 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { dcterms, rdf, rdfs, schema, xsd, _void } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' import { namedNode } from '@cube-creator/testing/clownface' -import { TestResourceStore } from '../../support/TestResourceStore' -import { update } from '../../../lib/domain/job/update' -import '../../../lib/domain' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import { update } from '../../../lib/domain/job/update.js' +import '../../../lib/domain/index.js' describe('domain/job/update', () => { let job: GraphPointer @@ -22,16 +22,16 @@ describe('domain/job/update', () => { maintainer = namedNode('org') .addOut(rdf.type, schema.Organization) .addOut(cc.namespace, 'http://example.com/') - job = clownface({ dataset: $rdf.dataset() }) + job = $rdf.clownface() .namedNode('job') .addOut(rdf.type, cc.Job) - project = clownface({ dataset: $rdf.dataset() }) + project = $rdf.clownface() .namedNode('project') .addOut(rdf.type, cc.CubeProject) .addOut(cc.latestPublishedRevision, 2) .addOut(cc.dataset, $rdf.namedNode('dataset')) .addOut(schema.maintainer, maintainer) - dataset = clownface({ dataset: $rdf.dataset() }) + dataset = $rdf.clownface() .namedNode('dataset') .addOut(rdf.type, _void.Dataset) @@ -45,7 +45,7 @@ describe('domain/job/update', () => { it('updates status', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(schema.actionStatus, schema.FailedActionStatus) @@ -67,7 +67,7 @@ describe('domain/job/update', () => { it('updates execution link', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(rdfs.seeAlso, $rdf.namedNode('http://gitlab.link/')) @@ -92,7 +92,7 @@ describe('domain/job/update', () => { job.addOut(schema.error, error => { error.addOut(schema.description, 'Previous error') }) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(rdfs.seeAlso, $rdf.namedNode('http://gitlab.link/')) @@ -116,7 +116,7 @@ describe('domain/job/update', () => { job.addOut(schema.error, error => { error.addOut(schema.description, 'Previous error') }) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(rdfs.seeAlso, $rdf.namedNode('http://gitlab.link/')) .addOut(schema.error, error => { @@ -155,7 +155,7 @@ describe('domain/job/update', () => { it("increments project's cc:publishedRevision when succeeded", async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(schema.actionStatus, schema.CompletedActionStatus) @@ -178,7 +178,7 @@ describe('domain/job/update', () => { it('sets dataset published date on first revision', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(schema.actionStatus, schema.CompletedActionStatus) .addOut(dcterms.modified, $rdf.literal('2020-12-12T11:30:30', xsd.dateTime)) @@ -204,7 +204,7 @@ describe('domain/job/update', () => { it('does not change dataset published date on first revision', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface({ dataset: $rdf.dataset() }) .namedNode('job') .addOut(schema.actionStatus, schema.CompletedActionStatus) .addOut(dcterms.modified, $rdf.literal('2020-12-12T11:30:30', xsd.dateTime)) @@ -231,7 +231,7 @@ describe('domain/job/update', () => { it('does not change dataset published date on revision>1', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('job') .addOut(schema.actionStatus, schema.CompletedActionStatus) .addOut(dcterms.modified, $rdf.literal('2020-12-12T11:30:30', xsd.dateTime)) diff --git a/apis/core/test/domain/observations/index.test.ts b/apis/core/test/domain/observations/index.test.ts index 20be9d16f..b177cfb70 100644 --- a/apis/core/test/domain/observations/index.test.ts +++ b/apis/core/test/domain/observations/index.test.ts @@ -1,14 +1,15 @@ import type { Quad, Term } from '@rdfjs/types' -import { describe, it, beforeEach, before, after } from 'mocha' +import { describe, it, beforeEach, before } from 'mocha' import { expect } from 'chai' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' import { IriTemplate } from '@rdfine/hydra' import sinon from 'sinon' -import Cube from 'rdf-cube-view-query/lib/Cube' -import Source from 'rdf-cube-view-query/lib/Source' -import { getObservations } from '../../../lib/domain/observations' -import * as lib from '../../../lib/domain/observations/lib' +import Cube from 'rdf-cube-view-query/lib/Cube.js' +import Source from 'rdf-cube-view-query/lib/Source.js' +import esmock from 'esmock' +// import { getObservations } from '../../../lib/domain/observations/index.js' +// import * as lib from '../../../lib/domain/observations/lib/index.js' describe('lib/domain/observations', () => { let templateParams: GraphPointer @@ -26,28 +27,33 @@ describe('lib/domain/observations', () => { } as any const loadResourceLabels = () => new Promise((resolve) => resolve([])) - before(() => { - sinon.stub(lib, 'createSource').returns(sinon.createStubInstance(Source, { - cubes: sinon.stub().callsFake(async () => cubes) as any, - })) - sinon.stub(lib, 'createHydraCollection') - sinon.stub(lib, 'createView').returns({ + let createView: sinon.SinonStub + let getObservations: typeof import('../../../lib/domain/observations/index.js').getObservations + + before(async () => { + createView = sinon.stub().returns({ async observations() { return observations }, async observationCount() { return observations.length }, - } as any) - }) + }) - after(() => { - sinon.restore() + ;({ getObservations } = (await esmock('../../../lib/domain/observations/index.js', { + '../../../lib/domain/observations/lib/index.js': { + createSource: sinon.stub().returns(sinon.createStubInstance(Source, { + cubes: sinon.stub().callsFake(async () => cubes) as any, + })), + createHydraCollection: sinon.stub(), + createView, + }, + }))) }) beforeEach(() => { observations = [] - templateParams = clownface({ dataset: $rdf.dataset() }).blankNode() + templateParams = $rdf.clownface().blankNode() cubes = [ new Cube({ @@ -73,7 +79,7 @@ describe('lib/domain/observations', () => { }) // then - expect(lib.createView).to.have.been.calledWith(sinon.match.any, 20, sinon.match.any) + expect(createView).to.have.been.calledWith(sinon.match.any, 20, sinon.match.any) }) it('passes offset 0 if pageIndex is not provided', async () => { @@ -92,7 +98,7 @@ describe('lib/domain/observations', () => { }) // then - expect(lib.createView).to.have.been.calledWith(sinon.match.any, sinon.match.any, 0) + expect(createView).to.have.been.calledWith(sinon.match.any, sinon.match.any, 0) }) it('computes offset from pageSize and pageIndex', async () => { @@ -115,6 +121,6 @@ describe('lib/domain/observations', () => { }) // then - expect(lib.createView).to.have.been.calledWith(sinon.match.any, 10, 40) + expect(createView).to.have.been.calledWith(sinon.match.any, 10, 40) }) }) diff --git a/apis/core/test/domain/observations/lib/index.test.ts b/apis/core/test/domain/observations/lib/index.test.ts index 422ed9996..fcca057ee 100644 --- a/apis/core/test/domain/observations/lib/index.test.ts +++ b/apis/core/test/domain/observations/lib/index.test.ts @@ -2,19 +2,15 @@ import type { Term } from '@rdfjs/types' import { describe, it, beforeEach, before } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { AnyPointer, GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import { View } from 'rdf-cube-view-query/lib/View' -import Cube from 'rdf-cube-view-query/lib/Cube' -import Source from 'rdf-cube-view-query/lib/Source' +import type { AnyPointer, GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' +import { View } from 'rdf-cube-view-query/lib/View.js' +import Cube from 'rdf-cube-view-query/lib/Cube.js' +import Source from 'rdf-cube-view-query/lib/Source.js' import * as ns from '@cube-creator/core/namespace' -import { hydra, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' +import { hydra, rdf, schema, sh, xsd } from '@tpluscode/rdf-ns-builders/loose' import { IriTemplate } from '@rdfine/hydra' -import { IriTemplateBundle } from '@rdfine/hydra/bundles' -import RdfResource from '@tpluscode/rdfine/RdfResource' -import { populateFilters, createHydraCollection, createView } from '../../../../lib/domain/observations/lib' - -RdfResource.factory.addMixin(...IriTemplateBundle) +import { populateFilters, createHydraCollection, createView } from '../../../../lib/domain/observations/lib/index.js' describe('lib/domain/observations/lib', () => { describe('createView', () => { @@ -58,10 +54,10 @@ describe('lib/domain/observations/lib', () => { let dimension: sinon.SinonStub beforeEach(() => { - filter = clownface({ dataset: $rdf.dataset() }) + filter = $rdf.clownface() dimension = sinon.stub() view = { - ptr: clownface({ dataset: $rdf.dataset() }).blankNode(), + ptr: $rdf.clownface().blankNode(), dimension, } as any as View }) @@ -183,16 +179,16 @@ describe('lib/domain/observations/lib', () => { let observations: Record[] before(() => { - templateParams = clownface({ dataset: $rdf.dataset() }) + templateParams = $rdf.clownface() .blankNode() .addOut(ns.cc.cube, 'CUBE') .addOut(ns.cc.cubeGraph, 'GRAPH') .addOut(ns.view.view, 'FILTERS') .addOut(hydra.limit, $rdf.literal('20', xsd.integer)) - const templatePointer = clownface({ dataset: $rdf.dataset() }) + const templatePointer = $rdf.clownface() .blankNode() .addOut(rdf.type, hydra.IriTemplate) - template = RdfResource.factory.createEntity(templatePointer, [], { + template = $rdf.rdfine().factory.createEntity(templatePointer, [], { initializer: { template: '/observations?cube={cube}&graph={graph}{&view,pageSize}', mapping: [{ diff --git a/apis/core/test/domain/organization/query.test.ts b/apis/core/test/domain/organization/query.test.ts index 57ff0a476..3c1584907 100644 --- a/apis/core/test/domain/organization/query.test.ts +++ b/apis/core/test/domain/organization/query.test.ts @@ -2,8 +2,8 @@ import { before, describe, it } from 'mocha' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { expect } from 'chai' import { ccClients } from '@cube-creator/testing/lib' -import $rdf from 'rdf-ext' -import { cubeNamespaceAllowed } from '../../../lib/domain/organization/query' +import $rdf from '@zazuko/env' +import { cubeNamespaceAllowed } from '../../../lib/domain/organization/query.js' describe('@cube-creator/core-api/lib/domain/organization/query @SPARQL', () => { before(async () => { diff --git a/apis/core/test/domain/queries/dimension-mappings.test.ts b/apis/core/test/domain/queries/dimension-mappings.test.ts index 2b5407a91..28a68350a 100644 --- a/apis/core/test/domain/queries/dimension-mappings.test.ts +++ b/apis/core/test/domain/queries/dimension-mappings.test.ts @@ -1,12 +1,12 @@ import { describe, it, beforeEach, afterEach } from 'mocha' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { expect } from 'chai' import { ccClients } from '@cube-creator/testing/lib' import { insertTestDimensions, insertTestProject } from '@cube-creator/testing/lib/seedData' -import { dcterms, prov, schema, xsd } from '@tpluscode/rdf-ns-builders/strict' +import { dcterms, prov, schema, xsd } from '@tpluscode/rdf-ns-builders' import { ASK, sparql } from '@tpluscode/sparql-builder' import { IN } from '@tpluscode/sparql-builder/expressions' -import { getUnmappedValues, importMappingsFromSharedDimension } from '../../../lib/domain/queries/dimension-mappings' +import { getUnmappedValues, importMappingsFromSharedDimension } from '../../../lib/domain/queries/dimension-mappings.js' describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', function () { this.timeout(20000) @@ -60,7 +60,7 @@ describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', ] . ` .FROM(pollutantMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) const ozonePairCreated = ASK` ${pollutantMapping} ${prov.hadDictionaryMember} [ ${prov.pairKey} "so2" ; @@ -71,7 +71,7 @@ describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', ] . ` .FROM(pollutantMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) await expect(sulphurOxidePairCreated).to.eventually.be.true await expect(ozonePairCreated).to.eventually.be.true @@ -95,7 +95,7 @@ describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', FILTER(?key ${IN('"O3"', '"so2"')}) ` .FROM(pollutantMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(pairsCreated).to.be.false }) @@ -122,7 +122,7 @@ describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', ] . ` .FROM(testMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(pairsCreated).to.be.true }) @@ -149,7 +149,7 @@ describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', ] . ` .FROM(testMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(pairsCreated).to.be.true }) @@ -177,14 +177,14 @@ describe('@cube-creator/core-api/lib/domain/queries/dimension-mappings @SPARQL', ] . ` .FROM(testMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) const redMapped = await ASK` ${testMapping} ${prov.hadDictionaryMember} [ ${prov.pairKey} "#F00" ; ] . ` .FROM(testMapping) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(blueMapped).to.be.true expect(redMapped).to.be.false diff --git a/apis/core/test/domain/queries/dimension-metadata.test.ts b/apis/core/test/domain/queries/dimension-metadata.test.ts index bde3f9c8f..dacfe18fd 100644 --- a/apis/core/test/domain/queries/dimension-metadata.test.ts +++ b/apis/core/test/domain/queries/dimension-metadata.test.ts @@ -2,10 +2,10 @@ import { describe, it, before } from 'mocha' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { ccClients } from '@cube-creator/testing/lib/index' import { expect } from 'chai' -import namespace from '@rdfjs/namespace' -import { findByDimensionMapping } from '../../../lib/domain/queries/dimension-metadata' +import $rdf from '@zazuko/env' +import { findByDimensionMapping } from '../../../lib/domain/queries/dimension-metadata.js' -const projectNs = namespace('https://cube-creator.lndo.site/') +const projectNs = $rdf.namespace('https://cube-creator.lndo.site/') describe('@cube-creator/core-api/lib/domain/queries/dimension-metadata @SPARQL', () => { before(async () => { diff --git a/apis/core/test/domain/queries/resources-types.test.ts b/apis/core/test/domain/queries/resources-types.test.ts index 6d78ed122..d5ca0aad5 100644 --- a/apis/core/test/domain/queries/resources-types.test.ts +++ b/apis/core/test/domain/queries/resources-types.test.ts @@ -1,13 +1,13 @@ import { describe, it, beforeEach } from 'mocha' -import env from '@cube-creator/core/env' -import $rdf from 'rdf-ext' -import ParsingClient from 'sparql-http-client/ParsingClient' +import env from '@cube-creator/core/env/node' +import $rdf from '@zazuko/env' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' import sinon from 'sinon' import { expect } from 'chai' -import { loadResourcesTypes } from '../../../lib/domain/queries/resources-types' +import { loadResourcesTypes } from '../../../lib/domain/queries/resources-types.js' describe('@cube-creator/core-api/lib/domain/queries/resources-types', () => { - let sparql: ParsingClient.ParsingClient + let sparql: ParsingClient beforeEach(() => { sparql = { diff --git a/apis/core/test/domain/queries/tabel.test.ts b/apis/core/test/domain/queries/tabel.test.ts index 439f3af64..3ed20335a 100644 --- a/apis/core/test/domain/queries/tabel.test.ts +++ b/apis/core/test/domain/queries/tabel.test.ts @@ -1,11 +1,10 @@ import type { NamedNode } from '@rdfjs/types' import { beforeEach, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' -import { fromPointer } from '@cube-creator/model/Table' +import $rdf from '@cube-creator/env' import { namedNode } from '@cube-creator/testing/clownface' import { insertTestProject } from '@cube-creator/testing/lib/seedData' -import { getTableReferences } from '../../../lib/domain/queries/table' +import { getTableReferences } from '../../../lib/domain/queries/table.js' describe('@cube-creator/core-api/lib/domain/queries/table @SPARQL', () => { beforeEach(async function () { @@ -16,7 +15,7 @@ describe('@cube-creator/core-api/lib/domain/queries/table @SPARQL', () => { describe('getTableReferences', () => { it('retrieves expected column mappings', async () => { // given - const table = fromPointer(namedNode('https://cube-creator.lndo.site/cube-project/ubd/csv-mapping/table-station')) + const table = $rdf.rdfine.cc.Table(namedNode('https://cube-creator.lndo.site/cube-project/ubd/csv-mapping/table-station')) // when const mappings: NamedNode[] = [] diff --git a/apis/core/test/domain/table/create.test.ts b/apis/core/test/domain/table/create.test.ts index 312cb9b97..353293d76 100644 --- a/apis/core/test/domain/table/create.test.ts +++ b/apis/core/test/domain/table/create.test.ts @@ -2,50 +2,45 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { csvw, dtype, hydra, rdf, schema, sh } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import * as Organization from '@cube-creator/model/Organization' import { namedNode } from '@cube-creator/testing/clownface' -import * as Project from '@cube-creator/model/Project' import { DomainError } from '@cube-creator/api-errors' -import { createTable } from '../../../lib/domain/table/create' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as DimensionMetadataQueries from '../../../lib/domain/queries/dimension-metadata' -import '../../../lib/domain' -import * as TableQueries from '../../../lib/domain/queries/table' -import * as orgQueries from '../../../lib/domain/organization/query' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/table/create', () => { let store: TestResourceStore let tableCollection: GraphPointer let csvSource: GraphPointer let dimensionMetadata: GraphPointer - let getTableQueries: sinon.SinonStub + let getCubeTable: sinon.SinonStub - beforeEach(() => { - sinon.restore() + let createTable: typeof import('../../../lib/domain/table/create.js').createTable - const organization = Organization.fromPointer(namedNode('org'), { + beforeEach(async () => { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, cubeIdentifier: 'test-cube', }) - const csvMapping = clownface({ dataset: $rdf.dataset() }) + const csvMapping = $rdf.clownface() .namedNode('myCsvMapping') .addOut(rdf.type, cc.CsvMapping) .addOut(cc.tables, $rdf.namedNode('tables')) - tableCollection = clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('tables') }) + tableCollection = $rdf.clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('tables') }) .addOut(rdf.type, cc.Table) .addOut(cc.csvMapping, csvMapping) - csvSource = clownface({ dataset: $rdf.dataset() }) + csvSource = $rdf.clownface() .namedNode('foo') .addOut(rdf.type, cc.CSVSource) - dimensionMetadata = clownface({ dataset: $rdf.dataset() }) + dimensionMetadata = $rdf.clownface() .namedNode('myDimensionMetadata') .addOut(rdf.type, cc.DimensionMetadataCollection) store = new TestResourceStore([ @@ -57,19 +52,23 @@ describe('domain/table/create', () => { organization, ]) - sinon.restore() - sinon.stub(DimensionMetadataQueries, 'getDimensionMetaDataCollection').resolves(dimensionMetadata.term) - getTableQueries = sinon.stub(TableQueries, 'getCubeTable').resolves(undefined) - - sinon.stub(orgQueries, 'findOrganization').resolves({ - projectId: project.id, - organizationId: organization.id, - }) + getCubeTable = sinon.stub().resolves(undefined) + ;({ createTable } = await esmock('../../../lib/domain/table/create.js', { + '../../../lib/domain/queries/table.js': { + getCubeTable, + }, + '../../../lib/domain/organization/query.js': { + findOrganization: sinon.stub().resolves({ + projectId: project.id, + organizationId: organization.id, + }), + }, + })) }) it('creates identifier by slugifying schema:name', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#aaa') @@ -87,7 +86,7 @@ describe('domain/table/create', () => { it('creates correctly shaped cc:Table', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') @@ -122,7 +121,7 @@ describe('domain/table/create', () => { it('creates cc:ObservationTable if flagged', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.isObservationTable, true) .addOut(schema.name, 'the name') @@ -145,14 +144,14 @@ describe('domain/table/create', () => { it('does not allow multiple Cube Tables', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(cc.isObservationTable, true) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') .addOut(cc.identifierTemplate, '{id}') .addOut(cc.csvSource, $rdf.namedNode('foo')) - getTableQueries.resolves([$rdf.namedNode('cube-table')]) + getCubeTable.resolves([$rdf.namedNode('cube-table')]) // then await expect(createTable( @@ -166,7 +165,7 @@ describe('domain/table/create', () => { it('creates a ColumnMapping resources for selected source columns', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') @@ -201,7 +200,7 @@ describe('domain/table/create', () => { it('allows concept table columns to have same name', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') @@ -220,7 +219,7 @@ describe('domain/table/create', () => { it('does not allow cube table columns to have same name', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') @@ -240,7 +239,7 @@ describe('domain/table/create', () => { it('does not allow cube table columns to have same name, generated from CSV columns with special characters', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') @@ -260,7 +259,7 @@ describe('domain/table/create', () => { it('turns column names into URL-safe slugs', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#ababab') @@ -285,7 +284,7 @@ describe('domain/table/create', () => { }) it('generates template if missing', async () => { - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#aaa') @@ -305,7 +304,7 @@ describe('domain/table/create', () => { it('no dimension metadata when not observation table', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(schema.color, '#aaa') @@ -329,7 +328,7 @@ describe('domain/table/create', () => { it('creates Dimension Metadata for observation table columns ', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .node($rdf.namedNode('')) .addOut(schema.name, 'the name') .addOut(cc.isObservationTable, true) diff --git a/apis/core/test/domain/table/delete.test.ts b/apis/core/test/domain/table/delete.test.ts index 40d6e8cb6..1ea0e7cea 100644 --- a/apis/core/test/domain/table/delete.test.ts +++ b/apis/core/test/domain/table/delete.test.ts @@ -2,30 +2,22 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { csvw, hydra, rdf, schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' import { ColumnMapping, Table } from '@cube-creator/model' -import * as Organization from '@cube-creator/model/Organization' import { namedNode } from '@cube-creator/testing/clownface' -import * as Project from '@cube-creator/model/Project' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as DimensionMetadataQueries from '../../../lib/domain/queries/dimension-metadata' -import type * as TableQueries from '../../../lib/domain/queries/table' -import type * as ColumnMappingQueries from '../../../lib/domain/queries/column-mapping' -import '../../../lib/domain' -import { deleteTable } from '../../../lib/domain/table/delete' -import * as orgQueries from '../../../lib/domain/organization/query' +import esmock from 'esmock' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import '../../../lib/domain/index.js' describe('domain/table/delete', () => { let store: TestResourceStore let getReferencingMappingsForTable: sinon.SinonStub const getLinkedTablesForSource = sinon.stub() const getTablesForMapping = sinon.stub() - let tableQueries: typeof TableQueries - let columnMappingQueries: typeof ColumnMappingQueries let dimensionIsUsedByOtherMapping: sinon.SinonStub let columnMapping : GraphPointer let columnMappingReferencing : GraphPointer @@ -34,43 +26,43 @@ describe('domain/table/delete', () => { let observationTable : GraphPointer let dimensionMetadataCollection : GraphPointer - beforeEach(() => { - sinon.restore() + let deleteTable: typeof import('../../../lib/domain/table/delete.js').deleteTable - const organization = Organization.fromPointer(namedNode('org'), { + beforeEach(async () => { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, }) - const csvMapping = clownface({ dataset: $rdf.dataset() }) + const csvMapping = $rdf.clownface() .namedNode('myCsvMapping') .addOut(rdf.type, cc.CsvMapping) .addOut(cc.tables, $rdf.namedNode('tables')) - const csvSource = clownface({ dataset: $rdf.dataset() }) + const csvSource = $rdf.clownface() .namedNode('foo') .addOut(rdf.type, cc.CSVSource) .addOut(csvw.column, $rdf.namedNode('my-column'), (column) => { column.addOut(schema.name, $rdf.literal('My Column')) }) - columnMapping = clownface({ dataset: $rdf.dataset() }) + columnMapping = $rdf.clownface() .node($rdf.namedNode('referencingColumnMapping')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) - columnMappingReferencing = clownface({ dataset: $rdf.dataset() }) + columnMappingReferencing = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(rdf.type, cc.ReferenceColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.referencedTable, $rdf.namedNode('myTable')) .addOut(cc.targetProperty, $rdf.namedNode('test')) - table = clownface({ dataset: $rdf.dataset() }) + table = $rdf.clownface() .namedNode('myTable') .addOut(rdf.type, cc.Table) .addOut(cc.csvMapping, csvMapping) @@ -80,14 +72,14 @@ describe('domain/table/delete', () => { .addOut(cc.identifierTemplate, '{id}') .addOut(cc.columnMapping, columnMapping) - columnMappingObservation = clownface({ dataset: $rdf.dataset() }) + columnMappingObservation = $rdf.clownface() .node($rdf.namedNode('columnMappingObservation')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('testObservation')) - observationTable = clownface({ dataset: $rdf.dataset() }) + observationTable = $rdf.clownface() .namedNode('myObservationTable') .addOut(rdf.type, cc.Table) .addOut(rdf.type, cc.ObservationTable) @@ -98,7 +90,7 @@ describe('domain/table/delete', () => { .addOut(cc.identifierTemplate, '{id}') .addOut(cc.columnMapping, columnMappingObservation) - dimensionMetadataCollection = clownface({ dataset: $rdf.dataset() }) + dimensionMetadataCollection = $rdf.clownface() .namedNode('dimensionMetadataCollection') .addOut(rdf.type, cc.DimensionMetadataCollection) .addOut(schema.hasPart, $rdf.namedNode('myDimension'), dim => { @@ -118,36 +110,39 @@ describe('domain/table/delete', () => { columnMappingReferencing, ]) - sinon.restore() - sinon.stub(DimensionMetadataQueries, 'getDimensionMetaDataCollection').resolves(dimensionMetadataCollection.term) - const getTableForColumnMapping = sinon.stub().resolves(observationTable.term.value) - tableQueries = { - getLinkedTablesForSource, - getTablesForMapping, - getTableForColumnMapping, - getTableReferences: sinon.stub(), - getCubeTable: sinon.stub(), - } - dimensionIsUsedByOtherMapping = sinon.stub().resolves(false) getReferencingMappingsForTable = sinon.stub().returns([]) - columnMappingQueries = { - dimensionIsUsedByOtherMapping, - getReferencingMappingsForTable, - } - - sinon.stub(orgQueries, 'findOrganization').resolves({ - projectId: project.id, - organizationId: organization.id, - }) + ;({ deleteTable } = await esmock('../../../lib/domain/table/delete.js', { + '../../../lib/domain/queries/column-mapping.js': { + dimensionIsUsedByOtherMapping, + getReferencingMappingsForTable, + }, + }, { + '../../../lib/domain/queries/table.js': { + getLinkedTablesForSource, + getTablesForMapping, + getTableForColumnMapping, + getTableReferences: sinon.stub(), + getCubeTable: sinon.stub(), + }, + '../../../lib/domain/queries/dimension-metadata.js': { + getDimensionMetaDataCollection: sinon.stub().resolves(dimensionMetadataCollection.term), + }, + '../../../lib/domain/organization/query.js': { + findOrganization: sinon.stub().resolves({ + organizationId: organization.id, + projectId: project.id, + }), + }, + })) }) it('deletes the table', async () => { // given // when - await deleteTable({ resource: table.term, store, tableQueries, columnMappingQueries }) + await deleteTable({ resource: table.term, store }) await store.save() // then @@ -162,7 +157,7 @@ describe('domain/table/delete', () => { // given // when - await deleteTable({ resource: observationTable.term, store, tableQueries, columnMappingQueries }) + await deleteTable({ resource: observationTable.term, store }) await store.save() // then @@ -180,7 +175,7 @@ describe('domain/table/delete', () => { dimensionIsUsedByOtherMapping.resolves(true) // when - await deleteTable({ resource: observationTable.term, store, tableQueries, columnMappingQueries }) + await deleteTable({ resource: observationTable.term, store }) await store.save() // then @@ -202,7 +197,7 @@ describe('domain/table/delete', () => { getReferencingMappingsForTable.returns(mappingGenerator()) // when - await deleteTable({ resource: table.term, store, tableQueries, columnMappingQueries }) + await deleteTable({ resource: table.term, store }) await store.save() // then diff --git a/apis/core/test/domain/table/update.test.ts b/apis/core/test/domain/table/update.test.ts index ab6445ca0..1acc30ed7 100644 --- a/apis/core/test/domain/table/update.test.ts +++ b/apis/core/test/domain/table/update.test.ts @@ -2,21 +2,16 @@ import type { NamedNode } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import esmock from 'esmock' +import type { GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { csvw, hydra, rdf, schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import * as Organization from '@cube-creator/model/Organization' import { namedNode } from '@cube-creator/testing/clownface' -import * as Project from '@cube-creator/model/Project' -import { TestResourceStore } from '../../support/TestResourceStore' -import * as DimensionMetadataQueries from '../../../lib/domain/queries/dimension-metadata' -import type * as ColumnMappingQueries from '../../../lib/domain/queries/column-mapping' -import '../../../lib/domain' -import { updateTable } from '../../../lib/domain/table/update' -import * as orgQueries from '../../../lib/domain/organization/query' -import * as tableQueries from '../../../lib/domain/queries/table' +import { TestResourceStore } from '../../support/TestResourceStore.js' +import type * as ColumnMappingQueries from '../../../lib/domain/queries/column-mapping.js' +import '../../../lib/domain/index.js' describe('domain/table/update', () => { let store: TestResourceStore @@ -25,23 +20,26 @@ describe('domain/table/update', () => { let dimensionMetadata: GraphPointer let columnMapping: GraphPointer - beforeEach(() => { + let updateTable: typeof import('../../../lib/domain/table/update.js').updateTable + let getTableReferences: sinon.SinonStub + + beforeEach(async () => { sinon.restore() - const organization = Organization.fromPointer(namedNode('org'), { + const organization = $rdf.rdfine.cc.Organization(namedNode('org'), { namespace: $rdf.namedNode('http://example.com/'), }) - const project = Project.fromPointer(namedNode('project'), { + const project = $rdf.rdfine.cc.Project(namedNode('project'), { maintainer: organization, cubeIdentifier: 'test-cube', }) - const csvMapping = clownface({ dataset: $rdf.dataset() }) + const csvMapping = $rdf.clownface() .namedNode('myCsvMapping') .addOut(rdf.type, cc.CsvMapping) .addOut(cc.tables, $rdf.namedNode('tables')) - const csvSource = clownface({ dataset: $rdf.dataset() }) + const csvSource = $rdf.clownface() .namedNode('foo') .addOut(rdf.type, cc.CSVSource) .addOut(csvw.column, $rdf.namedNode('id'), (column) => { @@ -51,14 +49,14 @@ describe('domain/table/update', () => { column.addOut(schema.name, $rdf.literal('id2')) }) - columnMapping = clownface({ dataset: $rdf.dataset() }) + columnMapping = $rdf.clownface() .node($rdf.namedNode('columnMapping')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('test')) - const table = clownface({ dataset: $rdf.dataset() }) + const table = $rdf.clownface() .namedNode('myTable') .addOut(rdf.type, cc.Table) .addOut(cc.csvMapping, csvMapping) @@ -68,14 +66,14 @@ describe('domain/table/update', () => { .addOut(cc.identifierTemplate, '{id}') .addOut(cc.columnMapping, columnMapping) - const columnMappingObservation = clownface({ dataset: $rdf.dataset() }) + const columnMappingObservation = $rdf.clownface() .node($rdf.namedNode('columnMappingObservation')) .addOut(rdf.type, cc.ColumnMapping) .addOut(rdf.type, hydra.Resource) .addOut(cc.sourceColumn, $rdf.namedNode('my-column')) .addOut(cc.targetProperty, $rdf.namedNode('testObservation')) - const observationTable = clownface({ dataset: $rdf.dataset() }) + const observationTable = $rdf.clownface() .namedNode('myObservationTable') .addOut(rdf.type, cc.Table) .addOut(rdf.type, cc.ObservationTable) @@ -86,7 +84,7 @@ describe('domain/table/update', () => { .addOut(cc.identifierTemplate, '{id}') .addOut(cc.columnMapping, columnMappingObservation) - dimensionMetadata = clownface({ dataset: $rdf.dataset() }) + dimensionMetadata = $rdf.clownface() .namedNode('myDimensionMetadata') .addOut(rdf.type, cc.DimensionMetadataCollection) .addOut(schema.hasPart, $rdf.namedNode('myDimension'), dim => { @@ -106,7 +104,6 @@ describe('domain/table/update', () => { ]) sinon.restore() - sinon.stub(DimensionMetadataQueries, 'getDimensionMetaDataCollection').resolves(dimensionMetadata.term) dimensionIsUsedByOtherMapping = sinon.stub().resolves(false) const getReferencingMappingsForTable = sinon.stub().returns([]) @@ -115,15 +112,25 @@ describe('domain/table/update', () => { getReferencingMappingsForTable, } - sinon.stub(orgQueries, 'findOrganization').resolves({ - projectId: project.id, - organizationId: organization.id, - }) + getTableReferences = sinon.stub().resolves([]) + ;({ updateTable } = await esmock('../../../lib/domain/table/update.js', { + '../../../lib/domain/organization/query.js': { + findOrganization: async () => + ({ + projectId: project.id, + organizationId: organization.id, + }), + getTableReferences, + }, + '../../../lib/domain/queries/dimension-metadata.js': { + getDimensionMetaDataCollection: sinon.stub().resolves(dimensionMetadata.term), + }, + })) }) it('updates simple properties', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('myTable') .addOut(schema.name, 'the other name') .addOut(schema.color, '#bababa') @@ -159,7 +166,7 @@ describe('domain/table/update', () => { beforeEach(async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('myTable') .addOut(schema.name, 'the other name') .addOut(schema.color, '#bababa') @@ -171,7 +178,7 @@ describe('domain/table/update', () => { mapping.addOut(cc.sourceColumn, $rdf.namedNode('id')) mapping.addOut(cc.referencedColumn, $rdf.namedNode('id')) }) - sinon.stub(tableQueries, 'getTableReferences').callsFake(async function * () { + getTableReferences.callsFake(async function * () { yield columnMapping.term }) @@ -224,7 +231,7 @@ describe('domain/table/update', () => { it('define as observation table', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('myTable') .addOut(schema.name, 'the other name') .addOut(schema.color, '#bababa') @@ -264,7 +271,7 @@ describe('domain/table/update', () => { it('is not an observation table anymore', async () => { // given - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('myObservationTable') .addOut(schema.name, 'the other name') .addOut(schema.color, '#bababa') @@ -296,7 +303,7 @@ describe('domain/table/update', () => { it('is not an observation table anymore but shared dimension', async () => { // given dimensionIsUsedByOtherMapping.resolves(true) - const resource = clownface({ dataset: $rdf.dataset() }) + const resource = $rdf.clownface() .namedNode('myObservationTable') .addOut(schema.name, 'the other name') .addOut(schema.color, '#bababa') diff --git a/apis/core/test/handlers/dimension-mapping.test.ts b/apis/core/test/handlers/dimension-mapping.test.ts index eb625053a..df4d81acd 100644 --- a/apis/core/test/handlers/dimension-mapping.test.ts +++ b/apis/core/test/handlers/dimension-mapping.test.ts @@ -1,17 +1,13 @@ import type { Literal } from '@rdfjs/types' import { describe, it, beforeEach } from 'mocha' import { Request } from 'express' -import sinon from 'sinon' -import TermSet from '@rdfjs/term-set' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { prov } from '@tpluscode/rdf-ns-builders' -import { fromPointer } from '@rdfine/prov/lib/Dictionary' import { namedNode } from '@cube-creator/testing/clownface' import { ex } from '@cube-creator/testing/lib/namespace' -import { prepareEntries } from '../../lib/handlers/dimension-mapping' -import * as queries from '../../lib/domain/queries/dimension-mappings' -import '../../lib/domain' +import esmock from 'esmock' +import '../../lib/domain/index.js' describe('lib/handlers/dimension-mapping', () => { describe('prepareEntries', () => { @@ -20,11 +16,16 @@ describe('lib/handlers/dimension-mapping', () => { } as Request let unmappedTerms: Set - beforeEach(() => { - unmappedTerms = new TermSet() + let prepareEntries: typeof import('../../lib/handlers/dimension-mapping.js').prepareEntries - sinon.restore() - sinon.stub(queries, 'getUnmappedValues').callsFake(async () => unmappedTerms) + beforeEach(async () => { + unmappedTerms = $rdf.termSet() + + ;({ prepareEntries } = await esmock('../../lib/handlers/dimension-mapping.js', { + '../../lib/domain/queries/dimension-mappings.js': { + getUnmappedValues: async () => unmappedTerms, + }, + })) }) it('add link to dimension to every entry', async () => { @@ -32,7 +33,7 @@ describe('lib/handlers/dimension-mapping', () => { unmappedTerms.add($rdf.literal('Pb')) const sharedDimension = ex.dimension const mappings = namedNode('mappings') - fromPointer(mappings, { + $rdf.rdfine.prov.Dictionary(mappings, { sharedDimension, hadDictionaryMember: [{ pairKey: 'so2', @@ -58,7 +59,7 @@ describe('lib/handlers/dimension-mapping', () => { // given const sharedDimension = ex.dimension const mappings = namedNode('mappings') - fromPointer(mappings, { + $rdf.rdfine.prov.Dictionary(mappings, { sharedDimension, hadDictionaryMember: [{ pairKey: 'so2', @@ -92,7 +93,7 @@ describe('lib/handlers/dimension-mapping', () => { unmappedTerms.add($rdf.literal('Pb')) const sharedDimension = ex.dimension const mappings = namedNode('mappings') - fromPointer(mappings, { + $rdf.rdfine.prov.Dictionary(mappings, { sharedDimension, hadDictionaryMember: [{ pairKey: 'so2', @@ -127,7 +128,7 @@ describe('lib/handlers/dimension-mapping', () => { req.headers.prefer = 'return=canonical' const sharedDimension = ex.dimension const mappings = namedNode('mappings') - fromPointer(mappings, { + $rdf.rdfine.prov.Dictionary(mappings, { sharedDimension, hadDictionaryMember: [{ pairKey: 'so2', @@ -159,7 +160,7 @@ describe('lib/handlers/dimension-mapping', () => { // given const sharedDimension = ex.dimension const mappings = namedNode('mappings') - fromPointer(mappings, { + $rdf.rdfine.prov.Dictionary(mappings, { sharedDimension, hadDictionaryMember: [{ pairKey: 'so2', diff --git a/apis/core/test/handlers/dimension.test.ts b/apis/core/test/handlers/dimension.test.ts index cdf2afab1..f9259294b 100644 --- a/apis/core/test/handlers/dimension.test.ts +++ b/apis/core/test/handlers/dimension.test.ts @@ -3,18 +3,17 @@ import { before, beforeEach, describe, it } from 'mocha' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { namedNode } from '@cube-creator/testing/clownface' -import { GraphPointer } from 'clownface' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { expect } from 'chai' import { rdf, schema } from '@tpluscode/rdf-ns-builders' -import namespace from '@rdfjs/namespace' import { cc, cube } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' -import { preselectDimensionType } from '../../lib/handlers/dimension' -import { TestResourceStore } from '../support/TestResourceStore' -import '../../lib/domain' +import $rdf from '@zazuko/env' +import { preselectDimensionType } from '../../lib/handlers/dimension.js' +import { TestResourceStore } from '../support/TestResourceStore.js' +import '../../lib/domain/index.js' -const ns = namespace('https://cube-creator.lndo.site/cube-project/ubd/') +const ns = $rdf.namespace('https://cube-creator.lndo.site/cube-project/ubd/') describe('lib/handlers/dimension @SPARQL', function () { this.timeout(20000) diff --git a/apis/core/test/middleware/operations.test.ts b/apis/core/test/middleware/operations.test.ts index f71341219..ac8f6bebb 100644 --- a/apis/core/test/middleware/operations.test.ts +++ b/apis/core/test/middleware/operations.test.ts @@ -1,15 +1,13 @@ import { describe, it, beforeEach } from 'mocha' import express from 'express' import request from 'supertest' -import clownface from 'clownface' -import $rdf from 'rdf-ext' -import TermSet from '@rdfjs/term-set' -import { Resource } from 'hydra-box' +import $rdf from '@zazuko/env' +import { Resource } from '@kopflos-cms/core' import { turtle } from '@tpluscode/rdf-string' import { appMock, mockResourceMiddleware } from '@cube-creator/testing/middleware' import { ex } from '@cube-creator/testing/lib/namespace' import { hydra, rdf, sh } from '@tpluscode/rdf-ns-builders' -import { expectsDisambiguate, preferHydraCollection } from '../../lib/middleware/operations' +import { expectsDisambiguate, preferHydraCollection } from '../../lib/middleware/operations.js' describe('lib/middleware/operations', () => { let resource: Resource @@ -27,7 +25,7 @@ describe('lib/middleware/operations', () => { return dataset.toStream() }, term: ex.resource, - types: new TermSet(), + types: $rdf.termSet(), } }) @@ -37,7 +35,7 @@ describe('lib/middleware/operations', () => { app.use(appMock(hydra => { hydra.operations = [{ resource, - operation: clownface(hydra.api).node(ex.Operation), + operation: $rdf.clownface(hydra.api).node(ex.Operation), }] })) app.use(expectsDisambiguate) @@ -57,12 +55,12 @@ describe('lib/middleware/operations', () => { app.use(appMock(hydraBox => { hydraBox.operations = [{ resource, - operation: clownface(hydraBox.api).node(ex.Operation1), + operation: $rdf.clownface(hydraBox.api).node(ex.Operation1), }, { resource, - operation: clownface(hydraBox.api).node(ex.Operation2), + operation: $rdf.clownface(hydraBox.api).node(ex.Operation2), }] - clownface(hydraBox.api) + $rdf.clownface(hydraBox.api) .node(ex.Super) .addOut(rdf.type, hydra.Class) .addOut(hydra.supportedOperation, ex.Operation1, postSubClass1 => { @@ -100,12 +98,12 @@ describe('lib/middleware/operations', () => { app.use(appMock(hydraBox => { hydraBox.operations = [{ resource, - operation: clownface(hydraBox.api) + operation: $rdf.clownface(hydraBox.api) .node(ex.ResourceOperation) .addIn(hydra.supportedOperation, hydra.Resource), }, { resource, - operation: clownface(hydraBox.api) + operation: $rdf.clownface(hydraBox.api) .node(ex.CollectionOperation) .addIn(hydra.supportedOperation, hydra.Collection), }] diff --git a/apis/core/test/pipeline/publishCallbacks.test.ts b/apis/core/test/pipeline/publishCallbacks.test.ts index 8e1a4bf11..50bed071c 100644 --- a/apis/core/test/pipeline/publishCallbacks.test.ts +++ b/apis/core/test/pipeline/publishCallbacks.test.ts @@ -1,17 +1,16 @@ import { describe, it, beforeEach, before } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' -import nodeFetch, { Response } from 'node-fetch' +import $rdf from '@zazuko/env' import { ccClients } from '@cube-creator/testing/lib' import { blankNode } from '@cube-creator/testing/clownface' import { cc } from '@cube-creator/core/namespace' import { insertTestProject } from '@cube-creator/testing/lib/seedData' -import { callbacks } from '../../lib/pipeline/publishCallbacks' +import { callbacks } from '../../lib/pipeline/publishCallbacks.js' describe('@cube-creator/core/lib/pipeline/publishCallback @SPARQL', () => { const { gitlab } = callbacks - let fetch: typeof nodeFetch + let fetch: typeof global.fetch beforeEach(() => { fetch = sinon.stub().resolves() as any @@ -41,7 +40,7 @@ describe('@cube-creator/core/lib/pipeline/publishCallback @SPARQL', () => { .addOut(cc.project, $rdf.namedNode('https://cube-creator.lndo.site/cube-project/ubd')) // when - await gitlab.onSuccess?.({ + gitlab.onSuccess?.({ job, fetch, client: ccClients.parsingClient, @@ -79,7 +78,7 @@ describe('@cube-creator/core/lib/pipeline/publishCallback @SPARQL', () => { .addOut(cc.project, $rdf.namedNode('https://cube-creator.lndo.site/cube-project/ubd')) // when - await gitlab.onSuccess?.({ + gitlab.onSuccess?.({ job, fetch, client: ccClients.parsingClient, diff --git a/apis/core/test/pipeline/trigger.test.ts b/apis/core/test/pipeline/trigger.test.ts index 889b3f8e5..476dda4f1 100644 --- a/apis/core/test/pipeline/trigger.test.ts +++ b/apis/core/test/pipeline/trigger.test.ts @@ -1,24 +1,23 @@ import { describe, it } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' -import clownface from 'clownface' +import $rdf from '@zazuko/env' import { dcterms, rdf } from '@tpluscode/rdf-ns-builders' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { cc } from '@cube-creator/core/namespace' -import * as trigger from '../../lib/pipeline/trigger' +import * as trigger from '../../lib/pipeline/trigger.js' describe('pipeline/trigger', () => { - const transformJob = clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('transformjob') }) + const transformJob = $rdf.clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('transformjob') }) .addOut(rdf.type, cc.TransformJob) - const publishJob = clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('publishjob') }) + const publishJob = $rdf.clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('publishjob') }) .addOut(rdf.type, cc.PublishJob) describe('github', () => { it('sends authenticated transform POST to github', () => { // given - const params = clownface({ dataset: $rdf.dataset() }) + const params = $rdf.clownface() .blankNode() .addOut(dcterms.identifier, 'token') const fetch: any = sinon.spy() @@ -41,7 +40,7 @@ describe('pipeline/trigger', () => { it('sends authenticated publish POST to github', () => { // given - const params = clownface({ dataset: $rdf.dataset() }) + const params = $rdf.clownface() .blankNode() .addOut(dcterms.identifier, 'token') const fetch: any = sinon.spy() @@ -65,7 +64,7 @@ describe('pipeline/trigger', () => { describe('gitlab', () => { it('sends authenticated transform POST to gitlab', () => { // given - const params = clownface({ dataset: $rdf.dataset() }).blankNode() + const params = $rdf.clownface().blankNode() const fetch: any = sinon.spy() env.PIPELINE_TOKEN = 'token' env.PIPELINE_ENV = 'UNITTEST' @@ -90,7 +89,7 @@ describe('pipeline/trigger', () => { it('sends authenticated publish POST to gitlab', () => { // given - const params = clownface({ dataset: $rdf.dataset() }).blankNode() + const params = $rdf.clownface().blankNode() const fetch: any = sinon.spy() env.PIPELINE_TOKEN = 'token' env.PIPELINE_ENV = 'UNITTEST' diff --git a/apis/core/test/shapes/dimension.test.ts b/apis/core/test/shapes/dimension.test.ts index a4171721d..e868332f0 100644 --- a/apis/core/test/shapes/dimension.test.ts +++ b/apis/core/test/shapes/dimension.test.ts @@ -1,23 +1,23 @@ import type { DatasetCore } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import toStream from 'string-to-stream' -import Parser from '@rdfjs/parser-n3' import { describe, it, before } from 'mocha' import { expect } from 'chai' import { rdf, schema, time } from '@tpluscode/rdf-ns-builders' import { namedNode } from '@cube-creator/testing/clownface' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { meta } from '@cube-creator/core/namespace' -import { DimensionMetadataShape } from '../../bootstrap/shapes/dimension' +import formats from '@rdfjs-elements/formats-pretty' +import { DimensionMetadataShape } from '../../bootstrap/shapes/dimension.js' -const parser = new Parser() +$rdf.formats.import(formats) describe('apis/core/bootstrap/shapes/dimension', () => { describe('DimensionMetadataShape', () => { let shapes: DatasetCore before(async () => { - const quadStream = parser.import(toStream(DimensionMetadataShape.toString({ base: 'http://example.com/' }))) + const quadStream = $rdf.formats.parsers.import('text/turtle', toStream(DimensionMetadataShape.toString({ base: 'http://example.com/' })))! shapes = await $rdf.dataset().import(quadStream) }) diff --git a/apis/core/test/support/TestResourceStore.ts b/apis/core/test/support/TestResourceStore.ts index 3140ad4a3..3f1f7abb4 100644 --- a/apis/core/test/support/TestResourceStore.ts +++ b/apis/core/test/support/TestResourceStore.ts @@ -1,16 +1,16 @@ import type { NamedNode, Term } from '@rdfjs/types' -import DatasetExt from 'rdf-ext/lib/Dataset' -import clownface, { GraphPointer } from 'clownface' -import TermMap from '@rdfjs/term-map' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' +import type { GraphPointer } from 'clownface' import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' -import ResourceStore from '../../lib/ResourceStore' -import { ChangelogDataset } from '../../lib/ChangelogDataset' +import $rdf from '@zazuko/env' +import ResourceStore from '../../lib/ResourceStore.js' +import { ChangelogDataset } from '../../lib/ChangelogDataset.js' class InMemoryStorage { - private readonly __resources: TermMap>> + private readonly __resources: Map>> constructor(pointers: Array | RdfResourceCore>) { - this.__resources = new TermMap() + this.__resources = $rdf.termMap() for (const pointer of pointers) { this.push(pointer) } @@ -33,7 +33,7 @@ class InMemoryStorage { throw new Error('Pointer must be named node') } - const changelogPointer = clownface({ dataset: new ChangelogDataset(pointer.dataset) }).node(pointer.term) + const changelogPointer = $rdf.clownface({ dataset: new ChangelogDataset(pointer.dataset) }).node(pointer.term) this.__resources.set(pointer.term, changelogPointer) } } diff --git a/apis/core/tsconfig.json b/apis/core/tsconfig.json index 4b3985755..7e45a4fc3 100644 --- a/apis/core/tsconfig.json +++ b/apis/core/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "module": "CommonJS", "target": "ESNext", - "skipLibCheck": true + "skipLibCheck": true, + "module": "esnext", } } diff --git a/apis/errors/auth.ts b/apis/errors/auth.ts index edcae176f..dbfa935bb 100644 --- a/apis/errors/auth.ts +++ b/apis/errors/auth.ts @@ -1,7 +1,7 @@ import { ErrorMapper } from 'http-problem-details-mapper' import { ProblemDocument } from 'http-problem-details' import httpError from 'http-errors' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' class AuthErrorMapper extends ErrorMapper { private readonly status: number diff --git a/apis/errors/index.ts b/apis/errors/index.ts index 7695fc6fc..75a419d64 100644 --- a/apis/errors/index.ts +++ b/apis/errors/index.ts @@ -1,9 +1,9 @@ import type { Term } from '@rdfjs/types' import type { GraphPointer } from 'clownface' -import { ForbiddenMapper, UnauthorizedMapper } from './auth' -import { DomainErrorMapper } from './domain' +import { ForbiddenMapper, UnauthorizedMapper } from './auth.js' +import { DomainErrorMapper } from './domain.js' -export { DomainError } from './domain' +export { DomainError } from './domain.js' export class NotFoundError extends Error { constructor(id: Term | GraphPointer | undefined) { diff --git a/apis/errors/package.json b/apis/errors/package.json index c832be833..22540bca7 100644 --- a/apis/errors/package.json +++ b/apis/errors/package.json @@ -2,6 +2,7 @@ "name": "@cube-creator/api-errors", "private": true, "version": "0.0.6", + "type": "module", "dependencies": { "@cube-creator/core": "1.0.0", "http-problem-details-mapper": "^0.1.7", diff --git a/apis/readme.md b/apis/readme.md index d3ed947c0..30f421be1 100644 --- a/apis/readme.md +++ b/apis/readme.md @@ -94,7 +94,7 @@ hydra-box looks for such operations where the resource type and `hydra:method` m A reusable middleware can be imported from `@hydrofoil/labyrinth` to restrict access to a resource. ```typescript -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' export const update = protectedResource((req, res) => { // OK, authorized diff --git a/apis/shared-dimensions/bootstrap/entrypoint.ts b/apis/shared-dimensions/bootstrap/entrypoint.ts index 17574ebfa..1dd2c7010 100644 --- a/apis/shared-dimensions/bootstrap/entrypoint.ts +++ b/apis/shared-dimensions/bootstrap/entrypoint.ts @@ -1,7 +1,7 @@ import { hydra, rdf } from '@tpluscode/rdf-ns-builders' import { md } from '@cube-creator/core/namespace' -import { NamespaceBuilder } from '@rdfjs/namespace' -import type { BootstrappedResourceFactory } from './index' +import type { NamespaceBuilder } from '@rdfjs/namespace' +import type { BootstrappedResourceFactory } from './index.js' export const entrypoint = (ptr: BootstrappedResourceFactory, ns: NamespaceBuilder) => ptr('').addOut(rdf.type, [hydra.Resource, md.Entrypoint]) diff --git a/apis/shared-dimensions/bootstrap/hierarchies.ts b/apis/shared-dimensions/bootstrap/hierarchies.ts index f07ebe0e3..23e1794f9 100644 --- a/apis/shared-dimensions/bootstrap/hierarchies.ts +++ b/apis/shared-dimensions/bootstrap/hierarchies.ts @@ -1,6 +1,6 @@ import { md } from '@cube-creator/core/namespace' import { rdf } from '@tpluscode/rdf-ns-builders' -import type { BootstrappedResourceFactory } from './index' +import type { BootstrappedResourceFactory } from './index.js' export const hierarchies = (ptr: BootstrappedResourceFactory) => ptr('_hierarchies').addOut(rdf.type, md.Hierarchies) diff --git a/apis/shared-dimensions/bootstrap/index.ts b/apis/shared-dimensions/bootstrap/index.ts index c4961f3ec..f206438f6 100644 --- a/apis/shared-dimensions/bootstrap/index.ts +++ b/apis/shared-dimensions/bootstrap/index.ts @@ -1,21 +1,20 @@ import type { NamedNode } from '@rdfjs/types' -import namespace from '@rdfjs/namespace' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import env from '../lib/env' -import { log } from '../lib/log' -import { store } from '../lib/store' -import { terms, termSets, exportSet } from './termSetCollections' -import { entrypoint } from './entrypoint' -import shapes from './shapes' -import { hierarchies } from './hierarchies' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env-node' +import env from '../lib/env.js' +import { log } from '../lib/log.js' +import { store } from '../lib/store.js' +import { terms, termSets, exportSet } from './termSetCollections.js' +import { entrypoint } from './entrypoint.js' +import shapes from './shapes.js' +import { hierarchies } from './hierarchies.js' export interface BootstrappedResourceFactory { (term: string): GraphPointer } -const ns = namespace(`${env.MANAGED_DIMENSIONS_BASE}dimension/`) -const pointerFactory = (term: string) => clownface({ dataset: $rdf.dataset(), term: ns(term) }) +const ns = $rdf.namespace(`${env.MANAGED_DIMENSIONS_BASE}dimension/`) +const pointerFactory = (term: string) => $rdf.clownface({ dataset: $rdf.dataset(), term: ns(term) }) const resources = [ terms(pointerFactory), diff --git a/apis/shared-dimensions/bootstrap/shapes.ts b/apis/shared-dimensions/bootstrap/shapes.ts index 3fa87f2dc..e257f3e53 100644 --- a/apis/shared-dimensions/bootstrap/shapes.ts +++ b/apis/shared-dimensions/bootstrap/shapes.ts @@ -1,29 +1,28 @@ -import clownface from 'clownface' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { rdf, sh } from '@tpluscode/rdf-ns-builders' -import { shape } from '../lib/namespace' +import { shape } from '../lib/namespace.js' -const SharedDimensionCreate = clownface({ dataset: $rdf.dataset() }) +const SharedDimensionCreate = $rdf.clownface() .namedNode(shape('shape/shared-dimension-create')) .addOut(rdf.type, sh.NodeShape) -const SharedDimensionUpdate = clownface({ dataset: $rdf.dataset() }) +const SharedDimensionUpdate = $rdf.clownface() .namedNode(shape('shape/shared-dimension-update')) .addOut(rdf.type, sh.NodeShape) -const SharedDimensionTermCreate = clownface({ dataset: $rdf.dataset() }) +const SharedDimensionTermCreate = $rdf.clownface() .namedNode(shape('shape/shared-dimension-term-create')) .addOut(rdf.type, sh.NodeShape) -const SharedDimensionTermUpdate = clownface({ dataset: $rdf.dataset() }) +const SharedDimensionTermUpdate = $rdf.clownface() .namedNode(shape('shape/shared-dimension-term-update')) .addOut(rdf.type, sh.NodeShape) -const Hierarchy = clownface({ dataset: $rdf.dataset() }) +const Hierarchy = $rdf.clownface() .namedNode(shape('shape/hierarchy')) .addOut(rdf.type, sh.NodeShape) -const HierarchyCreate = clownface({ dataset: $rdf.dataset() }) +const HierarchyCreate = $rdf.clownface() .namedNode(shape('shape/hierarchy-create')) .addOut(rdf.type, sh.NodeShape) diff --git a/apis/shared-dimensions/bootstrap/termSetCollections.ts b/apis/shared-dimensions/bootstrap/termSetCollections.ts index 99f60a8b5..9aa18fde5 100644 --- a/apis/shared-dimensions/bootstrap/termSetCollections.ts +++ b/apis/shared-dimensions/bootstrap/termSetCollections.ts @@ -1,6 +1,6 @@ import { md } from '@cube-creator/core/namespace' import { rdf } from '@tpluscode/rdf-ns-builders' -import type { BootstrappedResourceFactory } from './index' +import type { BootstrappedResourceFactory } from './index.js' export const termSets = (ptr: BootstrappedResourceFactory) => ptr('_term-sets').addOut(rdf.type, md.SharedDimensions) diff --git a/apis/shared-dimensions/index.ts b/apis/shared-dimensions/index.ts index 9be96b6dc..358b6e483 100644 --- a/apis/shared-dimensions/index.ts +++ b/apis/shared-dimensions/index.ts @@ -1,13 +1,20 @@ import path from 'path' import { hydraBox } from '@hydrofoil/labyrinth' import { Router } from 'express' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import camouflage from 'camouflage-rewrite' -import env from './lib/env' -import bootstrap from './bootstrap' -import Loader from './lib/loader' -import { sparql, parsingClient, streamClient } from './lib/sparql' -import { patchResponseStream } from './lib/middleware/canonicalRewrite' +import { Environment } from '@zazuko/env-node' +import Fs from '@zazuko/rdf-utils-fs/Factory.js' +import formats from '@rdfjs/formats' +import env from './lib/env.js' +import bootstrap from './bootstrap/index.js' +import Loader from './lib/loader.js' +import { sparql, parsingClient, streamClient } from './lib/sparql.js' +import { patchResponseStream } from './lib/middleware/canonicalRewrite.js' + +$rdf.formats.import(formats) + +const __dirname = path.dirname(new URL(import.meta.url).pathname) const apiPath = path.resolve(__dirname, 'hydra') const codePath = path.resolve(__dirname, 'lib') @@ -22,6 +29,7 @@ export async function sharedDimensions(): Promise { rewriteHeaders: true, })) .use(await hydraBox({ + env: new Environment([Fs], { parent: $rdf }), term: $rdf.namedNode(`${env.MANAGED_DIMENSIONS_API_BASE}dimension/api`), apiPath, codePath, diff --git a/apis/shared-dimensions/lib/domain/hierarchies.ts b/apis/shared-dimensions/lib/domain/hierarchies.ts index 041b1b4d7..7ac655aa0 100644 --- a/apis/shared-dimensions/lib/domain/hierarchies.ts +++ b/apis/shared-dimensions/lib/domain/hierarchies.ts @@ -1,16 +1,16 @@ import type { NamedNode } from '@rdfjs/types' import { CONSTRUCT, SELECT } from '@tpluscode/sparql-builder' import { md, meta } from '@cube-creator/core/namespace' -import clownface, { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { hydra, rdf, schema } from '@tpluscode/rdf-ns-builders' import httpError from 'http-errors' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import slugify from 'slugify' import { DomainError } from '@cube-creator/api-errors' -import { SharedDimensionsStore } from '../store' -import env from '../env' -import { textSearch } from '../query' -import { newId, replace } from './resource' +import { SharedDimensionsStore } from '../store.js' +import env from '../env.js' +import { textSearch } from '../query.js' +import { newId, replace } from './resource.js' interface GetHierarchies { freetextQuery: string | undefined @@ -69,7 +69,7 @@ export async function create({ resource, store }: CreateHierarchy) { } const dataset = $rdf.dataset([...resource.dataset].map(replace(resource.term, hierarchyId))) - const hierarchy = clownface({ dataset }) + const hierarchy = $rdf.clownface({ dataset }) .namedNode(hierarchyId) .addOut(rdf.type, [hydra.Resource, meta.Hierarchy, md.Hierarchy]) diff --git a/apis/shared-dimensions/lib/domain/resource.ts b/apis/shared-dimensions/lib/domain/resource.ts index 39115d077..d2bdd07f8 100644 --- a/apis/shared-dimensions/lib/domain/resource.ts +++ b/apis/shared-dimensions/lib/domain/resource.ts @@ -1,15 +1,15 @@ import type { NamedNode, Quad } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { sparql } from '@tpluscode/rdf-string' -import { AnyPointer, GraphPointer } from 'clownface' +import type { AnyPointer, GraphPointer } from 'clownface' import { rdf, sh } from '@tpluscode/rdf-ns-builders' import { query } from '@cube-creator/core/namespace' import { SELECT } from '@tpluscode/sparql-builder' -import { ParsingClient } from 'sparql-http-client/ParsingClient' -import { SharedDimensionsStore } from '../store' -import { error } from '../log' -import env from '../env' -import { parsingClient } from '../sparql' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' +import { SharedDimensionsStore } from '../store.js' +import { error } from '../log.js' +import env from '../env.js' +import { parsingClient } from '../sparql.js' interface CascadeDelete { store: SharedDimensionsStore @@ -47,7 +47,7 @@ async function findResourcesToDelete(term: NamedNode, paths: GraphPointer[], cli } }, SELECT`?term`.FROM($rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH))) - const results = await query.execute(client.query) + const results = await query.execute(client) return results.map(row => row.term as NamedNode) } diff --git a/apis/shared-dimensions/lib/domain/shared-dimension-term.ts b/apis/shared-dimensions/lib/domain/shared-dimension-term.ts index 609020af2..42d214a43 100644 --- a/apis/shared-dimensions/lib/domain/shared-dimension-term.ts +++ b/apis/shared-dimensions/lib/domain/shared-dimension-term.ts @@ -1,8 +1,8 @@ import type { NamedNode } from '@rdfjs/types' import { hydra, rdf, schema } from '@tpluscode/rdf-ns-builders' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { DomainError } from '@cube-creator/api-errors' -import { SharedDimensionsStore } from '../store' +import { SharedDimensionsStore } from '../store.js' interface UpdateTerm { store: SharedDimensionsStore diff --git a/apis/shared-dimensions/lib/domain/shared-dimension.ts b/apis/shared-dimensions/lib/domain/shared-dimension.ts index 29f556a59..e6f961954 100644 --- a/apis/shared-dimensions/lib/domain/shared-dimension.ts +++ b/apis/shared-dimensions/lib/domain/shared-dimension.ts @@ -1,22 +1,20 @@ import type { NamedNode, Quad, Stream, Term } from '@rdfjs/types' -import clownface, { GraphPointer, MultiPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer, MultiPointer } from 'clownface' +import $rdf from '@zazuko/env-node' import through2 from 'through2' -import { dcterms, hydra, rdf, schema, sh } from '@tpluscode/rdf-ns-builders' +import { dcterms, hydra, rdf, schema, sh, oa } from '@tpluscode/rdf-ns-builders' import { md, meta } from '@cube-creator/core/namespace' import { DomainError } from '@cube-creator/api-errors' import httpError from 'http-errors' import { DESCRIBE, SELECT } from '@tpluscode/sparql-builder' -import { StreamClient } from 'sparql-http-client/StreamClient' -import { oa } from '@tpluscode/rdf-ns-builders/strict' -import TermSet from '@rdfjs/term-set' -import { parsingClient, streamClient } from '../sparql' -import { SharedDimensionsStore } from '../store' -import env from '../env' -import { newId, replace } from './resource' -import * as queries from './shared-dimension/queries' +import { StreamClient } from 'sparql-http-client/StreamClient.js' +import { parsingClient, streamClient } from '../sparql.js' +import { SharedDimensionsStore } from '../store.js' +import env from '../env.js' +import { newId, replace } from './resource.js' +import * as queries from './shared-dimension/queries.js' -export { importDimension } from './shared-dimension/import' +export { importDimension } from './shared-dimension/import.js' interface CreateSharedDimension { resource: GraphPointer @@ -35,7 +33,7 @@ export async function create({ resource, store }: CreateSharedDimension): Promis } const dataset = $rdf.dataset([...resource.dataset].map(replace(resource.term, termSetId))) - const termSet = clownface({ dataset }) + const termSet = $rdf.clownface({ dataset }) .namedNode(termSetId) .addOut(rdf.type, [hydra.Resource, schema.DefinedTermSet, meta.SharedDimension, md.SharedDimension]) .deleteOut(md.createAs) @@ -62,7 +60,7 @@ export async function createTerm({ termSet, resource, store }: CreateTerm): Prom } const dataset = $rdf.dataset([...resource.dataset].map(replace(resource.term, termId))) - const term = clownface({ dataset }) + const term = $rdf.clownface({ dataset }) .namedNode(termId) .deleteOut(dcterms.identifier) .addOut(schema.inDefinedTermSet, termSet) @@ -102,7 +100,7 @@ export async function update({ resource, store, shape, queries }: UpdateSharedDi } const current = await store.load(resource.term) - const deletedProperties = new TermSet(current.out(schema.additionalProperty).out(rdf.predicate).terms) + const deletedProperties = $rdf.termSet(current.out(schema.additionalProperty).out(rdf.predicate).terms) for (const prop of resource.out(schema.additionalProperty).out(rdf.predicate).terms) { deletedProperties.delete(prop) } @@ -136,11 +134,11 @@ const excludedProps = [ export async function getExportedDimension({ resource, store, client = streamClient }: GetExportedDimension): Promise { const dimension = await store.load(resource) - const quads = await DESCRIBE`${resource} ?term` + const quads = DESCRIBE`${resource} ?term` .FROM(store.graph) .WHERE` ?term ${schema.inDefinedTermSet} ${resource} - `.execute(client.query) + `.execute(client) const baseUriPattern = new RegExp(`^${env.MANAGED_DIMENSIONS_BASE}`) function removeBase(term: T): T { @@ -165,7 +163,7 @@ export async function getExportedDimension({ resource, store, client = streamCli .import(quads.pipe(transformToQuads)) for (const excludedProp of excludedProps) { - materialized.removeMatches(null, excludedProp) + materialized.deleteMatches(null, excludedProp) } return { @@ -179,7 +177,7 @@ export async function getDynamicProperties(sharedDimensions: Term[], client = pa .WHERE` ?dimension ${schema.additionalProperty}/${rdf.predicate} ?property ` - .execute(client.query) + .execute(client) return bindings.map(b => b.property) } diff --git a/apis/shared-dimensions/lib/domain/shared-dimension/import.ts b/apis/shared-dimensions/lib/domain/shared-dimension/import.ts index 56d962a04..a645fb9bf 100644 --- a/apis/shared-dimensions/lib/domain/shared-dimension/import.ts +++ b/apis/shared-dimensions/lib/domain/shared-dimension/import.ts @@ -1,21 +1,23 @@ import { createReadStream } from 'fs' import path from 'path' import type { NamedNode, Quad } from '@rdfjs/types' -import httpError, { BadRequest } from 'http-errors' +import httpError from 'http-errors' import { Files } from '@cube-creator/express/multipart' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import SHACLValidator from 'rdf-validate-shacl' -import ValidationReport from 'rdf-validate-shacl/src/validation-report' -import { parsers } from '@rdfjs/formats-common' -import clownface, { AnyPointer, GraphPointer } from 'clownface' +import ValidationReport from 'rdf-validate-shacl/src/validation-report.js' +import formats from '@rdfjs/formats' +import type { AnyPointer, GraphPointer } from 'clownface' import { rdf, schema } from '@tpluscode/rdf-ns-builders' import { INSERT } from '@tpluscode/sparql-builder' -import { StreamClient } from 'sparql-http-client/StreamClient' +import { StreamClient } from 'sparql-http-client/StreamClient.js' import through2 from 'through2' import { md } from '@cube-creator/core/namespace' -import env from '../../env' -import { SharedDimensionsStore } from '../../store' -import { streamClient } from '../../sparql' +import env from '../../env.js' +import { SharedDimensionsStore } from '../../store.js' +import { streamClient } from '../../sparql.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) interface ImportedDimension { termSet: GraphPointer @@ -34,9 +36,9 @@ function isNamedNode(pointer: AnyPointer): pointer is GraphPointer { const shapesPath = path.join(__dirname, 'importShapes.ttl') export async function validateTermSet(termSet: GraphPointer): Promise { - const shapes = await $rdf.dataset().import(parsers.import('text/turtle', createReadStream(shapesPath), { + const shapes = await $rdf.dataset().import(formats.parsers.import('text/turtle', createReadStream(shapesPath), { baseIRI: termSet.value, - })!) + }) as any) const validator = new SHACLValidator(shapes) return validator.validate(termSet.dataset) @@ -50,12 +52,12 @@ export async function importDimension({ }: ImportDimension): Promise { const importedDimension = resource.out(md.export).value if (!importedDimension) { - throw new BadRequest('Import must contain exactly one Shared Dimension') + throw new httpError.BadRequest('Import must contain exactly one Shared Dimension') } const exportedData = files[importedDimension] if (!exportedData) { - throw new BadRequest(`Missing data for file ${importedDimension}`) + throw new httpError.BadRequest(`Missing data for file ${importedDimension}`) } const graph = $rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH) @@ -64,11 +66,11 @@ export async function importDimension({ this.push($rdf.quad(subject, predicate, object, graph)) next() })) - const termSet = clownface({ dataset: await $rdf.dataset().import(importStream) }) + const termSet = $rdf.clownface({ dataset: await $rdf.dataset().import(importStream) }) .has(rdf.type, md.SharedDimension) if (!termSet.term || !isNamedNode(termSet)) { - throw new BadRequest('Import must contain exactly one Shared Dimension') + throw new httpError.BadRequest('Import must contain exactly one Shared Dimension') } const report = await validateTermSet(termSet) @@ -81,7 +83,7 @@ export async function importDimension({ throw new httpError.Conflict(`Shared Dimension '${identifier}' already exists`) } - await INSERT.DATA`${termSet.dataset}`.execute(client.query) + await INSERT.DATA`${termSet.dataset}`.execute(client) return { termSet: await store.load(termSet.term), diff --git a/apis/shared-dimensions/lib/domain/shared-dimension/queries.ts b/apis/shared-dimensions/lib/domain/shared-dimension/queries.ts index f42b6260a..de0076e2b 100644 --- a/apis/shared-dimensions/lib/domain/shared-dimension/queries.ts +++ b/apis/shared-dimensions/lib/domain/shared-dimension/queries.ts @@ -1,8 +1,8 @@ import type { NamedNode, Term } from '@rdfjs/types' import { DELETE, WITH } from '@tpluscode/sparql-builder' import { VALUES } from '@tpluscode/sparql-builder/expressions' -import { schema } from '@tpluscode/rdf-ns-builders/strict' -import { streamClient } from '../../sparql' +import { schema } from '@tpluscode/rdf-ns-builders' +import { streamClient } from '../../sparql.js' interface DeleteDynamicTerms { graph: string @@ -22,5 +22,5 @@ export async function deleteDynamicTerms({ dimension, properties, graph }: Delet `.WHERE` ${VALUES(...values)} ?term ?prop ?o ; ${schema.inDefinedTermSet} ${dimension} . - `).execute(streamClient.query) + `).execute(streamClient) } diff --git a/apis/shared-dimensions/lib/domain/shared-dimensions.ts b/apis/shared-dimensions/lib/domain/shared-dimensions.ts index 9723beb2e..15f7cd1b4 100644 --- a/apis/shared-dimensions/lib/domain/shared-dimensions.ts +++ b/apis/shared-dimensions/lib/domain/shared-dimensions.ts @@ -1,17 +1,18 @@ import path from 'path' import type { Quad, Stream, Term } from '@rdfjs/types' import { hydra, rdf, schema, sh } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { toRdf } from 'rdf-literal' -import { fromFile } from 'rdf-utils-fs' -import clownface from 'clownface' +import { fromFile } from '@zazuko/rdf-utils-fs' import { isGraphPointer } from 'is-graph-pointer' -import { StreamClient } from 'sparql-http-client/StreamClient' -import { ParsingClient } from 'sparql-http-client/ParsingClient' +import { StreamClient } from 'sparql-http-client/StreamClient.js' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' import { md } from '@cube-creator/core/namespace' -import env from '../env' -import shapeToQuery, { rewriteTemplates } from '../shapeToQuery' -import { getDynamicProperties } from './shared-dimension' +import env from '../env.js' +import shapeToQuery, { rewriteTemplates } from '../shapeToQuery.js' +import { getDynamicProperties } from './shared-dimension.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) interface GetSharedDimensions { freetextQuery?: string @@ -34,15 +35,15 @@ export async function getSharedDimensions(client: StreamClient, { freetextQuery })) await rewriteTemplates(shape, variables) - const dataset = await $rdf.dataset().import(await constructQuery(shape).execute(client)) - clownface({ dataset }) + const dataset = await $rdf.dataset().import(constructQuery(shape).execute(client)) + $rdf.clownface({ dataset }) .has(rdf.type, schema.DefinedTermSet) .forEach(termSet => { termSet.addOut(md.export, $rdf.namedNode(`${MANAGED_DIMENSIONS_BASE}dimension/_export?dimension=${termSet.value}`)) termSet.addOut(md.terms, $rdf.namedNode(`${MANAGED_DIMENSIONS_BASE}dimension/_terms?dimension=${termSet.value}`)) }) - return dataset.toArray() + return [...dataset] } interface GetSharedTerms { @@ -90,9 +91,9 @@ export async function getSharedTerms({ s } async function loadShape(shape: string) { - const dataset = await $rdf.dataset().import(fromFile(path.resolve(__dirname, `../shapes/${shape}.ttl`))) + const dataset = await $rdf.dataset().import(fromFile($rdf, path.resolve(__dirname, `../shapes/${shape}.ttl`))) - const ptr = clownface({ + const ptr = $rdf.clownface({ dataset, }).has(rdf.type, sh.NodeShape) diff --git a/apis/shared-dimensions/lib/env.ts b/apis/shared-dimensions/lib/env.ts index 32240ae1b..3df8443fc 100644 --- a/apis/shared-dimensions/lib/env.ts +++ b/apis/shared-dimensions/lib/env.ts @@ -1,5 +1,5 @@ import { createProxy } from '@cube-creator/core/env' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' const prefix = 'MANAGED_DIMENSIONS_' @@ -15,7 +15,7 @@ type ENV_VARS = 'GRAPH' type PREFIXED_ENV_VARS = U extends ENV_VARS ? `${typeof prefix}${U}` : never -const env = createProxy>() +const env = createProxy>(process.env) export default env export const graph = $rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH) diff --git a/apis/shared-dimensions/lib/handlers/collection.ts b/apis/shared-dimensions/lib/handlers/collection.ts index f729e2941..31354fbea 100644 --- a/apis/shared-dimensions/lib/handlers/collection.ts +++ b/apis/shared-dimensions/lib/handlers/collection.ts @@ -1,20 +1,20 @@ import type { NamedNode, Quad } from '@rdfjs/types' -import $rdf from 'rdf-ext' -import clownface, { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env-node' import { hydra, rdf } from '@tpluscode/rdf-ns-builders' +import type { GraphPointer } from 'clownface' interface CollectionHandler { memberType: NamedNode collectionType: NamedNode view?: NamedNode - memberQuads: Quad[] + memberQuads: Iterable collection: NamedNode } export function getCollection({ collection, view, memberQuads, memberType, collectionType }: CollectionHandler): GraphPointer { const dataset = $rdf.dataset(memberQuads) - const graph = clownface({ dataset }) + const graph = $rdf.clownface({ dataset }) const members = graph.has(rdf.type, memberType) graph.node(collection) diff --git a/apis/shared-dimensions/lib/handlers/hierarchies.ts b/apis/shared-dimensions/lib/handlers/hierarchies.ts index b689c8ad7..bdfe470ab 100644 --- a/apis/shared-dimensions/lib/handlers/hierarchies.ts +++ b/apis/shared-dimensions/lib/handlers/hierarchies.ts @@ -1,22 +1,22 @@ import { asyncMiddleware } from 'middleware-async' import { md } from '@cube-creator/core/namespace' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { hydra } from '@tpluscode/rdf-ns-builders' -import clownface from 'clownface' +import $rdf from '@cube-creator/env' import httpError from 'http-errors' -import { parsingClient } from '../sparql' -import { getHierarchies, create } from '../domain/hierarchies' -import { shaclValidate } from '../middleware/shacl' -import { rewrite } from '../rewrite' -import { store } from '../store' -import { getCollection } from './collection' +import { parsingClient } from '../sparql.js' +import { getHierarchies, create } from '../domain/hierarchies.js' +import { shaclValidate } from '../middleware/shacl.js' +import { rewrite } from '../rewrite.js' +import { store } from '../store.js' +import { getCollection } from './collection.js' export const get = asyncMiddleware(async (req, res, next) => { if (!req.dataset) { return next(new httpError.BadRequest()) } - const query = clownface({ dataset: await req.dataset() }) + const query = $rdf.clownface({ dataset: await req.dataset() }) const pageSize = Number(query.out(hydra.limit).value || 10) const page = Number(query.out(hydra.pageIndex).value || 1) const offset = (page - 1) * pageSize @@ -26,8 +26,8 @@ export const get = asyncMiddleware(async (req, res, next) => { limit: pageSize, offset, } - const collection = await getCollection({ - memberQuads: await getHierarchies(queryParams).execute(parsingClient.query), + const collection = getCollection({ + memberQuads: await getHierarchies(queryParams).execute(parsingClient), collectionType: md.Hierarchies, memberType: md.Hierarchy, collection: req.hydra.resource.term, diff --git a/apis/shared-dimensions/lib/handlers/hierarchy.ts b/apis/shared-dimensions/lib/handlers/hierarchy.ts index 15b93cabc..0d4dbb230 100644 --- a/apis/shared-dimensions/lib/handlers/hierarchy.ts +++ b/apis/shared-dimensions/lib/handlers/hierarchy.ts @@ -1,10 +1,10 @@ import type { Quad } from '@rdfjs/types' import { dcterms, sd } from '@tpluscode/rdf-ns-builders' import { asyncMiddleware } from 'middleware-async' -import $rdf from 'rdf-ext' -import env from '@cube-creator/core/env' +import $rdf from '@zazuko/env-node' +import env from '@cube-creator/core/env/node' import { meta } from '@cube-creator/core/namespace' -import { ShouldRewrite } from '../middleware/canonicalRewrite' +import { ShouldRewrite } from '../middleware/canonicalRewrite.js' export const get = asyncMiddleware(async (req, res) => { const hierarchy = await req.hydra.resource.clownface() diff --git a/apis/shared-dimensions/lib/handlers/resource.ts b/apis/shared-dimensions/lib/handlers/resource.ts index 25cdc8a3b..e50505ff2 100644 --- a/apis/shared-dimensions/lib/handlers/resource.ts +++ b/apis/shared-dimensions/lib/handlers/resource.ts @@ -1,21 +1,22 @@ import asyncMiddleware from 'middleware-async' import { NO_CONTENT } from 'http-status' -import clownface, { GraphPointer } from 'clownface' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import { hydra } from '@tpluscode/rdf-ns-builders/strict' -import { store } from '../store' -import { cascadeDelete } from '../domain/resource' -import { shaclValidate } from '../middleware/shacl' -import shapes from '../shapes/index' -import { update } from '../domain/shared-dimension' -import { rewrite } from '../rewrite' -import * as queries from '../domain/shared-dimension/queries' +import type { GraphPointer } from 'clownface' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import { hydra } from '@tpluscode/rdf-ns-builders' +import $rdf from '@cube-creator/env' +import { store } from '../store.js' +import { cascadeDelete } from '../domain/resource.js' +import { shaclValidate } from '../middleware/shacl.js' +import shapes from '../shapes/index.js' +import { update } from '../domain/shared-dimension.js' +import { rewrite } from '../rewrite.js' +import * as queries from '../domain/shared-dimension/queries.js' export const DELETE = protectedResource(asyncMiddleware(async (req, res) => { await cascadeDelete({ store: store(), term: req.hydra.resource.term, - api: clownface(req.hydra.api), + api: $rdf.clownface(req.hydra.api), }) res.sendStatus(NO_CONTENT) diff --git a/apis/shared-dimensions/lib/handlers/shape.ts b/apis/shared-dimensions/lib/handlers/shape.ts index 5f79538fc..8b57929a4 100644 --- a/apis/shared-dimensions/lib/handlers/shape.ts +++ b/apis/shared-dimensions/lib/handlers/shape.ts @@ -1,6 +1,6 @@ import asyncMiddleware from 'middleware-async' import { NotFoundError } from '@cube-creator/api-errors' -import shapes from '../shapes' +import shapes from '../shapes/index.js' export const get = asyncMiddleware(async (req, res, next) => { const load = shapes.get(req.hydra.resource.term) diff --git a/apis/shared-dimensions/lib/handlers/shared-dimension-term.ts b/apis/shared-dimensions/lib/handlers/shared-dimension-term.ts index 7a58323ae..9ad68c6e4 100644 --- a/apis/shared-dimensions/lib/handlers/shared-dimension-term.ts +++ b/apis/shared-dimensions/lib/handlers/shared-dimension-term.ts @@ -1,10 +1,10 @@ import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { oa } from '@tpluscode/rdf-ns-builders' -import { updateTerm } from '../domain/shared-dimension-term' -import { store } from '../store' -import { shaclValidate } from '../middleware/shacl' -import { rewrite } from '../rewrite' +import { updateTerm } from '../domain/shared-dimension-term.js' +import { store } from '../store.js' +import { shaclValidate } from '../middleware/shacl.js' +import { rewrite } from '../rewrite.js' export const get = protectedResource(asyncMiddleware(async (req, res) => { const term = rewrite(await req.resource()) diff --git a/apis/shared-dimensions/lib/handlers/shared-dimension.ts b/apis/shared-dimensions/lib/handlers/shared-dimension.ts index f32dc5ade..9f7ec7ca9 100644 --- a/apis/shared-dimensions/lib/handlers/shared-dimension.ts +++ b/apis/shared-dimensions/lib/handlers/shared-dimension.ts @@ -1,22 +1,22 @@ import asyncMiddleware from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' -import clownface from 'clownface' -import { schema } from '@tpluscode/rdf-ns-builders/strict' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' +import { schema } from '@tpluscode/rdf-ns-builders' import cors from 'cors' -import { serializers } from '@rdfjs-elements/formats-pretty' +import $rdf from '@cube-creator/env' +import formats from '@rdfjs-elements/formats-pretty' import error from 'http-errors' import { md, meta } from '@cube-creator/core/namespace' import * as ns from '@tpluscode/rdf-ns-builders' import { oa } from '@tpluscode/rdf-ns-builders' -import { createTerm, getExportedDimension } from '../domain/shared-dimension' -import { store } from '../store' -import { shaclValidate } from '../middleware/shacl' -import { rewrite } from '../rewrite' +import { createTerm, getExportedDimension } from '../domain/shared-dimension.js' +import { store } from '../store.js' +import { shaclValidate } from '../middleware/shacl.js' +import { rewrite } from '../rewrite.js' export const post = protectedResource(shaclValidate, asyncMiddleware(async (req, res) => { const term = await createTerm({ resource: rewrite(await req.resource()), - termSet: clownface({ dataset: await req.hydra.resource.dataset() }).node(req.hydra.term), + termSet: $rdf.clownface({ dataset: await req.hydra.resource.dataset() }).node(req.hydra.term), store: store(), }) @@ -31,7 +31,7 @@ export const getExport = protectedResource(cors({ exposedHeaders: 'content-dispo if (!req.dataset) { return next(new error.BadRequest()) } - const query = clownface({ dataset: await req.dataset() }) + const query = $rdf.clownface({ dataset: await req.dataset() }) const termSet: any = query .has(schema.inDefinedTermSet) .out(schema.inDefinedTermSet) @@ -47,7 +47,7 @@ export const getExport = protectedResource(cors({ exposedHeaders: 'content-dispo res.setHeader('Content-Disposition', `attachment; filename="${name}.trig"`) res.setHeader('Content-Type', 'application/trig') - const quadStream: any = serializers.import('application/trig', data, { + const quadStream: any = formats.serializers.import('application/trig', data, { prefixes: { md: md().value, meta: meta().value, diff --git a/apis/shared-dimensions/lib/handlers/shared-dimension/import.ts b/apis/shared-dimensions/lib/handlers/shared-dimension/import.ts index 5d9e1d273..3577c6603 100644 --- a/apis/shared-dimensions/lib/handlers/shared-dimension/import.ts +++ b/apis/shared-dimensions/lib/handlers/shared-dimension/import.ts @@ -1,11 +1,11 @@ -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import asyncMiddleware from 'middleware-async' import { multiPartResourceHandler } from '@cube-creator/express/multipart' import { validationReportResponse } from 'hydra-box-middleware-shacl' -import { shaclValidate } from '../../middleware/shacl' -import { streamClient } from '../../sparql' -import { importDimension } from '../../domain/shared-dimension' -import { store } from '../../store' +import { shaclValidate } from '../../middleware/shacl.js' +import { streamClient } from '../../sparql.js' +import { importDimension } from '../../domain/shared-dimension.js' +import { store } from '../../store.js' export const postImportedDimension = protectedResource( multiPartResourceHandler, diff --git a/apis/shared-dimensions/lib/handlers/shared-dimensions.ts b/apis/shared-dimensions/lib/handlers/shared-dimensions.ts index 7c57917d6..920347cd6 100644 --- a/apis/shared-dimensions/lib/handlers/shared-dimensions.ts +++ b/apis/shared-dimensions/lib/handlers/shared-dimensions.ts @@ -1,29 +1,29 @@ import type { Term } from '@rdfjs/types' import { hydra, oa, schema } from '@tpluscode/rdf-ns-builders' import { asyncMiddleware } from 'middleware-async' -import { protectedResource } from '@hydrofoil/labyrinth/resource' +import { protectedResource } from '@hydrofoil/labyrinth/resource.js' import { Enrichment } from '@hydrofoil/labyrinth/lib/middleware/preprocessResource' import httpError from 'http-errors' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env-node' import { md } from '@cube-creator/core/namespace' import conditional from 'express-conditional-middleware' import { isMultipart } from '@cube-creator/express/multipart' -import { shaclValidate } from '../middleware/shacl' -import { getSharedDimensions, getSharedTerms } from '../domain/shared-dimensions' -import { create } from '../domain/shared-dimension' -import { store } from '../store' -import { parsingClient, streamClient } from '../sparql' -import env from '../env' -import { rewrite, rewriteTerm } from '../rewrite' -import { postImportedDimension } from './shared-dimension/import' -import { getCollection } from './collection' +import { shaclValidate } from '../middleware/shacl.js' +import { getSharedDimensions, getSharedTerms } from '../domain/shared-dimensions.js' +import { create } from '../domain/shared-dimension.js' +import { store } from '../store.js' +import { parsingClient, streamClient } from '../sparql.js' +import env from '../env.js' +import { rewrite, rewriteTerm } from '../rewrite.js' +import { postImportedDimension } from './shared-dimension/import.js' +import { getCollection } from './collection.js' export const get = asyncMiddleware(async (req, res, next) => { if (!req.dataset) { return next(new httpError.BadRequest()) } - const query = clownface({ dataset: await req.dataset() }) + const query = $rdf.clownface({ dataset: await req.dataset() }) const pageSize = Number(query.out(hydra.limit).value || 10) const page = Number(query.out(hydra.pageIndex).value || 1) const offset = (page - 1) * pageSize @@ -64,7 +64,7 @@ export const getTerms = asyncMiddleware(async (req, res, next) => { return next(new httpError.BadRequest()) } - const query = clownface({ dataset: await req.dataset() }) + const query = $rdf.clownface({ dataset: await req.dataset() }) const termSet = query .has(schema.inDefinedTermSet) .out(schema.inDefinedTermSet) diff --git a/apis/shared-dimensions/lib/loader.ts b/apis/shared-dimensions/lib/loader.ts index bd7f67aca..156e83c62 100644 --- a/apis/shared-dimensions/lib/loader.ts +++ b/apis/shared-dimensions/lib/loader.ts @@ -1,15 +1,14 @@ import { PassThrough } from 'stream' import type { NamedNode } from '@rdfjs/types' import { SELECT } from '@tpluscode/sparql-builder' -import type HydraBox from 'hydra-box' +import type { ResourceLoader, Resource, PropertyResource } from '@kopflos-cms/core' import { rdf } from '@tpluscode/rdf-ns-builders' -import TermSet from '@rdfjs/term-set' -import $rdf from 'rdf-ext' -import { ParsingClient } from 'sparql-http-client/ParsingClient' -import { StreamClient } from 'sparql-http-client/StreamClient' -import once from 'once' -import toStream from 'rdf-dataset-ext/toStream' -import { store } from './store' +import $rdf from '@zazuko/env-node' +import { ParsingClient } from 'sparql-http-client/ParsingClient.js' +import { StreamClient } from 'sparql-http-client/StreamClient.js' +import once from 'onetime' +import toStream from 'rdf-dataset-ext/toStream.js' +import { store } from './store.js' interface LoaderOptions { graph: NamedNode @@ -17,14 +16,14 @@ interface LoaderOptions { stream: StreamClient } -export default class Loader implements HydraBox.ResourceLoader { +export default class Loader implements ResourceLoader { constructor(private options: LoaderOptions) { } - async forClassOperation(term: NamedNode): Promise { + async forClassOperation(term: NamedNode): Promise { const results = await SELECT`?type` .WHERE`GRAPH ${this.options.graph} { ${term} ${rdf.type} ?type }` - .execute(this.options.sparql.query) + .execute(this.options.sparql) if (results.length === 0) { return [] @@ -32,7 +31,7 @@ export default class Loader implements HydraBox.ResourceLoader { const types = results.reduce((set, { type }) => { return type.termType !== 'NamedNode' ? set : set.add(type) - }, new TermSet()) + }, $rdf.termSet()) const prefetchDataset = $rdf.dataset([...types].map(type => { return $rdf.quad(term, rdf.type, type) @@ -62,7 +61,7 @@ export default class Loader implements HydraBox.ResourceLoader { }] } - forPropertyOperation(): Promise { + forPropertyOperation(): Promise { return Promise.resolve([]) } } diff --git a/apis/shared-dimensions/lib/middleware/canonicalRewrite.ts b/apis/shared-dimensions/lib/middleware/canonicalRewrite.ts index 9ba9b864f..11f81847a 100644 --- a/apis/shared-dimensions/lib/middleware/canonicalRewrite.ts +++ b/apis/shared-dimensions/lib/middleware/canonicalRewrite.ts @@ -4,8 +4,8 @@ import express from 'express' import asyncMiddleware from 'middleware-async' import through2 from 'through2' import { oa } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' -import env from '../env' +import $rdf from '@zazuko/env-node' +import env from '../env.js' function rewriteTerm(term: T): T { if (term.termType === 'NamedNode') { diff --git a/apis/shared-dimensions/lib/middleware/shacl.ts b/apis/shared-dimensions/lib/middleware/shacl.ts index 5eb8de30c..7c54ae8e3 100644 --- a/apis/shared-dimensions/lib/middleware/shacl.ts +++ b/apis/shared-dimensions/lib/middleware/shacl.ts @@ -1,7 +1,7 @@ import { shaclMiddleware } from 'hydra-box-middleware-shacl' -import $rdf from 'rdf-ext' -import shapes from '../shapes' -import env from '../env' +import $rdf from '@zazuko/env-node' +import shapes from '../shapes/index.js' +import env from '../env.js' type CreateMiddleware = Pick[0], 'parseResource'> diff --git a/apis/shared-dimensions/lib/namespace.ts b/apis/shared-dimensions/lib/namespace.ts index f17afaf01..02a2eef0e 100644 --- a/apis/shared-dimensions/lib/namespace.ts +++ b/apis/shared-dimensions/lib/namespace.ts @@ -1,5 +1,5 @@ -import namespace from '@rdfjs/namespace' -import env from './env' +import $rdf from '@zazuko/env-node' +import env from './env.js' type Shapes = 'shape/shared-dimension-create' | 'shape/shared-dimension-update' @@ -8,4 +8,4 @@ type Shapes = 'shape/shared-dimension-create' | 'shape/hierarchy-create' | 'shape/hierarchy' -export const shape = namespace(`${env.MANAGED_DIMENSIONS_BASE}dimension/_`) +export const shape = $rdf.namespace(`${env.MANAGED_DIMENSIONS_BASE}dimension/_`) diff --git a/apis/shared-dimensions/lib/query.ts b/apis/shared-dimensions/lib/query.ts index d9277585a..3e6c3cc6c 100644 --- a/apis/shared-dimensions/lib/query.ts +++ b/apis/shared-dimensions/lib/query.ts @@ -1,13 +1,12 @@ import type { Term } from '@rdfjs/types' -import namespace from '@rdfjs/namespace' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { sparql } from '@tpluscode/sparql-builder' -import env from './env' +import env from './env.js' export function textSearch(subject: Term, predicate: Term, textQuery: string) { switch (env.maybe.MANAGED_DIMENSIONS_STORE_ENGINE) { case 'stardog': { - const fts = namespace('tag:stardog:api:search:') + const fts = $rdf.namespace('tag:stardog:api:search:') const variable = $rdf.variable('_s') return sparql` service ${fts.textMatch} { diff --git a/apis/shared-dimensions/lib/rewrite.ts b/apis/shared-dimensions/lib/rewrite.ts index 7c9241f6b..e6321e9d2 100644 --- a/apis/shared-dimensions/lib/rewrite.ts +++ b/apis/shared-dimensions/lib/rewrite.ts @@ -1,7 +1,7 @@ import type { Quad, Term } from '@rdfjs/types' -import $rdf from 'rdf-ext' -import clownface, { GraphPointer } from 'clownface' -import env from './env' +import $rdf from '@zazuko/env-node' +import type { GraphPointer } from 'clownface' +import env from './env.js' export function rewriteTerm(term: T): T { if (term.termType === 'NamedNode') { @@ -24,7 +24,7 @@ function rewriteQuad({ subject, predicate, object, graph }: Quad): Quad { * Rewrite pointer's dataset by replacing the API_BASE with BASE as configured in the environment */ export function rewrite(pointer: GraphPointer): GraphPointer { - return clownface({ + return $rdf.clownface({ dataset: $rdf.dataset([...pointer.dataset].map(rewriteQuad)), }).node(rewriteTerm(pointer.term as any)) } diff --git a/apis/shared-dimensions/lib/shapeToQuery.ts b/apis/shared-dimensions/lib/shapeToQuery.ts index 9a8bc7dc1..5fa09a854 100644 --- a/apis/shared-dimensions/lib/shapeToQuery.ts +++ b/apis/shared-dimensions/lib/shapeToQuery.ts @@ -1,28 +1,27 @@ import onetime from 'onetime' import { md } from '@cube-creator/core/namespace' -import { AnyPointer, GraphPointer } from 'clownface' +import type { AnyPointer, GraphPointer } from 'clownface' import { isGraphPointer } from 'is-graph-pointer' import { hydra } from '@tpluscode/rdf-ns-builders' -import { Parameters, PropertyShape } from '@hydrofoil/shape-to-query/model/constraint/ConstraintComponent' +import ConstraintComponent, { Parameters, PropertyShape } from '@hydrofoil/shape-to-query/model/constraint/ConstraintComponent.js' import evalTemplateLiteral from 'rdf-loader-code/evalTemplateLiteral.js' -import namespace from '@rdfjs/namespace' import { sparql } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' +import { constructQuery, deleteQuery, s2q } from '@hydrofoil/shape-to-query' +import { constraintComponents } from '@hydrofoil/shape-to-query/model/constraint/index.js' +import { PatternConstraintComponent } from '@hydrofoil/shape-to-query/model/constraint/pattern.js' +import { SparqlTemplateResult } from '@tpluscode/rdf-string' import type { Literal } from '@rdfjs/types' -import env from './env' +import env from './env.js' /* The @hydrofoil/shape-to-query is an ES Module and as long as we compile to CJS, it needs to be loaded dynamically using this ugly TS hack */ -// eslint-disable-next-line no-new-func -const _importDynamic = new Function('modulePath', 'return import(modulePath)') export default async function shapeToQuery(): Promise> { await setup() - const { constructQuery, deleteQuery, s2q } = await _importDynamic('@hydrofoil/shape-to-query') - return { constructQuery, deleteQuery, @@ -74,10 +73,6 @@ const setup = onetime(async () => { }) async function defineConstraintComponents() { - const { default: ConstraintComponent } = await _importDynamic('@hydrofoil/shape-to-query/model/constraint/ConstraintComponent.js') - const { constraintComponents } = await _importDynamic('@hydrofoil/shape-to-query/model/constraint/index.js') - const { PatternConstraintComponent } = await _importDynamic('@hydrofoil/shape-to-query/model/constraint/pattern.js') - constraintComponents.set(md.FreeTextSearchConstraintComponent, class TextSearch extends ConstraintComponent { static match(pointer: GraphPointer) { return isGraphPointer(pointer.out(hydra.freetextQuery)) @@ -110,7 +105,7 @@ async function defineConstraintComponents() { buildPatterns({ focusNode, valueNode, propertyPath }: Parameters): any { if (this.vendor === 'stardog') { - const fts = namespace('tag:stardog:api:search:') + const fts = $rdf.namespace('tag:stardog:api:search:') return sparql` service ${fts.textMatch} { [] ${fts.query} """${this.pattern + '*'}"""; @@ -132,5 +127,9 @@ async function defineConstraintComponents() { throw new Error('Unsupported vendor') } + + buildPropertyShapePatterns(arg: Parameters): string | SparqlTemplateResult | SparqlTemplateResult[] { + return '' + } }) } diff --git a/apis/shared-dimensions/lib/shapes/dynamic-properties.ts b/apis/shared-dimensions/lib/shapes/dynamic-properties.ts index eb03bacd2..f6688bbd7 100644 --- a/apis/shared-dimensions/lib/shapes/dynamic-properties.ts +++ b/apis/shared-dimensions/lib/shapes/dynamic-properties.ts @@ -1,13 +1,13 @@ import type { DatasetCore, NamedNode, Quad } from '@rdfjs/types' -import { dash, hydra, rdf, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders/strict' +import { dash, hydra, rdf, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { iso6391, md } from '@cube-creator/core/namespace' import { CONSTRUCT } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' -import clownface, { AnyPointer, GraphPointer } from 'clownface' +import $rdf from '@zazuko/env-node' +import type { AnyPointer, GraphPointer } from 'clownface' import { toRdf } from 'rdf-literal' -import env from '../env' -import { parsingClient } from '../sparql' -import { rewriteTerm } from '../rewrite' +import env from '../env.js' +import { parsingClient } from '../sparql.js' +import { rewriteTerm } from '../rewrite.js' export interface DynamicPropertiesQuery { (targetClass: NamedNode, shape: NamedNode): Promise @@ -60,7 +60,7 @@ const dynamicPropertiesFromStore: DynamicPropertiesQuery = async function (targe } BIND (IF(!BOUND(?multipleValues) || ?multipleValues = false, 1, ?UNDEF) as ?maxCount) ` - .execute(parsingClient.query) + .execute(parsingClient) const collectionSearchTemplates = CONSTRUCT` ${shape} ${sh.property} ?shProperty . @@ -84,11 +84,11 @@ const dynamicPropertiesFromStore: DynamicPropertiesQuery = async function (targe BIND(IRI(CONCAT("urn:property:", str(?property))) as ?shProperty) BIND (CONCAT("${env.MANAGED_DIMENSIONS_API_BASE}", "dimension/_terms?dimension=", ENCODE_FOR_URI(STR(?termSet)), "{&q}") as ?collectionSearch) - `.execute(parsingClient.query) + `.execute(parsingClient) const quads = await Promise.all([basicProperties, collectionSearchTemplates]) - return quads.flatMap(q => q) + return quads.flatMap(ds => [...ds]) } function buildShaclLists(pointer: AnyPointer) { @@ -114,7 +114,7 @@ export async function loadDynamicTermProperties(targetClass: string | unknown, s dataset.addAll(await dynamicPropertiesQuery(rewriteTerm($rdf.namedNode(targetClass)), shape.term)) } - const pointer = clownface({ dataset }) + const pointer = $rdf.clownface({ dataset }) buildShaclLists(pointer) let order = 100 diff --git a/apis/shared-dimensions/lib/shapes/hierarchy.ts b/apis/shared-dimensions/lib/shapes/hierarchy.ts index c4cf0edbd..536c18f13 100644 --- a/apis/shared-dimensions/lib/shapes/hierarchy.ts +++ b/apis/shared-dimensions/lib/shapes/hierarchy.ts @@ -1,11 +1,11 @@ +import $rdf from '@cube-creator/env' import { Initializer } from '@tpluscode/rdfine/RdfResource' -import { NodeShape, fromPointer as nodeShape } from '@rdfine/shacl/lib/NodeShape' +import { NodeShape } from '@rdfine/shacl/lib/NodeShape' import { PropertyShape } from '@rdfine/shacl' -import { fromPointer as iriTemplate } from '@rdfine/hydra/lib/IriTemplate' -import { dash, dcterms, foaf, hydra, rdf, schema, sd, sh, xsd } from '@tpluscode/rdf-ns-builders/strict' +import { dash, dcterms, foaf, hydra, rdf, schema, sd, sh, xsd } from '@tpluscode/rdf-ns-builders' import { editor, md, meta } from '@cube-creator/core/namespace' -import { AnyPointer } from 'clownface' -import env from '@cube-creator/core/env' +import type { AnyPointer } from 'clownface' +import env from '@cube-creator/core/env/node' export default function ({ rdfTypeProperty = false }: { rdfTypeProperty?: boolean } = {}) { return (graph: AnyPointer): Initializer => { @@ -15,7 +15,7 @@ export default function ({ rdfTypeProperty = false }: { rdfTypeProperty?: boolea .addOut(foaf.page, env.TRIFID_UI) const nextInHierarchyShapeId = graph.blankNode() - const nextInHierarchyShape = nodeShape(nextInHierarchyShapeId, { + const nextInHierarchyShape = $rdf.rdfine.sh.NodeShape(nextInHierarchyShapeId, { property: [{ name: 'Name', path: schema.name, @@ -38,7 +38,7 @@ export default function ({ rdfTypeProperty = false }: { rdfTypeProperty?: boolea path: sh.path, minCount: 1, maxCount: 1, - node: nodeShape({ + node: $rdf.rdfine.sh.NodeShape({ xone: [{ nodeKind: sh.IRI, }, { @@ -79,7 +79,7 @@ export default function ({ rdfTypeProperty = false }: { rdfTypeProperty?: boolea maxCount: 1, nodeKind: sh.IRI, [dash.editor.value]: dash.InstancesSelectEditor, - [hydra.search.value]: iriTemplate({ + [hydra.search.value]: $rdf.rdfine.hydra.IriTemplate({ template: 'dimension/_term-sets{?q}', mapping: { variable: 'q', @@ -95,7 +95,7 @@ export default function ({ rdfTypeProperty = false }: { rdfTypeProperty?: boolea nodeKind: sh.IRI, [dash.editor.value]: dash.AutoCompleteEditor, order: 10, - [hydra.search.value]: iriTemplate({ + [hydra.search.value]: $rdf.rdfine.hydra.IriTemplate({ variableRepresentation: hydra.ExplicitRepresentation, template: '/dimension/_terms?canonical&dimension={dimension}{&q}', mapping: [{ diff --git a/apis/shared-dimensions/lib/shapes/index.ts b/apis/shared-dimensions/lib/shapes/index.ts index 32e8e6bfc..781804c42 100644 --- a/apis/shared-dimensions/lib/shapes/index.ts +++ b/apis/shared-dimensions/lib/shapes/index.ts @@ -1,24 +1,15 @@ import type { NamedNode } from '@rdfjs/types' -import TermMap from '@rdfjs/term-map' -import clownface, { AnyPointer, GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { AnyPointer, GraphPointer } from 'clownface' +import $rdf from '@cube-creator/env' import type { Initializer } from '@tpluscode/rdfine/RdfResource' import type { NodeShape } from '@rdfine/shacl' -import RdfResource from '@tpluscode/rdfine' -import { NodeShapeBundle, PropertyShapeBundle } from '@rdfine/shacl/bundles' -import { ResourceBundle } from '@rdfine/rdfs/bundles' -import { fromPointer } from '@rdfine/shacl/lib/NodeShape' import { Request } from 'express' import parsePreferHeader from 'parse-prefer-header' -import { shape } from '../namespace' -import * as dimensionTerm from './shared-dimension-term' -import { loadDynamicTermProperties } from './dynamic-properties' -import * as sharedDimension from './shared-dimension' -import hierarchy from './hierarchy' - -RdfResource.factory.addMixin(...NodeShapeBundle) -RdfResource.factory.addMixin(...PropertyShapeBundle) -RdfResource.factory.addMixin(...ResourceBundle) +import { shape } from '../namespace.js' +import * as dimensionTerm from './shared-dimension-term.js' +import { loadDynamicTermProperties } from './dynamic-properties.js' +import * as sharedDimension from './shared-dimension.js' +import hierarchy from './hierarchy.js' interface ShapeFactory { (req: Request): Promise> @@ -26,8 +17,8 @@ interface ShapeFactory { function entry(id: NamedNode, init: (graph: AnyPointer) => Initializer): [NamedNode, ShapeFactory] { async function factory(req: Request) { - const pointer = clownface({ dataset: $rdf.dataset() }).namedNode(id) - fromPointer(pointer, init(pointer.any())) + const pointer = $rdf.clownface().namedNode(id) + $rdf.rdfine.sh.NodeShape(pointer, init(pointer.any())) const { targetClass } = parsePreferHeader(req.header('Prefer')) for (const quad of await loadDynamicTermProperties(targetClass, pointer)) { @@ -42,7 +33,7 @@ function entry(id: NamedNode, init: (graph: AnyPointer) => Initializer([ +export default $rdf.termMap([ entry(shape['shape/shared-dimension-create'], sharedDimension.create), entry(shape['shape/shared-dimension-update'], sharedDimension.update), entry(shape['shape/shared-dimension-term-create'], dimensionTerm.create), diff --git a/apis/shared-dimensions/lib/shapes/shared-dimension-term.ts b/apis/shared-dimensions/lib/shapes/shared-dimension-term.ts index 33cf3308b..c764cc1d9 100644 --- a/apis/shared-dimensions/lib/shapes/shared-dimension-term.ts +++ b/apis/shared-dimensions/lib/shapes/shared-dimension-term.ts @@ -3,8 +3,7 @@ import { NodeShape, PropertyShape } from '@rdfine/shacl' import { dash, dcterms, rdf, schema, xsd } from '@tpluscode/rdf-ns-builders' import { supportedLanguages } from '@cube-creator/core/languages' import { md } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' -import { fromPointer as propertyGroup } from '@rdfine/shacl/lib/PropertyGroup' +import $rdf from '@cube-creator/env' const defaultGroup = $rdf.namedNode('#default-group') @@ -15,7 +14,7 @@ const commonProperties: Initializer[] = [{ uniqueLang: true, order: 10, minCount: 1, - group: propertyGroup(defaultGroup, { + group: $rdf.rdfine.sh.PropertyGroup(defaultGroup, { label: 'Term', }), }, { diff --git a/apis/shared-dimensions/lib/shapes/shared-dimension.ts b/apis/shared-dimensions/lib/shapes/shared-dimension.ts index b8fc2bd7f..067b0a953 100644 --- a/apis/shared-dimensions/lib/shapes/shared-dimension.ts +++ b/apis/shared-dimensions/lib/shapes/shared-dimension.ts @@ -1,14 +1,10 @@ -import { dash, dcterms, hydra, qudt, rdf, rdfs, schema, sh, time, xsd } from '@tpluscode/rdf-ns-builders/strict' +import { dash, dcterms, hydra, qudt, rdf, rdfs, schema, sh, time, xsd } from '@tpluscode/rdf-ns-builders' import { supportedLanguages } from '@cube-creator/core/languages' import { datatypes } from '@cube-creator/core/datatypes' import type { Initializer } from '@tpluscode/rdfine/RdfResource' -import { fromPointer as iriTemplate } from '@rdfine/hydra/lib/IriTemplate' import type { NodeShape, PropertyShape } from '@rdfine/shacl' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { editor, iso6391, md, meta, sh1 } from '@cube-creator/core/namespace' -import { fromPointer as nodeShape } from '@rdfine/shacl/lib/NodeShape' -import { fromPointer as propertyGroup } from '@rdfine/shacl/lib/PropertyGroup' -import { fromPointer as resource } from '@rdfine/rdfs/lib/Resource' const defaultGroup = $rdf.namedNode('#default-group') const datatypeUri = [xsd.anyURI, ['URI']] @@ -28,7 +24,7 @@ const properties: Initializer[] = [{ maxCount: supportedLanguages.length, languageIn: supportedLanguages, order: 10, - group: propertyGroup(defaultGroup, { + group: $rdf.rdfine.sh.PropertyGroup(defaultGroup, { label: 'Dimension', }), }, { @@ -180,7 +176,7 @@ const properties: Initializer[] = [{ path: schema.additionalProperty, order: 40, nodeKind: sh.BlankNodeOrIRI, - group: propertyGroup({ + group: $rdf.rdfine.sh.PropertyGroup({ label: 'Term properties', }), node: { @@ -227,7 +223,7 @@ const properties: Initializer[] = [{ defaultValue: false, order: 15, }], - xone: [nodeShape({ + xone: [$rdf.rdfine.sh.NodeShape({ closed: true, ignoredProperties: commonProperties, property: [{ @@ -247,7 +243,7 @@ const properties: Initializer[] = [{ order: 30, message: 'Datatype must be one of the listed xsd types', }], - }), nodeShape({ + }), $rdf.rdfine.sh.NodeShape({ closed: true, ignoredProperties: commonProperties, property: [{ @@ -258,7 +254,7 @@ const properties: Initializer[] = [{ name: 'Shared dimension', path: sh.class, [dash.editor.value]: dash.AutoCompleteEditor, - [hydra.search.value]: iriTemplate({ + [hydra.search.value]: $rdf.rdfine.hydra.IriTemplate({ template: '/dimension/_term-sets{?q}', mapping: { variable: 'q', @@ -271,7 +267,7 @@ const properties: Initializer[] = [{ maxCount: 1, order: 30, }], - }), nodeShape({ + }), $rdf.rdfine.sh.NodeShape({ closed: true, ignoredProperties: commonProperties, property: [{ @@ -281,15 +277,15 @@ const properties: Initializer[] = [{ }, { name: 'Languages', path: sh.languageIn, - in: [resource(iso6391.de, { + in: [$rdf.rdfine.rdfs.Resource(iso6391.de, { label: 'German', - }), resource(iso6391.fr, { + }), $rdf.rdfine.rdfs.Resource(iso6391.fr, { label: 'French', - }), resource(iso6391.it, { + }), $rdf.rdfine.rdfs.Resource(iso6391.it, { label: 'Italian', - }), resource(iso6391.rm, { + }), $rdf.rdfine.rdfs.Resource(iso6391.rm, { label: 'Romansh', - }), resource(iso6391.en, { + }), $rdf.rdfine.rdfs.Resource(iso6391.en, { label: 'English', })], [dash.editor.value]: editor.CheckboxListEditor, diff --git a/apis/shared-dimensions/lib/sparql.ts b/apis/shared-dimensions/lib/sparql.ts index 638b6ba90..a97709d26 100644 --- a/apis/shared-dimensions/lib/sparql.ts +++ b/apis/shared-dimensions/lib/sparql.ts @@ -1,6 +1,6 @@ -import ParsingClient from 'sparql-http-client/ParsingClient' -import StreamClient from 'sparql-http-client/StreamClient' -import env from './env' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import StreamClient from 'sparql-http-client/StreamClient.js' +import env from './env.js' export const sparql = { endpointUrl: env.MANAGED_DIMENSIONS_STORE_QUERY_ENDPOINT, diff --git a/apis/shared-dimensions/lib/store.ts b/apis/shared-dimensions/lib/store.ts index a0a15c210..2047baa96 100644 --- a/apis/shared-dimensions/lib/store.ts +++ b/apis/shared-dimensions/lib/store.ts @@ -1,9 +1,9 @@ import type { NamedNode, Term } from '@rdfjs/types' -import { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import { parsingClient } from './sparql' -import env from './env' -import Store from './store/index' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env-node' +import { parsingClient } from './sparql.js' +import env from './env.js' +import Store from './store/index.js' export interface SharedDimensionsStore { graph: NamedNode diff --git a/apis/shared-dimensions/lib/store/index.ts b/apis/shared-dimensions/lib/store/index.ts index c1b334846..cb985e402 100644 --- a/apis/shared-dimensions/lib/store/index.ts +++ b/apis/shared-dimensions/lib/store/index.ts @@ -1,15 +1,15 @@ import type { NamedNode, Term } from '@rdfjs/types' -import ParsingClient from 'sparql-http-client/ParsingClient' -import clownface, { AnyPointer, GraphPointer } from 'clownface' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import type { AnyPointer, GraphPointer } from 'clownface' import { ASK, INSERT, SELECT } from '@tpluscode/sparql-builder' -import { rdf, schema, sh } from '@tpluscode/rdf-ns-builders/strict' +import { rdf, schema, sh } from '@tpluscode/rdf-ns-builders' import onetime from 'onetime' import { isGraphPointer } from 'is-graph-pointer' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { sparql } from '@tpluscode/rdf-string' -import { SharedDimensionsStore } from '../store' -import shapeToQuery from '../shapeToQuery' -import { loadShapes } from './shapes' +import { SharedDimensionsStore } from '../store.js' +import shapeToQuery from '../shapeToQuery.js' +import { loadShapes } from './shapes.js' export default class implements SharedDimensionsStore { private readonly loadShapes: () => Promise @@ -21,7 +21,7 @@ export default class implements SharedDimensionsStore { exists(id: NamedNode, type?: NamedNode): Promise { return ASK` ${id} ${rdf.type} ${type || $rdf.variable('type')} . - `.FROM(this.graph).execute(this.client.query) + `.FROM(this.graph).execute(this.client) } async load(term: NamedNode): Promise> { @@ -35,7 +35,7 @@ export default class implements SharedDimensionsStore { const quads = await query.execute(this.client, { operation: 'postDirect', }) - return clownface({ + return $rdf.clownface({ dataset: $rdf.dataset(quads), term, }) @@ -71,11 +71,11 @@ export default class implements SharedDimensionsStore { const shapes = await this.loadShapes() const types = await SELECT`?type` .WHERE`${term} a ?type` - .execute(this.client.query) + .execute(this.client) const graph = shapes.has(sh.targetClass, types.map(b => b.type)) if (!isGraphPointer(graph)) { - return clownface({ dataset: $rdf.dataset() }) + return $rdf.clownface() .blankNode() .addOut(sh.property, shp => { shp.addOut(sh.path, rdf.type) @@ -89,7 +89,7 @@ export default class implements SharedDimensionsStore { } private async createDynamicProperties({ dataset, term }: GraphPointer, sharedTerm: Term) { - const shape = clownface({ + const shape = $rdf.clownface({ dataset: $rdf.dataset([...dataset]), term, }) @@ -98,7 +98,7 @@ export default class implements SharedDimensionsStore { .WHERE` ${sharedTerm} ${schema.inDefinedTermSet}/${schema.additionalProperty}/${rdf.predicate} ?predicate ` - .execute(this.client.query) + .execute(this.client) for (const { predicate } of dynamicPropertyPredicates) { shape.addOut(sh.property, propShape => { diff --git a/apis/shared-dimensions/lib/store/shapes.ts b/apis/shared-dimensions/lib/store/shapes.ts index 58a6ae1aa..8bb092391 100644 --- a/apis/shared-dimensions/lib/store/shapes.ts +++ b/apis/shared-dimensions/lib/store/shapes.ts @@ -1,11 +1,12 @@ -import { resolve } from 'path' -import clownface, { AnyPointer } from 'clownface' -import { fromFile } from 'rdf-utils-fs' -import $rdf from 'rdf-ext' +import { dirname, resolve } from 'path' +import type { AnyPointer } from 'clownface' +import { fromFile } from '@zazuko/rdf-utils-fs' +import $rdf from '@zazuko/env-node' +const __dirname = dirname(new URL(import.meta.url).pathname) export async function loadShapes(): Promise { const path = resolve(__dirname, 'shapes.ttl') - return clownface({ - dataset: await $rdf.dataset().import(fromFile(path)), + return $rdf.clownface({ + dataset: await $rdf.dataset().import(fromFile($rdf, path)), }) } diff --git a/apis/shared-dimensions/package.json b/apis/shared-dimensions/package.json index 1304461f8..ccf1b630b 100644 --- a/apis/shared-dimensions/package.json +++ b/apis/shared-dimensions/package.json @@ -2,27 +2,27 @@ "name": "@cube-creator/shared-dimensions-api", "version": "3.0.4", "private": true, + "type": "module", "dependencies": { "@cube-creator/api-errors": "0.0.6", "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", "@cube-creator/express": "0.0.0", - "@hydrofoil/labyrinth": "^0.4.2", + "@hydrofoil/labyrinth": "^0.4.5", "@hydrofoil/shape-to-query": "^0.12", - "@rdfine/hydra": "^0.8.2", - "@rdfine/rdfs": "^0.6.4", - "@rdfine/schema": "^0.6.3", - "@rdfine/shacl": "^0.8", - "@rdfjs-elements/formats-pretty": "^0.4.3", - "@rdfjs/formats-common": "^2.1.0", - "@rdfjs/namespace": "^1.1.0", - "@rdfjs/term-map": "^1.0.0", - "@rdfjs/term-set": "^1.0.1", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdf-string": "^0.2.21", - "@tpluscode/rdfine": "^0.5.25", - "@tpluscode/sparql-builder": "^0.3.21", + "@zazuko/rdf-utils-fs": "^3.3.1", + "@rdfine/hydra": "^0.10.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs/formats": "^4", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@zazuko/env-node": "^2.0.6", "camouflage-rewrite": "^1.2.0", - "clownface": "^1.4.0", "cors": "^2.8.5", "debug": "^4.3.1", "express": "^4.17.1", @@ -30,34 +30,27 @@ "http-errors": "^2.0.0", "http-status": "^1.5.0", "hydra-box-middleware-shacl": "1.1.0", - "is-graph-pointer": "^1.2.2", + "is-graph-pointer": "^2.1.0", "middleware-async": "^1.2.7", - "nanoid": "^3.1.23", - "once": "^1.4.0", - "onetime": "^5", + "nanoid": "^5.0.6", + "onetime": "^6.0.0", "parse-prefer-header": "^1.0.0", - "rdf-dataset-ext": "^1.0.1", - "rdf-ext": "^1.3.0", "rdf-literal": "^1.2.0", "rdf-loader-code": "^0.3.3", - "rdf-utils-fs": "^2", - "rdf-validate-shacl": "^0.4.3", + "rdf-dataset-ext": "^1.1.0", + "rdf-validate-shacl": "^0.5.3", "slugify": "^1.6.5", - "sparql-http-client": "^2.2.2", + "sparql-http-client": "^3.0.0", "through2": "^2.0.5" }, "devDependencies": { "@cube-creator/testing": "^0.1.21", "@types/camouflage-rewrite": "^1.2.0", - "@types/clownface": "^1.2.6", "@types/parse-prefer-header": "^1.0.0", - "@types/rdf-dataset-ext": "^1", - "@types/rdf-loader-code": "^0.3", - "@types/rdf-utils-fs": "^2", - "@types/sinon": "^10.0.0", + "@types/sinon": "^17.0.3", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "mocha": "^10.2.0", - "sinon": "^13.0.0" + "sinon": "^17.0.1" } } diff --git a/apis/shared-dimensions/test/lib/domain/managed-dimension-term.test.ts b/apis/shared-dimensions/test/lib/domain/managed-dimension-term.test.ts index 37e9e0edb..f4267368e 100644 --- a/apis/shared-dimensions/test/lib/domain/managed-dimension-term.test.ts +++ b/apis/shared-dimensions/test/lib/domain/managed-dimension-term.test.ts @@ -4,11 +4,11 @@ import { expect } from 'chai' import { namedNode } from '@cube-creator/testing/clownface' import { DomainError } from '@cube-creator/api-errors' import { schema, xsd } from '@tpluscode/rdf-ns-builders' -import { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import { updateTerm } from '../../../lib/domain/shared-dimension-term' -import { SharedDimensionsStore } from '../../../lib/store' -import { testStore } from '../../support/store' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env-node' +import { updateTerm } from '../../../lib/domain/shared-dimension-term.js' +import { SharedDimensionsStore } from '../../../lib/store.js' +import { testStore } from '../../support/store.js' describe('@cube-creator/shared-dimensions-api/lib/domain/sahred-dimension-term', () => { describe('updateTerm', () => { diff --git a/apis/shared-dimensions/test/lib/domain/managed-dimension.test.ts b/apis/shared-dimensions/test/lib/domain/managed-dimension.test.ts index d134ae19a..d8bb75a15 100644 --- a/apis/shared-dimensions/test/lib/domain/managed-dimension.test.ts +++ b/apis/shared-dimensions/test/lib/domain/managed-dimension.test.ts @@ -6,15 +6,14 @@ import { insertTestDimensions } from '@cube-creator/testing/lib/seedData' import { mdClients } from '@cube-creator/testing/lib/index' import { dcterms, hydra, rdf, schema, xsd } from '@tpluscode/rdf-ns-builders' import { md, meta } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import httpError from 'http-errors' -import clownface from 'clownface' import sinon from 'sinon' import { ex } from '@cube-creator/testing/lib/namespace' -import { create, createTerm, update, getExportedDimension } from '../../../lib/domain/shared-dimension' -import { SharedDimensionsStore } from '../../../lib/store' -import { testStore } from '../../support/store' -import { validateTermSet } from '../../../lib/domain/shared-dimension/import' +import { create, createTerm, update, getExportedDimension } from '../../../lib/domain/shared-dimension.js' +import { SharedDimensionsStore } from '../../../lib/store.js' +import { testStore } from '../../support/store.js' +import { validateTermSet } from '../../../lib/domain/shared-dimension/import.js' describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension', () => { describe('create', () => { @@ -232,7 +231,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension', () = }) it('exports set and terms', () => { - const graph = clownface({ dataset }) + const graph = $rdf.clownface({ dataset }) const termSet = graph.node(termSetId) // then @@ -240,7 +239,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension', () = }) it('exports dimension properties', () => { - const dimension = clownface({ dataset }).node(termSetId) + const dimension = $rdf.clownface({ dataset }).node(termSetId) expect(dimension).to.matchShape({ property: [{ @@ -258,7 +257,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension', () = }) it('exports term properties', () => { - const dimension = clownface({ dataset }) + const dimension = $rdf.clownface({ dataset }) .namedNode('dimension/technologies/rdf') expect(dimension).to.matchShape({ @@ -283,7 +282,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension', () = it('exported data conforms import shape', async () => { // given - const termSet = clownface({ dataset }).namedNode('dimension/technologies') + const termSet = $rdf.clownface({ dataset }).namedNode('dimension/technologies') // when const report = await validateTermSet(termSet) diff --git a/apis/shared-dimensions/test/lib/domain/managed-dimensions.test.ts b/apis/shared-dimensions/test/lib/domain/managed-dimensions.test.ts index d1c9c6b62..826c9c71d 100644 --- a/apis/shared-dimensions/test/lib/domain/managed-dimensions.test.ts +++ b/apis/shared-dimensions/test/lib/domain/managed-dimensions.test.ts @@ -1,10 +1,10 @@ import { before, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { mdClients } from '@cube-creator/testing/lib' import { insertTestDimensions } from '@cube-creator/testing/lib/seedData' import { rdf, rdfs, schema } from '@tpluscode/rdf-ns-builders' -import { getSharedDimensions, getSharedTerms } from '../../../lib/domain/shared-dimensions' +import { getSharedDimensions, getSharedTerms } from '../../../lib/domain/shared-dimensions.js' describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimensions @SPARQL', () => { before(async () => { diff --git a/apis/shared-dimensions/test/lib/domain/resource.test.ts b/apis/shared-dimensions/test/lib/domain/resource.test.ts index 4395823c5..a1ae99145 100644 --- a/apis/shared-dimensions/test/lib/domain/resource.test.ts +++ b/apis/shared-dimensions/test/lib/domain/resource.test.ts @@ -3,27 +3,27 @@ import path from 'path' import { before, beforeEach, describe, it } from 'mocha' import { expect } from 'chai' import { ASK } from '@tpluscode/sparql-builder' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { mdClients } from '@cube-creator/testing/lib' import { insertTestDimensions } from '@cube-creator/testing/lib/seedData' -import { parsers } from '@rdfjs/formats-common' -import clownface, { AnyPointer } from 'clownface' -import namespace from '@rdfjs/namespace' +import formats from '@rdfjs/formats' +import type { AnyPointer } from 'clownface' import { schema } from '@tpluscode/rdf-ns-builders' -import { cascadeDelete } from '../../../lib/domain/resource' -import { store } from '../../../lib/store' -import env from '../../../lib/env' +import { cascadeDelete } from '../../../lib/domain/resource.js' +import { store } from '../../../lib/store.js' +import env from '../../../lib/env.js' -const ns = namespace('https://cube-creator.lndo.site/shared-dimensions/') +const __dirname = path.dirname(new URL(import.meta.url).pathname) +const ns = $rdf.namespace('https://cube-creator.lndo.site/shared-dimensions/') describe('@cube-creator/shared-dimensions-api/lib/domain/resource @SPARQL', () => { const client = mdClients.parsingClient let api: AnyPointer before(async () => { - const apiStream = parsers.import('text/turtle', fs.createReadStream(path.join(__dirname, '../../../hydra/index.ttl'))) - api = clownface({ - dataset: await $rdf.dataset().import(apiStream!), + const apiStream = formats.parsers.import('text/turtle', fs.createReadStream(path.join(__dirname, '../../../hydra/index.ttl'))) as any + api = $rdf.clownface({ + dataset: await $rdf.dataset().import(apiStream), }) }) @@ -45,7 +45,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/resource @SPARQL', () = }) // then - await expect(ASK`${term} ?p ?o`.FROM($rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH)).execute(mdClients.parsingClient.query)) + await expect(ASK`${term} ?p ?o`.FROM($rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH)).execute(mdClients.parsingClient)) .to.eventually.be.false }) @@ -63,7 +63,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/resource @SPARQL', () = await new Promise(resolve => setTimeout(resolve, 1000)) // then - await expect(ASK`?term ${schema.inDefinedTermSet} ${termSet}`.FROM($rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH)).execute(mdClients.parsingClient.query)) + await expect(ASK`?term ${schema.inDefinedTermSet} ${termSet}`.FROM($rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH)).execute(mdClients.parsingClient)) .to.eventually.be.false }) }) diff --git a/apis/shared-dimensions/test/lib/domain/shared-dimension/import.test.ts b/apis/shared-dimensions/test/lib/domain/shared-dimension/import.test.ts index a1a930022..ccdf1f0cb 100644 --- a/apis/shared-dimensions/test/lib/domain/shared-dimension/import.test.ts +++ b/apis/shared-dimensions/test/lib/domain/shared-dimension/import.test.ts @@ -1,21 +1,21 @@ import { describe, beforeEach, it } from 'mocha' import { expect } from 'chai' import sinon from 'sinon' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import StreamClient from 'sparql-http-client' -import clownface, { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { Files } from '@cube-creator/express/multipart' import { md, meta } from '@cube-creator/core/namespace' -import { hydra, rdf, schema, sh } from '@tpluscode/rdf-ns-builders/strict' +import { hydra, rdf, schema, sh } from '@tpluscode/rdf-ns-builders' import { namedNode } from '@cube-creator/testing/clownface' import { ASK } from '@tpluscode/sparql-builder' import { nanoid } from 'nanoid' -import ValidationReport from 'rdf-validate-shacl/src/validation-report' -import { importDimension } from '../../../../lib/domain/shared-dimension/import' -import { SharedDimensionsStore } from '../../../../lib/store' -import { testStore } from '../../../support/store' -import { mdClients } from '../../../../../../packages/testing/lib/index' -import env from '../../../../lib/env' +import ValidationReport from 'rdf-validate-shacl/src/validation-report.js' +import { importDimension } from '../../../../lib/domain/shared-dimension/import.js' +import { SharedDimensionsStore } from '../../../../lib/store.js' +import { testStore } from '../../../support/store.js' +import { mdClients } from '../../../../../../packages/testing/lib/index.js' +import env from '../../../../lib/env.js' describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import', () => { describe('importDimension', () => { @@ -25,7 +25,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import let client: StreamClient beforeEach(() => { - resource = clownface({ + resource = $rdf.clownface({ dataset: $rdf.dataset(), }).namedNode('') files = {} @@ -88,7 +88,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import files['dim.ttl'] = () => { const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .namedNode('dim-1') .addOut(rdf.type, md.SharedDimension) .namedNode('dim-2') @@ -134,7 +134,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import files['dim.ttl'] = () => { const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .namedNode('dim') .addOut(rdf.type, md.SharedDimension) @@ -159,7 +159,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import files['dim.ttl'] = () => { const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .namedNode('dim') .addOut(rdf.type, [ md.SharedDimension, @@ -198,7 +198,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import files['dim.ttl'] = () => { const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .namedNode(dimension) .addOut(rdf.type, [ md.SharedDimension, @@ -234,7 +234,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import FILTER ( isBlank(?shape) ) ` .FROM($rdf.namedNode(env.MANAGED_DIMENSIONS_GRAPH)) - .execute(mdClients.streamClient.query) + .execute(mdClients.streamClient) await expect(correctlySaved).to.eventually.be.true }) @@ -244,7 +244,7 @@ describe('@cube-creator/shared-dimensions-api/lib/domain/shared-dimension/import files['dim.ttl'] = () => { const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .namedNode('dim') .addOut(rdf.type, [ md.SharedDimension, diff --git a/apis/shared-dimensions/test/lib/domain/shared-dimension/queries.test.ts b/apis/shared-dimensions/test/lib/domain/shared-dimension/queries.test.ts index 0f9d10a67..2435aea6a 100644 --- a/apis/shared-dimensions/test/lib/domain/shared-dimension/queries.test.ts +++ b/apis/shared-dimensions/test/lib/domain/shared-dimension/queries.test.ts @@ -1,14 +1,14 @@ import { insertTestDimensions } from '@cube-creator/testing/lib/seedData' -import namespace from '@rdfjs/namespace' -import { schema, rdfs, qb, xsd } from '@tpluscode/rdf-ns-builders/strict' +import { schema, rdfs, qb, xsd } from '@tpluscode/rdf-ns-builders' import { expect } from 'chai' import { ASK } from '@tpluscode/sparql-builder' import { mdClients } from '@cube-creator/testing/lib/index' -import { deleteDynamicTerms } from '../../../../lib/domain/shared-dimension/queries' +import $rdf from '@zazuko/env-node' +import { deleteDynamicTerms } from '../../../../lib/domain/shared-dimension/queries.js' const { parsingClient } = mdClients -const ns = namespace('https://ld.admin.ch/cube/dimension/') +const ns = $rdf.namespace('https://ld.admin.ch/cube/dimension/') describe('@cube-creator/shared-dimensions-api/lib/shared-dimension/queries @SPARQL', () => { describe('deleteDynamicTerms', () => { @@ -24,7 +24,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shared-dimension/queries @SPAR // then await expect( - ASK`${ns['technologies/sparql']} ${schema.color} ?c`.execute(parsingClient.query), + ASK`${ns['technologies/sparql']} ${schema.color} ?c`.execute(parsingClient), ).to.eventually.be.false }) @@ -46,7 +46,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shared-dimension/queries @SPAR ${schema.color} ?c ; ${qb.order} 10 ; ${rdfs.comment} "This term has dynamic properties"@en ; - .`.execute(parsingClient.query), + .`.execute(parsingClient), ).to.eventually.be.true }) }) diff --git a/apis/shared-dimensions/test/lib/loader.test.ts b/apis/shared-dimensions/test/lib/loader.test.ts index d14d0de94..312f55635 100644 --- a/apis/shared-dimensions/test/lib/loader.test.ts +++ b/apis/shared-dimensions/test/lib/loader.test.ts @@ -1,13 +1,13 @@ import { describe, it, before } from 'mocha' import { expect } from 'chai' -import type { ResourceLoader } from 'hydra-box' +import type { ResourceLoader } from '@kopflos-cms/core' import { INSERT } from '@tpluscode/sparql-builder' import { mdClients } from '@cube-creator/testing/lib' -import namespace from '@rdfjs/namespace' import { hydra, schema, sh } from '@tpluscode/rdf-ns-builders' -import Loader from '../../lib/loader' +import $rdf from '@zazuko/env-node' +import Loader from '../../lib/loader.js' -const ex = namespace('http://example.com/') +const ex = $rdf.namespace('http://example.com/') const graph = ex('shared-dimensions') const testResources = INSERT.DATA` graph ${graph} { @@ -39,7 +39,7 @@ describe('shared-dimensions/lib/loader @SPARQL', () => { stream: mdClients.streamClient, sparql: mdClients.parsingClient, }) - await testResources.execute(mdClients.parsingClient.query, { + await testResources.execute(mdClients.parsingClient, { base: 'http://example.com/', }) }) diff --git a/apis/shared-dimensions/test/lib/shapes/dynamic-properties.test.ts b/apis/shared-dimensions/test/lib/shapes/dynamic-properties.test.ts index d679af6f1..8b9f6d430 100644 --- a/apis/shared-dimensions/test/lib/shapes/dynamic-properties.test.ts +++ b/apis/shared-dimensions/test/lib/shapes/dynamic-properties.test.ts @@ -1,14 +1,14 @@ import type { NamedNode, Quad } from '@rdfjs/types' import { describe, before, beforeEach, it } from 'mocha' import sinon from 'sinon' -import clownface, { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { namedNode } from '@cube-creator/testing/clownface' import { insertTestDimensions } from '@cube-creator/testing/lib/seedData' -import $rdf from 'rdf-ext' -import { hydra, qb, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders/strict' +import $rdf from '@zazuko/env-node' +import { hydra, qb, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { expect } from 'chai' import { toRdf } from 'rdf-literal' -import { DynamicPropertiesQuery, loadDynamicTermProperties } from '../../../lib/shapes/dynamic-properties' +import { DynamicPropertiesQuery, loadDynamicTermProperties } from '../../../lib/shapes/dynamic-properties.js' describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties @SPARQL', () => { let shape: GraphPointer @@ -25,7 +25,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties @SPA it('sets sh:minCount=1 when dynamic property is required', async () => { // when - const dynamicProperties = clownface({ + const dynamicProperties = $rdf.clownface({ dataset: $rdf.dataset([ ...await loadDynamicTermProperties(targetClass, shape), ]), @@ -38,7 +38,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties @SPA it('sets sh:minCount=0 when dynamic property is not required', async () => { // when - const dynamicProperties = clownface({ + const dynamicProperties = $rdf.clownface({ dataset: $rdf.dataset([ ...await loadDynamicTermProperties(targetClass, shape), ]), @@ -51,7 +51,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties @SPA it('transforms dynamic literal property into SHACL Property', async () => { // when - const dynamicProperties = clownface({ + const dynamicProperties = $rdf.clownface({ dataset: $rdf.dataset([ ...await loadDynamicTermProperties(targetClass, shape), ]), @@ -90,7 +90,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties @SPA it('transforms dynamic dimension property into SHACL Property', async () => { // when - const dynamicProperties = clownface({ + const dynamicProperties = $rdf.clownface({ dataset: $rdf.dataset([ ...await loadDynamicTermProperties(targetClass, shape), ]), @@ -126,7 +126,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties @SPA it('populates sh:languageIn as list from queried values', async () => { // when - const dynamicProperties = clownface({ + const dynamicProperties = $rdf.clownface({ dataset: $rdf.dataset([ ...await loadDynamicTermProperties(targetClass, shape), ]), @@ -151,7 +151,7 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties', () it('adds dynamic properties ordered by label', async () => { // given const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .blankNode() .addOut(sh.path, hydra.last) .addOut(rdfs.label, 'Last property') @@ -161,10 +161,10 @@ describe('@cube-creator/shared-dimensions-api/lib/shapes/dynamic-properties', () .blankNode() .addOut(sh.path, hydra.first) .addOut(rdfs.label, 'First property') - dynamicPropertiesQuery.resolves(dataset.toArray()) + dynamicPropertiesQuery.resolves([...dataset]) // when - const dynamicProperties = clownface({ + const dynamicProperties = $rdf.clownface({ dataset: $rdf.dataset([...await loadDynamicTermProperties('http://target.node', shape, dynamicPropertiesQuery)]), }) diff --git a/apis/shared-dimensions/test/lib/shapes/index.test.ts b/apis/shared-dimensions/test/lib/shapes/index.test.ts index f97dae0e1..2245fc856 100644 --- a/apis/shared-dimensions/test/lib/shapes/index.test.ts +++ b/apis/shared-dimensions/test/lib/shapes/index.test.ts @@ -5,11 +5,11 @@ import sinon from 'sinon' import { blankNode, namedNode } from '@cube-creator/testing/clownface' import { dcterms, hydra, qudt, rdf, schema, sh } from '@tpluscode/rdf-ns-builders' import { md, meta } from '@cube-creator/core/namespace' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { expect } from 'chai' -import { GraphPointer } from 'clownface' -import shapes from '../../../lib/shapes' -import * as ns from '../../../lib/namespace' +import type { GraphPointer } from 'clownface' +import shapes from '../../../lib/shapes/index.js' +import * as ns from '../../../lib/namespace.js' describe('@cube-creator/shared-dimensions-api/lib/shapes', () => { let shape: GraphPointer diff --git a/apis/shared-dimensions/test/store/index.test.ts b/apis/shared-dimensions/test/store/index.test.ts index 28e4dadfa..59f946638 100644 --- a/apis/shared-dimensions/test/store/index.test.ts +++ b/apis/shared-dimensions/test/store/index.test.ts @@ -1,21 +1,20 @@ import { expect } from 'chai' import { insertTestDimensions } from '@cube-creator/testing/lib/seedData' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env-node' import { mdClients } from '@cube-creator/testing/lib/index' import { md } from '@cube-creator/core/namespace' -import namespace from '@rdfjs/namespace' -import { GraphPointer } from 'clownface' -import { hydra, qb, rdf, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders/strict' +import type { GraphPointer } from 'clownface' +import { hydra, qb, rdf, rdfs, schema, sh, xsd } from '@tpluscode/rdf-ns-builders' import { Initializer } from '@tpluscode/rdfine/RdfResource' import { NodeShape } from '@rdfine/shacl' import { ex } from '@cube-creator/testing/lib/namespace' import { ASK, INSERT } from '@tpluscode/sparql-builder' import { namedNode } from '@cube-creator/testing/clownface' -import Store from '../../lib/store/index' -import { SharedDimensionsStore } from '../../lib/store' +import Store from '../../lib/store/index.js' +import { SharedDimensionsStore } from '../../lib/store.js' const graph = $rdf.namedNode('https://lindas.admin.ch/cube/dimension') -const ns = namespace('https://ld.admin.ch/cube/dimension/') +const ns = $rdf.namespace('https://ld.admin.ch/cube/dimension/') const { parsingClient } = mdClients describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { @@ -41,7 +40,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { GRAPH ${ex.anotherGraph} { ${id} a ${md.SharedDimension} } - `.execute(parsingClient.query) + `.execute(parsingClient) // when const exists = store.exists(id, md.SharedDimension) @@ -77,7 +76,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { GRAPH ${ex.otherGraph} { ${ns['technologies/sparql']} a ${ex.Something} } - `.execute(parsingClient.query) + `.execute(parsingClient) }) context('existing dimension', () => { @@ -238,7 +237,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { GRAPH ${ex.otherGraph} { ${ns['technologies/sparql']} a ${ex.Something} } - `.execute(parsingClient.query) + `.execute(parsingClient) }) it('does not delete data from other graphs', async () => { @@ -249,7 +248,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { await store.delete(term) // then - await expect(ASK`${term} ?p ?o`.FROM(ex.otherGraph).execute(parsingClient.query)).to.eventually.be.true + await expect(ASK`${term} ?p ?o`.FROM(ex.otherGraph).execute(parsingClient)).to.eventually.be.true }) it('deletes dimension term with dynamic properties', async () => { @@ -260,7 +259,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { await store.delete(term) // then - await expect(ASK`${term} ?p ?o`.FROM(graph).execute(parsingClient.query)).to.eventually.be.false + await expect(ASK`${term} ?p ?o`.FROM(graph).execute(parsingClient)).to.eventually.be.false }) it('deletes dimension deep', async () => { @@ -271,7 +270,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { await store.delete(term) // then - await expect(ASK`${term} (<>|!<>)+ ?o`.execute(parsingClient.query)).to.eventually.be.false + await expect(ASK`${term} (<>|!<>)+ ?o`.execute(parsingClient)).to.eventually.be.false }) }) @@ -297,7 +296,7 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { ${schema.name} "OWL"@de ; ${schema.inDefinedTermSet} ${ns.technologies} ; . - `.execute(parsingClient.query)).to.eventually.be.true + `.execute(parsingClient)).to.eventually.be.true }) it('updates existing resource', async () => { @@ -319,10 +318,10 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { ${schema.name} "RDF"@de ; ${schema.inDefinedTermSet} ${ns.technologies} ; . - `.execute(parsingClient.query)).to.eventually.be.true + `.execute(parsingClient)).to.eventually.be.true await expect(ASK` ${ns['technologies/rdf']} ${schema.validThrough} ?validThrough . - `.execute(parsingClient.query)).to.eventually.be.false + `.execute(parsingClient)).to.eventually.be.false }) it('updates dynamic properties', async () => { @@ -345,13 +344,13 @@ describe('@cube-creator/shared-dimensions-api/lib/store/index @SPARQL', () => { ${schema.color} ${ex('dimensions/colors/red')} ; ${qb.order} 10 ; ${rdfs.comment} "This term has dynamic properties" . - `.execute(parsingClient.query)).to.eventually.be.false + `.execute(parsingClient)).to.eventually.be.false await expect(ASK` ${ns['technologies/sparql']} ${schema.color} ${ex('dimensions/colors/blue')} ; ${qb.order} 20 ; ${rdfs.comment} "Updated" . - `.execute(parsingClient.query)).to.eventually.be.true + `.execute(parsingClient)).to.eventually.be.true }) }) diff --git a/apis/shared-dimensions/test/support/store.ts b/apis/shared-dimensions/test/support/store.ts index 37867835c..8890063b6 100644 --- a/apis/shared-dimensions/test/support/store.ts +++ b/apis/shared-dimensions/test/support/store.ts @@ -1,11 +1,10 @@ -import TermMap from '@rdfjs/term-map' import { rdf } from '@tpluscode/rdf-ns-builders' import sinon from 'sinon' -import $rdf from 'rdf-ext' -import { SharedDimensionsStore } from '../../lib/store' +import $rdf from '@zazuko/env-node' +import { SharedDimensionsStore } from '../../lib/store.js' export function testStore(): SharedDimensionsStore { - const resources = new TermMap() + const resources = $rdf.termMap() const store: SharedDimensionsStore = { graph: $rdf.namedNode('https://lindas.admin.ch/cube/dimension'), diff --git a/app.Dockerfile b/app.Dockerfile index a01bb7a5b..29f583a02 100644 --- a/app.Dockerfile +++ b/app.Dockerfile @@ -34,8 +34,8 @@ ARG COMMIT ENV PUBLIC_PATH=$PUBLIC_PATH ENV NODE_ENV=production -ENV VUE_APP_COMMIT=$COMMIT -ENV VUE_APP_SENTRY_RELEASE=cube-creator-app@$COMMIT +ENV VITE_COMMIT=$COMMIT +ENV VITE_SENTRY_RELEASE=cube-creator-app@$COMMIT RUN yarn build FROM nginx:1.23.3-alpine diff --git a/cli/index.ts b/cli/index.ts index 5cae66606..83c5a1b9f 100644 --- a/cli/index.ts +++ b/cli/index.ts @@ -2,9 +2,9 @@ import program from 'commander' import * as Sentry from '@sentry/node' import '@sentry/tracing' import { SpanStatusCode } from '@opentelemetry/api' -import { capture } from './lib/telemetry' -import './lib/variables' -import { opentelemetry } from './lib/otel' +import { capture } from './lib/telemetry.js' +import './lib/variables.js' +import { opentelemetry } from './lib/otel/index.js' function parseVariables(str: string, all: Map) { return str diff --git a/cli/lib/auth.ts b/cli/lib/auth.ts index 6eb8885b1..f6363f6d2 100644 --- a/cli/lib/auth.ts +++ b/cli/lib/auth.ts @@ -2,8 +2,8 @@ import querystring from 'querystring' import fetch from 'node-fetch' import { Logger } from 'winston' -import { HydraClient } from 'alcaeus/alcaeus' import once from 'once' +import $rdf from '@cube-creator/env' export type AuthConfig = { issuer: string @@ -93,10 +93,10 @@ function defaultAuthConfig(log: Logger): AuthConfig { throw new Error('Incomplete OIDC config') } -export function setupAuthentication(config: Partial, log: Logger, Hydra: HydraClient) { +export function setupAuthentication(config: Partial, log: Logger) { let token: LiveToken | undefined - Hydra.defaultHeaders = async () => { + $rdf.hydra.defaultHeaders = async () => { if (!token || !isValid(token)) { token = await getToken({ ...defaultAuthConfig(log), ...config }) } diff --git a/cli/lib/bufferDebug.ts b/cli/lib/bufferDebug.ts index 7c6ba751a..65f041e93 100644 --- a/cli/lib/bufferDebug.ts +++ b/cli/lib/bufferDebug.ts @@ -1,6 +1,7 @@ import stream from 'readable-stream' import type Pipeline from 'barnard59-core/lib/Pipeline' import { metrics } from '@opentelemetry/api' +import { writable as isWritable } from 'is-stream' const { finished } = stream as any @@ -23,7 +24,7 @@ function bufferInfo(pipeline: Pipeline) { } return steps.reduce>((data, step, index) => { - if ('_writableState' in step.stream!) { + if (isWritable(step.stream)) { const { key, value } = bufferStatePair({ index, mode: 'write', diff --git a/cli/lib/commands/import.ts b/cli/lib/commands/import.ts index a7f43ba71..10bf95bd3 100644 --- a/cli/lib/commands/import.ts +++ b/cli/lib/commands/import.ts @@ -1,8 +1,8 @@ import { ImportJob } from '@cube-creator/model/ImportJob' -import * as Models from '@cube-creator/model' import { HydraClient } from 'alcaeus/alcaeus' -import { logger } from '../log' -import { create } from './runner' +import $rdf from '@cube-creator/env' +import { logger } from '../log.js' +import { create } from './runner.js' async function getJob(jobUri: string, Hydra: HydraClient): Promise { const jobResource = await Hydra.loadResource(jobUri) @@ -21,10 +21,7 @@ export default create({ async prepare(options, variable) { const { job: jobUri } = options - const Hydra = variable.get('apiClient') - Hydra.resources.factory.addMixin(...Object.values(Models)) - - const { dataset, dimensionMetadata, sourceCube, sourceGraph, sourceEndpoint, cubeGraph: { value: cubeGraph } } = await getJob(jobUri, Hydra) + const { dataset, dimensionMetadata, sourceCube, sourceGraph, sourceEndpoint, cubeGraph: { value: cubeGraph } } = await getJob(jobUri, $rdf.hydra) logger.info('Importing cube %O', { sourceCube, sourceGraph, sourceEndpoint, cubeGraph, dimensionMetadata: dimensionMetadata.id, dataset, diff --git a/cli/lib/commands/index.ts b/cli/lib/commands/index.ts index 42e57ebd5..1f9cd61e8 100644 --- a/cli/lib/commands/index.ts +++ b/cli/lib/commands/index.ts @@ -1,5 +1,5 @@ -export { default as transform } from './transform' -export { default as publish } from './publish' -export { default as unlist } from './unlist' -export { default as importCube } from './import' -export { timeoutJobs } from './timeoutJobs' +export { default as transform } from './transform.js' +export { default as publish } from './publish.js' +export { default as unlist } from './unlist.js' +export { default as importCube } from './import.js' +export { timeoutJobs } from './timeoutJobs.js' diff --git a/cli/lib/commands/publish.ts b/cli/lib/commands/publish.ts index e8d4a8292..0cd944897 100644 --- a/cli/lib/commands/publish.ts +++ b/cli/lib/commands/publish.ts @@ -2,13 +2,15 @@ import path from 'path' import tempy from 'tempy' import { HydraClient } from 'alcaeus/alcaeus' import { CsvProject, Dataset, ImportProject, PublishJob } from '@cube-creator/model' -import '../variables' import { isCsvProject } from '@cube-creator/model/Project' -import $rdf from 'rdf-ext' -import { logger } from '../log' -import { uploadCube } from '../publish/upload' +import $rdf from '@cube-creator/env' +import { logger } from '../log.js' +import { uploadCube } from '../publish/upload.js' import { version } from '../../package.json' -import * as runner from './runner' +import * as runner from './runner.js' +import '../variables.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) interface PublishRunOptions extends runner.RunOptions { to: 'filesystem' | 'graph-store' @@ -27,9 +29,8 @@ export default runner.create({ }, async prepare(options, variable) { const { publishStore, job: jobUri } = options - const Hydra = variable.get('apiClient') - const { job, namespace, cubeIdentifier, cubeCreatorVersion } = await getJob(jobUri, Hydra) + const { job, namespace, cubeIdentifier, cubeCreatorVersion } = await getJob(jobUri, $rdf.hydra) if (options.to === 'filesystem' && !variable.has('targetFile')) { variable.set('targetFile', tempy.file()) diff --git a/cli/lib/commands/runner.ts b/cli/lib/commands/runner.ts index d17fac5e5..96e9d8049 100644 --- a/cli/lib/commands/runner.ts +++ b/cli/lib/commands/runner.ts @@ -1,21 +1,20 @@ import path from 'path' -import clownface from 'clownface' -import $rdf from 'rdf-ext' -import fromFile from 'rdf-utils-fs/fromFile.js' +import $rdf from '@cube-creator/env' +import { fromFile } from '@zazuko/rdf-utils-fs' import { schema, xsd } from '@tpluscode/rdf-ns-builders' import type { VariableMap } from 'barnard59-core' -import namespace from '@rdfjs/namespace' -import * as Alcaeus from 'alcaeus/node' +import b59Env from 'barnard59-env' import { cc } from '@cube-creator/core/namespace' -import * as Models from '@cube-creator/model' -import { setupAuthentication } from '../auth' -import { updateJobStatus } from '../job' -import { logger } from '../log' -import { importDynamic } from '../module' -import bufferDebug from '../bufferDebug' +import Environment from '@zazuko/env/Environment.js' +import { setupAuthentication } from '../auth.js' +import { updateJobStatus } from '../job.js' +import { logger } from '../log.js' +import bufferDebug from '../bufferDebug.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) const ns = { - pipeline: namespace('urn:pipeline:cube-creator'), + pipeline: $rdf.namespace('urn:pipeline:cube-creator'), } const pipelines = { @@ -54,7 +53,7 @@ interface Create { } async function fileToDataset(filename: string) { - return $rdf.dataset().import(fromFile(filename)) + return $rdf.dataset().import(fromFile($rdf, filename)) } export function create({ pipelineSources, prepare, after }: Create) { @@ -68,16 +67,14 @@ export function create({ pipelineSources, prepare, params: command.authParam, } - const apiClient = Alcaeus.create({ datasetFactory: $rdf.dataset }) - apiClient.resources.factory.addMixin(...Object.values(Models)) - apiClient.cacheStrategy.shouldLoad = previous => { + $rdf.hydra.cacheStrategy.shouldLoad = previous => { if (previous.representation?.root?.types.has(cc.CSVSource)) { return true } return false } - setupAuthentication(authConfig, logger, apiClient) + setupAuthentication(authConfig, logger) const pipelinePath = (filename: string) => path.join(basePath, `./pipelines/${filename}.ttl`) const dataset = await pipelineSources(command).reduce((previous, source) => { @@ -88,7 +85,6 @@ export function create({ pipelineSources, prepare, }, Promise.resolve($rdf.dataset())) logger.info('Running job %s', jobUri) - variables.set('apiClient', apiClient) variables.set('jobUri', jobUri) variables.set('executionUrl', executionUrl) variables.set('graph-query-endpoint', process.env.GRAPH_QUERY_ENDPOINT) @@ -102,12 +98,13 @@ export function create({ pipelineSources, prepare, await prepare?.(command, variables) - const { default: Runner } = await importDynamic('barnard59/runner.js') - const env = await importDynamic('barnard59-env') - const run = await Runner(clownface({ + const { default: Runner } = await import('barnard59/runner.js') + + const env = new Environment($rdf, { parent: b59Env }) + const run = await Runner($rdf.clownface({ dataset, term: pipelines.Entrypoint, - }), env.default, { + }), env, { basePath: path.resolve(basePath, 'pipelines'), outputStream: process.stdout, variables, @@ -122,7 +119,6 @@ export function create({ pipelineSources, prepare, modified: new Date(), executionUrl: variables.get('executionUrl'), status: schema.ActiveActionStatus, - apiClient, }) } @@ -135,7 +131,6 @@ export function create({ pipelineSources, prepare, lastTransformed: run.pipeline.context.variables.get('lastTransformed'), status: schema.FailedActionStatus, error, - apiClient, }) } @@ -153,7 +148,6 @@ export function create({ pipelineSources, prepare, jobUri: run.pipeline.context.variables.get('jobUri'), executionUrl: run.pipeline.context.variables.get('executionUrl'), status: schema.CompletedActionStatus, - apiClient, messages: run.pipeline.context.variables.get('messages'), }) } diff --git a/cli/lib/commands/timeoutJobs.ts b/cli/lib/commands/timeoutJobs.ts index c3a43cda2..535f1f633 100644 --- a/cli/lib/commands/timeoutJobs.ts +++ b/cli/lib/commands/timeoutJobs.ts @@ -1,16 +1,15 @@ import { SELECT } from '@tpluscode/sparql-builder' -import ParsingClient from 'sparql-http-client/ParsingClient' -import { dcterms, schema } from '@tpluscode/rdf-ns-builders/strict' -import * as Alcaeus from 'alcaeus/node' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import { dcterms, schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' import * as Models from '@cube-creator/model' import { parse, toSeconds } from 'iso8601-duration' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { toRdf } from 'rdf-literal' import { IN } from '@tpluscode/sparql-builder/expressions' -import { updateJobStatus } from '../job' -import { setupAuthentication } from '../auth' -import { logger } from '../log' +import { updateJobStatus } from '../job.js' +import { setupAuthentication } from '../auth.js' +import { logger } from '../log.js' interface TimeoutJobs { duration: string @@ -47,16 +46,15 @@ export async function timeoutJobs({ ) } ` - .execute(client.query) + .execute(client) - const apiClient = Alcaeus.create({ datasetFactory: $rdf.dataset }) + const apiClient = $rdf.hydra apiClient.resources.factory.addMixin(...Object.values(Models)) - setupAuthentication({}, logger, apiClient) + setupAuthentication({}, logger) for (const { job } of overtimeJobs) { await updateJob({ jobUri: job.value, - apiClient, modified: new Date(now()), status: cc.CanceledJobStatus, executionUrl: undefined, diff --git a/cli/lib/commands/transform.ts b/cli/lib/commands/transform.ts index b1b3b59ec..7d1754b6a 100644 --- a/cli/lib/commands/transform.ts +++ b/cli/lib/commands/transform.ts @@ -1,6 +1,4 @@ -import * as Csvw from '@rdfine/csvw' -import { ThingMixin } from '@rdfine/schema' -import * as runner from './runner' +import * as runner from './runner.js' interface TransformRunOptions extends runner.RunOptions { to: 'stdout' | 'filesystem' | 'graph-store' @@ -13,10 +11,5 @@ export default runner.create({ }, prepare(_, variable) { variable.set('lastTransformed', {}) - - const Hydra = variable.get('apiClient') - - Hydra.resources.factory.addMixin(...Object.values(Csvw)) - Hydra.resources.factory.addMixin(ThingMixin) }, }) diff --git a/cli/lib/commands/unlist.ts b/cli/lib/commands/unlist.ts index d31483d85..cc20c4f69 100644 --- a/cli/lib/commands/unlist.ts +++ b/cli/lib/commands/unlist.ts @@ -1,9 +1,10 @@ import { HydraClient } from 'alcaeus/alcaeus' import { CsvProject, ImportProject, UnlistJob } from '@cube-creator/model' -import '../variables' +import $rdf from '@cube-creator/env' import { isCsvProject } from '@cube-creator/model/Project' -import { logger } from '../log' -import * as runner from './runner' +import { logger } from '../log.js' +import * as runner from './runner.js' +import '../variables.js' interface UnlistRunOptions extends runner.RunOptions { publishStore?: { @@ -19,9 +20,7 @@ export default runner.create({ }, async prepare(options, variable) { const { publishStore, job: jobUri } = options - const Hydra = variable.get('apiClient') - - const { job, namespace, cubeIdentifier } = await getJob(jobUri, Hydra) + const { job, namespace, cubeIdentifier } = await getJob(jobUri, $rdf.hydra) variable.set('unlist-job', job) variable.set('publish-graph-store-endpoint', publishStore?.endpoint || process.env.PUBLISH_GRAPH_STORE_ENDPOINT) diff --git a/cli/lib/counters.ts b/cli/lib/counters.ts index 8dfc48e21..6dd042cf0 100644 --- a/cli/lib/counters.ts +++ b/cli/lib/counters.ts @@ -2,7 +2,7 @@ import type { Quad } from '@rdfjs/types' import type { Context } from 'barnard59-core' import { PassThrough } from 'readable-stream' import through2 from 'through2' -import { csvw } from '@tpluscode/rdf-ns-builders/strict' +import { csvw } from '@tpluscode/rdf-ns-builders' import { metrics } from '@opentelemetry/api' const meter = metrics.getMeter('@cube-creator/cli') diff --git a/cli/lib/csv.ts b/cli/lib/csv.ts index 45f07c420..974e85b28 100644 --- a/cli/lib/csv.ts +++ b/cli/lib/csv.ts @@ -1,6 +1,6 @@ +import { PassThrough } from 'node:stream' import type { Stream } from '@rdfjs/types' -import { PassThrough } from 'readable-stream' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { readable } from 'duplex-to' import { CsvSource } from '@cube-creator/model' import fetch from 'node-fetch' @@ -8,12 +8,11 @@ import type { Context } from 'barnard59-core' export function openFromCsvw(this: Context) { const csvStream = new PassThrough() - const Hydra = this.variables.get('apiClient') const csvw = this.variables.get('transformed').csvwResource const lastTransformed = this.variables.get('lastTransformed') Promise.resolve().then(async () => { - const { response, representation } = await Hydra.loadResource(csvw.url!) + const { response, representation } = await $rdf.hydra.loadResource(csvw.url!) if (!representation?.root) { csvStream.emit('error', new Error('Failed to load Source. Response was: ' + response?.xhr.statusText)) return @@ -46,6 +45,6 @@ export function getCsvwTriples(this: Context): Stream { return csvw.pointer.dataset .match(null, null, null, csvw.id) - .map(quad => $rdf.triple(quad.subject, quad.predicate, quad.object)) + .map(quad => $rdf.quad(quad.subject, quad.predicate, quad.object)) .toStream() } diff --git a/cli/lib/cube.ts b/cli/lib/cube.ts index 14d2ca97b..0185f83a2 100644 --- a/cli/lib/cube.ts +++ b/cli/lib/cube.ts @@ -1,18 +1,17 @@ import type { DataFactory, DatasetCore, Quad, Term } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc } from '@cube-creator/core/namespace' -import clownface, { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import type { Context } from 'barnard59-core' import { obj } from 'through2' import { CONSTRUCT, sparql } from '@tpluscode/sparql-builder' -import { schema, sh } from '@tpluscode/rdf-ns-builders/strict' +import { schema, sh } from '@tpluscode/rdf-ns-builders' import { Dataset, PublishJob } from '@cube-creator/model' -import StreamClient from 'sparql-http-client/StreamClient' +import StreamClient from 'sparql-http-client/StreamClient.js' import { Draft } from '@cube-creator/model/Cube' -import TermSet from '@rdfjs/term-set' import { toRdf } from 'rdf-literal' -import { loadDataset } from './metadata' -import { tracer } from './otel/tracer' +import { loadDataset } from './metadata.js' +import { tracer } from './otel/tracer.js' export const getObservationSetId = ({ dataset }: { dataset: DatasetCore }) => { const cubeId = [...dataset.match(null, cc.cube)][0].object.value @@ -67,14 +66,14 @@ export function expirePreviousVersions(this: Pick, jobUri?: string) { +export async function injectRevision(this: Pick, jobUri?: string) { let cubeNamespace = this.variables.get('namespace') const revision = this.variables.get('revision') const metadata = this.variables.get('metadata') - const versionedDimensions = new TermSet() + const versionedDimensions = $rdf.termSet() const attributes = { cubeNamespace, @@ -86,7 +85,7 @@ export async function injectRevision(this: Pick try { let dataset: Dataset | undefined if (jobUri) { - ({ dataset } = await loadDataset(jobUri, this.variables.get('apiClient'))) + ({ dataset } = await loadDataset(jobUri, this.env)) } this.logger.info(`Cube revision ${revision}`) @@ -133,7 +132,7 @@ export async function injectRevision(this: Pick return callback() }, function (done) { - const metadataPointer = clownface({ + const metadataPointer = $rdf.clownface({ dataset: metadata, }) diff --git a/cli/lib/import/cube.ts b/cli/lib/import/cube.ts index 8da6c2d26..3ed62f1c1 100644 --- a/cli/lib/import/cube.ts +++ b/cli/lib/import/cube.ts @@ -68,5 +68,5 @@ export default async function query(this: Context, { endpoint, cube, graph }: Cu query = query.FROM(graph) } - return query.execute(client.query) + return query.execute(client) } diff --git a/cli/lib/import/cubeMetadata.ts b/cli/lib/import/cubeMetadata.ts index 323975b60..c1c94228a 100644 --- a/cli/lib/import/cubeMetadata.ts +++ b/cli/lib/import/cubeMetadata.ts @@ -1,18 +1,18 @@ import type { DatasetCore, NamedNode, Quad, Term } from '@rdfjs/types' import { cc } from '@cube-creator/core/namespace' -import DatasetExt from 'rdf-ext/lib/Dataset' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' import { dcterms, schema } from '@tpluscode/rdf-ns-builders' import type { Context } from 'barnard59-core' import StreamClient from 'sparql-http-client' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { sparql, CONSTRUCT } from '@tpluscode/sparql-builder' import * as ns from '@cube-creator/core/namespace' -import clownface from 'clownface' import { create } from '@cube-creator/model/Dataset' import * as Cube from '@cube-creator/model/Cube' import through2 from 'through2' import { readable } from 'duplex-to' import merge from 'merge2' +import type { Environment } from 'barnard59-env' interface CubeMetadataQuery { endpoint: NamedNode @@ -85,10 +85,10 @@ function preserveExistingValues(dataset: DatasetCore) { }) } -function prepareNewCubeResource(cubeResource: Cube.Cube, datasetResource: NamedNode) { - const pointer = clownface({ dataset: $rdf.dataset() }).namedNode(datasetResource) - create(pointer, { - hasPart: [Cube.create(pointer.node(cubeResource.id), { +function prepareNewCubeResource(env: Environment, cubeResource: Cube.Cube, datasetResource: NamedNode) { + const pointer = $rdf.clownface().namedNode(datasetResource) + create(env, pointer, { + hasPart: [Cube.create(env, pointer.node(cubeResource.id), { creator: cubeResource.creator, })], }) @@ -105,8 +105,7 @@ export default async function query(this: Context, { cube, graph, endpoint, ...r }) const datasetResource = $rdf.namedNode(rest.datasetResource) - const Hydra = this.variables.get('apiClient') - const { representation, response } = await Hydra.loadResource(datasetResource) + const { representation, response } = await this.env.hydra.loadResource(datasetResource) const cubeResource = representation?.get(cube.value) if (!cubeResource) { throw new Error(`Failed to load cube dataset. Response was: '${response?.xhr.statusText}'`) @@ -114,9 +113,9 @@ export default async function query(this: Context, { cube, graph, endpoint, ...r const cubeMetaQuery = createQuery(cube, datasetResource, graph) - const metaCollection = prepareNewCubeResource(cubeResource, datasetResource) + const metaCollection = prepareNewCubeResource(this.env, cubeResource, datasetResource) - const newMetadata = (await cubeMetaQuery.execute(client.query)) + const newMetadata = cubeMetaQuery.execute(client) return readable(merge( newMetadata.pipe(preserveExistingValues(metaCollection)), diff --git a/cli/lib/import/dimensions.ts b/cli/lib/import/dimensions.ts index b04a6c089..5cdf8086e 100644 --- a/cli/lib/import/dimensions.ts +++ b/cli/lib/import/dimensions.ts @@ -1,13 +1,13 @@ import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' import type { Context } from 'barnard59-core' -import ParsingClient from 'sparql-http-client/ParsingClient' -import clownface, { AnyContext, AnyPointer, GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import type { AnyContext, AnyPointer, GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' import { hydra, rdf, schema, sh } from '@tpluscode/rdf-ns-builders' import * as ns from '@cube-creator/core/namespace' import { CONSTRUCT, SELECT } from '@tpluscode/sparql-builder' -import StreamClient from 'sparql-http-client/StreamClient' -import DatasetExt from 'rdf-ext/lib/Dataset' +import StreamClient from 'sparql-http-client/StreamClient.js' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' interface DimensionQuery { endpoint: NamedNode @@ -109,23 +109,22 @@ export default async function query(this: Context, { endpoint, cube, graph, meta endpointUrl: endpoint.value, }) - const Hydra = this.variables.get('apiClient') - const { response, representation } = await Hydra.loadResource(metadataResource) + const { response, representation } = await this.env.hydra.loadResource(metadataResource) if (!representation?.root) { throw new Error(`Failed to load existing dimension metadata. Response was: '${response?.xhr.statusText}'`) } const existingCollection = representation.root.pointer.any() - const metadataCollection = clownface({ dataset: $rdf.dataset() }) + const metadataCollection = $rdf.clownface() .namedNode(metadataResource) .addOut(rdf.type, [ns.cc.DimensionMetadataCollection, hydra.Resource]) const cubeQuery = createCubeQuery(cube, graph) const metadataQuery = createMetadataQuery(cube, graph) - const importedDimensionMetadata = await $rdf.dataset().import(await metadataQuery.execute(streamClient.query)) + const importedDimensionMetadata = await $rdf.dataset().import(await metadataQuery.execute(streamClient)) - const dimensions = await cubeQuery.execute(client.query) + const dimensions = await cubeQuery.execute(client) for (let i = 1; i <= dimensions.length; i++) { const { dimension } = dimensions[i - 1] diff --git a/cli/lib/job.ts b/cli/lib/job.ts index 414cc3929..b8cdebc86 100644 --- a/cli/lib/job.ts +++ b/cli/lib/job.ts @@ -1,20 +1,17 @@ import type { Term } from '@rdfjs/types' import stream from 'readable-stream' -import { HydraClient } from 'alcaeus/alcaeus' import { Job, Table, TransformJob } from '@cube-creator/model' import type * as Schema from '@rdfine/schema' -import { schema } from '@tpluscode/rdf-ns-builders/strict' +import { schema } from '@tpluscode/rdf-ns-builders' import type { Logger } from 'winston' import type { Context, VariableMap } from 'barnard59-core' -import $rdf from 'rdf-ext' +import $rdf from '@cube-creator/env' import { cc } from '@cube-creator/core/namespace' -import TermMap from '@rdfjs/term-map' -import { GraphPointer } from 'clownface' -import { ValidationError } from 'barnard59-shacl/lib/errors' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import { ValidationError } from 'barnard59-shacl/lib/errors.js' import { createPlaygroundUrl } from '@zazuko/shacl-playground' import { shorten } from '@zazuko/s' -import { logger } from './log' +import { logger } from './log.js' interface Params { jobUri: string @@ -25,9 +22,7 @@ interface Params { async function loadTransformJob(jobUri: string, log: Logger, variables: Params['variables']): Promise { log.debug(`Loading job ${jobUri}`) - const Hydra = variables.get('apiClient') - - const { representation, response } = await Hydra.loadResource(jobUri) + const { representation, response } = await $rdf.hydra.loadResource(jobUri) if (!representation || !representation.root) { throw new Error(`Did not find representation of job ${jobUri}. Server responded ${response?.xhr.status}`) } @@ -48,14 +43,13 @@ interface JobStatusUpdate { status: Schema.ActionStatusType | typeof cc.CanceledJobStatus modified: Date error?: Error | string - apiClient: HydraClient lastTransformed?: { csv?: string; row?: number } messages?: string[] } -export async function updateJobStatus({ jobUri, executionUrl, lastTransformed, status, error, modified, apiClient, messages = [] }: JobStatusUpdate) { +export async function updateJobStatus({ jobUri, executionUrl, lastTransformed, status, error, modified, messages = [] }: JobStatusUpdate) { try { - const { representation } = await apiClient.loadResource(jobUri) + const { representation } = await $rdf.hydra.loadResource(jobUri) const job = representation?.root if (!job) { logger.error('Could not load job to update') @@ -125,7 +119,7 @@ function isValidationError(error: string | Error): error is ValidationError { } function mergeDatasetIn(target: GraphPointer, toMerge: GraphPointer): GraphPointer { - const blanks = new TermMap() + const blanks = $rdf.termMap() const rewriteBlank = (term: Term): any => { if (term.termType === 'BlankNode') { diff --git a/cli/lib/loadCube.ts b/cli/lib/loadCube.ts index f2c953f7f..db7117693 100644 --- a/cli/lib/loadCube.ts +++ b/cli/lib/loadCube.ts @@ -1,13 +1,13 @@ import { Stream } from 'stream' import { spawnSync } from 'child_process' -import type { Context } from 'barnard59-core' import { CONSTRUCT, sparql } from '@tpluscode/sparql-builder' import { csvw } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' import tempy from 'tempy' -import fromFile from 'rdf-utils-fs/fromFile' -import { loadProject } from './project' -import { tracer } from './otel/tracer' +import { fromFile } from '@zazuko/rdf-utils-fs' +import type { Context } from 'barnard59-core' +import { loadProject } from './project.js' +import { tracer } from './otel/tracer.js' interface Params { jobUri: string @@ -63,7 +63,7 @@ export async function loadCube(this: Context, { jobUri, endpoint, user, password } this.logger.info('Reading cube data from temp file') - return fromFile(tempFile) as any + return fromFile(this.env, tempFile) as any }, { extension: 'ttl', }) diff --git a/cli/lib/log.ts b/cli/lib/log.ts index b7d839013..eaf5b1ab7 100644 --- a/cli/lib/log.ts +++ b/cli/lib/log.ts @@ -1,6 +1,5 @@ import winston from 'winston' -import { OnViolation } from 'barnard59-shacl/validate' -import { fromPointer } from '@rdfine/shacl/lib/ValidationReport' +import { OnViolation } from 'barnard59-shacl/validate.js' export const logger = winston.createLogger({ format: winston.format.combine( @@ -12,8 +11,8 @@ export const logger = winston.createLogger({ ], }) -export const prettyPrintReport: OnViolation = ({ context, report }) => { - const jsonld = fromPointer(report.pointer).toJSON() +export const prettyPrintReport: OnViolation = function ({ context, report }) { + const jsonld = context.env.rdfine.sh.ValidationReport(report.pointer).toJSON() context.logger.error(JSON.stringify(jsonld, null, 2)) return false diff --git a/cli/lib/metadata.ts b/cli/lib/metadata.ts index a1d7cfb14..97267d426 100644 --- a/cli/lib/metadata.ts +++ b/cli/lib/metadata.ts @@ -1,33 +1,31 @@ +import { Readable } from 'node:stream' import type { Literal, NamedNode, Quad } from '@rdfjs/types' import { obj } from 'through2' -import $rdf from 'rdf-ext' import { dcat, dcterms, rdf, schema, sh, _void, foaf, xsd } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' import { Dataset, Project, PublishJob } from '@cube-creator/model' -import { HydraClient } from 'alcaeus/alcaeus' import type { Context } from 'barnard59-core' import { Published } from '@cube-creator/model/Cube' import { CONSTRUCT, sparql } from '@tpluscode/sparql-builder' -import StreamClient from 'sparql-http-client/StreamClient' -import { Readable } from 'readable-stream' +import StreamClient from 'sparql-http-client/StreamClient.js' import { fromRdf, toRdf } from 'rdf-literal' -import { tracer } from './otel/tracer' -import { loadProject } from './project' +import { tracer } from './otel/tracer.js' +import { loadProject } from './project.js' -export async function loadDataset(jobUri: string, Hydra: HydraClient) { - const jobResource = await Hydra.loadResource(jobUri) +export async function loadDataset(jobUri: string, $rdf: Context['env']) { + const jobResource = await $rdf.hydra.loadResource(jobUri) const job = jobResource.representation?.root if (!job) { throw new Error(`Did not find representation of job ${jobUri}. Server responded ${jobResource.response?.xhr.status}`) } - const projectResource = await Hydra.loadResource(job.project) + const projectResource = await $rdf.hydra.loadResource(job.project) const project = projectResource.representation?.root if (!project) { throw new Error(`Did not find representation of project ${job.project}. Server responded ${projectResource.response?.xhr.status}`) } - const datasetResource = await Hydra.loadResource(project.dataset.id as any, { + const datasetResource = await $rdf.hydra.loadResource(project.dataset.id as any, { Prefer: 'include-in-lists', }) const dataset = datasetResource.representation?.root @@ -166,8 +164,7 @@ function annotateSharedDimensions({ project }: QueryParams) { } export async function loadCubeMetadata(this: Context, { jobUri, endpoint, user, password }: Params) { - const Hydra = this.variables.get('apiClient') - const baseCube = $rdf.namedNode(this.variables.get('namespace')) + const baseCube = this.env.namedNode(this.variables.get('namespace')) const revision = toRdf(this.variables.get('revision')) const cubeIdentifier = this.variables.get('cubeIdentifier') const timestamp = this.variables.get('timestamp') @@ -181,7 +178,7 @@ export async function loadCubeMetadata(this: Context, { jobUri, endpoint, user, } const { maintainer } = await tracer.startActiveSpan('injectMetadata#setup', { attributes }, async span => { try { - return await loadDataset(jobUri, Hydra) + return await loadDataset(jobUri, this.env) } finally { span.end() } @@ -196,14 +193,14 @@ export async function loadCubeMetadata(this: Context, { jobUri, endpoint, user, timestamp, } - const stream = await CONSTRUCT` + const stream = CONSTRUCT` ?s1 ?p ?o1 . ?cubeVersion a ${cube.Cube} ; ${schema.version} ${revision} ; ${schema.dateModified} ${timestamp} ; ${dcterms.modified} ${timestamp} ; - ${dcterms.identifier} ${$rdf.literal(cubeIdentifier)} ; + ${dcterms.identifier} ${this.env.literal(cubeIdentifier)} ; # Set LINDAS query interface and sparql endpoint ${dcat.accessURL} ${maintainer.accessURL} ; ${_void.sparqlEndpoint} ${maintainer.sparqlEndpoint} ; @@ -248,21 +245,21 @@ export async function loadCubeMetadata(this: Context, { jobUri, endpoint, user, endpointUrl: endpoint, user, password, - }).query) + })) stream.on('end', span.end.bind(span)).on('error', span.end.bind(span)) const metadata = await this.variables.get('metadata').import(stream) - const [{ subject: cubeId }] = metadata.match(null, rdf.type, cube.Cube).toArray() + const [{ subject: cubeId }] = [...metadata.match(null, rdf.type, cube.Cube)] const predicatesToCopy = [rdf.type, schema.name, schema.url, schema.encodingFormat] job.workExamples.forEach(jobWorkExample => { - const workExample = $rdf.blankNode() - metadata.add($rdf.quad(cubeId, schema.workExample, workExample)) + const workExample = this.env.blankNode() + metadata.add(this.env.quad(cubeId, schema.workExample, workExample)) predicatesToCopy.forEach(predicate => { jobWorkExample.pointer.out(predicate).forEach(object => { - metadata.add($rdf.quad(workExample, predicate, object.term as NamedNode | Literal)) + metadata.add(this.env.quad(workExample, predicate, object.term as NamedNode | Literal)) }) }) }) @@ -277,9 +274,8 @@ export async function loadCubeMetadata(this: Context, { jobUri, endpoint, user, } export async function injectObservedBy(this: Context, jobUri: string) { - const Hydra = this.variables.get('apiClient') - - const { maintainer } = await loadDataset(jobUri, Hydra) + const { env: $rdf } = this + const { maintainer } = await loadDataset(jobUri, $rdf) return obj(function (quad: Quad, _, callback) { if (quad.predicate.equals(cube.observedBy)) { diff --git a/cli/lib/module.ts b/cli/lib/module.ts deleted file mode 100644 index 03176d1d4..000000000 --- a/cli/lib/module.ts +++ /dev/null @@ -1,6 +0,0 @@ -interface DynamicImport { - (m: string): Promise -} - -// eslint-disable-next-line no-new-func -export const importDynamic: DynamicImport = new Function('modulePath', 'return import(modulePath)') as any diff --git a/cli/lib/output-filter.ts b/cli/lib/output-filter.ts index 2cc356d21..c8f8c67ef 100644 --- a/cli/lib/output-filter.ts +++ b/cli/lib/output-filter.ts @@ -4,8 +4,8 @@ import { cc } from '@cube-creator/core/namespace' import type { Context } from 'barnard59-core' import { customAlphabet } from 'nanoid' import dict from 'nanoid-dictionary' -import $rdf from 'rdf-ext' -import prefixes from '@zazuko/rdf-vocabularies/prefixes' +import $rdf from '@zazuko/env' +import prefixes from '@zazuko/prefixes' const nanoid = customAlphabet(dict.alphanumeric, 15) diff --git a/cli/lib/output-mapper.ts b/cli/lib/output-mapper.ts index 4564d9222..3c43016f7 100644 --- a/cli/lib/output-mapper.ts +++ b/cli/lib/output-mapper.ts @@ -1,19 +1,18 @@ -import type { DatasetCore, Quad, Term } from '@rdfjs/types' -import $rdf from 'rdf-ext' +import type { BaseQuad, DatasetCore, Quad, Term } from '@rdfjs/types' +import $rdf from '@zazuko/env' import { ImportJob, TransformJob } from '@cube-creator/model' import { HydraClient } from 'alcaeus/alcaeus' import type { Context } from 'barnard59-core' import { Dictionary } from '@rdfine/prov' -import { prov, schema, qudt } from '@tpluscode/rdf-ns-builders/strict' +import { prov, schema, qudt, rdf } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' -import TermMap from '@rdfjs/term-map' -import { MultiPointer } from 'clownface' +import type { MultiPointer } from 'clownface' import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' import { HydraResponse } from 'alcaeus' import { DefaultCsvwLiteral } from '@cube-creator/core/mapping' import through2 from 'through2' -import { rdf } from '@tpluscode/rdf-ns-builders' -import { importDynamic } from './module' +import type { Environment } from 'barnard59-env' +import map, { MapCallback } from 'barnard59-base/map.js' const undef = $rdf.literal('', cube.Undefined) @@ -51,8 +50,8 @@ async function loadMetadata(jobUri: string, Hydra: HydraClient) { return dimensionMetadataResource.representation.root } -export async function loadDimensionMapping(mappingUri: string, Hydra: HydraClient) { - const mappingResource = await load(mappingUri, Hydra, { +export async function loadDimensionMapping(mappingUri: string, env: Environment) { + const mappingResource = await load(mappingUri, env.hydra, { Prefer: 'return=canonical, only-mapped', }) if (!mappingResource.representation) { @@ -62,10 +61,10 @@ export async function loadDimensionMapping(mappingUri: string, Hydra: HydraClien return mappingResource.representation.root?.pointer } -export async function mapDimensions(this: Pick) { - const mappingCache = new TermMap() +export async function mapDimensions(this: Context) { + const mappingCache = $rdf.termMap() const jobUri = this.variables.get('jobUri') - const dimensionMetadataCollection = await loadMetadata(jobUri, this.variables.get('apiClient')) + const dimensionMetadataCollection = await loadMetadata(jobUri, this.env.hydra) function getDimensionMapping(predicate: Term) { let mappingTerm = mappingCache.get(predicate) @@ -80,9 +79,9 @@ export async function mapDimensions(this: Pick) { return mappingTerm } - const valueCache = new TermMap>() + const valueCache = $rdf.termMap>() const getMappedValue = async (mappingTerm: string, object: Term) => { - const dict = await loadDimensionMapping(mappingTerm, this.variables.get('apiClient')) + const dict = await loadDimensionMapping(mappingTerm, this.env) if (!dict) { return undefined } @@ -111,9 +110,7 @@ export async function mapDimensions(this: Pick) { const originalValueQuads = $rdf.dataset() this.variables.set('originalValueQuads', originalValueQuads) - const { default: map } = await importDynamic('barnard59-base/map.js') - - return map(async (quad: Quad) => { + const cb: MapCallback = async (quad): Promise => { const { subject, predicate, object, graph } = quad const mappingTerm = getDimensionMapping(predicate) if (mappingTerm?.value) { @@ -134,7 +131,9 @@ export async function mapDimensions(this: Pick) { } return quad - }) + } + + return map.call(this, cb as any) } export function injectOriginalValueQuads(this: Pick) { @@ -168,7 +167,7 @@ export function substituteUndefined(quad: Quad): Quad { export function substituteUndefinedReferences(this: Context) { const { csvwResource } = this.variables.get('transformed') - const patterns = new TermMap(csvwResource.tableSchema?.column + const patterns = $rdf.termMap(csvwResource.tableSchema?.column .filter(column => column.propertyUrl) .map(column => { const pattern = column.pointer.out(qudt.pattern).value diff --git a/cli/lib/project.ts b/cli/lib/project.ts index 1289564f3..ff2c475b8 100644 --- a/cli/lib/project.ts +++ b/cli/lib/project.ts @@ -1,19 +1,17 @@ import { PublishJob, Project } from '@cube-creator/model' import type { Context } from 'barnard59-core' -import { tracer } from './otel/tracer' +import { tracer } from './otel/tracer.js' -export async function loadProject(jobUri: string, { variables, logger }: Context) { +export async function loadProject(jobUri: string, { logger, env }: Context) { return tracer.startActiveSpan('find project', { attributes: { jobUri } }, async span => { try { - const Hydra = variables.get('apiClient') - - const jobResource = await Hydra.loadResource(jobUri) + const jobResource = await env.hydra.loadResource(jobUri) const job = jobResource.representation?.root if (!job) { throw new Error(`Did not find representation of job ${jobUri}. Server responded ${jobResource.response?.xhr.status}`) } - const projectResource = await Hydra.loadResource(job.project) + const projectResource = await env.hydra.loadResource(job.project) const project = projectResource.representation?.root if (!project) { throw new Error(`Did not find representation of project ${job.project}. Server responded ${projectResource.response?.xhr.status}`) diff --git a/cli/lib/publish/patch-stream.ts b/cli/lib/publish/patch-stream.ts index 223d789d7..8502df1e4 100644 --- a/cli/lib/publish/patch-stream.ts +++ b/cli/lib/publish/patch-stream.ts @@ -1,6 +1,6 @@ import type { Dataset } from '@rdfjs/types' import { qudt } from '@tpluscode/rdf-ns-builders' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' export function addQudtHasUnit(dataset: Dataset) { dataset.match(null, qudt.unit).forEach(({ subject, object }) => { diff --git a/cli/lib/publish/upload.ts b/cli/lib/publish/upload.ts index 763dc9391..f5b721e70 100644 --- a/cli/lib/publish/upload.ts +++ b/cli/lib/publish/upload.ts @@ -1,7 +1,7 @@ import { spawnSync } from 'child_process' import type { VariableMap } from 'barnard59-core' -import { tracer } from '../otel/tracer' -import { logger } from '../log' +import { tracer } from '../otel/tracer.js' +import { logger } from '../log.js' export function uploadCube(variables: VariableMap) { return tracer.startActiveSpan('cube upload', span => { diff --git a/cli/lib/publish/versions.ts b/cli/lib/publish/versions.ts index d6c9ea5dc..75b29181c 100644 --- a/cli/lib/publish/versions.ts +++ b/cli/lib/publish/versions.ts @@ -1,8 +1,7 @@ import type { Context } from 'barnard59-core' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import through2 from 'through2' -import clownface from 'clownface' -import { schema } from '@tpluscode/rdf-ns-builders/strict' +import { schema } from '@tpluscode/rdf-ns-builders' export function inject(this: Pick) { const cliVersion = this.variables.get('cliVersion') @@ -13,7 +12,7 @@ export function inject(this: Pick) { const cubeId = $rdf.namedNode(`${cubeNamespace}/${revision}`) const dataset = $rdf.dataset() - clownface({ dataset }) + $rdf.clownface({ dataset }) .node(cubeId) .addOut(schema.actionApplication, api => { api.addOut(schema.name, 'cube-creator-api').addOut(schema.softwareVersion, apiVersion) @@ -25,7 +24,7 @@ export function inject(this: Pick) { return through2.obj( (chunk, enc, cb) => cb(null, chunk), function (done) { - dataset.forEach(this.push.bind(this)) + dataset.forEach(d => this.push(d)) done() }) } diff --git a/cli/lib/validation.ts b/cli/lib/validation.ts index 3111c7a16..7247a63fe 100644 --- a/cli/lib/validation.ts +++ b/cli/lib/validation.ts @@ -2,7 +2,7 @@ import type { Literal, NamedNode, Quad } from '@rdfjs/types' import { turtle } from '@tpluscode/rdf-string' import type { Context } from 'barnard59-core' import { validateQuad } from 'rdf-validate-datatype' -import TermMap from '@rdfjs/term-map' +import $rdf from '@zazuko/env' import { xsd } from '@tpluscode/rdf-ns-builders' export function validate(this: Context, quad: Quad): Quad { @@ -20,7 +20,7 @@ function quadToString(quad: Quad): string { }) } -const messages = new TermMap([ +const messages = $rdf.termMap([ [xsd.boolean, 'Boolean values should be formatted as "true" and "false" (or "0" and "1"). See also https://www.w3.org/TR/xmlschema-2/#boolean.'], [xsd.date, 'Dates should be formatted as YYYY-MM-DD as specified by ISO 8601. See also https://www.w3.org/TR/xmlschema-2/#date.'], [xsd.dateTime, 'Values should be formatted as YYYY-MM-DDThh:mm:ss. See also https://www.w3.org/TR/xmlschema-2/#dateTime.'], @@ -34,7 +34,7 @@ const messages = new TermMap([ [xsd.gYearMonth, 'Values should be formatted as YYYY-MM. See also https://www.w3.org/TR/xmlschema-2/#gYearMonth.'], ]) -const typeName = new TermMap([ +const typeName = $rdf.termMap([ [xsd.boolean, 'boolean'], [xsd.date, 'date'], [xsd.dateTime, 'dateTime'], diff --git a/cli/lib/variables.ts b/cli/lib/variables.ts index e72a51abe..30e9382f5 100644 --- a/cli/lib/variables.ts +++ b/cli/lib/variables.ts @@ -1,12 +1,10 @@ import type { Literal, NamedNode } from '@rdfjs/types' -import { HydraClient } from 'alcaeus/alcaeus' import * as Csvw from '@rdfine/csvw' -import DatasetExt from 'rdf-ext/lib/Dataset' -import { PublishJob, UnlistJob } from '../../packages/model/Job' +import { Dataset as DatasetExt } from '@zazuko/env/lib/DatasetExt.js' +import { PublishJob, UnlistJob } from '../../packages/model/Job.js' declare module 'barnard59-core' { interface Variables { - apiClient: HydraClient jobUri: string executionUrl: string 'graph-store-endpoint': string diff --git a/cli/package.json b/cli/package.json index 547f9e78d..645ac8cb3 100644 --- a/cli/package.json +++ b/cli/package.json @@ -3,6 +3,7 @@ "version": "3.0.0", "description": "Runs a pipeline to create an RDF data cube", "main": "index.js", + "type": "module", "scripts": { "postinstall": "mkdir -p output; touch .env", "transform": "dotenv -e ./.env -e ./.test.env -e ../.local.env -- sh -c 'ts-node index.ts transform --job \"$TRANSFORM_JOB\" --debug --to filesystem --no-status-update'", @@ -12,6 +13,7 @@ }, "dependencies": { "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", "@cube-creator/model": "0.1.27", "@opentelemetry/api": "^1.4.0", "@opentelemetry/exporter-metrics-otlp-http": "^0.35.1", @@ -23,35 +25,33 @@ "@opentelemetry/sdk-node": "^0.35.1", "@opentelemetry/semantic-conventions": "^0.26.0", "@opentelemetry/tracing": "^0.24.0", - "@rdfine/csvw": "^0.6.3", - "@rdfine/prov": "^0.1.1", - "@rdfine/schema": "^0.6.3", - "@rdfine/shacl": "^0.8.6", - "@rdfjs/fetch-lite": "^2.0.1", - "@rdfjs/namespace": "^1.1.0", - "@rdfjs/term-map": "^1.0.0", - "@rdfjs/term-set": "^1.0.1", + "@rdfine/csvw": "^0.8.5", + "@rdfine/prov": "^0.3.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", "@sentry/node": "^6.2.0", "@sentry/tracing": "^6.2.0", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdf-string": "^0.2.24", - "@tpluscode/rdfine": "^0.5.19", - "@tpluscode/sparql-builder": "^0.3.15", - "@zazuko/rdf-vocabularies": ">=2021", - "@zazuko/s": "^1.0.0", - "@zazuko/shacl-playground": "^1.0.0", - "alcaeus": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@zazuko/env": "^2.0.6", + "@zazuko/prefixes": "^2.2.0", + "@zazuko/s": "^1.0.1", + "@zazuko/shacl-playground": "^2.0.0", + "@zazuko/rdf-utils-fs": "^3.3.1", + "alcaeus": "^3.0.1", "aws-sdk": "^2.559.0", "barnard59": "^5.0.4", "barnard59-base": "^2.4.2", "barnard59-cube": "^1.4.8", - "barnard59-formats": "^4.0.0", - "barnard59-graph-store": "^5.1.2", + "barnard59-env": "^1.2.6", + "barnard59-formats": "^2.1.0", + "barnard59-graph-store": "^6.0.0", "barnard59-http": "^2.0.0", "barnard59-rdf": "^3.4.0", "barnard59-shacl": "^1.4.9", "body-parser": "^1.19.0", - "clownface": "^1", "commander": "^4.1.1", "cors": "^2.8.5", "duplex-to": "^1.0.0", @@ -61,19 +61,17 @@ "iso8601-duration": "^1.3.0", "merge2": "^1.4.1", "middleware-async": "^1.2.7", - "nanoid": "^3.1.20", - "nanoid-dictionary": "^4.2.0", - "node-fetch": "^2.6.1", + "nanoid": "^5.0.6", + "nanoid-dictionary": "^4.3.0", + "node-fetch": "^3.3.2", "null-writable": "^1.0.5", "once": "^1.4.0", - "rdf-ext": "^1.3.0", - "rdf-literal": "^1.3.0", + "rdf-literal": "^1.3.2", "@zazuko/rdf-parser-csvw": "^0.17", "rdf-stream-to-dataset-stream": "^1.0.0", - "rdf-utils-fs": "^2.1.0", - "rdf-validate-datatype": "^0.1.3", - "readable-stream": "^3.6.0", - "sparql-http-client": "^2.4.0", + "rdf-validate-datatype": "^0.2.1", + "readable-stream": "^4.5.2", + "sparql-http-client": "^3.0.0", "string-to-stream": "^3.0.1", "tempy": "^1", "through2": "^4.0.2", @@ -82,13 +80,12 @@ }, "devDependencies": { "@cube-creator/testing": "^0.1.21", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/sparql-builder": "^0.3.15", + "@tpluscode/sparql-builder": "^2.0.2", "@types/body-parser": "^1.19.0", "@types/chai": "^4.2.13", "@types/chai-as-promised": "^7.1.3", "@types/chai-quantifiers": "^1.0.0", - "@types/clownface": "^1.0.3", + "@types/clownface": "^2.0.7", "@types/cors": "^2.8.7", "@types/debug": "^4.1.5", "@types/duplex-to": "^1.0.0", @@ -96,29 +93,22 @@ "@types/merge2": "^1.3.0", "@types/mocha": "^10", "@types/nanoid-dictionary": "^4.2.0", - "@types/node-fetch": "^2.5.7", "@types/once": "^1.4.0", - "@types/rdf-ext": "^1.3.5", "@rdfjs/types": "^1.1.0", "@types/rdf-utils-fs": "^2.1.0", - "@types/rdf-validate-datatype": "^0.1", - "@types/rdfjs__formats-common": "^2.0.0", - "@types/rdfjs__namespace": "^1.1.1", - "@types/rdfjs__sink-map": "^1.0.0", - "@types/rdfjs__term-map": "^1.0.1", - "@types/rdfjs__term-set": "^1.0.2", + "@types/rdfjs__formats": "^4.0.1", "@types/readable-stream": "^2.3.11", - "@types/sinon": "^10.0.2", - "@types/sinon-chai": "^3.2.4", - "@types/sparql-http-client": "^2", + "@types/sinon": "^17.0.3", + "@types/sinon-chai": "^3.2.12", + "@types/sparql-http-client": "^3.0.2", "@types/through2": "^2.0.36", "barnard59-core": "^6.0.0", "chai": "^4.3.4", "dotenv": "^16.0.0", "dotenv-cli": "^5.0.0", "mocha": "^10.2.0", - "sinon": "^13.0.0", - "sinon-chai": "^3.5.0" + "sinon": "^17.0.1", + "sinon-chai": "^3.7.0" }, "repository": { "type": "git", diff --git a/cli/server.ts b/cli/server.ts index ed05f3458..08d2efec8 100644 --- a/cli/server.ts +++ b/cli/server.ts @@ -1,5 +1,5 @@ // eslint-disable-next-line import/order -import { opentelemetry } from './lib/otel/index' +import { opentelemetry } from './lib/otel/index.js' /* eslint-disable import/no-extraneous-dependencies */ import * as http from 'http' @@ -10,7 +10,9 @@ import debug from 'debug' import cors from 'cors' import bodyParser from 'body-parser' import dotenv from 'dotenv' -import * as command from './lib/commands' +import * as command from './lib/commands/index.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) dotenv.config({ path: path.resolve(__dirname, '.env'), diff --git a/cli/test/lib/commands/import.test.ts b/cli/test/lib/commands/import.test.ts index d071479ad..55c8b0ab6 100644 --- a/cli/test/lib/commands/import.test.ts +++ b/cli/test/lib/commands/import.test.ts @@ -1,21 +1,20 @@ import { before, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { dcat, dcterms, qudt, schema, sh, time, vcard, xsd } from '@tpluscode/rdf-ns-builders' -import namespace from '@rdfjs/namespace' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { insertTestProject, insertPxCube } from '@cube-creator/testing/lib/seedData' import { ASK, SELECT } from '@tpluscode/sparql-builder' import * as ns from '@cube-creator/core/namespace' import { ccClients } from '@cube-creator/testing/lib' import { cc, meta } from '@cube-creator/core/namespace' -import { setupEnv } from '../../support/env' -import runner from '../../../lib/commands/import' +import { setupEnv } from '../../support/env.js' +import runner from '../../../lib/commands/import.js' describe('@cube-creator/cli/lib/commands/import', () => { const cube = $rdf.namedNode('https://environment.ld.admin.ch/foen/example/px-cube') - const cubeNs = namespace(`${cube.value}/`) - const resource = namespace(env.API_CORE_BASE) + const cubeNs = $rdf.namespace(`${cube.value}/`) + const resource = $rdf.namespace(env.API_CORE_BASE) const cubeDataGraph = resource('cube-project/px/cube-data') before(async function () { @@ -42,7 +41,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ?set ${ns.cube.observation} ?observation . ?observation ?p ?o . - `.execute(ccClients.parsingClient.query) + `.execute(ccClients.parsingClient) expect(result.count).to.deep.eq($rdf.literal('14256', xsd.integer)) }) @@ -57,7 +56,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ] . ` .FROM(cubeDataGraph) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasName).to.be.false }) @@ -65,7 +64,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { it('does not copy cube metadata into data graph', async () => { const hasName = await ASK`${cube} ${schema.name} ?name` .FROM(cubeDataGraph) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasName).to.be.false }) @@ -76,7 +75,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ?concept ${schema.name} ?name ` .FROM(cubeDataGraph) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasConceptData).to.be.true }) @@ -89,7 +88,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${metadata} ${schema.hasPart} ?dimensionMetadata ; a ${cc.DimensionMetadataCollection} . ?dimensionMetadata ${schema.about} ?dim . ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(dimensions.count).to.deep.eq($rdf.literal('20', xsd.integer)) }) @@ -103,7 +102,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${cube} ${dcterms.creator} ${resource('user')} ` .FROM(resource('cube-project/px/dataset')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) const hasNewMeta = await ASK` ${resource('cube-project/px/dataset')} @@ -114,7 +113,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${schema.temporalCoverage} ?temp ; . `.FROM(resource('cube-project/px/dataset')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasNewMeta).to.be.true expect(hasPreviousData).to.be.true @@ -123,7 +122,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { it('does not copy observation URIs into meta graph', async () => { const hasObservations = ASK`?set ${ns.cube.observation} ?observation` .FROM(resource('cube-project/px/dataset')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) await expect(hasObservations).to.eventually.be.false }) @@ -136,7 +135,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${schema.name} "Bois de grumes en m3"@fr ; ${qudt.scaleType} ${qudt.RatioScale} . `.FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasDimensionMeta).to.be.true }) @@ -147,7 +146,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${schema.description} ?desc . ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasDescription).to.be.true }) @@ -158,7 +157,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${qudt.scaleType} ${qudt.EnumerationScale} ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(didNotReplace).to.be.true }) @@ -174,7 +173,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ) ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(result.name.value).to.eq('Bundeswaelder in ha') expect(rest).to.have.length(0) @@ -186,13 +185,13 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${schema.hasPart} ${resource('cube-project/px/dataset/dimension-metadata/remove')} ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) const hasRemovedDimension = await ASK` ?meta ${schema.about} ${cubeNs('measure/remove')} ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasRemovedPart).to.be.false expect(hasRemovedDimension).to.be.false @@ -207,7 +206,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ] ; ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(didNotRemove).to.be.true }) @@ -218,7 +217,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${meta.dataKind} ?kind ; ` .FROM(resource('cube-project/px/dataset/dimension-metadata')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(results).to.have.length(1) }) @@ -237,7 +236,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ) ` .FROM(resource('cube-project/px/dataset')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(keptExistingMeta).to.be.true }) @@ -250,7 +249,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { . ` .FROM(resource('cube-project/px/dataset')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) const literals = results.map((row) => row.unitText) expect(literals).to.have.length(3) @@ -269,7 +268,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { ${schema.description} ?desc ; ${dcterms.description} ?desc ; `.FROM(resource('cube-project/px/dataset')) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasValues).to.be.true }) @@ -280,7 +279,7 @@ describe('@cube-creator/cli/lib/commands/import', () => { .WHERE` ${cube} a ${ns.cube.Cube} ; ${ns.cube.observationSet}/${ns.cube.observation}/${cubeNs('measure/11')} ?value . - `.execute(ccClients.parsingClient.query) + `.execute(ccClients.parsingClient) expect(results).to.deep.contain.members([{ value: $rdf.namedNode('http://example.com/dimension/colors/red'), diff --git a/cli/test/lib/commands/publish.test.ts b/cli/test/lib/commands/publish.test.ts index 78981a0e2..fb2ceafbf 100644 --- a/cli/test/lib/commands/publish.test.ts +++ b/cli/test/lib/commands/publish.test.ts @@ -1,19 +1,19 @@ import type { NamedNode, Term } from '@rdfjs/types' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { before, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' -import { prefixes } from '@zazuko/rdf-vocabularies' +import $rdf from '@zazuko/env' +import prefixes from '@zazuko/prefixes' import { ASK, CONSTRUCT, DELETE, SELECT, WITH } from '@tpluscode/sparql-builder' import { csvw, dcat, dcterms, qudt, rdf, schema, sh, vcard, xsd, _void, foaf } from '@tpluscode/rdf-ns-builders' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { cc, cube } from '@cube-creator/core/namespace' -import clownface, { AnyPointer } from 'clownface' -import namespace, { NamespaceBuilder } from '@rdfjs/namespace' -import runner from '../../../lib/commands/publish' -import { setupEnv } from '../../support/env' -import { Published } from '../../../../packages/model/Cube' +import type { AnyPointer } from 'clownface' +import type { NamespaceBuilder } from '@rdfjs/namespace' +import runner from '../../../lib/commands/publish.js' +import { setupEnv } from '../../support/env.js' +import { Published } from '../../../../packages/model/Cube.js' describe('@cube-creator/cli/lib/commands/publish', function () { this.timeout(200000) @@ -21,7 +21,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { const targetGraph = $rdf.namedNode('https://lindas.admin.ch/foen/cube') const baseCubeId = 'https://environment.ld.admin.ch/foen/ubd/28' const ns = { - baseCube: namespace(baseCubeId + '/'), + baseCube: $rdf.namespace(baseCubeId + '/'), } const executionUrl = 'http://example.com/publishing-test' @@ -58,16 +58,16 @@ describe('@cube-creator/cli/lib/commands/publish', function () { ?org ${cc.publishGraph} ?expectedGraph . } ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) - targetCube = namespace(ns.baseCube('3').value) + targetCube = $rdf.namespace(ns.baseCube('3').value) const dataset = await $rdf.dataset().import(await CONSTRUCT`?s ?p ?o` .FROM(expectedGraph as NamedNode) .WHERE`?s ?p ?o` - .execute(ccClients.streamClient.query)) + .execute(ccClients.streamClient)) - cubePointer = clownface({ dataset }) + cubePointer = $rdf.clownface({ dataset }) } async function removesHydraTerms() { @@ -90,7 +90,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { strstarts(str(?p), "${prefixes.hydra}") || strstarts(str(?o), "${prefixes.hydra}") ) - `.execute(ccClients.parsingClient.query) + `.execute(ccClients.parsingClient) expect(anyHydra).to.be.false } @@ -115,7 +115,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { strends(str(?p), "#_original") || strends(str(?o), "#_original") ) - `.execute(ccClients.parsingClient.query) + `.execute(ccClients.parsingClient) expect(anyHydra).to.be.false } @@ -158,7 +158,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { ${job} ${schema.creativeWorkStatus} ${Published} `.WHERE` ${job} ${schema.creativeWorkStatus} ?status - `).execute(ccClients.parsingClient.query) + `).execute(ccClients.parsingClient) }) before(runJob) @@ -169,7 +169,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('does not publish a cube with trailing slash', async () => { const trailingSlashCubeExists = await ASK`${ns.baseCube('3/')} ?p ?o` .FROM(targetGraph) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(trailingSlashCubeExists).to.be.false }) @@ -177,7 +177,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('adds a schema:dataset link to void dataset', async () => { const hasVoidLink = await ASK` ${schema.dataset} ${targetCube()}` .FROM(targetGraph) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(hasVoidLink).to.be.true }) @@ -185,7 +185,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('adds a foaf:topic link to void dataset', async () => { const hasVoidLink = await ASK` ${foaf.topic} ${targetCube()}` .FROM(targetGraph) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(hasVoidLink).to.be.true }) @@ -402,7 +402,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('adds work examples', async function () { const cube = cubePointer.namedNode(targetCube()) - const shape = clownface({ dataset: $rdf.dataset(), term: $rdf.blankNode() }) + const shape = $rdf.clownface({ dataset: $rdf.dataset(), term: $rdf.blankNode() }) .addOut(sh.property, property => { property .addOut(sh.path, schema.workExample) @@ -484,7 +484,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { ?s ?p ?o . filter (regex(str(?p), str(${csvw()}))) ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(distinctCsvwProps[0].count.value).to.eq('0') }) @@ -495,13 +495,13 @@ describe('@cube-creator/cli/lib/commands/publish', function () { ?observation ?dimension ?value . FILTER ( REGEX (str(?dimension), str(${targetCube()}) ) ) - `.FROM(targetGraph).execute(ccClients.streamClient.query) + `.FROM(targetGraph).execute(ccClients.streamClient) const anyShapePropertyHasRevision = await ASK` ?shape a ${cube.Constraint} . ?shape ${sh.property}/${sh.path} ?dimension . FILTER ( REGEX (str(?dimension), str(${targetCube()}) ) ) - `.FROM(targetGraph).execute(ccClients.streamClient.query) + `.FROM(targetGraph).execute(ccClients.streamClient) expect(anyObservationPredicateHasRevision).to.be.false expect(anyShapePropertyHasRevision).to.be.false @@ -514,7 +514,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { ${sh.path} ${ns.baseCube('pollutant')} ; a ${cube.SharedDimension} ; ] . - `.FROM(targetGraph).execute(ccClients.streamClient.query) + `.FROM(targetGraph).execute(ccClients.streamClient) expect(hasShareDimensionType).to.eventually.be.true }) @@ -529,7 +529,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('adds schema:sameAs to concepts linked to observation dimensions', async () => { const sameAsAdded = await ASK` ${targetCube('/station/blBAS')} ${schema.sameAs} ${ns.baseCube('station/blBAS')} - `.FROM(targetGraph).execute(ccClients.streamClient.query) + `.FROM(targetGraph).execute(ccClients.streamClient) expect(sameAsAdded).to.be.true }) @@ -537,7 +537,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('does not add schema:sameAs to concepts outside cube namespace', async () => { const sameAsAdded = await ASK` ${schema.sameAs} ?any - `.FROM(targetGraph).execute(ccClients.streamClient.query) + `.FROM(targetGraph).execute(ccClients.streamClient) expect(sameAsAdded).to.be.false }) @@ -545,7 +545,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('does not add schema:sameAs to objects of non-dimension properties`', async () => { const sameAsAdded = await ASK` ${targetCube('/maintainer/blBAS')} ${schema.sameAs} ?any - `.FROM(targetGraph).execute(ccClients.streamClient.query) + `.FROM(targetGraph).execute(ccClients.streamClient) expect(sameAsAdded).to.be.false }) @@ -558,7 +558,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { ?property ${sh.path} ?dimension ; ${schema.version} ?version ` .FROM(targetGraph) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(results).to.have.length(2) expect(results).to.deep.contain.members([{ @@ -571,7 +571,7 @@ describe('@cube-creator/cli/lib/commands/publish', function () { it('does not add link to void dataset', async () => { const hasVoidLink = await ASK`?void ${schema.dataset} ${targetCube()}` .FROM(targetGraph) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(hasVoidLink).to.be.false }) diff --git a/cli/test/lib/commands/timeoutJobs.test.ts b/cli/test/lib/commands/timeoutJobs.test.ts index 14e347d32..4df29f5bd 100644 --- a/cli/test/lib/commands/timeoutJobs.test.ts +++ b/cli/test/lib/commands/timeoutJobs.test.ts @@ -3,8 +3,8 @@ import sinon from 'sinon' import { expect } from 'chai' import { cc } from '@cube-creator/core/namespace' import { insertTestProject } from '@cube-creator/testing/lib/seedData' -import { timeoutJobs } from '../../../lib/commands' -import { setupEnv } from '../../support/env' +import { timeoutJobs } from '../../../lib/commands/index.js' +import { setupEnv } from '../../support/env.js' describe('@cube-creator/cli/lib/commands/timeoutJobs', () => { beforeEach(function () { diff --git a/cli/test/lib/commands/transform.test.ts b/cli/test/lib/commands/transform.test.ts index 87eb1d26b..699ad529f 100644 --- a/cli/test/lib/commands/transform.test.ts +++ b/cli/test/lib/commands/transform.test.ts @@ -1,17 +1,14 @@ -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { before, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' -import clownface from 'clownface' +import $rdf from '@cube-creator/env' import { ASK, DESCRIBE, SELECT } from '@tpluscode/sparql-builder' -import namespace from '@rdfjs/namespace' -import { Hydra } from 'alcaeus/node' -import { csvw, rdf, rdfs, schema, sh, unit, xsd } from '@tpluscode/rdf-ns-builders/strict' +import { csvw, rdf, rdfs, schema, sh, unit, xsd } from '@tpluscode/rdf-ns-builders' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { cc, cube } from '@cube-creator/core/namespace' -import { setupEnv } from '../../support/env' -import runner from '../../../lib/commands/transform' +import { setupEnv } from '../../support/env.js' +import runner from '../../../lib/commands/transform.js' describe('@cube-creator/cli/lib/commands/transform', function () { this.timeout(360 * 1000) @@ -24,11 +21,11 @@ describe('@cube-creator/cli/lib/commands/transform', function () { }) describe('successful job', () => { - const projectNs = namespace(`${env.API_CORE_BASE}cube-project/ubd/`) + const projectNs = $rdf.namespace(`${env.API_CORE_BASE}cube-project/ubd/`) const job = `${projectNs().value}csv-mapping/jobs/test-job` const expectedGraph = projectNs('cube-data') const cubeBase = 'https://environment.ld.admin.ch/foen/ubd/28/' - const cubeNs = namespace(cubeBase) + const cubeNs = $rdf.namespace(cubeBase) const cubeShape = cubeNs('shape/') before(async () => { @@ -42,7 +39,7 @@ describe('@cube-creator/cli/lib/commands/transform', function () { }) it('produces constraint shape', async () => { - const shape = await ASK`?shape a ${sh.NodeShape}`.FROM(expectedGraph).execute(ccClients.streamClient.query) + const shape = await ASK`?shape a ${sh.NodeShape}`.FROM(expectedGraph).execute(ccClients.streamClient) expect(shape).to.be.true }) @@ -56,11 +53,23 @@ describe('@cube-creator/cli/lib/commands/transform', function () { ` .FROM(datasetGraph) .prologue`BASE ${projectNs()}` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) await expect(hasPreviousErrors).to.eventually.be.false }) + it('adds no sh:in to large dimension', async () => { + const hasInList = ASK` + ${cubeShape} ${sh.property} ?property . + ?property ${sh.path} ${cubeNs.station} . + ?property ${sh.in} ?in + ` + .FROM(expectedGraph) + .execute(ccClients.parsingClient) + + await expect(hasInList).to.eventually.be.false + }) + it('does not add sh:in for dimension of literals', async () => { const hasInList = ASK` ${cubeShape} ${sh.property} ?property . @@ -68,16 +77,16 @@ describe('@cube-creator/cli/lib/commands/transform', function () { ?property ${sh.in} ?in ` .FROM(expectedGraph) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasInList).eventually.be.false }) it('produces observations', async () => { const query = DESCRIBE`${cubeNs('observation/so2-blBAS-2000-annualmean')}`.FROM(expectedGraph) - const dataset = await $rdf.dataset().import(await query.execute(ccClients.streamClient.query)) + const dataset = await $rdf.dataset().import(await query.execute(ccClients.streamClient)) - const observation = clownface({ dataset }).node(cubeNs('observation/so2-blBAS-2000-annualmean')) + const observation = $rdf.clownface({ dataset }).node(cubeNs('observation/so2-blBAS-2000-annualmean')) expect(observation).to.matchShape({ property: [{ @@ -138,9 +147,9 @@ describe('@cube-creator/cli/lib/commands/transform', function () { it('produces non-observation resources', async () => { const query = DESCRIBE`${cubeNs('station/blBAS')}`.FROM(expectedGraph) - const dataset = await $rdf.dataset().import(await query.execute(ccClients.streamClient.query)) + const dataset = await $rdf.dataset().import(await query.execute(ccClients.streamClient)) - const station = clownface({ dataset }).node(cubeNs('station/blBAS')) + const station = $rdf.clownface({ dataset }).node(cubeNs('station/blBAS')) expect(station).to.matchShape({ property: [{ @@ -158,14 +167,14 @@ describe('@cube-creator/cli/lib/commands/transform', function () { it('does not output cc:cube as dimension property', async () => { const hasCubeProperty = await ASK`${cubeShape} ${sh.property}/${sh.path} ${cc.cube} .` .FROM($rdf.namedNode(`${env.API_CORE_BASE}cube-project/ubd/cube-data`)) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(hasCubeProperty).to.eq(false) }) it('does not output csvw:describes as dimension property', async () => { const hasDescribesProperty = await ASK`${cubeShape} ${sh.property}/${sh.path} ${csvw.describes} .` .FROM($rdf.namedNode(`${env.API_CORE_BASE}cube-project/ubd/cube-data`)) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(hasDescribesProperty).to.eq(false) }) @@ -177,7 +186,7 @@ describe('@cube-creator/cli/lib/commands/transform', function () { FILTER ( BNODE (?observation) ) ` .FROM($rdf.namedNode(`${env.API_CORE_BASE}cube-project/ubd/cube-data`)) - .execute(ccClients.streamClient.query) + .execute(ccClients.streamClient) expect(hasDescribesProperty).to.eq(false) }) @@ -189,14 +198,14 @@ describe('@cube-creator/cli/lib/commands/transform', function () { ?s ?prop ?o . filter (regex(str(?prop), str(${csvw()}))) ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(distinctCsvwProps).to.have.length(1) expect(distinctCsvwProps[0].prop).to.deep.eq(csvw.describes) }) it('updates job', async () => { - const { representation } = await Hydra.loadResource(job) + const { representation } = await $rdf.hydra.loadResource(job) expect(representation?.root).to.matchShape({ property: [{ path: schema.actionStatus, @@ -216,7 +225,7 @@ describe('@cube-creator/cli/lib/commands/transform', function () { .FROM(expectedGraph) .WHERE` ${rdfs.comment} ?value - `.execute(ccClients.parsingClient.query) + `.execute(ccClients.parsingClient) expect(observationValue[0]?.value).to.deep.eq($rdf.literal('', cube.Undefined)) }) @@ -224,7 +233,7 @@ describe('@cube-creator/cli/lib/commands/transform', function () { it('does not output ""^^cube:Undefined for non-Observation tables', async () => { const hasName = await ASK`${cubeNs('station/neCHA')} ${schema.name} ?name` .FROM(expectedGraph) - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(hasName).to.be.false }) @@ -234,35 +243,35 @@ describe('@cube-creator/cli/lib/commands/transform', function () { .FROM(expectedGraph) .WHERE` ?value - `.execute(ccClients.parsingClient.query) + `.execute(ccClients.parsingClient) expect(result[0]?.value).to.deep.eq(cube.Undefined) }) it('includes ""^^cube:Undefined in property shape sh:in of literal columns', async () => { - const dataset = await $rdf.dataset().import(await DESCRIBE`?property` + const dataset = await $rdf.dataset().import(DESCRIBE`?property` .FROM(expectedGraph) .WHERE` ${sh.property} ?property . ?property ${sh.path} ${rdfs.comment} . ` - .execute(ccClients.streamClient.query, { base: cubeBase })) + .execute(ccClients.streamClient, { base: cubeBase })) - const ins = [...clownface({ dataset }).has(sh.in).out(sh.in).list()!].map(ptr => ptr.term) + const ins = [...$rdf.clownface({ dataset }).has(sh.in).out(sh.in).list()!].map(ptr => ptr.term) expect(ins).to.deep.contain.members([$rdf.literal('', cube.Undefined)]) }) it('does not emit sh:in for min/max dimensions', async () => { - const dataset = await $rdf.dataset().import(await DESCRIBE`?property` + const dataset = await $rdf.dataset().import(DESCRIBE`?property` .FROM(expectedGraph) .WHERE` ${sh.property} ?property . ?property ${sh.path} ${cubeNs('dimension/value')} . ` - .execute(ccClients.streamClient.query, { base: cubeBase })) + .execute(ccClients.streamClient, { base: cubeBase })) - const propShape = clownface({ dataset }).has(sh.path) + const propShape = $rdf.clownface({ dataset }).has(sh.path) expect(propShape.has(sh.in).terms).to.have.length(0) expect(propShape.has(sh.minInclusive).terms).to.have.length(1) @@ -270,29 +279,29 @@ describe('@cube-creator/cli/lib/commands/transform', function () { }) it('includes cube:Undefined in property shape sh:in of mapped columns', async () => { - const dataset = await $rdf.dataset().import(await DESCRIBE`?property` + const dataset = await $rdf.dataset().import(DESCRIBE`?property` .FROM(expectedGraph) .WHERE` ${sh.property} ?property . ?property ${sh.path} . ` - .execute(ccClients.streamClient.query, { base: cubeBase })) + .execute(ccClients.streamClient, { base: cubeBase })) - const ins = [...clownface({ dataset }).has(sh.in).out(sh.in).list()!].map(ptr => ptr.term) + const ins = [...$rdf.clownface({ dataset }).has(sh.in).out(sh.in).list()!].map(ptr => ptr.term) expect(ins).to.deep.contain.members([cube.Undefined]) }) it('emits an sh:or alternative to include cube:Undefined datatype', async () => { - const dataset = await $rdf.dataset().import(await DESCRIBE`?property` + const dataset = await $rdf.dataset().import(DESCRIBE`?property` .FROM(expectedGraph) .WHERE` ${sh.property} ?property . ?property ${sh.path} ${rdfs.comment} . ` - .execute(ccClients.streamClient.query, { base: cubeBase })) + .execute(ccClients.streamClient, { base: cubeBase })) - const ors = [...clownface({ dataset }).has(sh.or).out(sh.or).list()!] + const ors = [...$rdf.clownface({ dataset }).has(sh.or).out(sh.or).list()!] .flatMap(ptr => ptr.out(sh.datatype).terms) expect(ors).to.have.length(2) @@ -306,7 +315,7 @@ describe('@cube-creator/cli/lib/commands/transform', function () { ?s ?p ?o . ?p a ${cc.OriginalValuePredicate} . ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) expect(originalValues).to.have.length(28999) expect(originalValues[0].p).to.deep.eq($rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28/pollutant#_original')) @@ -328,7 +337,7 @@ describe('@cube-creator/cli/lib/commands/transform', function () { await expect(jobRun).to.have.rejected // then - const job = await Hydra.loadResource(jobUri) + const job = await $rdf.hydra.loadResource(jobUri) expect(job.representation?.root).to.matchShape({ property: [{ path: schema.actionStatus, diff --git a/cli/test/lib/commands/unlist.test.ts b/cli/test/lib/commands/unlist.test.ts index ff275bf50..87e0eeb97 100644 --- a/cli/test/lib/commands/unlist.test.ts +++ b/cli/test/lib/commands/unlist.test.ts @@ -1,23 +1,22 @@ import type { NamedNode } from '@rdfjs/types' -import env from '@cube-creator/core/env' +import env from '@cube-creator/core/env/node' import { before, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { CONSTRUCT, SELECT } from '@tpluscode/sparql-builder' import { schema, xsd } from '@tpluscode/rdf-ns-builders' import { ccClients } from '@cube-creator/testing/lib' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { cc } from '@cube-creator/core/namespace' -import clownface, { AnyPointer } from 'clownface' -import namespace from '@rdfjs/namespace' -import runner from '../../../lib/commands/unlist' -import { setupEnv } from '../../support/env' +import type { AnyPointer } from 'clownface' +import runner from '../../../lib/commands/unlist.js' +import { setupEnv } from '../../support/env.js' describe('@cube-creator/cli/lib/commands/unlist', function () { this.timeout(200000) const ns = { - baseCube: namespace('https://environment.ld.admin.ch/foen/ubd/28/'), + baseCube: $rdf.namespace('https://environment.ld.admin.ch/foen/ubd/28/'), } const executionUrl = 'http://example.com/unlisting-test' @@ -52,14 +51,14 @@ describe('@cube-creator/cli/lib/commands/unlist', function () { ?org ${cc.publishGraph} ?expectedGraph . } ` - .execute(ccClients.parsingClient.query) + .execute(ccClients.parsingClient) const dataset = await $rdf.dataset().import(await CONSTRUCT`?s ?p ?o` .FROM(expectedGraph as NamedNode) .WHERE`?s ?p ?o` - .execute(ccClients.streamClient.query)) + .execute(ccClients.streamClient)) - cubePointer = clownface({ dataset }) + cubePointer = $rdf.clownface({ dataset }) } before(resetData) diff --git a/cli/test/lib/cube.test.ts b/cli/test/lib/cube.test.ts index 678bcefa6..03b40037c 100644 --- a/cli/test/lib/cube.test.ts +++ b/cli/test/lib/cube.test.ts @@ -1,10 +1,11 @@ import { describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cc, cube } from '@cube-creator/core/namespace' import { rdf } from '@tpluscode/rdf-ns-builders' -import { getObservationSetId, injectRevision } from '../../lib/cube' -import { logger } from '../support/logger' +import type { Context } from 'barnard59-core' +import { getObservationSetId, injectRevision } from '../../lib/cube.js' +import { logger } from '../support/logger.js' describe('lib/cube', () => { describe('getObservationSetId', () => { @@ -69,7 +70,7 @@ describe('lib/cube', () => { ['namespace', 'http://example.com/cube/' + namespace], ['revision', 5], ]), - } + } as unknown as Context const quads = $rdf.dataset([ $rdf.quad( $rdf.namedNode('http://example.com/cube/' + term), @@ -82,7 +83,7 @@ describe('lib/cube', () => { const transformed = await $rdf.dataset().import(quads.pipe(transform)) // then - expect(transformed.toArray()[0].subject).to.deep.eq($rdf.namedNode('http://example.com/cube/' + expected)) + expect([...transformed][0].subject).to.deep.eq($rdf.namedNode('http://example.com/cube/' + expected)) }) }) }) diff --git a/cli/test/lib/job.test.ts b/cli/test/lib/job.test.ts index 97df9ab9f..1c67cd662 100644 --- a/cli/test/lib/job.test.ts +++ b/cli/test/lib/job.test.ts @@ -1,19 +1,15 @@ import { describe, before, beforeEach, it } from 'mocha' import { expect } from 'chai' -import { Hydra } from 'alcaeus/node' -import env from '@cube-creator/core/env' +import $rdf from '@cube-creator/env' +import env from '@cube-creator/core/env/node' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { Table } from '@rdfine/csvw' import type { VariableMap } from 'barnard59-core' -import * as Models from '@cube-creator/model' -import * as Csvw from '@rdfine/csvw' -import { logger } from '../support/logger' -import { setupEnv } from '../support/env' -import { TableIterator } from '../../lib/job' +import { logger } from '../support/logger.js' +import { setupEnv } from '../support/env.js' +import { TableIterator } from '../../lib/job.js' -Hydra.resources.factory.addMixin(...Object.values(Models)) -Hydra.resources.factory.addMixin(...Object.values(Csvw)) -Hydra.baseUri = env.API_CORE_BASE +$rdf.hydra.baseUri = env.API_CORE_BASE describe('lib/job', function () { this.timeout(360 * 1000) @@ -28,7 +24,6 @@ describe('lib/job', function () { beforeEach(() => { variables = new Map([ ['executionUrl', 'http://foo.runner/job/bar'], - ['apiClient', Hydra], ]) }) diff --git a/cli/test/lib/metadata.test.ts b/cli/test/lib/metadata.test.ts index fe977fa74..ffca010dd 100644 --- a/cli/test/lib/metadata.test.ts +++ b/cli/test/lib/metadata.test.ts @@ -2,20 +2,16 @@ import type { DatasetCore } from '@rdfjs/types' import { insertTestProject } from '@cube-creator/testing/lib/seedData' import { before, describe, it } from 'mocha' import getStream from 'get-stream' -import env from '@cube-creator/core/env' -import clownface, { GraphPointer } from 'clownface' +import type { Context, VariableMap, Variables } from 'barnard59-core' +import env from '@cube-creator/core/env/node' +import type { GraphPointer } from 'clownface' import { expect } from 'chai' -import { Context, VariableMap, Variables } from 'barnard59-core' -import { Hydra } from 'alcaeus/node' -import * as Models from '@cube-creator/model' import { toRdf } from 'rdf-literal' -import $rdf from 'rdf-ext' -import { sh } from '@tpluscode/rdf-ns-builders/strict' -import { setupEnv } from '../support/env' -import { loadCubeMetadata } from '../../lib/metadata' -import { logger } from '../support/logger' - -Hydra.resources.factory.addMixin(...Object.values(Models)) +import $rdf from '@zazuko/env' +import { sh } from '@tpluscode/rdf-ns-builders' +import { setupEnv } from '../support/env.js' +import { loadCubeMetadata } from '../../lib/metadata.js' +import { logger } from '../support/logger.js' describe('@cube-creator/cli/lib/metadata @SPARQL', function () { this.timeout(20000) @@ -31,14 +27,13 @@ describe('@cube-creator/cli/lib/metadata @SPARQL', function () { ['revision', 1], ['namespace', 'https://environment.ld.admin.ch/foen/'], ['cubeIdentifier', 'ubd/28'], - ['apiClient', Hydra], ['timestamp', toRdf(new Date())], ['metadata', $rdf.dataset()], ]) context = { variables, logger, - } + } as any }) describe('loadCubeMetadata', () => { @@ -53,7 +48,7 @@ describe('@cube-creator/cli/lib/metadata @SPARQL', function () { })) // then - const concept = clownface({ dataset }) + const concept = $rdf.clownface({ dataset }) .namedNode('https://environment.ld.admin.ch/foen/ubd/28/1/station/blBAS') expect(concept.out().terms).to.have.length(0) expect(concept.in().terms).to.have.length.greaterThan(0) @@ -71,7 +66,7 @@ describe('@cube-creator/cli/lib/metadata @SPARQL', function () { })) // then - const shOr = clownface({ dataset }) + const shOr = $rdf.clownface({ dataset }) .has(sh.path, $rdf.namedNode('https://environment.ld.admin.ch/foen/ubd/28/dimension/year')) .out(sh.or) .list()! diff --git a/cli/test/lib/output-mapper.test.ts b/cli/test/lib/output-mapper.test.ts index 87760ab48..68ecba99b 100644 --- a/cli/test/lib/output-mapper.test.ts +++ b/cli/test/lib/output-mapper.test.ts @@ -1,16 +1,13 @@ import { env } from 'process' import { before, describe, it } from 'mocha' import { expect } from 'chai' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { cube } from '@cube-creator/core/namespace' import { insertTestProject } from '@cube-creator/testing/lib/seedData' -import { Hydra } from 'alcaeus/node' -import * as Models from '@cube-creator/model' import { xsd } from '@tpluscode/rdf-ns-builders' -import { setupEnv } from '../support/env' -import { mapDimensions } from '../../lib/output-mapper' - -Hydra.resources.factory.addMixin(...Object.values(Models)) +import type { Context } from 'barnard59-core' +import { setupEnv } from '../support/env.js' +import { mapDimensions } from '../../lib/output-mapper.js' describe('lib/output-mapper', function () { this.timeout(20 * 1000) @@ -26,9 +23,8 @@ describe('lib/output-mapper', function () { const context = { variables: new Map([ ['jobUri', `${env.API_CORE_BASE}cube-project/ubd/csv-mapping/jobs/test-job`], - ['apiClient', Hydra], ]), - } + } as unknown as Context it('mapped value is replaced', async () => { // given @@ -88,7 +84,7 @@ describe('lib/output-mapper', function () { const mapped = await $rdf.dataset().import(quads.pipe(map)) // then - const quad = mapped.toArray()[0] + const quad = [...mapped][0] expect(quad.subject.value).to.deep.eq('observation') expect(quad.predicate.value).to.deep.eq(predicate.value) expect(quad.object.value).to.deep.eq('so2') @@ -110,7 +106,7 @@ describe('lib/output-mapper', function () { const mapped = await $rdf.dataset().import(quads.pipe(map)) // then - const quad = mapped.toArray()[0] + const quad = [...mapped][0] expect(quad.subject.value).to.deep.eq('observation') expect(quad.predicate.value).to.deep.eq(predicate.value) expect(quad.object.value).to.deep.eq('abc') @@ -132,7 +128,7 @@ describe('lib/output-mapper', function () { const mapped = await $rdf.dataset().import(quads.pipe(map)) // then - const quad = mapped.toArray()[0] + const quad = [...mapped][0] expect(quad.subject.value).to.deep.eq('observation') expect(quad.predicate.value).to.deep.eq('https://environment.ld.admin.ch/foen/ubd/28/dimension/year') expect(quad.object.value).to.deep.eq('2020') diff --git a/cli/test/support/env.ts b/cli/test/support/env.ts index deba51a18..d598518b3 100644 --- a/cli/test/support/env.ts +++ b/cli/test/support/env.ts @@ -1,8 +1,9 @@ import path from 'path' import dotenv from 'dotenv' -import { Hydra } from 'alcaeus/node' -import { setupAuthentication } from '../../lib/auth' -import { logger } from './logger' +import { setupAuthentication } from '../../lib/auth.js' +import { logger } from './logger.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) export function setupEnv() { dotenv.config({ @@ -15,5 +16,5 @@ export function setupEnv() { path: path.resolve(__dirname, '../../../.local.env'), }) - setupAuthentication({}, logger, Hydra) + setupAuthentication({}, logger) } diff --git a/mocha-setup.js b/mocha-setup.cjs similarity index 71% rename from mocha-setup.js rename to mocha-setup.cjs index ba53e89c7..8a21ec9cf 100644 --- a/mocha-setup.js +++ b/mocha-setup.cjs @@ -1,9 +1,4 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -require('@babel/register')({ - configFile: './babel.config.json', - extensions: ['.js', '.jsx', '.ts', '.tsx'], -}) - require('dotenv').config({ path: require('path').resolve(__dirname, '.local.env') }) @@ -17,6 +12,6 @@ var chaiAsPromised = require('chai-as-promised') chai.use(chaiAsPromised) chai.use(quantifiers) -require('./packages/testing/lib/chaiShapeMatcher') +import('./packages/testing/lib/chaiShapeMatcher.js') chai.use(sinonChai) diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..e8875ca78 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,30699 @@ +{ + "name": "@zazuko/cube-creator", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@zazuko/cube-creator", + "hasInstallScript": true, + "workspaces": [ + "cli", + "ui", + "apis/*", + "packages/*" + ], + "dependencies": { + "patch-package": "^6.5.0", + "postinstall-postinstall": "^2.1.0" + }, + "devDependencies": { + "@changesets/cli": "^2.27.5", + "@tpluscode/eslint-config": "^0.4.5", + "@types/readable-stream": "^4.0.11", + "@types/webpack-env": "^1.15.3", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", + "c8": "^7.13.0", + "chai-quantifiers": "^1.0.13", + "dotenv": "^16.0.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-vue": "^9.8.0", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", + "npm-run-all": "^4.1.5", + "ts-node": "^10.9.2", + "typescript": "~4.5.0", + "winston": "^3.3.3" + } + }, + "apis/core": { + "name": "@cube-creator/core-api", + "version": "2.3.4", + "dependencies": { + "@cube-creator/api-errors": "0.0.6", + "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", + "@cube-creator/express": "0.0.0", + "@cube-creator/model": "0.1.27", + "@cube-creator/shared-dimensions-api": "3.0.4", + "@hydrofoil/labyrinth": "^0.4.5", + "@kopflos-cms/core": "^0.2.0", + "@rdfine/csvw": "^0.8.5", + "@rdfine/hydra": "^0.10.5", + "@rdfine/prov": "^0.3.5", + "@rdfine/schema": "^0.8.5", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs/express-handler": "^2.0.0", + "@sentry/node": "^6.2.0", + "@sentry/tracing": "^6.2.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@uppy/companion": "^4.1.1", + "@zazuko/env": "^2.0.6", + "@zazuko/prefixes": "^2", + "@zazuko/rdf-utils-fs": "^3.3.1", + "aws-sdk": "^2.1361.0", + "body-parser": "^1.20.2", + "commander": "^6.1.0", + "content-disposition": "^0.5.3", + "cors": "^2.8.5", + "csv-parse": "^5", + "csv-sniffer": "^0.1.1", + "debug": "^4.1.1", + "express": "^4.17.1", + "express-conditional-middleware": "^2.1.1", + "express-jwt": "^8.3.0", + "express-jwt-permissions": "^1.3.7", + "express-rdf-request": "^2.0.1", + "get-stream": "^6.0.1", + "http-errors": "^2.0.0", + "hydra-box-middleware-shacl": "1.1.0", + "is-graph-pointer": "^2.1.0", + "is-stream": "^2", + "jwks-rsa": "^3.0.0", + "merge2": "^1.4.1", + "middleware-async": "^1.2.7", + "nanoid": "^5.0.6", + "once": "^1.4.0", + "parse-prefer-header": "^1.0.0", + "rdf-cube-view-query": "^2.1.1", + "rdf-dataset-ext": "^1.0.0", + "rdf-literal": "^1.3.2", + "set-link": "^1.0.0", + "slug": "^5.0.0", + "sparql-http-client": "^3.0.0", + "string-to-stream": "^3.0.1", + "through2": "^4.0.2", + "url-slugify": "^1.0.6" + }, + "devDependencies": { + "@babel/preset-env": "^7.11.5", + "@babel/preset-typescript": "^7.10.4", + "@babel/register": "^7.11.5", + "@cube-creator/testing": "^0.1.21", + "@rdfjs/types": "^1.1.0", + "@types/absolute-url": "^1.2.0", + "@types/chai": "^4.2.13", + "@types/chai-as-promised": "^7.1.3", + "@types/chai-snapshot-matcher": "^1.0.0", + "@types/commander": "^2.12.2", + "@types/content-disposition": "^0.5.3", + "@types/cors": "^2.8.7", + "@types/debug": "^4.1.5", + "@types/express": "^4.17.8", + "@types/express-conditional-middleware": "^2.1.0", + "@types/http-errors": "^1.8.0", + "@types/merge-stream": "^1.1.2", + "@types/merge2": "^1.3.0", + "@types/mocha": "^10", + "@types/once": "^1.4.4", + "@types/parse-prefer-header": "^1.0.1", + "@types/rdf-transform-triple-to-quad": "^2.0.5", + "@types/rdfjs__express-handler": "^2.0.6", + "@types/readable-stream": "^2.3.9", + "@types/set-link": "^1.0.1", + "@types/sinon": "^10.0.0", + "@types/sinon-chai": "^3.2.12", + "@types/slug": "^5.0.0", + "@types/sparql-http-client": "^3.0.2", + "@types/sparqljs": "^3.1.3", + "@types/supertest": "^2.0.10", + "@types/through2": "^2.0.36", + "@types/url-slugify": "^1.0.0", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "chai-snapshot-matcher": "^2.0.0", + "esmock": "^2.6.5", + "mocha": "^10.2.0", + "rdf-literal": "^1.3.0", + "sinon": "^17.0.1", + "sinon-chai": "^3.5.0", + "sparqljs": "^3.5.1", + "supertest": "^6.3.3" + } + }, + "apis/core/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "apis/core/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "apis/core/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "apis/core/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "apis/core/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "apis/core/node_modules/@tpluscode/sparql-builder": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/term-set": "^2", + "@rdfjs/types": "*", + "@tpluscode/rdf-string": "^1.3.0", + "@types/sparql-http-client": "^3.0.0", + "anylogger": "^1.0.11" + }, + "peerDependencies": { + "sparql-http-client": "^3.0.0" + } + }, + "apis/core/node_modules/@types/rdfjs__environment": { + "version": "0.1.10", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@types/node": "*", + "@types/rdfjs__data-model": "*", + "@types/rdfjs__dataset": "*", + "@types/rdfjs__namespace": "*", + "@types/rdfjs__sink-map": "*", + "@types/rdfjs__term-map": "*", + "@types/rdfjs__term-set": "*" + } + }, + "apis/core/node_modules/@types/readable-stream": { + "version": "2.3.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "apis/core/node_modules/@types/sparql-http-client": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "apis/core/node_modules/clownface": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, + "apis/core/node_modules/commander": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "apis/core/node_modules/csv-parse": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.6.tgz", + "integrity": "sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==" + }, + "apis/core/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "apis/core/node_modules/express-rdf-request": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/environment": "^0.1.2", + "@rdfjs/express-handler": "^2.0.0", + "@rdfjs/namespace": "^2.0.0", + "@types/clownface": "^2", + "@types/rdfjs__environment": "^0.1.7", + "absolute-url": "^1.2.2", + "clownface": ">=2", + "express": "^4.17.1", + "is-relative-url": "^4.0.0", + "middleware-async": "^1.3.1", + "once": "^1.4.0" + } + }, + "apis/core/node_modules/nanoid": { + "version": "5.0.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "apis/core/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "apis/core/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "apis/core/node_modules/sparql-http-client/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "apis/errors": { + "name": "@cube-creator/api-errors", + "version": "0.0.6", + "dependencies": { + "@cube-creator/core": "1.0.0", + "http-errors": "^2.0.0", + "http-problem-details": "^0.1.5", + "http-problem-details-mapper": "^0.1.7" + } + }, + "apis/shared-dimensions": { + "name": "@cube-creator/shared-dimensions-api", + "version": "3.0.4", + "dependencies": { + "@cube-creator/api-errors": "0.0.6", + "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", + "@cube-creator/express": "0.0.0", + "@hydrofoil/labyrinth": "^0.4.5", + "@hydrofoil/shape-to-query": "^0.12", + "@rdfine/hydra": "^0.10.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs/formats": "^4", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@zazuko/env-node": "^2.0.6", + "@zazuko/rdf-utils-fs": "^3.3.1", + "camouflage-rewrite": "^1.2.0", + "cors": "^2.8.5", + "debug": "^4.3.1", + "express": "^4.17.1", + "express-conditional-middleware": "^2.1.1", + "http-errors": "^2.0.0", + "http-status": "^1.5.0", + "hydra-box-middleware-shacl": "1.1.0", + "is-graph-pointer": "^2.1.0", + "middleware-async": "^1.2.7", + "nanoid": "^5.0.6", + "onetime": "^6.0.0", + "parse-prefer-header": "^1.0.0", + "rdf-dataset-ext": "^1.1.0", + "rdf-literal": "^1.2.0", + "rdf-loader-code": "^0.3.3", + "rdf-validate-shacl": "^0.5.3", + "slugify": "^1.6.5", + "sparql-http-client": "^3.0.0", + "through2": "^2.0.5" + }, + "devDependencies": { + "@cube-creator/testing": "^0.1.21", + "@types/camouflage-rewrite": "^1.2.0", + "@types/parse-prefer-header": "^1.0.0", + "@types/sinon": "^17.0.3", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "mocha": "^10.2.0", + "sinon": "^17.0.1" + } + }, + "apis/shared-dimensions/node_modules/@hydrofoil/shape-to-query": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@hydrofoil/shape-to-query/-/shape-to-query-0.12.0.tgz", + "integrity": "sha512-2ZljN+03GpRQAnMS7WOMADCkqJtTCEbOblHD0dL+6p968ZZC5eVzECmgpZnVli6/escZS/kWeWbH/7QZBiMglQ==", + "dependencies": { + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@tpluscode/rdf-string": "^1.3.1", + "@tpluscode/sparql-builder": "^2.0.3", + "@vocabulary/dash": "^1.0.4", + "@vocabulary/dash-sparql": "^1.0.4", + "@vocabulary/sh": "^1.1.5", + "@zazuko/env": "^2.2.0", + "@zazuko/prefixes": ">=2", + "clownface-shacl-path": "^2.1.1", + "is-graph-pointer": "^2.0.0", + "rdf-literal": "^1.3.2" + } + }, + "apis/shared-dimensions/node_modules/@hydrofoil/shape-to-query/node_modules/clownface-shacl-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clownface-shacl-path/-/clownface-shacl-path-2.1.1.tgz", + "integrity": "sha512-UqMETJtsjlHzp0aTBOja3I9NE6mR3E4s19FcTvYo2xJ80mxLNV+zJ5XhhdR1+lxttRfe2SNdPa9hUj1NsjOcOw==", + "dependencies": { + "@rdfjs/term-set": "^2.0.1", + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@tpluscode/rdf-string": "^1.3.1" + }, + "peerDependencies": { + "clownface": "1 - 2" + } + }, + "apis/shared-dimensions/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "apis/shared-dimensions/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "apis/shared-dimensions/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "apis/shared-dimensions/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "apis/shared-dimensions/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "apis/shared-dimensions/node_modules/@tpluscode/sparql-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tpluscode/sparql-builder/-/sparql-builder-2.0.3.tgz", + "integrity": "sha512-VoV2Ifv8QSaj7uXagPkMzcUxEEhJbn3S+etz82O6fTUvrrn3ndwB/LgNfeSwc2NxPj3kBkyCb5EVeaD7YawOjw==", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/term-set": "^2", + "@rdfjs/types": "*", + "@tpluscode/rdf-string": "^1.3.0", + "@types/sparql-http-client": "^3.0.0", + "anylogger": "^1.0.11" + }, + "peerDependencies": { + "sparql-http-client": "^3.0.0" + } + }, + "apis/shared-dimensions/node_modules/@types/sinon": { + "version": "17.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "apis/shared-dimensions/node_modules/@types/sparql-http-client": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "apis/shared-dimensions/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "apis/shared-dimensions/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "apis/shared-dimensions/node_modules/nanoid": { + "version": "5.0.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "apis/shared-dimensions/node_modules/rdf-loader-code": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/rdf-loader-code/-/rdf-loader-code-0.3.3.tgz", + "integrity": "sha512-5uLQOLn2YrPO9YxPpMqVqtX3SmCALH+97u2Tj8NA33baYgMMczam6G2EOm0kYRbIk3n5wgBCs2Z4Y6jkgPwRMg==", + "dependencies": { + "@rdfjs/namespace": "^1.1.0", + "clownface": "^1.3.0" + } + }, + "apis/shared-dimensions/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "apis/shared-dimensions/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "apis/shared-dimensions/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "apis/shared-dimensions/node_modules/through2": { + "version": "2.0.5", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "apis/shared-dimensions/node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "cli": { + "name": "@cube-creator/cli", + "version": "3.0.0", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", + "@cube-creator/model": "0.1.27", + "@opentelemetry/api": "^1.4.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.35.1", + "@opentelemetry/instrumentation-http": "^0.35.1", + "@opentelemetry/instrumentation-winston": "^0.31.1", + "@opentelemetry/metrics": "^0.24.0", + "@opentelemetry/resources": "^0.26.0", + "@opentelemetry/sdk-metrics": "^1.9.1", + "@opentelemetry/sdk-node": "^0.35.1", + "@opentelemetry/semantic-conventions": "^0.26.0", + "@opentelemetry/tracing": "^0.24.0", + "@rdfine/csvw": "^0.8.5", + "@rdfine/prov": "^0.3.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@sentry/node": "^6.2.0", + "@sentry/tracing": "^6.2.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@zazuko/env": "^2.0.6", + "@zazuko/prefixes": "^2.2.0", + "@zazuko/rdf-parser-csvw": "^0.17", + "@zazuko/rdf-utils-fs": "^3.3.1", + "@zazuko/s": "^1.0.1", + "@zazuko/shacl-playground": "^2.0.0", + "alcaeus": "^3.0.1", + "aws-sdk": "^2.559.0", + "barnard59": "^5.0.4", + "barnard59-base": "^2.4.2", + "barnard59-cube": "^1.4.8", + "barnard59-env": "^1.2.6", + "barnard59-formats": "^2.1.0", + "barnard59-graph-store": "^6.0.0", + "barnard59-http": "^2.0.0", + "barnard59-rdf": "^3.4.0", + "barnard59-shacl": "^1.4.9", + "body-parser": "^1.19.0", + "commander": "^4.1.1", + "cors": "^2.8.5", + "duplex-to": "^1.0.0", + "express": "^4.17.1", + "get-stream": "^5.1.0", + "is-stream": "^2.0.0", + "iso8601-duration": "^1.3.0", + "merge2": "^1.4.1", + "middleware-async": "^1.2.7", + "nanoid": "^5.0.6", + "nanoid-dictionary": "^4.3.0", + "node-fetch": "^3.3.2", + "null-writable": "^1.0.5", + "once": "^1.4.0", + "rdf-literal": "^1.3.2", + "rdf-stream-to-dataset-stream": "^1.0.0", + "rdf-validate-datatype": "^0.2.1", + "readable-stream": "^4.5.2", + "sparql-http-client": "^3.0.0", + "string-to-stream": "^3.0.1", + "tempy": "^1", + "through2": "^4.0.2", + "through2-reduce": "1.1.1", + "winston": "^3.3.3" + }, + "devDependencies": { + "@cube-creator/testing": "^0.1.21", + "@rdfjs/types": "^1.1.0", + "@tpluscode/sparql-builder": "^2.0.2", + "@types/body-parser": "^1.19.0", + "@types/chai": "^4.2.13", + "@types/chai-as-promised": "^7.1.3", + "@types/chai-quantifiers": "^1.0.0", + "@types/clownface": "^2.0.7", + "@types/cors": "^2.8.7", + "@types/debug": "^4.1.5", + "@types/duplex-to": "^1.0.0", + "@types/express": "^4.17.9", + "@types/merge2": "^1.3.0", + "@types/mocha": "^10", + "@types/nanoid-dictionary": "^4.2.0", + "@types/once": "^1.4.0", + "@types/rdf-utils-fs": "^2.1.0", + "@types/rdfjs__formats": "^4.0.1", + "@types/readable-stream": "^2.3.11", + "@types/sinon": "^17.0.3", + "@types/sinon-chai": "^3.2.12", + "@types/sparql-http-client": "^3.0.2", + "@types/through2": "^2.0.36", + "barnard59-core": "^6.0.0", + "chai": "^4.3.4", + "dotenv": "^16.0.0", + "dotenv-cli": "^5.0.0", + "mocha": "^10.2.0", + "sinon": "^17.0.1", + "sinon-chai": "^3.7.0" + } + }, + "cli/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "cli/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "cli/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "cli/node_modules/@rdfjs/parser-n3/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "cli/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "cli/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "cli/node_modules/@tpluscode/sparql-builder": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/term-set": "^2", + "@rdfjs/types": "*", + "@tpluscode/rdf-string": "^1.3.0", + "@types/sparql-http-client": "^3.0.0", + "anylogger": "^1.0.11" + }, + "peerDependencies": { + "sparql-http-client": "^3.0.0" + } + }, + "cli/node_modules/@types/readable-stream": { + "version": "2.3.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "cli/node_modules/@types/sinon": { + "version": "17.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "cli/node_modules/@types/sparql-http-client": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "cli/node_modules/@zazuko/s": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@changesets/cli": "^2.26.0" + }, + "bin": { + "zazuko-s": "bin/zazuko-s.mjs" + } + }, + "cli/node_modules/commander": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "cli/node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "cli/node_modules/nanoid": { + "version": "5.0.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "cli/node_modules/node-fetch": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "cli/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "cli/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "cli/node_modules/sparql-http-client/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/crc32c": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32c/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-crypto/util": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "3.0.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.523.0", + "@aws-sdk/core": "3.523.0", + "@aws-sdk/credential-provider-node": "3.523.0", + "@aws-sdk/middleware-bucket-endpoint": "3.523.0", + "@aws-sdk/middleware-expect-continue": "3.523.0", + "@aws-sdk/middleware-flexible-checksums": "3.523.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-location-constraint": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-sdk-s3": "3.523.0", + "@aws-sdk/middleware-signing": "3.523.0", + "@aws-sdk/middleware-ssec": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.523.0", + "@aws-sdk/region-config-resolver": "3.523.0", + "@aws-sdk/signature-v4-multi-region": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.523.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.523.0", + "@aws-sdk/xml-builder": "3.523.0", + "@smithy/config-resolver": "^2.1.3", + "@smithy/core": "^1.3.4", + "@smithy/eventstream-serde-browser": "^2.1.3", + "@smithy/eventstream-serde-config-resolver": "^2.1.3", + "@smithy/eventstream-serde-node": "^2.1.3", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-blob-browser": "^2.1.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/hash-stream-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/md5-js": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/middleware-retry": "^2.1.3", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.3", + "@smithy/util-defaults-mode-node": "^2.2.2", + "@smithy/util-endpoints": "^1.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-stream": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "@smithy/util-waiter": "^2.1.3", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.523.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.523.0", + "@aws-sdk/region-config-resolver": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.523.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.523.0", + "@smithy/config-resolver": "^2.1.3", + "@smithy/core": "^1.3.4", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/middleware-retry": "^2.1.3", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.3", + "@smithy/util-defaults-mode-node": "^2.2.2", + "@smithy/util-endpoints": "^1.1.3", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.523.0", + "@aws-sdk/core": "3.523.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.523.0", + "@aws-sdk/region-config-resolver": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.523.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.523.0", + "@smithy/config-resolver": "^2.1.3", + "@smithy/core": "^1.3.4", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/middleware-retry": "^2.1.3", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.3", + "@smithy/util-defaults-mode-node": "^2.2.2", + "@smithy/util-endpoints": "^1.1.3", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.523.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.523.0", + "@aws-sdk/middleware-host-header": "3.523.0", + "@aws-sdk/middleware-logger": "3.523.0", + "@aws-sdk/middleware-recursion-detection": "3.523.0", + "@aws-sdk/middleware-user-agent": "3.523.0", + "@aws-sdk/region-config-resolver": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.523.0", + "@aws-sdk/util-user-agent-browser": "3.523.0", + "@aws-sdk/util-user-agent-node": "3.523.0", + "@smithy/config-resolver": "^2.1.3", + "@smithy/core": "^1.3.4", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/hash-node": "^2.1.3", + "@smithy/invalid-dependency": "^2.1.3", + "@smithy/middleware-content-length": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/middleware-retry": "^2.1.3", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.3", + "@smithy/util-defaults-mode-node": "^2.2.2", + "@smithy/util-endpoints": "^1.1.3", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.523.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^1.3.4", + "@smithy/protocol-http": "^3.2.1", + "@smithy/signature-v4": "^2.1.3", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/property-provider": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sts": "3.523.0", + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.523.0", + "@aws-sdk/credential-provider-web-identity": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.523.0", + "@aws-sdk/credential-provider-http": "3.523.0", + "@aws-sdk/credential-provider-ini": "3.523.0", + "@aws-sdk/credential-provider-process": "3.523.0", + "@aws-sdk/credential-provider-sso": "3.523.0", + "@aws-sdk/credential-provider-web-identity": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@smithy/credential-provider-imds": "^2.2.3", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.523.0", + "@aws-sdk/token-providers": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sts": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/lib-storage": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/smithy-client": "^2.4.1", + "buffer": "5.6.0", + "events": "3.3.0", + "stream-browserify": "3.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-s3": "^3.0.0" + } + }, + "node_modules/@aws-sdk/lib-storage/node_modules/buffer": { + "version": "5.6.0", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-arn-parser": "3.495.0", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@aws-crypto/crc32c": "3.0.0", + "@aws-sdk/types": "3.523.0", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-arn-parser": "3.495.0", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/signature-v4": "^2.1.3", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/signature-v4": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-endpoints": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/s3-presigned-post": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-s3": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-format-url": "3.523.0", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/signature-v4": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@aws-sdk/util-format-url": "3.523.0", + "@smithy/middleware-endpoint": "^2.4.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@smithy/protocol-http": "^3.2.1", + "@smithy/signature-v4": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.523.0", + "@aws-sdk/types": "3.523.0", + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.495.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "@smithy/util-endpoints": "^1.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.495.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.523.0", + "@smithy/node-config-provider": "^2.2.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.523.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.0", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.23.7", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@bergos/jsonparse": { + "version": "1.4.1", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@captaincodeman/rdx": { + "version": "1.0.0-rc.9", + "license": "ISC", + "dependencies": { + "@captaincodeman/router": "^1.0.3" + } + }, + "node_modules/@captaincodeman/router": { + "version": "1.0.3", + "license": "ISC" + }, + "node_modules/@changesets/apply-release-plan": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.3.tgz", + "integrity": "sha512-klL6LCdmfbEe9oyfLxnidIf/stFXmrbFO/3gT5LU5pcyoZytzJe4gWpTBx3BPmyNPl16dZ1xrkcW7b98e3tYkA==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/config": "^3.0.1", + "@changesets/get-version-range-type": "^0.4.0", + "@changesets/git": "^3.0.0", + "@changesets/should-skip-package": "^0.1.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/assemble-release-plan": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.2.tgz", + "integrity": "sha512-n9/Tdq+ze+iUtjmq0mZO3pEhJTKkku9hUxtUadW30jlN7kONqJG3O6ALeXrmc6gsi/nvoCuKjqEJ68Hk8RbMTQ==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.0", + "@changesets/should-skip-package": "^0.1.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/changelog-git": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0" + } + }, + "node_modules/@changesets/cli": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.27.5.tgz", + "integrity": "sha512-UVppOvzCjjylBenFcwcZNG5IaZ8jsIaEVraV/pbXgukYNb0Oqa0d8UWb0LkYzA1Bf1HmUrOfccFcRLheRuA7pA==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/apply-release-plan": "^7.0.3", + "@changesets/assemble-release-plan": "^6.0.2", + "@changesets/changelog-git": "^0.2.0", + "@changesets/config": "^3.0.1", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.0", + "@changesets/get-release-plan": "^4.0.2", + "@changesets/git": "^3.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/pre": "^2.0.0", + "@changesets/read": "^0.6.0", + "@changesets/should-skip-package": "^0.1.0", + "@changesets/types": "^6.0.0", + "@changesets/write": "^0.3.1", + "@manypkg/get-packages": "^1.1.3", + "@types/semver": "^7.5.0", + "ansi-colors": "^4.1.3", + "chalk": "^2.1.0", + "ci-info": "^3.7.0", + "enquirer": "^2.3.0", + "external-editor": "^3.1.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "meow": "^6.0.0", + "outdent": "^0.5.0", + "p-limit": "^2.2.0", + "preferred-pm": "^3.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^2.0.0", + "term-size": "^2.1.0", + "tty-table": "^4.1.5" + }, + "bin": { + "changeset": "bin.js" + } + }, + "node_modules/@changesets/config": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.0.1.tgz", + "integrity": "sha512-nCr8pOemUjvGJ8aUu8TYVjqnUL+++bFOQHBVmtNbLvKzIDkN/uiP/Z4RKmr7NNaiujIURHySDEGFPftR4GbTUA==", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.0", + "@changesets/logger": "^0.1.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.2" + } + }, + "node_modules/@changesets/errors": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", + "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", + "dependencies": { + "extendable-error": "^0.1.5" + } + }, + "node_modules/@changesets/get-dependents-graph": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.0.tgz", + "integrity": "sha512-QOt6pQq9RVXKGHPVvyKimJDYJumx7p4DO5MO9AhRJYgAPgv0emhNqAqqysSVKHBm4sxKlGN4S1zXOIb5yCFuhQ==", + "dependencies": { + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/get-release-plan": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.2.tgz", + "integrity": "sha512-rOalz7nMuMV2vyeP7KBeAhqEB7FM2GFPO5RQSoOoUKKH9L6wW3QyPA2K+/rG9kBrWl2HckPVES73/AuwPvbH3w==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/assemble-release-plan": "^6.0.2", + "@changesets/config": "^3.0.1", + "@changesets/pre": "^2.0.0", + "@changesets/read": "^0.6.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/get-version-range-type": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", + "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==" + }, + "node_modules/@changesets/git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.0.tgz", + "integrity": "sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.2", + "spawndamnit": "^2.0.0" + } + }, + "node_modules/@changesets/logger": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.0.tgz", + "integrity": "sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==", + "dependencies": { + "chalk": "^2.1.0" + } + }, + "node_modules/@changesets/parse": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.0.tgz", + "integrity": "sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==", + "dependencies": { + "@changesets/types": "^6.0.0", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@changesets/pre": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.0.tgz", + "integrity": "sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" + } + }, + "node_modules/@changesets/read": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.0.tgz", + "integrity": "sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/git": "^3.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/parse": "^0.4.0", + "@changesets/types": "^6.0.0", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0" + } + }, + "node_modules/@changesets/should-skip-package": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.0.tgz", + "integrity": "sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/types": { + "version": "6.0.0", + "license": "MIT" + }, + "node_modules/@changesets/write": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.3.1.tgz", + "integrity": "sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/types": "^6.0.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "prettier": "^2.7.1" + } + }, + "node_modules/@ckpack/vue-color": { + "version": "1.5.0", + "dependencies": { + "@ctrl/tinycolor": "^3.6.0", + "material-colors": "^1.2.6" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@cube-creator/api-errors": { + "resolved": "apis/errors", + "link": true + }, + "node_modules/@cube-creator/cli": { + "resolved": "cli", + "link": true + }, + "node_modules/@cube-creator/core": { + "resolved": "packages/core", + "link": true + }, + "node_modules/@cube-creator/core-api": { + "resolved": "apis/core", + "link": true + }, + "node_modules/@cube-creator/env": { + "resolved": "packages/env", + "link": true + }, + "node_modules/@cube-creator/express": { + "resolved": "packages/express", + "link": true + }, + "node_modules/@cube-creator/model": { + "resolved": "packages/model", + "link": true + }, + "node_modules/@cube-creator/shared-dimensions-api": { + "resolved": "apis/shared-dimensions", + "link": true + }, + "node_modules/@cube-creator/testing": { + "resolved": "packages/testing", + "link": true + }, + "node_modules/@cube-creator/ui": { + "resolved": "ui", + "link": true + }, + "node_modules/@cypress/request": { + "version": "2.88.12", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "^4.1.3", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/request/node_modules/form-data": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.10.4", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@cypress/webpack-preprocessor": { + "version": "5.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "3.7.1", + "debug": "^4.3.4", + "lodash": "^4.17.20" + }, + "peerDependencies": { + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.2 || ^9", + "webpack": "^4 || ^5" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "license": "MIT", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@digitalbazaar/http-client": { + "version": "3.4.1", + "license": "BSD-3-Clause", + "dependencies": { + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild-plugins/node-globals-polyfill": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz", + "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==", + "dev": true, + "peerDependencies": { + "esbuild": "*" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fcostarodrigo/walk": { + "version": "5.0.1", + "license": "MIT" + }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.3", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "5.15.4", + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.6", + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@graphy/content.nq.read": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.data.factory": "^4.3.7", + "@graphy/core.iso.stream": "^4.3.7" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/content.trig.read": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.data.factory": "^4.3.7", + "@graphy/core.iso.stream": "^4.3.7", + "uri-js": "^4.4.0" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/content.trig.write": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.class.writable": "^4.3.7", + "@graphy/core.data.factory": "^4.3.7", + "big-integer": "^1.6.48" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/content.ttl.write": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.class.writable": "^4.3.7", + "@graphy/core.data.factory": "^4.3.7", + "big-integer": "^1.6.48" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/content.xml.scribe": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.class.writable": "^4.3.7", + "@graphy/core.data.factory": "^4.3.7" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/core.class.scribable": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.data.factory": "^4.3.7", + "@graphy/core.iso.stream": "^4.3.7" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/core.class.writable": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "@graphy/core.class.scribable": "^4.3.7", + "@graphy/core.data.factory": "^4.3.7" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/core.data.factory": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "uri-js": "^4.4.0" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/core.iso.stream": { + "version": "4.3.7", + "license": "ISC", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8.4.0" + } + }, + "node_modules/@graphy/core.iso.stream/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.10.1", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.10", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader/node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs": { + "version": "17.7.2", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@he-tree/vue3": { + "version": "1.2.9", + "dependencies": { + "@babel/runtime": "^7.7.7", + "draggable-helper": "^6.0.5", + "helper-js": "^2.0.7", + "tslib": "^2" + }, + "peerDependencies": { + "vue": "^3" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hydrofoil/labyrinth": { + "version": "0.4.5", + "dependencies": { + "@fcostarodrigo/walk": "^5.0.0", + "@hydrofoil/vocabularies": "^2.1.1", + "@rdfine/hydra": "^0.10.5", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.3.0", + "@tpluscode/sparql-builder": "^2.0.2", + "cors": "^2.8.5", + "debug": "^4.1.1", + "express": "^4.19.2", + "express-http-problem-details": "^0.2.1", + "express-jwt-permissions": "^1.3.3", + "http-errors": "^2.0.0", + "http-problem-details": "^0.1.5", + "http-problem-details-mapper": "^0.1.7", + "is-graph-pointer": "^2.1.0", + "middleware-async": "^1.4.0", + "onetime": "^7.0.0", + "rdf-dataset-ext": "^1.1.0", + "rdf-loader-code": "^2.2.0", + "rdf-loaders-registry": "^1.0.3", + "sparql-http-client": "^3.0.0" + }, + "peerDependencies": { + "@kopflos-cms/core": "^0.2.0" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@tpluscode/sparql-builder": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/term-set": "^2", + "@rdfjs/types": "*", + "@tpluscode/rdf-string": "^1.3.0", + "@types/sparql-http-client": "^3.0.0", + "anylogger": "^1.0.11" + }, + "peerDependencies": { + "sparql-http-client": "^3.0.0" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/@types/sparql-http-client": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/cookie": { + "version": "0.6.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@hydrofoil/labyrinth/node_modules/express": { + "version": "4.19.2", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/express/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@hydrofoil/labyrinth/node_modules/onetime": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "node_modules/@hydrofoil/labyrinth/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/@hydrofoil/labyrinth/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/@hydrofoil/shape-to-query": { + "version": "0.9.4", + "dependencies": { + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@tpluscode/rdf-string": "^1.0.3", + "@tpluscode/sparql-builder": "^1.1.0", + "@vocabulary/dash": "^1.0.1", + "@vocabulary/dash-sparql": "^1.0.1", + "@vocabulary/sh": "^1.0.1", + "@zazuko/env": "^2.0.3", + "@zazuko/prefixes": ">=2", + "clownface-shacl-path": "^2.0.1", + "is-graph-pointer": "^2.0.0", + "rdf-literal": "^1.3.1" + } + }, + "node_modules/@hydrofoil/shaperone-core": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@hydrofoil/shaperone-core/-/shaperone-core-0.12.1.tgz", + "integrity": "sha512-F0oP3ODTFvbmS8zsvya9zSaQ7xn8VwPvqW8xibQQjF4s/3aTwH5ynbFXJW+xw2U9EJr9wwyaQOeF+R28kvOYlA==", + "dependencies": { + "@captaincodeman/rdx": "^1.0.0-rc.8", + "@rdfine/dash": "^0.4.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/lit-helpers": "^0.3.8", + "@rdfjs/namespace": "^2.0.1", + "@rdfjs/term-map": "^2.0.1", + "@rdfjs/types": "^1.1.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.9", + "@vocabulary/dash": "^1.0.3", + "@zazuko/env-core": "^1.1.1", + "@zazuko/prefixes": "^2.2.0", + "clownface-shacl-path": "^2.1.0", + "immer": "^9.0.15", + "is-graph-pointer": "^2.1.0", + "nanoid": "^5.0.6" + } + }, + "node_modules/@hydrofoil/shaperone-core/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@hydrofoil/shaperone-core/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@hydrofoil/shaperone-core/node_modules/nanoid": { + "version": "5.0.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/@hydrofoil/shaperone-hydra": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@hydrofoil/shaperone-hydra/-/shaperone-hydra-0.4.1.tgz", + "integrity": "sha512-7agShrRIEyGVnyRrbGnwthXUjuAAJpbDadadKNu5ntlS8yn+f86FNYbvMM65TTApQuW0HgOXDjrw6VEQEQxS4A==", + "dependencies": { + "@hydrofoil/shaperone-core": "^0.12.1", + "@rdfine/hydra": "^0.10.5", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.9", + "alcaeus": "^3.0.0", + "clownface-shacl-path": "^2.1.0" + } + }, + "node_modules/@hydrofoil/shaperone-rdf-validate-shacl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@hydrofoil/shaperone-rdf-validate-shacl/-/shaperone-rdf-validate-shacl-1.1.1.tgz", + "integrity": "sha512-imDQnVGbmTtBWL6soAAsHPT24vX5YJRDJAwYrXY0Gw3ZpQatSPUr5kj6kEWz1ki3J3zkUKFXFdRcnrPOt07OCg==", + "dependencies": { + "rdf-validate-shacl": "^0.5.3" + } + }, + "node_modules/@hydrofoil/shaperone-wc": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@hydrofoil/shaperone-wc/-/shaperone-wc-0.8.1.tgz", + "integrity": "sha512-Woh5WiUCSDtbjGii/uX342QINm7iVxZDiVtDEL47Ze/hVAoAIg7caYlE/VafcuwvTgFth54K/tqisXaD2MJEHA==", + "dependencies": { + "@captaincodeman/rdx": "^1.0.0-rc.8", + "@hydrofoil/shaperone-core": "^0.12.1", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/lit-helpers": "^0.3.7", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.9", + "concat-merge": "^1.0.3", + "lit": "^2.0.0", + "onetime": "^5.1.2" + } + }, + "node_modules/@hydrofoil/shaperone-wc-shoelace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@hydrofoil/shaperone-wc-shoelace/-/shaperone-wc-shoelace-0.4.1.tgz", + "integrity": "sha512-PeI4GZjbUfeZ1Unh/yB3fRatMYmfdEFUTQTn5Y2zkjUpGHsvaQ5lIp0edOHDDzLbTKVQp+PmCMeZ1dhTvKGIMw==", + "dependencies": { + "@hydrofoil/shaperone-core": "^0.12.1", + "@hydrofoil/shaperone-wc": "^0.8.1", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/lit-helpers": "^0.3.7", + "@shoelace-style/shoelace": "^2.15.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "is-graph-pointer": "^2.1.0", + "lit": "^3", + "p-debounce": "^4" + } + }, + "node_modules/@hydrofoil/shaperone-wc-shoelace/node_modules/@lit/reactive-element": { + "version": "2.0.4", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "node_modules/@hydrofoil/shaperone-wc-shoelace/node_modules/lit": { + "version": "3.1.3", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.0.4", + "lit-html": "^3.1.2" + } + }, + "node_modules/@hydrofoil/shaperone-wc-shoelace/node_modules/lit-element": { + "version": "4.0.5", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" + } + }, + "node_modules/@hydrofoil/shaperone-wc-shoelace/node_modules/lit-html": { + "version": "3.1.3", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/@hydrofoil/shaperone-wc/node_modules/mimic-fn": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@hydrofoil/shaperone-wc/node_modules/onetime": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hydrofoil/vocab-code": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-hex": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-hydra-box": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-hyper-auth": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-hyper-events": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-hyper-query": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-knossos": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocab-roadshow": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocabularies": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "@hydrofoil/vocab-code": "^1.0.1", + "@hydrofoil/vocab-hex": "^1.0.1", + "@hydrofoil/vocab-hydra-box": "^1.0.1", + "@hydrofoil/vocab-hyper-auth": "^1.0.1", + "@hydrofoil/vocab-hyper-events": "^1.0.1", + "@hydrofoil/vocab-hyper-query": "^1.0.1", + "@hydrofoil/vocab-knossos": "^1.0.1", + "@hydrofoil/vocab-roadshow": "^1.0.1", + "@rdfjs/parser-n3": "^2.0.1", + "@zazuko/prefixes": "^2.0.0", + "@zazuko/vocabulary-loader": "^1.0.2", + "commander": "^10.0.0", + "readable-stream": "3 - 4" + }, + "bin": { + "happ-vocab": "bin/vocab.js" + } + }, + "node_modules/@hydrofoil/vocabularies/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@hydrofoil/vocabularies/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@hydrofoil/vocabularies/node_modules/commander": { + "version": "10.0.1", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@hydrofoil/vocabularies/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kopflos-cms/core": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "@rdfjs/express-handler": "^2.0.0", + "absolute-url": "^2.0.0", + "debug": "^4.1.1", + "express": "^4.17.1", + "http-errors": "^2.0.0", + "is-graph-pointer": "^2", + "middleware-async": "^1.4.0", + "promise-the-world": "^1.0.1", + "rdf-dataset-ext": "^1.1.0", + "rdf-loader-code": "^2.1.3", + "rdf-loaders-registry": "^1.0.3", + "set-link": "^1.0.0", + "uri-template-route": "^1.0.0" + } + }, + "node_modules/@kopflos-cms/core/node_modules/absolute-url": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.0", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/react": { + "version": "1.0.4", + "license": "BSD-3-Clause", + "peerDependencies": { + "@types/react": "17 || 18" + } + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==" + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@opentelemetry/api": { + "version": "1.4.1", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-metrics": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-collector": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-metrics": "0.24.0", + "@opentelemetry/core": "0.24.0", + "@opentelemetry/metrics": "0.24.0", + "@opentelemetry/resources": "0.24.0", + "@opentelemetry/tracing": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/exporter-collector/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/exporter-collector/node_modules/@opentelemetry/resources": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/exporter-collector/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-jaeger": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1", + "jaeger-client": "^3.15.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-jaeger/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/otlp-exporter-base": "0.35.1", + "@opentelemetry/otlp-transformer": "0.35.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-metrics": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.9.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.35.1", + "@opentelemetry/otlp-transformer": "0.35.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/otlp-exporter-base": "0.35.1", + "@opentelemetry/otlp-transformer": "0.35.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/otlp-exporter-base": "0.35.1", + "@opentelemetry/otlp-proto-exporter-base": "0.35.1", + "@opentelemetry/otlp-transformer": "0.35.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "require-in-the-middle": "^5.0.3", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/instrumentation": "0.35.1", + "@opentelemetry/semantic-conventions": "1.9.1", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation-winston": { + "version": "0.31.4", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.40.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-winston/node_modules/@opentelemetry/instrumentation": { + "version": "0.40.0", + "license": "Apache-2.0", + "dependencies": { + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.3.5", + "require-in-the-middle": "^7.1.0", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-winston/node_modules/require-in-the-middle": { + "version": "7.3.0", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@opentelemetry/metrics": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-metrics": "0.24.0", + "@opentelemetry/core": "0.24.0", + "@opentelemetry/resources": "0.24.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/metrics/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/metrics/node_modules/@opentelemetry/resources": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/metrics/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/node": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "0.24.0", + "@opentelemetry/core": "0.24.0", + "@opentelemetry/propagator-b3": "0.24.0", + "@opentelemetry/propagator-jaeger": "0.24.0", + "@opentelemetry/tracing": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/node/node_modules/@opentelemetry/context-async-hooks": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.1.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/node/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/node/node_modules/@opentelemetry/propagator-b3": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/node/node_modules/@opentelemetry/propagator-jaeger": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/node/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@grpc/proto-loader": "^0.7.3", + "@opentelemetry/core": "1.9.1", + "@opentelemetry/otlp-exporter-base": "0.35.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/otlp-proto-exporter-base": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/otlp-exporter-base": "0.35.1", + "protobufjs": "^7.1.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-metrics": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/resource-detector-aws": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/resources": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/resource-detector-aws/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/resource-detector-aws/node_modules/@opentelemetry/resources": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/resource-detector-aws/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/resources": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0", + "gcp-metadata": "^4.1.4", + "semver": "7.3.5" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/@opentelemetry/resources": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/semver": { + "version": "7.3.5", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/@opentelemetry/resources": { + "version": "0.26.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.26.0", + "@opentelemetry/semantic-conventions": "0.26.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "0.26.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.26.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "lodash.merge": "4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-node": { + "version": "0.35.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/exporter-jaeger": "1.9.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.35.1", + "@opentelemetry/exporter-trace-otlp-http": "0.35.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.35.1", + "@opentelemetry/exporter-zipkin": "1.9.1", + "@opentelemetry/instrumentation": "0.35.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/sdk-metrics": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "@opentelemetry/sdk-trace-node": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/resources": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.9.1", + "@opentelemetry/semantic-conventions": "1.9.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.9.1", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.9.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.9.1", + "@opentelemetry/core": "1.9.1", + "@opentelemetry/propagator-b3": "1.9.1", + "@opentelemetry/propagator-jaeger": "1.9.1", + "@opentelemetry/sdk-trace-base": "1.9.1", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.5.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "0.26.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/tracing": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/resources": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/tracing/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/tracing/node_modules/@opentelemetry/resources": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/@opentelemetry/tracing/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oruga-ui/oruga-next": { + "version": "0.5.10", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@oruga-ui/theme-bulma": { + "version": "0.2.11", + "license": "MIT", + "dependencies": { + "bulma": "0.9.4" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pnpm/constants": { + "version": "7.1.1", + "license": "MIT", + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/crypto.base32-hash": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "rfc4648": "^1.5.2" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/dependency-path": { + "version": "2.1.8", + "license": "MIT", + "dependencies": { + "@pnpm/crypto.base32-hash": "2.0.0", + "@pnpm/types": "9.4.2", + "encode-registry": "^3.0.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/error": { + "version": "5.0.3", + "license": "MIT", + "dependencies": { + "@pnpm/constants": "7.1.1" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-types": { + "version": "5.1.5", + "license": "MIT", + "dependencies": { + "@pnpm/types": "9.4.2" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/merge-lockfile-changes": { + "version": "5.0.7", + "license": "MIT", + "dependencies": { + "@pnpm/lockfile-types": "5.1.5", + "comver-to-semver": "^1.0.0", + "ramda": "npm:@pnpm/ramda@0.28.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/merge-lockfile-changes/node_modules/ramda": { + "name": "@pnpm/ramda", + "version": "0.28.1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/@pnpm/types": { + "version": "9.4.2", + "license": "MIT", + "engines": { + "node": ">=16.14" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.24", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@rdfine/csvw": { + "version": "0.8.5", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.1.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/dash": { + "version": "0.4.5", + "license": "MIT", + "dependencies": { + "@rdfine/rdf": "^0.7.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/hydra": { + "version": "0.10.5", + "license": "MIT", + "dependencies": { + "@rdfine/rdf": "^0.7.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7", + "es6-url-template": "^3.0.2" + } + }, + "node_modules/@rdfine/owl": { + "version": "0.6.5", + "license": "MIT", + "dependencies": { + "@rdfine/rdf": "^0.7.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/prov": { + "version": "0.3.5", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/rdf": { + "version": "0.7.5", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/rdfs": { + "version": "0.8.5", + "license": "MIT", + "dependencies": { + "@rdfine/rdf": "^0.7.5", + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/schema": { + "version": "0.8.5", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfine/shacl": { + "version": "0.10.5", + "license": "MIT", + "dependencies": { + "@rdfine/owl": "^0.6.5", + "@rdfine/rdf": "^0.7.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfjs/data-model": "^2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": ">=0.7.7" + } + }, + "node_modules/@rdfjs-elements/editor-base": { + "version": "0.5.0", + "license": "MIT", + "dependencies": { + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@vanillawc/wc-codemirror": "^1.9.7", + "codemirror": "^5.61.1", + "lit": "^2", + "throttle-debounce": "^3.0.1" + } + }, + "node_modules/@rdfjs-elements/formats-pretty": { + "version": "0.6.7", + "license": "MIT", + "dependencies": { + "@graphy/content.nq.read": "^4.3.7", + "@graphy/content.trig.read": "^4.3.7", + "@graphy/content.trig.write": "^4.3.7", + "@graphy/content.ttl.write": "^4.3.7", + "@graphy/content.xml.scribe": "^4.3.7", + "@graphy/core.data.factory": "^4.3.7", + "@rdfjs/environment": "^1", + "@rdfjs/formats": "^4.0.0", + "@rdfjs/serializer-jsonld-ext": "^4.0.0", + "@rdfjs/term-map": "^2.0.0", + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@zazuko/formats-lazy": "^1.0.1", + "@zazuko/prefixes": "^2.0.0", + "readable-stream": ">=3.6.0" + } + }, + "node_modules/@rdfjs-elements/formats-pretty/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs-elements/formats-pretty/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs-elements/lit-helpers": { + "version": "0.3.8", + "dependencies": { + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@ungap/event-target": "^0.2.3", + "clownface": "^2", + "lit": "^2" + }, + "peerDependencies": { + "@rdfjs/types": "^1", + "@tpluscode/rdfine": "^0.7.5", + "@types/clownface": "^2.0.7" + } + }, + "node_modules/@rdfjs-elements/lit-helpers/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@rdfjs-elements/lit-helpers/node_modules/clownface": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, + "node_modules/@rdfjs-elements/rdf-editor": { + "version": "0.5.7", + "license": "MIT", + "dependencies": { + "@rdfjs-elements/editor-base": "^0.5.0", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs/data-model": "^2", + "@rdfjs/environment": "^1", + "@rdfjs/formats": "^4", + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "readable-stream": "^3", + "string-to-stream": "^3.0.1" + } + }, + "node_modules/@rdfjs-elements/rdf-editor/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs-elements/rdf-editor/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@rdfjs/data-model": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/dataset": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.2.0" + }, + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/dataset/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/environment": { + "version": "0.1.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/dataset": "^2.0.1", + "@rdfjs/fetch-lite": "^3.2.1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/sink-map": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1" + } + }, + "node_modules/@rdfjs/environment/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/environment/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@rdfjs/environment/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs/express-handler": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/environment": "^0.1.2", + "@rdfjs/formats-common": "^3.1.0", + "absolute-url": "^1.2.2", + "http-errors": "^2.0.0", + "once": "^1.4.0", + "rdf-dataset-ext": "^1.0.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "3 - 4" + } + }, + "node_modules/@rdfjs/express-handler/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "node_modules/@rdfjs/fetch": { + "version": "3.1.1", + "license": "MIT", + "dependencies": { + "@rdfjs/dataset": "^2.0.1", + "@rdfjs/fetch-lite": "^3.2.1", + "@rdfjs/formats-common": "^3.1.0" + } + }, + "node_modules/@rdfjs/fetch-lite": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "is-stream": "^3.0.0", + "nodeify-fetch": "^3.1.0", + "readable-stream": "^4.4.2" + } + }, + "node_modules/@rdfjs/fetch-lite/node_modules/is-stream": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rdfjs/fetch/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/formats": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-jsonld-ext": "^4.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/serializer-turtle": "^1.1.1", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^2.3.0" + } + }, + "node_modules/@rdfjs/formats-common": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@rdfjs/parser-jsonld": "^2.0.0", + "@rdfjs/parser-n3": "^2.0.0", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^2.2.0" + } + }, + "node_modules/@rdfjs/formats-common/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/formats-common/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/formats-common/node_modules/@types/readable-stream": { + "version": "2.3.15", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@rdfjs/formats-common/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs/formats-common/node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "node_modules/@rdfjs/formats/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/formats/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/formats/node_modules/@types/readable-stream": { + "version": "2.3.15", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@rdfjs/formats/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs/formats/node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "node_modules/@rdfjs/namespace": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@rdfjs/namespace/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/parser-jsonld": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "jsonld-streaming-parser": "^3.3.0", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/parser-jsonld/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/parser-jsonld/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs/parser-n3": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.0.1", + "@rdfjs/sink": "^1.0.2", + "n3": "^1.3.5", + "readable-stream": "^3.6.0", + "readable-to-readable": "^0.1.0" + } + }, + "node_modules/@rdfjs/parser-n3/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/parser-n3/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@rdfjs/prefix-map": { + "version": "0.1.1", + "license": "MIT", + "dependencies": { + "readable-stream": "^4.3.0" + } + }, + "node_modules/@rdfjs/serializer-jsonld": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/serializer-jsonld-ext": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/sink": "^2.0.0", + "jsonld": "^8.1.0", + "readable-stream": "^4.3.0", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/@rdfjs/serializer-jsonld-ext/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/serializer-jsonld/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/serializer-ntriples": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/serializer-ntriples/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/serializer-ntriples/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/serializer-ntriples/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs/serializer-turtle": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/prefix-map": "^0.1.1", + "@rdfjs/sink": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/to-ntriples": "^2.0.0", + "@rdfjs/tree": "^0.2.1", + "readable-stream": "^4.3.0", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/@rdfjs/serializer-turtle/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@rdfjs/serializer-turtle/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/serializer-turtle/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs/sink": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@rdfjs/sink-map": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@rdfjs/sink-to-duplex": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.1", + "readable-stream": "^3.0.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@rdfjs/sink-to-duplex/node_modules/duplexify": { + "version": "3.7.1", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/@rdfjs/sink-to-duplex/node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@rdfjs/sink-to-duplex/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs/sink-to-duplex/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@rdfjs/sink-to-duplex/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/@rdfjs/term-map": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs/term-set": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs/to-ntriples": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@rdfjs/traverser": { + "version": "0.1.2", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs/tree": { + "version": "0.2.1", + "license": "MIT", + "dependencies": { + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1" + } + }, + "node_modules/@rdfjs/tree/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@rdfjs/tree/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@rdfjs/types": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@redis/bloom": { + "version": "1.0.2", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.0", + "generic-pool": "3.8.2", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/client/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/@redis/graph": { + "version": "1.0.1", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.3", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.0.6", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.3", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz", + "integrity": "sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz", + "integrity": "sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz", + "integrity": "sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz", + "integrity": "sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz", + "integrity": "sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz", + "integrity": "sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz", + "integrity": "sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz", + "integrity": "sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz", + "integrity": "sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz", + "integrity": "sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz", + "integrity": "sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz", + "integrity": "sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz", + "integrity": "sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz", + "integrity": "sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz", + "integrity": "sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz", + "integrity": "sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rubensworks/saxes": { + "version": "6.0.1", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.12" + } + }, + "node_modules/@sentry/browser": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/browser/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/core": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/hub": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/minimal": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/node": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/tracing": { + "version": "6.19.7", + "license": "MIT", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/vue": { + "version": "6.19.7", + "license": "MIT", + "dependencies": { + "@sentry/browser": "6.19.7", + "@sentry/core": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "vue": "2.x || 3.x" + } + }, + "node_modules/@sentry/vue/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@shoelace-style/animations": { + "version": "1.1.0", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/claviska" + } + }, + "node_modules/@shoelace-style/localize": { + "version": "3.1.2", + "license": "MIT" + }, + "node_modules/@shoelace-style/shoelace": { + "version": "2.15.0", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.0.2", + "@floating-ui/dom": "^1.5.3", + "@lit/react": "^1.0.0", + "@shoelace-style/animations": "^1.1.0", + "@shoelace-style/localize": "^3.1.2", + "composed-offset-position": "^0.0.4", + "lit": "^3.0.0", + "qr-creator": "^1.0.0" + }, + "engines": { + "node": ">=14.17.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/claviska" + } + }, + "node_modules/@shoelace-style/shoelace/node_modules/@ctrl/tinycolor": { + "version": "4.1.0", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@shoelace-style/shoelace/node_modules/@lit/reactive-element": { + "version": "2.0.4", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, + "node_modules/@shoelace-style/shoelace/node_modules/lit": { + "version": "3.1.3", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.0.4", + "lit-html": "^3.1.2" + } + }, + "node_modules/@shoelace-style/shoelace/node_modules/lit-element": { + "version": "4.0.5", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.1.2" + } + }, + "node_modules/@shoelace-style/shoelace/node_modules/lit-html": { + "version": "3.1.3", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, + "node_modules/@smithy/abort-controller": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "1.3.5", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-retry": "^2.1.4", + "@smithy/middleware-serde": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "2.2.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.4.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^2.1.1", + "@smithy/chunked-blob-reader-native": "^2.1.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "2.4.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^2.1.3", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "@smithy/url-parser": "^2.1.3", + "@smithy/util-middleware": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/protocol-http": "^3.2.1", + "@smithy/service-error-classification": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-retry": "^2.1.3", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "2.2.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^2.1.3", + "@smithy/shared-ini-file-loader": "^2.3.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "2.4.1", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/querystring-builder": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "3.2.1", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "@smithy/util-uri-escape": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.3.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^2.1.3", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/types": "^2.10.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-middleware": "^2.1.3", + "@smithy/util-uri-escape": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "2.4.2", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.4", + "@smithy/middleware-stack": "^2.1.3", + "@smithy/protocol-http": "^3.2.1", + "@smithy/types": "^2.10.1", + "@smithy/util-stream": "^2.1.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "2.10.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "2.2.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "2.2.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.2.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^2.1.4", + "@smithy/credential-provider-imds": "^2.2.4", + "@smithy/node-config-provider": "^2.2.4", + "@smithy/property-provider": "^2.1.3", + "@smithy/smithy-client": "^2.4.2", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "1.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^2.2.4", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^2.4.3", + "@smithy/node-http-handler": "^2.4.1", + "@smithy/types": "^2.10.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "2.1.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^2.1.3", + "@smithy/types": "^2.10.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tinyhttp/content-disposition": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/tinyhttp/tinyhttp?sponsor=1" + } + }, + "node_modules/@tpluscode/eslint-config": { + "version": "0.4.5", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@typescript-eslint/eslint-plugin": ">=2", + "@typescript-eslint/parser": ">=2", + "eslint-import-resolver-typescript": ">=2" + }, + "peerDependencies": { + "eslint": ">=6", + "eslint-config-standard": ">=11", + "eslint-plugin-import": ">=2", + "eslint-plugin-n": ">=15", + "eslint-plugin-node": ">=11", + "eslint-plugin-promise": ">=6", + "eslint-plugin-require-extensions": ">=0.1.3", + "eslint-plugin-unused-imports": "^3.0.0", + "standard": ">=11" + } + }, + "node_modules/@tpluscode/rdf-ns-builders": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/namespace": "^2", + "@rdfjs/types": "*", + "@types/rdfjs__namespace": "^2.0.2", + "@zazuko/prefixes": "^2.0.1" + } + }, + "node_modules/@tpluscode/rdf-ns-builders/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@tpluscode/rdf-string": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-string/-/rdf-string-1.3.3.tgz", + "integrity": "sha512-BiBVkX3EVRApo6DNpXuq7Mh87tPX/3aD8m1tjxe4TT6piRrmwbIT/QRrlNdAjt5cAEBRwH8cp+GFTOb/X4Y8Ww==", + "dependencies": { + "@rdfjs/data-model": "^2.0.0", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/types": "*", + "@tpluscode/rdf-ns-builders": ">=3", + "@zazuko/prefixes": ">=1" + } + }, + "node_modules/@tpluscode/rdf-string/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@tpluscode/rdf-string/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@tpluscode/rdfine": { + "version": "0.7.9", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/types": ">=1.1.0", + "@types/clownface": "^2", + "@types/rdfjs__data-model": "^2.0.7", + "@types/rdfjs__traverser": "^0.1.5", + "once": "^1.4.0" + } + }, + "node_modules/@tpluscode/rdfine/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@tpluscode/sparql-builder": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/term-set": "^2", + "@rdfjs/types": "*", + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@tpluscode/rdf-string": "^1.0.3", + "@types/sparql-http-client": "^2", + "anylogger": "^1.0.11" + }, + "peerDependencies": { + "sparql-http-client": "^2.2.0" + } + }, + "node_modules/@transloadit/prettier-bytes": { + "version": "0.3.1", + "license": "MIT" + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/absolute-url": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*", + "@types/express-serve-static-core": "^4.17.33" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/camouflage-rewrite": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.3.12", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/chai-quantifiers": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/chai-snapshot-matcher": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*", + "@types/mocha": "*" + } + }, + "node_modules/@types/clownface": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "node_modules/@types/commander": { + "version": "2.12.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "*" + } + }, + "node_modules/@types/common-tags": { + "version": "1.8.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debounce": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/duplex-to": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/readable-stream": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-conditional-middleware": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "1.8.2", + "license": "MIT" + }, + "node_modules/@types/http-link-header": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/humanize-duration": { + "version": "3.27.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/is-uri": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-uri": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonld": { + "version": "1.5.13", + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.6", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/merge-stream": { + "version": "1.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/merge2": { + "version": "1.4.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "license": "MIT" + }, + "node_modules/@types/mime-types": { + "version": "2.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "license": "MIT" + }, + "node_modules/@types/mocha": { + "version": "10.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/multer": { + "version": "1.4.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/nanoid-dictionary": { + "version": "4.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.12.7", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "license": "MIT" + }, + "node_modules/@types/once": { + "version": "1.4.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-link-header": { + "version": "2.0.3", + "license": "MIT" + }, + "node_modules/@types/parse-prefer-header": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-uri": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "license": "MIT", + "peer": true + }, + "node_modules/@types/qs": { + "version": "6.9.12", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "license": "MIT" + }, + "node_modules/@types/rdf-dataset-ext": { + "version": "1.0.8", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/readable-stream": "*" + } + }, + "node_modules/@types/rdf-transform-triple-to-quad": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/readable-stream": "*" + } + }, + "node_modules/@types/rdf-utils-fs": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdf-validate-shacl": { + "version": "0.4.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@types/clownface": "*", + "@types/node": "*" + } + }, + "node_modules/@types/rdfjs__data-model": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "^1.0.1" + } + }, + "node_modules/@types/rdfjs__dataset": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__environment": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@types/node": "*" + } + }, + "node_modules/@types/rdfjs__express-handler": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/express": "*", + "@types/express-serve-static-core": "*", + "@types/rdfjs__sink-map": "*" + } + }, + "node_modules/@types/rdfjs__fetch-lite": { + "version": "3.0.10", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*", + "@types/node": "*", + "@types/rdfjs__formats": "*" + } + }, + "node_modules/@types/rdfjs__formats": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-jsonld-ext": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__serializer-turtle": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" + } + }, + "node_modules/@types/rdfjs__formats/node_modules/@types/readable-stream": { + "version": "2.3.15", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/rdfjs__formats/node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "node_modules/@types/rdfjs__namespace": { + "version": "2.0.10", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__parser-jsonld": { + "version": "2.1.6", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*" + } + }, + "node_modules/@types/rdfjs__parser-n3": { + "version": "2.0.6", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__prefix-map": { + "version": "0.1.5", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__serializer-jsonld": { + "version": "2.0.5", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__serializer-jsonld-ext": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*", + "@types/node": "*" + } + }, + "node_modules/@types/rdfjs__serializer-ntriples": { + "version": "2.0.6", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__serializer-turtle": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__prefix-map": "*" + } + }, + "node_modules/@types/rdfjs__term-map": { + "version": "2.0.10", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__term-set": { + "version": "2.0.9", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__traverser": { + "version": "0.1.5", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/react": { + "version": "18.2.74", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/readable-stream": { + "version": "4.0.11", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/set-link": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*", + "@types/express-serve-static-core": "*" + } + }, + "node_modules/@types/shimmer": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/@types/sinon": { + "version": "10.0.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinon-chai": { + "version": "3.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "6.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/slug": { + "version": "5.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sparql-http-client": { + "version": "2.2.15", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/sparqljs": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/superagent": { + "version": "8.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*" + } + }, + "node_modules/@types/supertest": { + "version": "2.0.16", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/superagent": "*" + } + }, + "node_modules/@types/through2": { + "version": "2.0.41", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "license": "MIT" + }, + "node_modules/@types/uri-templates": { + "version": "0.1.34", + "resolved": "https://registry.npmjs.org/@types/uri-templates/-/uri-templates-0.1.34.tgz", + "integrity": "sha512-13v4r/Op3iEO1y6FvEHQjrUNnrNyO67SigdFC9n80sVfsrM2AWJRNYbE1pBs4/p87I7z1J979JGeLAo3rM1L/Q==" + }, + "node_modules/@types/url-slugify": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webpack-env": { + "version": "1.18.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "15.0.19", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/type-utils": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.7.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.7.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.7.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.7.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/event-target": { + "version": "0.2.4", + "license": "ISC" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@uppy/aws-s3-multipart": { + "version": "3.10.2", + "license": "MIT", + "dependencies": { + "@uppy/companion-client": "^3.7.2", + "@uppy/utils": "^5.7.2" + }, + "peerDependencies": { + "@uppy/core": "^3.9.1" + } + }, + "node_modules/@uppy/companion": { + "version": "4.12.3", + "license": "MIT", + "dependencies": { + "@aws-sdk/client-s3": "^3.338.0", + "@aws-sdk/client-sts": "^3.338.0", + "@aws-sdk/lib-storage": "^3.338.0", + "@aws-sdk/s3-presigned-post": "^3.338.0", + "@aws-sdk/s3-request-presigner": "^3.338.0", + "atob": "2.1.2", + "body-parser": "1.20.0", + "chalk": "4.1.2", + "common-tags": "1.8.2", + "connect-redis": "7.1.0", + "content-disposition": "^0.5.4", + "cookie-parser": "1.4.6", + "cors": "^2.8.5", + "escape-goat": "3.0.0", + "escape-string-regexp": "4.0.0", + "express": "4.18.1", + "express-interceptor": "1.2.0", + "express-prom-bundle": "6.5.0", + "express-request-id": "1.4.1", + "express-session": "1.17.3", + "form-data": "^3.0.0", + "got": "11", + "grant": "5.4.21", + "helmet": "^4.6.0", + "ipaddr.js": "^2.0.1", + "jsonwebtoken": "9.0.0", + "lodash": "^4.17.21", + "mime-types": "2.1.35", + "moment": "^2.29.2", + "moment-timezone": "^0.5.31", + "morgan": "1.10.0", + "ms": "2.1.3", + "node-schedule": "2.1.0", + "prom-client": "14.0.1", + "redis": "4.2.0", + "serialize-error": "^2.1.0", + "serialize-javascript": "^6.0.0", + "tus-js-client": "^3.1.3", + "validator": "^13.0.0", + "ws": "8.8.1" + }, + "bin": { + "companion": "bin/companion" + }, + "engines": { + "node": "^14.19.0 || ^16.15.0 || >=18.0.0" + } + }, + "node_modules/@uppy/companion-client": { + "version": "3.7.4", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^5.7.4", + "namespace-emitter": "^2.0.1", + "p-retry": "^6.1.0" + }, + "peerDependencies": { + "@uppy/core": "^3.9.3" + } + }, + "node_modules/@uppy/companion/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@uppy/companion/node_modules/body-parser": { + "version": "1.20.0", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@uppy/companion/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@uppy/companion/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@uppy/companion/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@uppy/companion/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@uppy/companion/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@uppy/companion/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@uppy/companion/node_modules/form-data": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@uppy/companion/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@uppy/companion/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/@uppy/companion/node_modules/qs": { + "version": "6.10.3", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@uppy/companion/node_modules/raw-body": { + "version": "2.5.1", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@uppy/companion/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@uppy/core": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-3.10.1.tgz", + "integrity": "sha512-sxA5zzVZzUabX8APMBLrvT/zZA3QZMYdyfqLCfZntLSPqmGONoQwkFDIYqnhW5RZP4ZBY4CnC6W9e2XeudB9cw==", + "dependencies": { + "@transloadit/prettier-bytes": "^0.3.0", + "@uppy/store-default": "^3.2.2", + "@uppy/utils": "^5.7.5", + "lodash": "^4.17.21", + "mime-match": "^1.0.2", + "namespace-emitter": "^2.0.1", + "nanoid": "^4.0.0", + "preact": "^10.5.13" + } + }, + "node_modules/@uppy/core/node_modules/nanoid": { + "version": "4.0.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@uppy/dashboard": { + "version": "3.7.5", + "license": "MIT", + "dependencies": { + "@transloadit/prettier-bytes": "^0.3.0", + "@uppy/informer": "^3.1.0", + "@uppy/provider-views": "^3.10.0", + "@uppy/status-bar": "^3.3.0", + "@uppy/thumbnail-generator": "^3.0.8", + "@uppy/utils": "^5.7.4", + "classnames": "^2.2.6", + "is-shallow-equal": "^1.0.1", + "lodash": "^4.17.21", + "memoize-one": "^6.0.0", + "nanoid": "^4.0.0", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.9.3" + } + }, + "node_modules/@uppy/dashboard/node_modules/nanoid": { + "version": "4.0.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@uppy/drag-drop": { + "version": "3.0.3", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^5.4.3", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.4.0" + } + }, + "node_modules/@uppy/file-input": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@uppy/file-input/-/file-input-3.1.1.tgz", + "integrity": "sha512-13XsaIKCdBzq0cIUaKfgdl0VfO0G0Iiyisl6cFkHXf+U3yPp8l+JTLdtXZNCUbb5n30y+1wAIugH5iNJ48HxRQ==", + "dependencies": { + "@uppy/utils": "^5.7.5", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.10.0" + } + }, + "node_modules/@uppy/informer": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^5.7.4", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.9.3" + } + }, + "node_modules/@uppy/progress-bar": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^5.7.4", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.9.3" + } + }, + "node_modules/@uppy/provider-views": { + "version": "3.10.0", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^5.7.4", + "classnames": "^2.2.6", + "nanoid": "^4.0.0", + "p-queue": "^7.3.4", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.9.3" + } + }, + "node_modules/@uppy/provider-views/node_modules/nanoid": { + "version": "4.0.2", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@uppy/status-bar": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { + "@transloadit/prettier-bytes": "^0.3.0", + "@uppy/utils": "^5.7.4", + "classnames": "^2.2.6", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^3.9.3" + } + }, + "node_modules/@uppy/store-default": { + "version": "3.2.2", + "license": "MIT" + }, + "node_modules/@uppy/thumbnail-generator": { + "version": "3.0.8", + "license": "MIT", + "dependencies": { + "@uppy/utils": "^5.7.2", + "exifr": "^7.0.0" + }, + "peerDependencies": { + "@uppy/core": "^3.9.1" + } + }, + "node_modules/@uppy/utils": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-5.8.0.tgz", + "integrity": "sha512-FB1Z4dTOsNo6yEc7dx8ACkjOVOZz2X4N1kPiBEhEKLTamCzz9kInax1vAl+XXBM8SG1XNQwz17EMm1UUY0NciQ==", + "dependencies": { + "lodash": "^4.17.21", + "preact": "^10.5.13" + } + }, + "node_modules/@uppy/vue": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "shallow-equal": "^1.2.1" + }, + "peerDependencies": { + "@uppy/core": "^3.9.1", + "@uppy/dashboard": "^3.7.3", + "@uppy/drag-drop": "^3.0.3", + "@uppy/file-input": "^3.0.4", + "@uppy/progress-bar": "^3.0.4", + "@uppy/status-bar": "^3.2.7", + "vue": ">=2.6.11" + }, + "peerDependenciesMeta": { + "@uppy/dashboard": { + "optional": true + }, + "@uppy/drag-drop": { + "optional": true + }, + "@uppy/file-input": { + "optional": true + }, + "@uppy/progress-bar": { + "optional": true + }, + "@uppy/status-bar": { + "optional": true + } + } + }, + "node_modules/@vanillawc/wc-codemirror": { + "version": "1.9.8", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vocabulary/b59": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/@vocabulary/code": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@vocabulary/cube": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@vocabulary/dash": { + "version": "1.0.4", + "license": "MIT", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/dash-sparql": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/dash-sparql/-/dash-sparql-1.0.4.tgz", + "integrity": "sha512-NjSJzffH3EPN5g0oB8E4ujmpsWPHbQTQAJk3rroQsxopTjoGsTXsRuukKBfaZCqZ/plpEeebAgUo+nHf+T3J9w==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/dc11": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/dc11/-/dc11-1.0.4.tgz", + "integrity": "sha512-AeJltAz5vS480e9gnMj6M0FZ45kzn6NZmtzIfBXXunH9DMvjd7r8ZuA6fr76+AvRvyFBlbfgnh9GYpiRf+M1DQ==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/dcterms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/dcterms/-/dcterms-1.0.4.tgz", + "integrity": "sha512-uOOVJYppxvfcgHP4qsiaUQWkOGZu1kXOn/SKMWIDZ/2XfB/TMPBeDmWFWK6Ei0NPAYgl0S3jXQre7jgrLyrfjA==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/meta": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@vocabulary/pipeline": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/@vocabulary/qb": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/qb/-/qb-1.0.4.tgz", + "integrity": "sha512-+WoRhODMaIaVSb2GHqtVUbtfOJSarOmd7HNHTn3SvVWqTGTTMYZa92Ejw/Nzmok9UFsobjfV5CwwIF9p6V078g==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/rdfs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/rdfs/-/rdfs-1.0.4.tgz", + "integrity": "sha512-5wmOjmSCYV0KZYWEB995+b9uLaOtfSpvN+qhmH6uWVqt8TxvSIXbpSHu1rZ2R2/anm3YIOAQ7OUWUk7Q5t1zMw==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/relation": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@vocabulary/schema": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/schema/-/schema-1.0.4.tgz", + "integrity": "sha512-J7CZDz/d3nHtvhL3VUdVxeED7TcNDf4Er+H6b0t9yxDqQVZNSq2AS05AzeHaoYmrkUbLomFx/EHDJiP5oWSDfA==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/sdmx": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/sdmx/-/sdmx-1.0.4.tgz", + "integrity": "sha512-AiboWzLzGmBwmSP6kJvGhL6872pxcvzccpKwtlLohZ90DAXcNHMrkQIvDitywCvA9Ov2YAsIckGWr7JOhshkhA==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/sh": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vocabulary/sh/-/sh-1.1.5.tgz", + "integrity": "sha512-8R4uxHLpwmp6l6szZdCtfQx0wRy64OHuOsYTDfhCsbJ773Uv6nCM2bYBtjjirZHN+2m3uHQWgtWOdvuu1jwmOA==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/skos": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/skos/-/skos-1.0.4.tgz", + "integrity": "sha512-CrOjdG0qb5V+CkWEJ58toUsKoO0hSU7wNOuRJGCvSdWIg13V5HyhYlDHZY+zCUToEOwMsvxxsvoA9pPfJ5fkIg==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/skosxl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/skosxl/-/skosxl-1.0.4.tgz", + "integrity": "sha512-zdY0JfYe8tHgix/4GsPAQChTf7VQ89kbbUcG6HAUkLqICHtba6PQBXDeKaWVB4Slt7PBdr1F3HQJOTLmKQwy2Q==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/wgs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/wgs/-/wgs-1.0.4.tgz", + "integrity": "sha512-quStxhC6KOCOK26AIxFLinhANHJjrVvfJyW5LQyGjTGWrHoSnaYgkYprsloBk+zbP0XnnP28CW31soAOStg57g==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/xkos": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/xkos/-/xkos-1.0.4.tgz", + "integrity": "sha512-w6XyC7ncwF3Y8LThW1QaA4HlglBO4uK0jDrwFZ0Cic7N1tJ21VGlj2mLdCJl/VlvEKsJExxUC552OIsUvwId2A==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vocabulary/xsd": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@vocabulary/xsd/-/xsd-1.0.4.tgz", + "integrity": "sha512-mJgZ2Acw+/LFOD0835fRPCALyVd/3IllG78j532QMF0ljgwcm7lsRpMz5UXKbhqhrnH6CA7ey0g7hiTogM4ajA==", + "peerDependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@vue/cli-plugin-e2e-cypress": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8", + "eslint-plugin-cypress": "^2.11.2" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "cypress": "*" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-service/node_modules/dotenv": { + "version": "10.0.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-service/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-service/node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@vue/cli-service/node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/cli-shared-utils/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/execa": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.21", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.23.9", + "@vue/compiler-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.7", + "postcss": "^8.4.35", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "license": "MIT" + }, + "node_modules/@vue/eslint-config-standard": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-standard": "^17.0.0", + "eslint-import-resolver-custom-alias": "^1.3.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.4", + "eslint-plugin-promise": "^6.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-vue": "^9.2.0" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" + }, + "peerDependencies": { + "vue": "3.4.21" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.21", + "license": "MIT" + }, + "node_modules/@vue/test-utils": { + "version": "2.4.4", + "dev": true, + "license": "MIT", + "dependencies": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^1.8.21" + }, + "peerDependencies": { + "@vue/server-renderer": "^3.0.1", + "vue": "^3.0.1" + }, + "peerDependenciesMeta": { + "@vue/server-renderer": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.11.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "prettier": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "license": "BSD-2-Clause" + }, + "node_modules/@zazuko/cube-hierarchy-query": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "@hydrofoil/shape-to-query": "^0.9.4", + "@tpluscode/sparql-builder": "^1.1.0", + "@types/sparql-http-client": "^2.2.8", + "@zazuko/env": "^2.0.3", + "@zazuko/vocabulary-extras-builders": "^1.1.3", + "clownface-shacl-path": "^2.1.0", + "is-graph-pointer": "^2.1.0", + "rdf-dataset-ext": "^1.1.0" + } + }, + "node_modules/@zazuko/env": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@zazuko/env/-/env-2.2.0.tgz", + "integrity": "sha512-73KwqrckawQTmoPAizlkHIRpsqFOaR31LA4XEZUnLM6CbGF/DhmbclfhMtg8GBAiZLIVdgXj6GZAW0lUmA4knQ==", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/dataset": "^2.0.1", + "@rdfjs/formats": "^4.0.0", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/traverser": "^0.1.2", + "@tpluscode/rdf-ns-builders": "^4.1.0", + "@zazuko/env-core": "^1.1.2", + "@zazuko/prefixes": "^2.1.0", + "clownface": "^2.0.2", + "get-stream": "^8.0.1", + "rdf-dataset-ext": "^1.1.0" + }, + "peerDependencies": { + "@rdfjs/types": "^1.1.0", + "@types/clownface": "^2.0.0", + "@types/rdf-dataset-ext": "^1", + "@types/rdfjs__data-model": "^2.0.7", + "@types/rdfjs__dataset": "^2.0.7", + "@types/rdfjs__environment": "^1.0.0", + "@types/rdfjs__formats": "^4.0.0", + "@types/rdfjs__namespace": "^2.0.10", + "@types/rdfjs__term-map": "^2.0.9", + "@types/rdfjs__term-set": "^2.0.8", + "@types/rdfjs__traverser": "^0.1.3" + } + }, + "node_modules/@zazuko/env-core": { + "version": "1.1.2", + "dependencies": { + "@rdfjs/environment": "^1.0.0" + }, + "peerDependencies": { + "@types/rdfjs__environment": "^1.0.0" + } + }, + "node_modules/@zazuko/env-core/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/@zazuko/env-node": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@zazuko/env-node/-/env-node-2.1.3.tgz", + "integrity": "sha512-vaYbkMe0DsvpWEWBQpWPJ0mEYiFhwDGw8Caso1MmASUbHY/gH2tAA6BDv4LsCK/BrU4gWftUWz6uEsRP3FmdHA==", + "dependencies": { + "@rdfjs/fetch-lite": "^3.2.2", + "@rdfjs/formats": "^4.0.0", + "@zazuko/env": "^2.1.1", + "@zazuko/rdf-utils-fs": "^3.3.0" + }, + "peerDependencies": { + "@types/rdfjs__fetch-lite": "^3.0.6" + } + }, + "node_modules/@zazuko/env/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@zazuko/env/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@zazuko/env/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/@zazuko/env/node_modules/clownface": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, + "node_modules/@zazuko/env/node_modules/get-stream": { + "version": "8.0.1", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@zazuko/formats-lazy": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/parser-jsonld": "^2.0.0", + "@rdfjs/parser-n3": "^2.0.0", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-map": "^2.0.0", + "@types/rdfjs__parser-jsonld": "^2.0.0", + "@types/rdfjs__parser-n3": "^2.0.0", + "@types/rdfjs__serializer-jsonld": "^2.0.0", + "@types/rdfjs__serializer-ntriples": "^2.0.0", + "@types/rdfjs__sink-map": "^2.0.0", + "onetime": "^6.0.0", + "rdfxml-streaming-parser": "^2.2.0", + "readable-stream": "^4" + } + }, + "node_modules/@zazuko/formats-lazy/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@zazuko/formats-lazy/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@zazuko/formats-lazy/node_modules/@types/rdfjs__sink-map": { + "version": "2.0.5", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@zazuko/formats-lazy/node_modules/@types/readable-stream": { + "version": "2.3.15", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@zazuko/formats-lazy/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/@zazuko/formats-lazy/node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "node_modules/@zazuko/node-fetch": { + "version": "2.6.6", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@zazuko/prefixes": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/@zazuko/rdf-parser-csvw": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@zazuko/rdf-parser-csvw/-/rdf-parser-csvw-0.17.0.tgz", + "integrity": "sha512-u7MqHWif0mptZoQM7jlax7Jq7RynwSu+DJU6qa7kfNa7L3PxAryUbkqXyMBw2KEfIktgvjqTNAnPt7qVnas21w==", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/namespace": "^2", + "@types/uri-templates": "^0.1.34", + "clownface": "^2.0.2", + "commander": "^12.1.0", + "csv-parse": "^5.5.6", + "lodash": "^4.17.15", + "luxon": "^1.17.3", + "readable-stream": "^4.5.2", + "uri-templates": "^0.2.0" + }, + "bin": { + "csvw-metadata": "bin/csvw-metadata.js" + } + }, + "node_modules/@zazuko/rdf-parser-csvw-xlsx": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@zazuko/rdf-parser-csvw-xlsx/-/rdf-parser-csvw-xlsx-0.3.0.tgz", + "integrity": "sha512-0fF+yvbRUXMvP9HiT2Jr10Qn+6++MswgurEnJIaFyGZj99vGVIJdd9oi1QZcAYYRUdjPGkRQnc2jKzrZoiQtyg==", + "dependencies": { + "@zazuko/rdf-parser-csvw": "^0.17", + "lodash": "^4.17.21", + "readable-stream": "^4.5.2", + "xlsx": "^0.18.5" + } + }, + "node_modules/@zazuko/rdf-parser-csvw-xlsx/node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@zazuko/rdf-parser-csvw-xlsx/node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@zazuko/rdf-parser-csvw/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", + "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@zazuko/rdf-parser-csvw/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", + "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==" + }, + "node_modules/@zazuko/rdf-parser-csvw/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-2.0.1.tgz", + "integrity": "sha512-U85NWVGnL3gWvOZ4eXwUcv3/bom7PAcutSBQqmVWvOaslPy+kDzAJCH1WYBLpdQd4yMmJ+bpJcDl9rcHtXeixg==", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@zazuko/rdf-parser-csvw/node_modules/clownface": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clownface/-/clownface-2.0.2.tgz", + "integrity": "sha512-HjTYqVXiCrw4FmoAWF46aQ3c2OmdVLoqZrAGkowdWWUoBBIcBht55pOxkyvoVe2BsPE/HqMzfnu51JpgqM4KEg==", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, + "node_modules/@zazuko/rdf-parser-csvw/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@zazuko/rdf-parser-csvw/node_modules/csv-parse": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.6.tgz", + "integrity": "sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==" + }, + "node_modules/@zazuko/rdf-utils-fs": { + "version": "3.3.1", + "license": "MIT", + "dependencies": { + "readable-stream": ">=3.6.0" + }, + "peerDependencies": { + "@rdfjs/types": "*", + "@types/rdfjs__environment": "0 - 1", + "@types/rdfjs__formats": "^4" + } + }, + "node_modules/@zazuko/shacl-playground": { + "version": "2.0.0", + "dependencies": { + "@tpluscode/rdf-string": "^1.1.3" + } + }, + "node_modules/@zazuko/vocabulary-extras": { + "version": "2.0.6", + "dependencies": { + "@vocabulary/b59": "^0.1.0", + "@vocabulary/code": "^1.0.0", + "@vocabulary/cube": "^1.0.0", + "@vocabulary/meta": "^1.0.0", + "@vocabulary/pipeline": "^1.1.1", + "@vocabulary/relation": "^1.0.0", + "@zazuko/prefixes": "^2.0.0", + "@zazuko/vocabulary-extras-builders": "^1.1.1", + "@zazuko/vocabulary-loader": "^1.0.2" + } + }, + "node_modules/@zazuko/vocabulary-extras-builders": { + "version": "1.1.3", + "dependencies": { + "@rdfjs/namespace": "^2.0.0" + }, + "peerDependencies": { + "@rdfjs/types": ">=1" + } + }, + "node_modules/@zazuko/vocabulary-extras-builders/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@zazuko/vocabulary-loader": { + "version": "1.0.2", + "dependencies": { + "@rdfjs/parser-n3": "^2.0.1", + "@types/rdfjs__environment": "1", + "@zazuko/env": "^2.0.2", + "rdf-dataset-ext": "^1.1.0" + } + }, + "node_modules/@zazuko/vocabulary-loader/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@zazuko/vocabulary-loader/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/@zazuko/vocabulary-loader/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/absolute-url": { + "version": "1.2.2", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.2.0", + "license": "Apache-2.0", + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "adler32": "bin/adler32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alcaeus": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/alcaeus/-/alcaeus-3.0.1.tgz", + "integrity": "sha512-RGgDRcZ/GlJCAy5Dm3WEpNPAd4GPEJAPJZkexcdoU3wa96HyF111zYuF1wE6gdCVvk6UJM0StqeVQVsqfDMhMA==", + "dependencies": { + "@rdfine/hydra": "^0.10.5", + "@rdfjs/types": "^1.1.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.7", + "@types/parse-link-header": "^2.0.3", + "alcaeus-core": "^1.0.0", + "alcaeus-model": "^1.0.0", + "parse-link-header": "^2.0.0", + "rdf-dataset-ext": "^1.1.0", + "readable-stream": ">=3.6.0" + } + }, + "node_modules/alcaeus-core": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@rdfine/hydra": "^0.10.5", + "@rdfjs/types": "^1.1.0", + "@tpluscode/rdfine": "^0.7.7", + "@zazuko/env-core": "^1.0.1" + }, + "peerDependencies": { + "@types/rdfjs__formats": "^4", + "@types/rdfjs__term-map": "^2.0.9", + "@types/rdfjs__term-set": "^2.0.9" + } + }, + "node_modules/alcaeus-model": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@rdfine/hydra": "^0.10.5", + "@rdfjs/types": "^1.1.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.7", + "alcaeus-core": "^1.0.0", + "rdf-literal": "^1.3.2" + } + }, + "node_modules/ansi-color": { + "version": "0.2.1" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "peer": true, + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/anylogger": { + "version": "1.0.11", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/arch": { + "version": "2.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "license": "MIT" + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.17", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1567.0", + "license": "Apache-2.0", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-sdk/node_modules/buffer": { + "version": "4.9.2", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/aws-sdk/node_modules/events": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/aws-sdk/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-loader/node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-loader/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/barnard59": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/barnard59/-/barnard59-5.0.4.tgz", + "integrity": "sha512-uafLQWHJzjQre8vHgCoXKGWDt1nLHvYwOGBqYL1BtE+cNlC4jTdNHFbsXqqZcUsQQNmwfaGYZW3K4K+j5zEyDA==", + "dependencies": { + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/exporter-collector": "^0.24.0", + "@opentelemetry/instrumentation-http": "^0.24.0", + "@opentelemetry/instrumentation-winston": "^0.24.0", + "@opentelemetry/resources": "^0.24.0", + "@opentelemetry/sdk-node": "^0.24.0", + "@opentelemetry/semantic-conventions": "^0.24.0", + "@opentelemetry/tracing": "^0.24.0", + "@rdfjs/namespace": "^2.0.0", + "barnard59-core": "6.0.1", + "barnard59-env": "1.2.6", + "commander": "^11.0.0", + "find-up": "^7.0.0", + "is-graph-pointer": "^2.1.0", + "is-installed-globally": "^1.0.0", + "lodash": "^4.17.21", + "pkg-dir": "^8.0.0", + "pkgscan": "^1.0.24", + "rdf-loader-code": "^2.1.3", + "rdf-transform-graph-imports": "^0.2.2", + "readable-stream": "^3.6.0" + }, + "bin": { + "b59": "bin/barnard59.sh", + "barnard59": "bin/barnard59.sh" + } + }, + "node_modules/barnard59-base": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "duplexify": "^4.1.1", + "glob": "^10", + "onetime": "^6.0.0", + "parallel-transform": "^1.2.0", + "readable-stream": "^3.0.6", + "readable-to-readable": "^0.1.3", + "through2": "^4.0.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-base/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/barnard59-base/node_modules/foreground-child": { + "version": "3.1.1", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/barnard59-base/node_modules/glob": { + "version": "10.3.12", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/barnard59-base/node_modules/minimatch": { + "version": "9.0.4", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/barnard59-base/node_modules/minipass": { + "version": "7.0.4", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/barnard59-base/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/barnard59-base/node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/barnard59-core": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/barnard59-core/-/barnard59-core-6.0.1.tgz", + "integrity": "sha512-gUxigXTxlenMra9Mr+po9pg248uZsCxCQW4j5MDAFZbuRyS9/REtlysv7Aj0L4Gea98WHW4yzZzFreqschfI0A==", + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "anylogger": "^1.0.11", + "duplex-to": "^1.0.1", + "duplexify": "^4.1.1", + "is-graph-pointer": "^2.1.0", + "is-stream": "^3.0.0", + "onetime": "^6.0.0", + "rdf-loader-code": "^2.1.3", + "rdf-loaders-registry": "^1.0.2", + "readable-stream": "^3.6.0", + "untildify": "^5.0.0", + "winston": "^3.3.3" + } + }, + "node_modules/barnard59-core/node_modules/is-stream": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59-core/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/barnard59-core/node_modules/untildify": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/barnard59-cube": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/barnard59-cube/-/barnard59-cube-1.4.8.tgz", + "integrity": "sha512-UqywbPCtKUlhhW37mkl8BwivKps64fJKWRSouXirL847eeiryzKUxI9W1OijVbHObKqa48skOYsB8rRr89sMkA==", + "dependencies": { + "barnard59-base": "^2.4.2", + "barnard59-formats": "^4.0.0", + "barnard59-http": "^2.0.0", + "barnard59-rdf": "^3.4.0", + "barnard59-shacl": "^1.4.9", + "barnard59-sparql": "^2.3.0", + "external-merge-sort": "^0.1.4", + "lodash": "^4.17.21", + "rdf-literal": "^1.3.0", + "readable-stream": "3 - 4", + "through2": "^4.0.2" + } + }, + "node_modules/barnard59-cube/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.0.2.tgz", + "integrity": "sha512-rrrvyh+kkj9ndwep2h6nYmugIfggDOC9uGpmDAHn/I/z52K7dHxi7xOkPPrezTsIbgNvFhV3zS7mzyObRxcLWA==", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/barnard59-cube/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", + "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==" + }, + "node_modules/barnard59-cube/node_modules/barnard59-formats": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/barnard59-formats/-/barnard59-formats-4.0.0.tgz", + "integrity": "sha512-CZ/3cSDrIGZ1W8tymPxfIsBYks5U2FxIofdgZ/XQjJ+boA19hUoQK7cfC87j4/EMOjQcyz7mnRBMyTWzN/4Mxw==", + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-to-duplex": "^1.0.0", + "@zazuko/rdf-parser-csvw": "^0.17.0", + "@zazuko/rdf-parser-csvw-xlsx": "^0.3", + "barnard59-base": "^2.0.1", + "is-stream": "^3.0.0", + "rdfxml-streaming-parser": "^1.2.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-cube/node_modules/duplex-to": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==" + }, + "node_modules/barnard59-cube/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59-env": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/barnard59-env/-/barnard59-env-1.2.6.tgz", + "integrity": "sha512-xVnExMhf7fxbgfooM4OSUm2ZT1HULLHPF3hrXXArLYTaMXt8r81J91MnpMIL/cI6uRZwzpOWKJEvkDyvV6JB6w==", + "dependencies": { + "@zazuko/env-node": "^2.1.3", + "@zazuko/vocabulary-extras-builders": "^1.1.3" + } + }, + "node_modules/barnard59-formats": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-to-duplex": "^1.0.0", + "barnard59-base": "^2.0.1", + "rdf-parser-csvw": "^0.15.0", + "rdf-parser-csvw-xlsx": "^0.1.0", + "rdfxml-streaming-parser": "^1.2.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-formats/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/barnard59-formats/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/barnard59-formats/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/barnard59-graph-store": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "barnard59-base": "^2.4.2", + "barnard59-rdf": "^3.0.0", + "duplex-to": "^1.0.0", + "onetime": "^6.0.0", + "promise-the-world": "^1.0.1", + "readable-stream": "^3.6.0", + "sparql-http-client": "^3.0.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/parser-n3/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/parser-n3/node_modules/readable-stream": { + "version": "4.5.2", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/barnard59-graph-store/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/barnard59-graph-store/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "node_modules/barnard59-graph-store/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/barnard59-graph-store/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/barnard59-graph-store/node_modules/sparql-http-client/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/barnard59-graph-store/node_modules/sparql-http-client/node_modules/readable-stream": { + "version": "4.5.2", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/barnard59-http": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "duplex-to": "^1.0.1", + "duplexify": "^4.0.0", + "node-fetch": "^3.3.2", + "readable-stream": ">=3" + } + }, + "node_modules/barnard59-http/node_modules/node-fetch": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/barnard59-rdf": { + "version": "3.4.0", + "license": "MIT", + "dependencies": { + "@rdfjs/fetch": "^3.0.0", + "barnard59-env": "^1.2.2", + "file-fetch": "^1.7.0", + "is-stream": "^3.0.0", + "lodash": "^4.17.21", + "mime-types": "^2.1.35", + "proto-fetch": "^1.0.0", + "rdf-literal": "^1.3.0", + "rdf-stream-to-dataset-stream": "^1.0.0", + "rdf-transform-graph-imports": "^0.2.2", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-rdf/node_modules/is-stream": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59-rdf/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "node_modules/barnard59-rdf/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/barnard59-shacl": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/barnard59-shacl/-/barnard59-shacl-1.4.9.tgz", + "integrity": "sha512-5D4KukUvtdMV7IeaeMayIZonqP5/yHXzQdljtWSL8HTv2dP8dvkyF3s6j960dzksTVmwU8jeiWtOB03aVYhFfw==", + "dependencies": { + "@rdfjs/fetch": "^3.0.0", + "@rdfjs/to-ntriples": "^3.0.0", + "barnard59-base": "^2.4.2", + "barnard59-formats": "^4.0.0", + "barnard59-rdf": "^3.4.0", + "is-stream": "^3.0.0", + "rdf-validate-shacl": "^0.5.5", + "readable-stream": "3 - 4" + } + }, + "node_modules/barnard59-shacl/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.0.2.tgz", + "integrity": "sha512-rrrvyh+kkj9ndwep2h6nYmugIfggDOC9uGpmDAHn/I/z52K7dHxi7xOkPPrezTsIbgNvFhV3zS7mzyObRxcLWA==", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/barnard59-shacl/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", + "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==" + }, + "node_modules/barnard59-shacl/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/barnard59-shacl/node_modules/barnard59-formats": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/barnard59-formats/-/barnard59-formats-4.0.0.tgz", + "integrity": "sha512-CZ/3cSDrIGZ1W8tymPxfIsBYks5U2FxIofdgZ/XQjJ+boA19hUoQK7cfC87j4/EMOjQcyz7mnRBMyTWzN/4Mxw==", + "dependencies": { + "@opentelemetry/api": "^1.0.1", + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-to-duplex": "^1.0.0", + "@zazuko/rdf-parser-csvw": "^0.17.0", + "@zazuko/rdf-parser-csvw-xlsx": "^0.3", + "barnard59-base": "^2.0.1", + "is-stream": "^3.0.0", + "rdfxml-streaming-parser": "^1.2.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-shacl/node_modules/duplex-to": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==" + }, + "node_modules/barnard59-shacl/node_modules/is-stream": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59-sparql": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/barnard59-sparql/-/barnard59-sparql-2.3.0.tgz", + "integrity": "sha512-1DOnc2mG4q303Dagp9Ac/j9vktEaF54o0r+dQjzekCgkOWzpnHgPYZDD3dkzu8XdHTyD+AKHAddKPAGaJeUqtA==", + "dependencies": { + "duplex-to": "^1.0.1", + "oxigraph": "^0.4.0-alpha.2", + "readable-stream": "^4.5.2", + "sparql-http-client": "^3.0.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/barnard59-sparql/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", + "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/barnard59-sparql/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", + "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==" + }, + "node_modules/barnard59-sparql/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.0.2.tgz", + "integrity": "sha512-rrrvyh+kkj9ndwep2h6nYmugIfggDOC9uGpmDAHn/I/z52K7dHxi7xOkPPrezTsIbgNvFhV3zS7mzyObRxcLWA==", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/barnard59-sparql/node_modules/@rdfjs/parser-n3/node_modules/duplex-to": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==" + }, + "node_modules/barnard59-sparql/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", + "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==" + }, + "node_modules/barnard59-sparql/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-3.0.1.tgz", + "integrity": "sha512-gjoPAvh4j7AbGMjcDn/8R4cW+d/FPtbfbMM0uQXkyfBFtNUW2iVgrqsgJ65roLc54Y9A2TTFaeeTGSvY9a0HCQ==" + }, + "node_modules/barnard59-sparql/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rdf-transform-triple-to-quad/-/rdf-transform-triple-to-quad-2.0.1.tgz", + "integrity": "sha512-OknvjzZSwstm120ugeeXpzS8o8jZNK+qc9lNmKOtndc7t2J17i62h3BVccUh4M0dBZk/sKhgaXaALaEHbPuWPg==", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/barnard59-sparql/node_modules/sparql-http-client": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sparql-http-client/-/sparql-http-client-3.0.0.tgz", + "integrity": "sha512-apnk5baRm8VzQVWEyl1bxtOMDdf3un5XEnHv/yn8HfRFkyDBPT7KtPI0OW6OzJXBhMce6q9M76fjvm1uxJxiDQ==", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/barnard59-sparql/node_modules/sparql-http-client/node_modules/duplex-to": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==" + }, + "node_modules/barnard59/node_modules/@opentelemetry/core": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/barnard59/node_modules/@opentelemetry/instrumentation": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-metrics": "0.24.0", + "require-in-the-middle": "^5.0.3", + "semver": "^7.3.2", + "shimmer": "^1.2.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/barnard59/node_modules/@opentelemetry/instrumentation-http": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/instrumentation": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0", + "semver": "^7.1.3" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/barnard59/node_modules/@opentelemetry/instrumentation-winston": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.24.0" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/barnard59/node_modules/@opentelemetry/resources": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "0.24.0", + "@opentelemetry/semantic-conventions": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/barnard59/node_modules/@opentelemetry/sdk-node": { + "version": "0.24.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-metrics": "0.24.0", + "@opentelemetry/core": "0.24.0", + "@opentelemetry/instrumentation": "0.24.0", + "@opentelemetry/metrics": "0.24.0", + "@opentelemetry/node": "0.24.0", + "@opentelemetry/resource-detector-aws": "0.24.0", + "@opentelemetry/resource-detector-gcp": "0.24.0", + "@opentelemetry/resources": "0.24.0", + "@opentelemetry/tracing": "0.24.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.1" + } + }, + "node_modules/barnard59/node_modules/@opentelemetry/semantic-conventions": { + "version": "0.24.0", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/barnard59/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/barnard59/node_modules/find-up": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59/node_modules/locate-path": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59/node_modules/p-limit": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59/node_modules/p-locate": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59/node_modules/path-exists": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/barnard59/node_modules/pkg-dir": { + "version": "8.0.0", + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/barnard59/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/better-path-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", + "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", + "dependencies": { + "is-windows": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bintrees": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bluebird": { + "version": "3.7.1", + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT", + "optional": true + }, + "node_modules/body-parser": { + "version": "1.20.2", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/bowser": { + "version": "2.11.0", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/breakword": { + "version": "1.0.6", + "license": "MIT", + "dependencies": { + "wcwidth": "^1.0.1" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "license": "MIT", + "optional": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.23.0", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/buffer/node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/bufrw": { + "version": "1.4.0", + "dependencies": { + "ansi-color": "^0.2.1", + "error": "^7.0.0", + "hexer": "^1.5.0", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bulma": { + "version": "0.9.4", + "license": "MIT" + }, + "node_modules/bulma-quickview": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "0.2.14", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/busboy/node_modules/isarray": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/busboy/node_modules/readable-stream": { + "version": "1.1.14", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/busboy/node_modules/string_decoder": { + "version": "0.10.31", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c8": { + "version": "7.14.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/c8/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cachedir": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys/node_modules/quick-lru": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/camouflage-rewrite": { + "version": "1.5.1", + "license": "MIT", + "dependencies": { + "absolute-url": "^1.2.2", + "hijackresponse": "^4.0.1", + "string-replace-stream": "0.0.2" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001591", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canonicalize": { + "version": "1.0.8", + "license": "Apache-2.0" + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/cfb": { + "version": "1.2.2", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cfb/node_modules/adler-32": { + "version": "1.3.1", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chai": { + "version": "4.4.1", + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "dev": true, + "license": "WTFPL", + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chai-quantifiers": { + "version": "1.0.18", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.x.x" + }, + "peerDependencies": { + "chai": "^4.x.x" + } + }, + "node_modules/chai-snapshot-matcher": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "chai": "^4.2.0", + "lodash": "^4.17.20" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "license": "MIT" + }, + "node_modules/check-error": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/check-more-types": { + "version": "2.24.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chunkify-stream": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "readable-stream": "^3.4.0" + } + }, + "node_modules/chunkify-stream/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "5.3.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/clipboardy/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clownface": { + "version": "1.5.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.1.0", + "@rdfjs/namespace": "^1.0.0" + } + }, + "node_modules/clownface-shacl-path": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@rdfjs/term-set": "^2.0.1", + "@tpluscode/rdf-ns-builders": ">=3.0.2", + "@tpluscode/rdf-string": "^1.0.1" + }, + "peerDependencies": { + "clownface": "1 - 2" + } + }, + "node_modules/clownface/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.0", + "license": "APACHE-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codemirror": { + "version": "5.65.16", + "license": "MIT" + }, + "node_modules/codepage": { + "version": "1.15.0", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combine-errors": { + "version": "3.0.3", + "dependencies": { + "custom-error-instance": "2.1.1", + "lodash.uniqby": "4.5.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/composed-offset-position": { + "version": "0.0.4", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/comver-to-semver": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/concat-merge": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect-redis": { + "version": "7.1.0", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "express-session": ">=1" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.4.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "license": "MIT", + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/cookie-storage": { + "version": "6.1.0", + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js": { + "version": "3.36.0", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.36.0", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.22.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/cron-parser": { + "version": "3.5.0", + "license": "MIT", + "dependencies": { + "is-nan": "^1.3.2", + "luxon": "^1.26.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.10.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/csv": { + "version": "5.5.3", + "license": "MIT", + "dependencies": { + "csv-generate": "^3.4.3", + "csv-parse": "^4.16.3", + "csv-stringify": "^5.6.5", + "stream-transform": "^2.1.3" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "3.4.3", + "license": "MIT" + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "license": "MIT" + }, + "node_modules/csv-sniffer": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/csv-stringify": { + "version": "5.6.5", + "license": "MIT" + }, + "node_modules/custom-error-instance": { + "version": "2.1.1", + "license": "ISC" + }, + "node_modules/cyclist": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/cypress": { + "version": "8.7.0", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@cypress/request": "^2.88.6", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "^6.0.2", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.0", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "^6.4.3", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.5", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "ramda": "~0.27.1", + "request-progress": "^3.0.0", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "url": "^0.11.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cypress-file-upload": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.2.1" + }, + "peerDependencies": { + "cypress": ">3.0.0" + } + }, + "node_modules/cypress/node_modules/@types/node": { + "version": "14.18.63", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cypress/node_modules/bluebird": { + "version": "3.7.2", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/cli-truncate": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cypress/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cypress/node_modules/execa": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/cypress/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cypress/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/human-signals": { + "version": "1.1.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/cypress/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/is-installed-globally": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/cypress/node_modules/listr2": { + "version": "3.14.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/cypress/node_modules/log-update": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/cypress/node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cypress/node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/punycode": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/cypress/node_modules/qs": { + "version": "6.12.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cypress/node_modules/slice-ansi": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cypress/node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/cypress/node_modules/tmp": { + "version": "0.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/cypress/node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cypress/node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/cypress/node_modules/url": { + "version": "0.11.3", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "dev": true, + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/debounce": { + "version": "1.2.1", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "license": "MIT", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/p-map": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/dicer": { + "version": "0.2.5", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/isarray": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/dicer/node_modules/readable-stream": { + "version": "1.1.14", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/dicer/node_modules/string_decoder": { + "version": "0.10.31", + "license": "MIT" + }, + "node_modules/diff": { + "version": "5.0.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/domhandler": { + "version": "4.3.1", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-cli": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "dotenv": "^16.0.0", + "dotenv-expand": "^8.0.1", + "minimist": "^1.2.5" + }, + "bin": { + "dotenv": "cli.js" + } + }, + "node_modules/dotenv-cli/node_modules/dotenv-expand": { + "version": "8.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/drag-event-service": { + "version": "1.1.10", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.7", + "helper-js": "^2.0.0" + } + }, + "node_modules/draggable-helper": { + "version": "6.0.5", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.7", + "drag-event-service": "^1.1.7", + "helper-js": "^2.0.7", + "tslib": "^2" + } + }, + "node_modules/duplex-to": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/duplexify": { + "version": "4.1.3", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.685", + "dev": true, + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/encode-registry": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "mem": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error": { + "version": "7.0.2", + "dependencies": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.22.4", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.1", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.17", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.4", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.2", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-url-template": { + "version": "3.0.2", + "license": "BSD" + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-config-standard-jsx": { + "version": "11.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.0" + } + }, + "node_modules/eslint-import-resolver-custom-alias": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-parent": "^6.0.2", + "resolve": "^1.22.2" + }, + "peerDependencies": { + "eslint-plugin-import": ">=2.2.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-cypress": { + "version": "2.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "globals": "^13.20.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-plugin-n/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-require-extensions": { + "version": "0.1.3", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "6 - 7", + "eslint": "8" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.25.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esmock": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/esmock/-/esmock-2.6.5.tgz", + "integrity": "sha512-tvFsbtSI9lCuvufbX+UIDn/MoBjTu6UDvQKR8ZmKWHrK3AkioKD2LuTkM75XSngRki3SsBb4uiO58EydQuFCGg==", + "dev": true, + "engines": { + "node": ">=14.16.0" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.9", + "dev": true, + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/exifr": { + "version": "7.1.3", + "license": "MIT" + }, + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/express": { + "version": "4.18.1", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-conditional-middleware": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "once": "1.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/express-http-problem-details": { + "version": "0.2.1", + "license": "MIT", + "dependencies": { + "http-problem-details": "^0.1.2", + "http-problem-details-mapper": "^0.1.4" + }, + "peerDependencies": { + "express": "^4.16.4" + } + }, + "node_modules/express-interceptor": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/express-interceptor/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express-interceptor/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/express-jwt": { + "version": "8.4.1", + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "^9", + "express-unless": "^2.1.3", + "jsonwebtoken": "^9.0.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/express-jwt-permissions": { + "version": "1.3.7", + "license": "MIT", + "dependencies": { + "express-unless": "^2.0.0", + "lodash.get": "^4.4.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/express-prom-bundle": { + "version": "6.5.0", + "license": "MIT", + "dependencies": { + "on-finished": "^2.3.0", + "url-value-parser": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "prom-client": ">=12.0.0" + } + }, + "node_modules/express-rdf-request": { + "resolved": "packages/express-rdf-request", + "link": true + }, + "node_modules/express-request-id": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "uuid": "^3.3.2" + } + }, + "node_modules/express-request-id/node_modules/uuid": { + "version": "3.4.0", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/express-session": { + "version": "1.17.3", + "license": "MIT", + "dependencies": { + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express-session/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/express-session/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/express-unless": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.0", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/express/node_modules/qs": { + "version": "6.10.3", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-merge-sort": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/external-merge-sort/-/external-merge-sort-0.1.4.tgz", + "integrity": "sha512-r7tL6qAE+xe8256PwgJu2WWCLE221U46WZDF7M8JzeKdFemOiqHHKH8Cyb/H6e6r+m5Eay0bqbUNHs1v+1DyMA==", + "dependencies": { + "heap": "^0.2.7" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.2.5", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "license": "MIT" + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-fetch": { + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "get-stream": "^6.0.1", + "mime-types": "^2.1.30", + "node-fetch": "^2.6.1", + "readable-error": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/file-fetch/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir": { + "version": "4.2.0", + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/formidable": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "4.3.3", + "license": "Apache-2.0", + "dependencies": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gcp-metadata": { + "version": "4.3.1", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/generic-pool": { + "version": "3.8.2", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/global-directory": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/grant": { + "version": "5.4.21", + "license": "MIT", + "dependencies": { + "qs": "^6.10.2", + "request-compose": "^2.1.4", + "request-oauth": "^1.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "optionalDependencies": { + "cookie": "^0.4.1", + "cookie-signature": "^1.1.0", + "jwk-to-pem": "^2.0.5", + "jws": "^4.0.0" + } + }, + "node_modules/grant/node_modules/cookie-signature": { + "version": "1.2.1", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "license": "MIT" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hash.js": { + "version": "1.1.7", + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hashids": { + "version": "1.2.2", + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, + "node_modules/helmet": { + "version": "4.6.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/helper-js": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.7", + "tslib": "^2" + } + }, + "node_modules/hexer": { + "version": "1.5.0", + "dependencies": { + "ansi-color": "^0.2.1", + "minimist": "^1.1.0", + "process": "^0.10.0", + "xtend": "^4.0.0" + }, + "bin": { + "hexer": "cli.js" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/hexer/node_modules/process": { + "version": "0.10.1", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/hijackresponse": { + "version": "4.0.1", + "license": "ISC" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "license": "ISC" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-parsed-element": { + "version": "0.4.1", + "license": "ISC" + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-link-header": { + "version": "1.1.3", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/http-problem-details": { + "version": "0.1.5", + "license": "MIT" + }, + "node_modules/http-problem-details-mapper": { + "version": "0.1.7", + "license": "MIT", + "peerDependencies": { + "http-problem-details": "^0.1.0" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-proxy/node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/http-signature": { + "version": "1.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/http-status": { + "version": "1.7.4", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-id": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", + "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/humanize-duration": { + "version": "3.31.0", + "license": "Unlicense" + }, + "node_modules/husky": { + "version": "9.0.11", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/hydra-box-middleware-shacl": { + "resolved": "packages/shacl-middleware", + "link": true + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.1", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/immutable": { + "version": "4.3.5", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-in-the-middle": { + "version": "1.3.5", + "license": "Apache-2.0", + "dependencies": { + "module-details-from-path": "^1.0.3" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file-esm": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-graph-pointer": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "@types/clownface": "^2.0.0" + } + }, + "node_modules/is-installed-globally": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally/node_modules/is-path-inside": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-network-error": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-relative-url": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "is-absolute-url": "^4.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shallow-equal": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-subdir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", + "dependencies": { + "better-path-resolve": "1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-uri": { + "version": "1.2.6", + "license": "MIT", + "dependencies": { + "parse-uri": "~1.0.3", + "punycode2": "~1.0.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/iso8601-duration": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jaeger-client": { + "version": "3.19.0", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0", + "opentracing": "^0.14.4", + "thriftrw": "^3.5.0", + "uuid": "^8.3.2", + "xorshift": "^1.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jmespath": { + "version": "0.16.0", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/joi": { + "version": "17.12.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/jose": { + "version": "4.15.4", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-base64": { + "version": "3.7.7", + "license": "BSD-3-Clause" + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.3.12", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/js-beautify/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonld": { + "version": "8.3.2", + "license": "BSD-3-Clause", + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsonld-context-parser": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "@types/http-link-header": "^1.0.1", + "@types/node": "^18.0.0", + "cross-fetch": "^3.0.6", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" + }, + "bin": { + "jsonld-context-parse": "bin/jsonld-context-parse.js" + } + }, + "node_modules/jsonld-context-parser/node_modules/@types/node": { + "version": "18.19.31", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/jsonld-streaming-parser": { + "version": "3.4.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.0", + "@rdfjs/types": "*", + "@types/http-link-header": "^1.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^2.4.0", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.0.0" + } + }, + "node_modules/jsonld-streaming-parser/node_modules/@types/readable-stream": { + "version": "2.3.15", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/jsonld/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsonld/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jsonstream2": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "jsonparse": "1.3.1", + "through2": "^3.0.1", + "type-component": "0.0.1" + }, + "bin": { + "jsonstream": "bin/jsonstream.js" + }, + "engines": { + "node": ">=5.10.0" + } + }, + "node_modules/jsonstream2/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsonstream2/node_modules/through2": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.0", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/just-extend": { + "version": "6.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jwa": { + "version": "2.0.0", + "license": "MIT", + "optional": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwk-to-pem": { + "version": "2.0.5", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "asn1.js": "^5.3.0", + "elliptic": "^6.5.4", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@types/express": "^4.17.17", + "@types/jsonwebtoken": "^9.0.2", + "debug": "^4.3.4", + "jose": "^4.14.6", + "limiter": "^1.1.5", + "lru-memoizer": "^2.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "license": "MIT", + "optional": true, + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/ky": { + "version": "0.33.3", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/ky-universal": { + "version": "0.11.0", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.31.4", + "web-streams-polyfill": ">=3.2.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } + } + }, + "node_modules/ky-universal/node_modules/node-fetch": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.6.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "launch-editor": "^2.6.1" + } + }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/limiter": { + "version": "1.1.5" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "license": "MIT", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lint-staged": { + "version": "15.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "5.3.0", + "commander": "11.1.0", + "debug": "4.3.4", + "execa": "8.0.1", + "lilconfig": "3.0.0", + "listr2": "8.0.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.4" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/lilconfig": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/listr2": { + "version": "8.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.0.0", + "rfdc": "^1.3.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lit": { + "version": "2.8.0", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-element": { + "version": "3.3.3", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-html": { + "version": "2.8.0", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/load-json-file": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.3.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/pify": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash._baseiteratee": { + "version": "4.7.0", + "license": "MIT", + "dependencies": { + "lodash._stringtopath": "~4.8.0" + } + }, + "node_modules/lodash._basetostring": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/lodash._baseuniq": { + "version": "4.6.0", + "license": "MIT", + "dependencies": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "node_modules/lodash._createset": { + "version": "4.0.3", + "license": "MIT" + }, + "node_modules/lodash._root": { + "version": "3.0.1", + "license": "MIT" + }, + "node_modules/lodash._stringtopath": { + "version": "4.8.0", + "license": "MIT", + "dependencies": { + "lodash._basetostring": "~4.12.0" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "license": "MIT" + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==" + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.uniqby": { + "version": "4.5.0", + "license": "MIT", + "dependencies": { + "lodash._baseiteratee": "~4.7.0", + "lodash._baseuniq": "~4.6.0" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^6.2.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^7.0.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/logform": { + "version": "2.6.0", + "license": "MIT", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/long": { + "version": "5.2.3", + "license": "Apache-2.0" + }, + "node_modules/long-timeout": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-memoizer": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/lru-cache": { + "version": "4.0.2", + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/yallist": { + "version": "2.1.2", + "license": "ISC" + }, + "node_modules/luxon": { + "version": "1.28.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/magic-string": { + "version": "0.30.7", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/material-colors": { + "version": "1.2.6", + "license": "ISC" + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "dev": true, + "license": "CC0-1.0", + "peer": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "8.1.1", + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "license": "MIT" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "6.1.1", + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.13.1", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "18.1.3", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/middleware-async": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-match": { + "version": "1.0.2", + "license": "ISC", + "dependencies": { + "wildcard": "^1.1.0" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.8.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "devOptional": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "license": "MIT", + "optional": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/mixme": { + "version": "0.5.10", + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "10.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "8.1.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/module-alias": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/moment": { + "version": "2.30.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multer": { + "version": "1.4.4", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^0.2.11", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "on-finished": "^2.3.0", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/n3": { + "version": "1.17.2", + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.1.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/namespace-emitter": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanoid-dictionary": { + "version": "4.3.0", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/nise": { + "version": "5.1.9", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "6.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-env-run": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/common-tags": "^1.4.0", + "@types/debug": "^4.1.5", + "@types/node": "^10.17.28", + "@types/yargs": "^15.0.5", + "common-tags": "^1.7.2", + "cross-spawn": "^7.0.3", + "debug": "^4.1.1", + "dotenv": "^8.2.0", + "pkginfo": "^0.4.1", + "upath": "^1.2.0", + "yargs": "^15.4.1" + }, + "bin": { + "node-env-run": "dist/bin/node-env-run.js", + "nodenv": "dist/bin/node-env-run.js" + } + }, + "node_modules/node-env-run/node_modules/@types/node": { + "version": "10.17.60", + "dev": true, + "license": "MIT" + }, + "node_modules/node-env-run/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/node-env-run/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/node-env-run/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/node-env-run/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/node-env-run/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/node-env-run/node_modules/dotenv": { + "version": "8.6.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/node-env-run/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-env-run/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/node-env-run/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-env-run/node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "peer": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "dev": true, + "license": "MIT" + }, + "node_modules/node-schedule": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "cron-parser": "^3.5.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nodeify-fetch": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "node-fetch": "^3.2.10", + "readable-stream": "^4.2.0", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/nodeify-fetch/node_modules/node-fetch": { + "version": "3.3.2", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/nopt": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/load-json-file": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-type": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/pidtree": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm-run-all/node_modules/pify": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/read-pkg": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-writable": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/oidc-client": { + "version": "1.11.5", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^7.4.1", + "base64-js": "^1.5.1", + "core-js": "^3.8.3", + "crypto-js": "^4.0.0", + "serialize-javascript": "^4.0.0" + } + }, + "node_modules/oidc-client/node_modules/acorn": { + "version": "7.4.1", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/oidc-client/node_modules/serialize-javascript": { + "version": "4.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "peer": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opentracing": { + "version": "0.14.7", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ospath": { + "version": "1.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/outdent": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", + "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==" + }, + "node_modules/oxigraph": { + "version": "0.4.0-alpha.7", + "resolved": "https://registry.npmjs.org/oxigraph/-/oxigraph-0.4.0-alpha.7.tgz", + "integrity": "sha512-qbuUH+ep7BB+Y1Tp9EbCi8roI9S5OQSipQzOqpQii/8lxg1u7XURfy0eog2rJlwo5YqfHHtQ3BUKF6YpkFTP9g==" + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-debounce": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-queue": { + "version": "7.4.1", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^5.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "5.1.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parallel-transform/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/parallel-transform/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/parallel-transform/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-link-header": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "xtend": "~4.0.1" + } + }, + "node_modules/parse-prefer-header": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "lodash.camelcase": "^4.3.0" + } + }, + "node_modules/parse-uri": { + "version": "1.0.9", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/patch-package": { + "version": "6.5.1", + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^1.10.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=10", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/ci-info": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/patch-package/node_modules/cross-spawn": { + "version": "6.0.5", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/is-ci": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/patch-package/node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/path-key": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/patch-package/node_modules/shebang-command": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package/node_modules/shebang-regex": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/universalify": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/patch-package/node_modules/which": { + "version": "1.3.1", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/patch-package/node_modules/yaml": { + "version": "1.10.2", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pct-encode": { + "version": "1.0.2", + "license": "BSD" + }, + "node_modules/pend": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-conf": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkginfo": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/pkgscan": { + "version": "1.0.24", + "license": "MIT", + "dependencies": { + "@pnpm/constants": "^7.1.1", + "@pnpm/dependency-path": "^2.1.2", + "@pnpm/error": "^5.0.2", + "@pnpm/lockfile-types": "^5.1.0", + "@pnpm/merge-lockfile-changes": "^5.0.2", + "@pnpm/types": "^9.1.0", + "@yarnpkg/lockfile": "^1.1.0", + "ansi-colors": "^4.1.3", + "comver-to-semver": "^1.0.0", + "js-yaml": "^4.1.0", + "minimatch": "^9.0.1", + "semver": "^7.5.2", + "yargs": "^17.7.2" + }, + "bin": { + "pkgscan": "dist/cli.js" + }, + "funding": { + "type": "individual", + "url": "https://ko-fi.com/nguyenngoclong" + } + }, + "node_modules/pkgscan/node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/pkgscan/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/pkgscan/node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/pkgscan/node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/pkgscan/node_modules/minimatch": { + "version": "9.0.4", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pkgscan/node_modules/yargs": { + "version": "17.7.2", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/pkgscan/node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/postinstall-postinstall": { + "version": "2.1.0", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/preact": { + "version": "10.19.6", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/preferred-pm": { + "version": "3.1.3", + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/preferred-pm/node_modules/find-up": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/preferred-pm/node_modules/locate-path": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/preferred-pm/node_modules/p-limit": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/preferred-pm/node_modules/p-locate": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/preferred-pm/node_modules/yocto-queue": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/printj": { + "version": "1.1.2", + "license": "Apache-2.0", + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.16", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/progress-webpack-plugin/node_modules/ansi-escapes": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/ansi-regex": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/cli-cursor": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/figures": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/log-update": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/mimic-fn": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/onetime": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/restore-cursor": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/progress-webpack-plugin/node_modules/wrap-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prom-client": { + "version": "14.0.1", + "license": "Apache-2.0", + "dependencies": { + "tdigest": "^0.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-the-world": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/retry": { + "version": "0.12.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/proto-fetch": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/protobufjs": { + "version": "7.2.6", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode2": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/qr-creator": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.11.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ramda": { + "version": "0.27.2", + "dev": true, + "license": "MIT" + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rdf-canonize": { + "version": "3.4.0", + "license": "BSD-3-Clause", + "dependencies": { + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rdf-cube-view-query": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "@tpluscode/rdf-string": "^1.1.3", + "@zazuko/env": "^2.0.4", + "commander": "^5.1.0", + "rdf-sparql-builder": "^0.2.2", + "sparql-http-client": "^2.2.2" + } + }, + "node_modules/rdf-cube-view-query/node_modules/commander": { + "version": "5.1.0", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/rdf-data-factory": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/rdf-dataset-ext": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "rdf-canonize": "^3.0.0", + "readable-stream": "3 - 4" + } + }, + "node_modules/rdf-ext": { + "version": "1.3.5", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.3.3", + "@rdfjs/dataset": "^1.1.1", + "@rdfjs/to-ntriples": "^1.0.1", + "rdf-normalize": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/rdf-ext/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/rdf-ext/node_modules/@rdfjs/to-ntriples": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/rdf-ext/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rdf-literal": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } + }, + "node_modules/rdf-loader-code": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "@rdfjs/namespace": "^2.0.0", + "clownface": "^2.0.0", + "is-graph-pointer": "^2.1.0", + "rdf-literal": "^1.3.1" + } + }, + "node_modules/rdf-loader-code/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/rdf-loader-code/node_modules/clownface": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, + "node_modules/rdf-loaders-registry": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "is-graph-pointer": "^2.1.0" + } + }, + "node_modules/rdf-normalize": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/rdf-parser-csvw": { + "version": "0.15.3", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.1.2", + "commander": "^3.0.1", + "csv-parse": "^5.3.1", + "lodash": "^4.17.15", + "luxon": "^1.17.3", + "readable-stream": "^3.4.0", + "uri-templates": "^0.2.0" + }, + "bin": { + "csvw-metadata": "bin/csvw-metadata.js" + } + }, + "node_modules/rdf-parser-csvw-xlsx": { + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "rdf-parser-csvw": "^0.15.0", + "readable-stream": "^3.6.0", + "xlsx": "^0.17.4" + } + }, + "node_modules/rdf-parser-csvw-xlsx/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rdf-parser-csvw/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/rdf-parser-csvw/node_modules/commander": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/rdf-parser-csvw/node_modules/csv-parse": { + "version": "5.5.5", + "license": "MIT" + }, + "node_modules/rdf-parser-csvw/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rdf-parser-px": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "@rdfjs/namespace": "^1.0.0", + "@rdfjs/term-map": "^1.0.1", + "clownface": "^1.2.0", + "commander": "^3.0.2", + "get-stream": "^5.1.0", + "iconv-lite": "^0.5.0", + "luxon": "^1.19.3", + "rdf-ext": "^1.3.0", + "readable-stream": "^3.4.0" + }, + "bin": { + "px-to-nt": "bin/px-to-nt.js" + } + }, + "node_modules/rdf-parser-px/node_modules/commander": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/rdf-parser-px/node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rdf-parser-px/node_modules/iconv-lite": { + "version": "0.5.2", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rdf-parser-px/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rdf-sparql-builder": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/to-ntriples": "^2.0.0", + "lodash": "^4.17.21" + } + }, + "node_modules/rdf-stream-to-dataset-stream": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.1.2", + "@rdfjs/dataset": "^1.0.1", + "chunkify-stream": "^1.0.0" + } + }, + "node_modules/rdf-stream-to-dataset-stream/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/rdf-transform-graph-imports": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "anylogger": "^1.0.11", + "readable-stream": "3 - 4", + "through2": "^4.0.2" + } + }, + "node_modules/rdf-transform-triple-to-quad": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.1.2", + "readable-stream": "^3.5.0" + } + }, + "node_modules/rdf-transform-triple-to-quad/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/rdf-transform-triple-to-quad/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rdf-validate-datatype": { + "version": "0.2.1", + "license": "MIT", + "dependencies": { + "@rdfjs/term-map": "^2.0.0", + "@tpluscode/rdf-ns-builders": "3 - 4" + } + }, + "node_modules/rdf-validate-datatype/node_modules/@rdfjs/term-map": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^2.0.0" + } + }, + "node_modules/rdf-validate-shacl": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/rdf-validate-shacl/-/rdf-validate-shacl-0.5.5.tgz", + "integrity": "sha512-oN6LQh7bzdQEkRMPCW332hxkRH9YANJuylcId41mivJar68vjk8Q4yAjAELxwrZsY2FsGWH4r9x5sPGqKMCUPg==", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/dataset": "^2", + "@rdfjs/environment": "^1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@vocabulary/sh": "^1.0.1", + "clownface": "^2.0.0", + "debug": "^4.3.2", + "rdf-literal": "^1.3.0", + "rdf-validate-datatype": "^0.2.0" + } + }, + "node_modules/rdf-validate-shacl/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/rdf-validate-shacl/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/rdf-validate-shacl/node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/rdf-validate-shacl/node_modules/clownface": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, + "node_modules/rdfxml-streaming-parser": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0", + "relative-to-absolute-iri": "^1.0.0", + "sax": "^1.2.4" + } + }, + "node_modules/rdfxml-streaming-parser/node_modules/sax": { + "version": "1.3.0", + "license": "ISC" + }, + "node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-yaml-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", + "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-yaml-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/readable-error": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.3.3" + } + }, + "node_modules/readable-error/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/readable-error/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-error/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "4.5.2", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readable-to-readable": { + "version": "0.1.3", + "license": "MIT", + "dependencies": { + "readable-stream": "^3.6.0" + } + }, + "node_modules/readable-to-readable/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redis": { + "version": "4.2.0", + "license": "MIT", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.0.2", + "@redis/client": "1.2.0", + "@redis/graph": "1.0.1", + "@redis/json": "1.0.3", + "@redis/search": "1.0.6", + "@redis/time-series": "1.0.3" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/relative-to-absolute-iri": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/renderkid": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/request-compose": { + "version": "2.1.6", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/request-oauth": { + "version": "1.0.1", + "license": "Apache-2.0", + "dependencies": { + "oauth-sign": "^0.9.0", + "qs": "^6.9.6", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/request-progress": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfc4648": { + "version": "1.5.3", + "license": "MIT" + }, + "node_modules/rfdc": { + "version": "1.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.16.4.tgz", + "integrity": "sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.16.4", + "@rollup/rollup-android-arm64": "4.16.4", + "@rollup/rollup-darwin-arm64": "4.16.4", + "@rollup/rollup-darwin-x64": "4.16.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.16.4", + "@rollup/rollup-linux-arm-musleabihf": "4.16.4", + "@rollup/rollup-linux-arm64-gnu": "4.16.4", + "@rollup/rollup-linux-arm64-musl": "4.16.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.16.4", + "@rollup/rollup-linux-riscv64-gnu": "4.16.4", + "@rollup/rollup-linux-s390x-gnu": "4.16.4", + "@rollup/rollup-linux-x64-gnu": "4.16.4", + "@rollup/rollup-linux-x64-musl": "4.16.4", + "@rollup/rollup-win32-arm64-msvc": "4.16.4", + "@rollup/rollup-win32-ia32-msvc": "4.16.4", + "@rollup/rollup-win32-x64-msvc": "4.16.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-inject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz", + "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1", + "magic-string": "^0.25.3", + "rollup-pluginutils": "^2.8.1" + } + }, + "node_modules/rollup-plugin-inject/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/rollup-plugin-inject/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/rollup-plugin-node-polyfills": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz", + "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", + "dev": true, + "dependencies": { + "rollup-plugin-inject": "^3.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.71.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.1", + "license": "ISC" + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.12.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/select-hose": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/send": { + "version": "0.18.0", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/separate-stream": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "readable-stream": "^3.6.0" + } + }, + "node_modules/separate-stream/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-link": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "license": "BSD-2-Clause" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "license": "MIT" + }, + "node_modules/sinon": { + "version": "17.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.5", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon-chai": { + "version": "3.7.0", + "dev": true, + "license": "(BSD-2-Clause OR WTFPL)", + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slug": { + "version": "5.3.0", + "license": "MIT" + }, + "node_modules/slugify": { + "version": "1.6.6", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/smartwrap": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "array.prototype.flat": "^1.2.3", + "breakword": "^1.0.5", + "grapheme-splitter": "^1.0.4", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1", + "yargs": "^15.1.0" + }, + "bin": { + "smartwrap": "src/terminal-adapter.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/smartwrap/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smartwrap/node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/smartwrap/node_modules/cliui": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/smartwrap/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/smartwrap/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/smartwrap/node_modules/wrap-ansi": { + "version": "6.2.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/y18n": { + "version": "4.0.3", + "license": "ISC" + }, + "node_modules/smartwrap/node_modules/yargs": { + "version": "15.4.1", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/yargs-parser": { + "version": "18.1.3", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true + }, + "node_modules/sparql-http-client": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^1.1.2", + "@rdfjs/parser-n3": "^1.1.3", + "@rdfjs/to-ntriples": "^1.0.2", + "get-stream": "^5.1.0", + "jsonstream2": "^3.0.0", + "lodash": "^4.17.15", + "nodeify-fetch": "^2.2.0", + "promise-the-world": "^1.0.1", + "rdf-transform-triple-to-quad": "^1.0.2", + "readable-stream": "^3.5.0", + "separate-stream": "^1.0.0" + } + }, + "node_modules/sparql-http-client/node_modules/@rdfjs/data-model": { + "version": "1.3.4", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.1" + }, + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/sparql-http-client/node_modules/@rdfjs/to-ntriples": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sparql-http-client/node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sparql-http-client/node_modules/nodeify-fetch": { + "version": "2.2.2", + "license": "MIT", + "dependencies": { + "@zazuko/node-fetch": "^2.6.6", + "concat-stream": "^1.6.0", + "cross-fetch": "^3.0.4", + "readable-error": "^1.0.0", + "readable-stream": "^3.5.0" + } + }, + "node_modules/sparql-http-client/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sparqljs": { + "version": "3.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "rdf-data-factory": "^1.1.2" + }, + "bin": { + "sparqljs": "bin/sparql-to-json" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/spawndamnit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz", + "integrity": "sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==", + "dependencies": { + "cross-spawn": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/spawndamnit/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/spawndamnit/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/spawndamnit/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "license": "CC0-1.0" + }, + "node_modules/spdy": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/ssf": { + "version": "0.11.2", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/standard": { + "version": "17.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "eslint": "^8.41.0", + "eslint-config-standard": "17.1.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.32.2", + "standard-engine": "^15.0.0", + "version-guard": "^1.1.1" + }, + "bin": { + "standard": "bin/cmd.cjs" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/standard-engine": { + "version": "15.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "get-stdin": "^8.0.0", + "minimist": "^1.2.6", + "pkg-conf": "^3.1.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-chunks": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "string_decoder": "^1.3.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/stream-transform": { + "version": "2.1.3", + "license": "MIT", + "dependencies": { + "mixme": "^0.5.1" + } + }, + "node_modules/streamsearch": { + "version": "0.1.2", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string-argv": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-replace-stream": { + "version": "0.0.2", + "license": "MIT", + "dependencies": { + "through2": "^2.0.0" + } + }, + "node_modules/string-replace-stream/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/string-replace-stream/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/string-replace-stream/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-replace-stream/node_modules/through2": { + "version": "2.0.5", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/string-template": { + "version": "0.2.1" + }, + "node_modules/string-to-stream": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "readable-stream": "^3.4.0" + } + }, + "node_modules/string-to-stream/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/superagent": { + "version": "8.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/supertest": { + "version": "6.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^8.1.2" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tdigest": { + "version": "0.1.2", + "license": "MIT", + "dependencies": { + "bintrees": "1.0.2" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.28.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/thread-loader/node_modules/schema-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/thriftrw": { + "version": "3.11.4", + "dependencies": { + "bufrw": "^1.2.1", + "error": "7.0.2", + "long": "^2.4.0" + }, + "bin": { + "thrift2json": "thrift2json.js" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/thriftrw/node_modules/long": { + "version": "2.4.0", + "license": "Apache-2.0", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/throttle-debounce": { + "version": "3.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/throttleit": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2-reduce": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-reduce/node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/through2-reduce/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2-reduce/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/through2-reduce/node_modules/through2": { + "version": "2.0.5", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "license": "0BSD" + }, + "node_modules/tty-table": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "csv": "^5.5.3", + "kleur": "^4.1.5", + "smartwrap": "^2.0.2", + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.1", + "yargs": "^17.7.1" + }, + "bin": { + "tty-table": "adapters/terminal-adapter.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tty-table/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tty-table/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tty-table/node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tty-table/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tty-table/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/tty-table/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table/node_modules/yargs": { + "version": "17.7.2", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tty-table/node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tus-js-client": { + "version": "3.1.3", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.1.2", + "combine-errors": "^3.0.3", + "is-stream": "^2.0.0", + "js-base64": "^3.7.2", + "lodash.throttle": "^4.1.1", + "proper-lockfile": "^4.1.2", + "url-parse": "^1.5.7" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-component": { + "version": "0.0.1" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "license": "MIT", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici": { + "version": "5.28.3", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-template": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "pct-encode": "~1.0.0" + } + }, + "node_modules/uri-template-route": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "uri-templates": "^0.2.0" + } + }, + "node_modules/uri-templates": { + "version": "0.2.0", + "license": "http://geraintluff.github.io/tv4/LICENSE.txt" + }, + "node_modules/url": { + "version": "0.10.3", + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-slugify": { + "version": "1.0.6", + "license": "MIT", + "dependencies": { + "hashids": "^1.2.2" + } + }, + "node_modules/url-value-parser": { + "version": "2.2.0", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "license": "MIT" + }, + "node_modules/util": { + "version": "0.12.5", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/utila": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-iri": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/version-guard": { + "version": "1.1.1", + "dev": true, + "license": "0BSD", + "peer": true, + "engines": { + "node": ">=0.10.48" + } + }, + "node_modules/vite": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz", + "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==", + "dev": true, + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-html-template": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/vite-plugin-html-template/-/vite-plugin-html-template-1.2.2.tgz", + "integrity": "sha512-xS9w453ropnzfYAQYPRorKa6qRKOr2kH09hSKBpUr5aSfOG0Q7KhdKg6YhrqWJ+itEpA5y4awFOfxwwVskKgYw==", + "dev": true, + "dependencies": { + "shelljs": "0.8.4" + } + }, + "node_modules/vue": { + "version": "3.4.21", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/server-renderer": "3.4.21", + "@vue/shared": "3.4.21" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-component-type-helpers": { + "version": "1.8.27", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-custom-element": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vue-loader": { + "version": "17.4.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "watchpack": "^2.4.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vue-loader/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-router": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-select": { + "version": "4.0.0-beta.6", + "license": "MIT", + "peerDependencies": { + "vue": "3.x" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/vuex": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vuex-oidc": { + "version": "3.11.1", + "license": "MIT", + "peerDependencies": { + "oidc-client": ">= 1.10.1", + "vue": ">= 2.5.0", + "vuex": ">= 3.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.90.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/is-plain-object": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.9", + "dev": true, + "license": "MIT", + "peer": true, + "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 + } + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "dev": true, + "license": "MPL-2.0", + "peer": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/@types/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/webpack-dev-server/node_modules/p-retry": { + "version": "4.6.2", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.16.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-merge/node_modules/wildcard": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "license": "ISC" + }, + "node_modules/which-pm": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8.15" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/winston": { + "version": "3.11.0", + "license": "MIT", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.7.0", + "license": "MIT", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.8.1", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/xlsx": { + "version": "0.17.5", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.2.0", + "cfb": "^1.1.4", + "codepage": "~1.15.0", + "crc-32": "~1.2.0", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/xorshift": { + "version": "1.2.0", + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.3.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/core": { + "name": "@cube-creator/core", + "version": "1.0.0", + "dependencies": { + "@rdfjs/parser-n3": "^2.0.2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@zazuko/env": "^2.0.6", + "@zazuko/prefixes": "^2.2.0", + "@zazuko/vocabulary-extras": "^2.0.6", + "sparql-http-client": "^3.0.0", + "string-to-stream": "^3.0.1" + }, + "devDependencies": { + "@rdfjs/types": "^1.1.0", + "@types/rdfjs__parser-n3": "^2.0.6", + "@types/sparql-http-client": "^3.0.2" + } + }, + "packages/core/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "packages/core/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "packages/core/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "packages/core/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "packages/core/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "packages/core/node_modules/@types/sparql-http-client": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "packages/core/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "packages/core/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "packages/core/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "packages/env": { + "name": "@cube-creator/env", + "version": "0.0.0", + "dependencies": { + "@cube-creator/model": "0.1.27", + "@rdfine/csvw": "^0.8.5", + "@rdfine/hydra": "^0.10.5", + "@rdfine/prov": "^0.3.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@tpluscode/rdfine": "^0.7.9", + "@zazuko/env": "^2.1.1", + "alcaeus": "^3.0.1" + } + }, + "packages/express": { + "name": "@cube-creator/express", + "version": "0.0.0", + "dependencies": { + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@zazuko/env": "^2.0.6", + "express": "^4.17.1", + "http-errors": "^2.0.0", + "middleware-async": "^1.2.7", + "mime-types": "^2", + "multer": "^1.4.3", + "once": "^1.4.0" + }, + "devDependencies": { + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@types/mime-types": "^2", + "@types/multer": "^1.4.7", + "chai": "^4.3.4", + "mocha": "^10", + "supertest": "^6.0.0" + } + }, + "packages/express-rdf-request": { + "version": "0.1.0", + "dependencies": { + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@zazuko/env": "^2.0.6", + "express": "^4.17.1" + }, + "devDependencies": { + "@cube-creator/testing": "^0.1.15", + "@kopflos-cms/core": "^0.2.0", + "@tpluscode/rdf-string": "^1.1.3", + "chai": "^4.2.0", + "chai-snapshot-matcher": "^2.0.0", + "mocha": "^10", + "supertest": "^6.0.0" + }, + "peerDependencies": { + "@kopflos-cms/core": "^0.2.0" + } + }, + "packages/model": { + "name": "@cube-creator/model", + "version": "0.1.27", + "dependencies": { + "@cube-creator/core": "1.0.0", + "@rdfine/csvw": "^0.8.5", + "@rdfine/hydra": "^0.10.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@tpluscode/rdf-ns-builders": "^4", + "@tpluscode/rdfine": "^0.7.7", + "@zazuko/env": "^2.0.6", + "is-uri": "^1.2.0", + "uri-template": "^1.0.1" + }, + "devDependencies": { + "@cube-creator/testing": "^0.1.21", + "@rdfjs/types": "^1.1.0", + "@types/is-uri": "^1", + "alcaeus": "^3.0.1", + "chai": "^4.3.4", + "mocha": "^10" + } + }, + "packages/shacl-middleware": { + "name": "hydra-box-middleware-shacl", + "version": "1.1.0", + "dependencies": { + "@kopflos-cms/core": "^0.2.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@zazuko/env": "^2.0.6", + "express": "^4.17.1", + "http-problem-details": "^0.1.5", + "middleware-async": "^1.2.7", + "rdf-validate-shacl": "^0.5.3" + }, + "devDependencies": { + "@cube-creator/testing": "^0.1.15", + "@tpluscode/rdf-string": "^1.3.0", + "mocha": "^10", + "supertest": "^6.0.0" + }, + "peerDependencies": { + "express-rdf-request": "0.1.0" + } + }, + "packages/testing": { + "name": "@cube-creator/testing", + "version": "0.1.21", + "dependencies": { + "@cube-creator/core": "1.0.0", + "@cube-creator/env": "*", + "@kopflos-cms/core": "^0.2.0", + "@rdfine/shacl": "^0.10.5", + "@rdfjs/express-handler": "^2.0.0", + "@rdfjs/formats": "^4", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@zazuko/env": "^2.0.6", + "chai": "^4.2.0", + "commander": "^7.0.0", + "debug": "^4.1.1", + "express": "^4.17.1", + "rdf-parser-px": "^0.2.0", + "rdf-transform-triple-to-quad": "^1.0.2", + "rdf-validate-shacl": "^0.5.3", + "sparql-http-client": "^3.0.0" + }, + "devDependencies": { + "@rdfjs/types": "^1.1.0", + "@types/rdf-transform-triple-to-quad": "^2.0.5", + "@types/rdf-validate-shacl": "^0.4.6", + "@types/rdfjs__express-handler": "^2.0.6" + } + }, + "packages/testing/node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "packages/testing/node_modules/@rdfjs/environment": { + "version": "1.0.0", + "license": "MIT" + }, + "packages/testing/node_modules/@rdfjs/parser-n3": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "packages/testing/node_modules/@rdfjs/sink": { + "version": "2.0.1", + "license": "MIT" + }, + "packages/testing/node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "license": "MIT" + }, + "packages/testing/node_modules/@tpluscode/sparql-builder": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/term-set": "^2", + "@rdfjs/types": "*", + "@tpluscode/rdf-string": "^1.3.0", + "@types/sparql-http-client": "^3.0.0", + "anylogger": "^1.0.11" + }, + "peerDependencies": { + "sparql-http-client": "^3.0.0" + } + }, + "packages/testing/node_modules/@types/sparql-http-client": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/rdfjs__environment": "*" + } + }, + "packages/testing/node_modules/commander": { + "version": "7.2.0", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "packages/testing/node_modules/duplex-to": { + "version": "2.0.0", + "license": "MIT" + }, + "packages/testing/node_modules/sparql-http-client": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.1", + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1.0.0", + "@rdfjs/parser-n3": "^2.0.2", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "nodeify-fetch": "^3.1.0", + "rdf-transform-triple-to-quad": "^2.0.0", + "readable-stream": "^4.5.2", + "stream-chunks": "^1.0.0" + } + }, + "packages/testing/node_modules/sparql-http-client/node_modules/rdf-transform-triple-to-quad": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "readable-stream": "3 - 4" + } + }, + "ui": { + "name": "@cube-creator/ui", + "version": "1.13.7", + "dependencies": { + "@ckpack/vue-color": "^1.1.8", + "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", + "@cube-creator/model": "0.1.27", + "@fortawesome/fontawesome-svg-core": "~1.2.32", + "@fortawesome/free-regular-svg-icons": "^5.15.1", + "@fortawesome/free-solid-svg-icons": "^5.15.1", + "@fortawesome/vue-fontawesome": "^3.0.0-5", + "@he-tree/vue3": "^1.2.9", + "@hydrofoil/shaperone-core": "^0.12.1", + "@hydrofoil/shaperone-hydra": "0.4.1", + "@hydrofoil/shaperone-rdf-validate-shacl": "^1.1.1", + "@hydrofoil/shaperone-wc": "^0.8.1", + "@hydrofoil/shaperone-wc-shoelace": "^0.4.1", + "@oruga-ui/oruga-next": "^0.5.10", + "@oruga-ui/theme-bulma": "^0.2.3", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs-elements/lit-helpers": "^0.3.7", + "@rdfjs-elements/rdf-editor": "^0.5.7", + "@sentry/tracing": "^6.2.0", + "@sentry/vue": "^6.2.0", + "@tinyhttp/content-disposition": "^2.0.5", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.7", + "@uppy/aws-s3-multipart": "^3.1.1", + "@uppy/core": "^3.0.4", + "@uppy/dashboard": "^3.2.0", + "@uppy/drag-drop": "^3.0.1", + "@uppy/file-input": "^3.1.1", + "@uppy/progress-bar": "^3.0.1", + "@uppy/status-bar": "^3.0.1", + "@uppy/vue": "^1.0.1", + "@vocabulary/dc11": "^1.0.4", + "@vocabulary/dcterms": "^1.0.4", + "@vocabulary/qb": "^1.0.4", + "@vocabulary/rdfs": "^1.0.4", + "@vocabulary/schema": "^1.0.4", + "@vocabulary/sdmx": "^1.0.4", + "@vocabulary/skos": "^1.0.4", + "@vocabulary/skosxl": "^1.0.4", + "@vocabulary/wgs": "^1.0.4", + "@vocabulary/xkos": "^1.0.4", + "@vocabulary/xsd": "^1.0.4", + "@zazuko/cube-hierarchy-query": "^2.2.1", + "@zazuko/env": "^2.0.6", + "alcaeus": "^3.0.1", + "buffer": "^6.0.3", + "bulma-quickview": "^2.0.0", + "clownface-shacl-path": "^2.1.0", + "cookie-storage": "^6.1.0", + "debounce": "^1.2.1", + "html-parsed-element": "^0.4.1", + "humanize-duration": "^3.27.3", + "lit": "^2", + "markdown-it": "^12.3.2", + "oidc-client": "^1.11.0", + "process": "^0.11.10", + "slugify": "^1.4.6", + "stream-browserify": "^3.0.0", + "tslib": "^2.3.1", + "util": "^0.12.4", + "vue": "^3.2.47", + "vue-custom-element": "^3.2.14", + "vue-router": "^4.0.0", + "vue-select": "^4.0.0-beta.3", + "vuex": "^4.0.0", + "vuex-oidc": "^3.10.1" + }, + "devDependencies": { + "@cypress/webpack-preprocessor": "^5.4.10", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@types/debounce": "^1.2.0", + "@types/humanize-duration": "^3.27.1", + "@types/markdown-it": "^12.2.3", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "@vitejs/plugin-vue": "^5.0.4", + "@vue/cli-plugin-e2e-cypress": "^5.0.1", + "@vue/cli-plugin-typescript": "^5.0.1", + "@vue/compiler-sfc": "^3.1.0", + "@vue/eslint-config-standard": "^8.0.1", + "@vue/eslint-config-typescript": "^10.0.0", + "@vue/test-utils": "^2.4.4", + "cypress": "^8.3.0", + "cypress-file-upload": "^5.0.0", + "eslint": "^8.0.0", + "eslint-plugin-vue": "^8.0", + "node-env-run": "^4.0.2", + "rollup-plugin-node-polyfills": "^0.2.1", + "sass": "^1.27.0", + "typescript": "~4.5.0", + "vite": "^5.2.10", + "vite-plugin-html-template": "^1.2.2" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.16.4" + } + }, + "ui/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "ui/node_modules/@typescript-eslint/eslint-plugin/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "ui/node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "ui/node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "ui/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "ui/node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "ui/node_modules/@typescript-eslint/type-utils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "ui/node_modules/@typescript-eslint/type-utils/node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "ui/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "ui/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "ui/node_modules/@typescript-eslint/typescript-estree/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "ui/node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "ui/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "ui/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "ui/node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "ui/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "ui/node_modules/@vue/cli-plugin-typescript": { + "version": "5.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.12.16", + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^5.0.8", + "babel-loader": "^8.2.2", + "fork-ts-checker-webpack-plugin": "^6.4.0", + "globby": "^11.0.2", + "thread-loader": "^3.0.0", + "ts-loader": "^9.2.5", + "webpack": "^5.54.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "cache-loader": "^4.1.0", + "typescript": ">=2", + "vue": "^2 || ^3.2.13", + "vue-template-compiler": "^2.0.0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "ui/node_modules/@vue/cli-plugin-typescript/node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "ui/node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader": { + "version": "9.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "ui/node_modules/@vue/eslint-config-typescript": { + "version": "10.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "vue-eslint-parser": "^8.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^8.0.1" + } + }, + "ui/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "ui/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "ui/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "ui/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "ui/node_modules/cosmiconfig": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "ui/node_modules/deepmerge": { + "version": "4.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "ui/node_modules/eslint-plugin-vue": { + "version": "8.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "ui/node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "ui/node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "ui/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "ui/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "ui/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "ui/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "ui/node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "ui/node_modules/schema-utils": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "ui/node_modules/source-map": { + "version": "0.7.4", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "ui/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "ui/node_modules/tapable": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "ui/node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "ui/node_modules/vue-eslint-parser": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "ui/node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + } + } +} diff --git a/package.json b/package.json index 07d3073be..c676f17e1 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,10 @@ { "name": "@zazuko/cube-creator", "private": true, + "type": "module", "scripts": { "prepare": "husky install", - "postinstall": "patch-package; yarn-deduplicate", + "postinstall": "patch-package", "lint": "eslint . --ext .ts,.vue,.tsx --quiet --ignore-path .gitignore", "c8": "c8 --reporter lcovonly", "test": "yarn c8 -o coverage/apis mocha --recursive apis/**/*.test.ts packages/**/*.test.ts --grep @SPARQL --invert", @@ -15,7 +16,7 @@ "test:cli:transform": "yarn c8 -o coverage/transform mocha --recursive cli/**/*.test.ts --grep @cube-creator/cli/lib/commands/transform", "test:cli:timeoutJobs": "yarn c8 -o coverage/transform mocha --recursive cli/**/*.test.ts --grep @cube-creator/cli/lib/commands/timeoutJobs", "test:e2e": "docker-compose run --rm e2e-tests --", - "seed-data": "dotenv -e .local.env -- bash -c \"ts-node packages/testing/index.ts -i ubd dimensions px-cube hierarchies\"" + "seed-data": "dotenv -e .local.env -- bash -c \"node --loader ts-node/esm packages/testing/index.ts -i ubd dimensions px-cube hierarchies\"" }, "workspaces": [ "cli", @@ -25,31 +26,24 @@ ], "dependencies": { "patch-package": "^6.5.0", - "postinstall-postinstall": "^2.1.0", - "yarn-deduplicate": "^6.0.2" + "postinstall-postinstall": "^2.1.0" }, "devDependencies": { "@changesets/cli": "^2.27.5", - "@tpluscode/eslint-config": "^0.3.3", - "@types/node": "^14.14.7", + "@tpluscode/eslint-config": "^0.4.5", + "@types/readable-stream": "^4.0.11", "@types/webpack-env": "^1.15.3", - "@typescript-eslint/eslint-plugin": "^5.48.0", - "@typescript-eslint/parser": "^5.48.0", + "@typescript-eslint/eslint-plugin": "^7.1.0", + "@typescript-eslint/parser": "^7.1.0", "c8": "^7.13.0", "chai-quantifiers": "^1.0.13", "dotenv": "^16.0.0", - "eslint": "^8.36.0", - "eslint-config-standard": "^17.0.0", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.1.1", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-vue": "^9.8.0", - "husky": "^8.0.3", - "lint-staged": "^13.1.0", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", "npm-run-all": "^4.1.5", - "standard": "^17.0.0", - "ts-node": "^9.0.0", + "ts-node": "^10.9.2", "typescript": "~4.5.0", "winston": "^3.3.3" }, @@ -60,8 +54,9 @@ "./**/*.ts" ], "require": [ - "mocha-setup.js" - ] + "mocha-setup.cjs" + ], + "loader": "ts-node/esm/transpile-only" }, "c8": { "all": true, diff --git a/packages/core/bootstrap.ts b/packages/core/bootstrap.ts index 4bd643e46..f2a8d3073 100644 --- a/packages/core/bootstrap.ts +++ b/packages/core/bootstrap.ts @@ -1,7 +1,7 @@ -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import Parser from '@rdfjs/parser-n3' import toStream from 'string-to-stream' -import StreamClient from 'sparql-http-client/StreamClient' +import StreamClient from 'sparql-http-client/StreamClient.js' import { TurtleTemplateResult } from '@tpluscode/rdf-string' const parser = new Parser() diff --git a/packages/core/datatypes.ts b/packages/core/datatypes.ts index ed40cbdc7..36f152295 100644 --- a/packages/core/datatypes.ts +++ b/packages/core/datatypes.ts @@ -1,5 +1,5 @@ import type { NamedNode } from '@rdfjs/types' -import { xsd } from '@tpluscode/rdf-ns-builders/strict' +import { xsd } from '@tpluscode/rdf-ns-builders' export const datatypes: [NamedNode, string[]][] = [ // Most used datatypes, in alphabetical order of the label diff --git a/packages/core/env.ts b/packages/core/env.ts index fdc90e04b..8ccb7f7c9 100644 --- a/packages/core/env.ts +++ b/packages/core/env.ts @@ -29,7 +29,7 @@ const handler = { }, } -type ENV_VARS = +export type ENV_VARS = 'AUTH_ISSUER' | 'AUTH_AUDIENCE' | 'AUTH_CONFIG_FILE' @@ -61,10 +61,8 @@ type KnownVariables = { [P in T]: string } -export const createProxy = () => new Proxy(process.env, handler) as KnownVariables & { +export const createProxy = (env: Record) => new Proxy(env, handler) as KnownVariables & { has(name: ENV_VARS): boolean production: boolean maybe: Partial> } - -export default createProxy() diff --git a/packages/core/env/node.ts b/packages/core/env/node.ts new file mode 100644 index 000000000..1cc6664c9 --- /dev/null +++ b/packages/core/env/node.ts @@ -0,0 +1,3 @@ +import { createProxy, ENV_VARS } from '../env.js' + +export default createProxy(process.env) diff --git a/packages/core/languages.ts b/packages/core/languages.ts index 0cb32fc5e..610e3483c 100644 --- a/packages/core/languages.ts +++ b/packages/core/languages.ts @@ -1,3 +1,3 @@ -import { literal } from '@rdf-esm/data-model' +import $rdf from '@zazuko/env' -export const supportedLanguages = ['de', 'fr', 'it', 'rm', 'en'].map(v => literal(v)) +export const supportedLanguages = ['de', 'fr', 'it', 'rm', 'en'].map(v => $rdf.literal(v)) diff --git a/packages/core/namespace.ts b/packages/core/namespace.ts index 39ca5c27c..a0895d668 100644 --- a/packages/core/namespace.ts +++ b/packages/core/namespace.ts @@ -1,10 +1,10 @@ -import prefixes from '@zazuko/rdf-vocabularies/prefixes' -import namespace from '@rdf-esm/namespace' +import prefixes from '@zazuko/prefixes' +import rdf from '@zazuko/env' import '@zazuko/vocabulary-extras/register' -export { cube } from '@zazuko/vocabulary-extras/builders' +export { cube } from '@zazuko/vocabulary-extras/builders/loose' export { meta, relation } from '@zazuko/vocabulary-extras/builders/loose' // TODO: do not use loose builders -export { shape } from './namespaces/shapes' +export { shape } from './namespaces/shapes.js' type CubeCreatorClass = 'CubeProject' | @@ -119,13 +119,13 @@ type SharedDimensionsTerms = prefixes.view = 'https://cube.link/view/' -export const query = namespace('http://hypermedia.app/query#') -export const view = namespace(prefixes.view) -export const hydraBox = namespace('http://hydra-box.org/schema/') -export const cc = namespace('https://cube-creator.zazuko.com/vocab#') -export const md = namespace('https://cube-creator.zazuko.com/shared-dimensions/vocab#') -export const editor = namespace(cc.dash.value) -export const sh1 = namespace('https://hypermedia.app/shaperone#') -export const hex = namespace('https://w3id.org/hydra/extension#') -export const iso6391 = namespace('http://lexvo.org/id/iso639-1/') -export const lindasSchema = namespace('https://schema.ld.admin.ch/') +export const query = rdf.namespace('http://hypermedia.app/query#') +export const view = rdf.namespace(prefixes.view) +export const hydraBox = rdf.namespace('http://hydra-box.org/schema/') +export const cc = rdf.namespace('https://cube-creator.zazuko.com/vocab#') +export const md = rdf.namespace('https://cube-creator.zazuko.com/shared-dimensions/vocab#') +export const editor = rdf.namespace(cc.dash.value) +export const sh1 = rdf.namespace('https://hypermedia.app/shaperone#') +export const hex = rdf.namespace('https://w3id.org/hydra/extension#') +export const iso6391 = rdf.namespace('http://lexvo.org/id/iso639-1/') +export const lindasSchema = rdf.namespace('https://schema.ld.admin.ch/') diff --git a/packages/core/namespaces/shapes.ts b/packages/core/namespaces/shapes.ts index 7ce7e812a..19261c1fc 100644 --- a/packages/core/namespaces/shapes.ts +++ b/packages/core/namespaces/shapes.ts @@ -1,6 +1,9 @@ +/// import type { NamedNode } from '@rdfjs/types' -import namespace from '@rdf-esm/namespace' -import env from '../env' +import $rdf from '@zazuko/env' +import { createProxy } from '../env.js' + +const env = createProxy(global.process && global.process.env ? global.process.env : import.meta.env) export const baseUri = env.maybe.API_CORE_BASE || '' @@ -26,4 +29,4 @@ type ShapeTerms = type ShapesNamespace = (term: ShapeTerms) => NamedNode -export const shape: ShapesNamespace = namespace(baseUri + 'shape/') as any +export const shape: ShapesNamespace = $rdf.namespace(baseUri + 'shape/') as any diff --git a/packages/core/package.json b/packages/core/package.json index bf91d3f23..89daa400d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -2,22 +2,24 @@ "name": "@cube-creator/core", "version": "1.0.0", "private": true, + "type": "module", + "exports": { + "./*": "./*.js", + "./env/node": "./env/node.js" + }, "dependencies": { - "@rdf-esm/data-model": "^0.5.4", - "@rdf-esm/namespace": "^0.5.2", - "@rdfjs/parser-n3": "^1.1.4", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdf-string": "^0.2.21", - "@zazuko/rdf-vocabularies": ">=2021.3.17", - "@zazuko/vocabulary-extras": "^1.2.3", - "rdf-ext": "^1.3.0", - "sparql-http-client": "^2.2.2", + "@rdfjs/parser-n3": "^2.0.2", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@zazuko/prefixes": "^2.2.0", + "@zazuko/vocabulary-extras": "^2.0.6", + "@zazuko/env": "^2.0.6", + "sparql-http-client": "^3.0.0", "string-to-stream": "^3.0.1" }, "devDependencies": { "@rdfjs/types": "^1.1.0", - "@types/rdfjs__namespace": "^1.1.3", - "@types/rdfjs__parser-n3": "^1.1.2", - "@types/sparql-http-client": "^2.2.5" + "@types/rdfjs__parser-n3": "^2.0.6", + "@types/sparql-http-client": "^3.0.2" } } diff --git a/packages/env/index.ts b/packages/env/index.ts new file mode 100644 index 000000000..ac3642c2f --- /dev/null +++ b/packages/env/index.ts @@ -0,0 +1,35 @@ +import parent from '@zazuko/env' +import type { Environment as E } from '@rdfjs/environment/Environment.js' +import Environment from '@zazuko/env/Environment.js' +import { RdfineFactory } from '@tpluscode/rdfine' +import { ShFactory } from '@rdfine/shacl/Factory' +import { CsvwFactory } from '@rdfine/csvw/Factory' +import { HydraFactory } from '@rdfine/hydra/Factory' +import { ProvFactory } from '@rdfine/prov/Factory' +import { RdfsFactory } from '@rdfine/rdfs/Factory' +import { SchemaFactory } from '@rdfine/schema/Factory' +import alcaeus, { AlcaeusFactory } from 'alcaeus/Factory.js' +import CubeCreatorModelFactory from '@cube-creator/model/Factory' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' +import * as Models from '@cube-creator/model' + +const env = new Environment([ + RdfineFactory, + ShFactory, + CsvwFactory, + ProvFactory, + RdfsFactory, + HydraFactory, + SchemaFactory, + alcaeus(), + CubeCreatorModelFactory, +], { parent }) + +env.rdfine().factory.addMixin(...Object.values(Models)) + +declare module 'barnard59-env' { + interface AdditionalFactories extends E { + } +} + +export default env diff --git a/packages/env/package.json b/packages/env/package.json new file mode 100644 index 000000000..5ffc5fe16 --- /dev/null +++ b/packages/env/package.json @@ -0,0 +1,18 @@ +{ + "name": "@cube-creator/env", + "type": "module", + "version": "0.0.0", + "main": "index.js", + "dependencies": { + "@cube-creator/model": "0.1.27", + "@rdfine/csvw": "^0.8.5", + "@rdfine/hydra": "^0.10.5", + "@rdfine/prov": "^0.3.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@tpluscode/rdfine": "^0.7.9", + "@zazuko/env": "^2.1.1", + "alcaeus": "^3.0.1" + } +} diff --git a/packages/express-rdf-request/index.ts b/packages/express-rdf-request/index.ts index 720a9a598..d8336d17b 100644 --- a/packages/express-rdf-request/index.ts +++ b/packages/express-rdf-request/index.ts @@ -1,7 +1,7 @@ import type { NamedNode, Quad } from '@rdfjs/types' import express from 'express' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' import { hydra, rdf } from '@tpluscode/rdf-ns-builders' declare module 'express-serve-static-core' { @@ -22,7 +22,7 @@ export function resource(req: express.Request, res: unknown, next: express.NextF const dataset = $rdf.dataset() if (!req.dataset) { - return clownface({ dataset }).node(req.hydra.term) + return $rdf.clownface({ dataset }).node(req.hydra.term) } for (const quad of await req.dataset()) { @@ -33,7 +33,7 @@ export function resource(req: express.Request, res: unknown, next: express.NextF dataset.add($rdf.quad(subject, predicate, object, graph)) } - const pointer = clownface({ dataset }).namedNode(req.hydra.term) + const pointer = $rdf.clownface({ dataset }).namedNode(req.hydra.term) if (req.hydra.operation) { const expectedTypes = req.hydra.operation diff --git a/packages/express-rdf-request/package.json b/packages/express-rdf-request/package.json index d055c9e8a..a40ac06a1 100644 --- a/packages/express-rdf-request/package.json +++ b/packages/express-rdf-request/package.json @@ -3,21 +3,21 @@ "private": true, "version": "0.1.0", "main": "index.js", + "type": "module", "dependencies": { - "@tpluscode/rdf-ns-builders": "^1.0.0", - "clownface": "^1.2.0", - "express": "^4.17.1", - "rdf-ext": "^1.3.0" + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@zazuko/env": "^2.0.6", + "express": "^4.17.1" }, "peerDependencies": { - "hydra-box": "^0.6" + "@kopflos-cms/core": "^0.2.0" }, "devDependencies": { "@cube-creator/testing": "^0.1.15", - "@tpluscode/rdf-string": "^0.2.21", + "@tpluscode/rdf-string": "^1.1.3", "chai": "^4.2.0", "chai-snapshot-matcher": "^2.0.0", - "hydra-box": "^0.6.2", + "@kopflos-cms/core": "^0.2.0", "mocha": "^10", "supertest": "^6.0.0" } diff --git a/packages/express-rdf-request/test/index.test.ts b/packages/express-rdf-request/test/index.test.ts index 66654b8a2..5b38849bd 100644 --- a/packages/express-rdf-request/test/index.test.ts +++ b/packages/express-rdf-request/test/index.test.ts @@ -2,13 +2,12 @@ import { describe, it } from 'mocha' import { expect } from 'chai' import request from 'supertest' import express from 'express' -import $rdf from 'rdf-ext' -import clownface from 'clownface' +import $rdf from '@zazuko/env' import { turtle } from '@tpluscode/rdf-string' import { rdfs } from '@tpluscode/rdf-ns-builders' import { appMock } from '@cube-creator/testing/middleware' import { cc } from '@cube-creator/testing/lib/namespace' -import { resource } from '..' +import { resource } from '../index.js' describe('middleware/resource', () => { it('replaces empty term in body with req.hydra.term', async function () { @@ -26,7 +25,7 @@ describe('middleware/resource', () => { return dataset.toStream() }, async clownface() { - return clownface({ dataset }).node(this.term) as any + return $rdf.clownface({ dataset }).node(this.term) as any }, } })) diff --git a/packages/express/multipart.ts b/packages/express/multipart.ts index 6e81f2af8..110cb0df8 100644 --- a/packages/express/multipart.ts +++ b/packages/express/multipart.ts @@ -1,11 +1,12 @@ -import { Readable } from 'stream' -import type { NamedNode, Stream } from '@rdfjs/types' +import { Readable } from 'node:stream' +import type { Readable as RS } from 'readable-stream' +import type { NamedNode, Stream, BaseQuad } from '@rdfjs/types' import E, { Router } from 'express' -import { parsers } from '@rdfjs-elements/formats-pretty' +import formats from '@rdfjs-elements/formats-pretty' import once from 'once' -import { BadRequest } from 'http-errors' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import httpError from 'http-errors' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' import asyncMiddleware from 'middleware-async' import mime from 'mime-types' import multer from 'multer' @@ -14,7 +15,7 @@ export function isMultipart(req: E.Request) { return req.get('content-type')?.includes('multipart/form-data') } -export type Files = Record Stream & Readable> +export type Files = Record Stream & RS> declare module 'express-serve-static-core' { interface Request { @@ -27,18 +28,18 @@ declare module 'express-serve-static-core' { function parseFile(file: Express.Multer.File, baseIRI: string): Stream & Readable { const mimeType = mime.lookup(file.originalname) - let parserStream = parsers.import(file.mimetype, Readable.from(file.buffer), { + let parserStream = formats.parsers.import(file.mimetype, Readable.from(file.buffer), { baseIRI, }) if (!parserStream && mimeType) { - parserStream = parsers.import(mimeType, Readable.from(file.buffer), { + parserStream = formats.parsers.import(mimeType, Readable.from(file.buffer), { baseIRI, }) } if (!parserStream) { - throw new BadRequest(`Parser not found for file ${file.originalname}`) + throw new httpError.BadRequest(`Parser not found for file ${file.originalname}`) } return parserStream as any @@ -52,14 +53,14 @@ multiPartResourceHandler.use(asyncMiddleware((req, res, next) => { const { files } = req if (!(files && Array.isArray(files))) { - throw new BadRequest('Unexpected multipart body') + throw new httpError.BadRequest('Unexpected multipart body') } const representation = files.find(file => file.fieldname === 'representation') if (!representation) { - throw new BadRequest('Missing request part "representation"') + throw new httpError.BadRequest('Missing request part "representation"') } - return clownface({ + return $rdf.clownface({ dataset: await $rdf.dataset().import(parseFile(representation, req.hydra.term.value)), term: req.hydra.term, }) diff --git a/packages/express/package.json b/packages/express/package.json index d381b3062..ff65c66d0 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -2,19 +2,19 @@ "name": "@cube-creator/express", "version": "0.0.0", "private": true, + "type": "module", "dependencies": { - "@rdfjs-elements/formats-pretty": "^0.4.3", - "clownface": "^1.4.0", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@zazuko/env": "^2.0.6", "express": "^4.17.1", "http-errors": "^2.0.0", "middleware-async": "^1.2.7", "mime-types": "^2", "multer": "^1.4.3", - "once": "^1.4.0", - "rdf-ext": "^1.3.5" + "once": "^1.4.0" }, "devDependencies": { - "@tpluscode/rdf-ns-builders": "^1.0.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", "@types/mime-types": "^2", "@types/multer": "^1.4.7", "chai": "^4.3.4", diff --git a/packages/express/test/multipart.test.ts b/packages/express/test/multipart.test.ts index e384b0fa3..92c552fc4 100644 --- a/packages/express/test/multipart.test.ts +++ b/packages/express/test/multipart.test.ts @@ -4,10 +4,11 @@ import request from 'supertest' import express from 'express' import asyncMiddleware from 'middleware-async' import { expect } from 'chai' -import $rdf from 'rdf-ext' -import { rdf, schema } from '@tpluscode/rdf-ns-builders/strict' -import clownface from 'clownface' -import { isMultipart, multiPartResourceHandler } from '../multipart' +import $rdf from '@zazuko/env' +import { rdf, schema } from '@tpluscode/rdf-ns-builders' +import { isMultipart, multiPartResourceHandler } from '../multipart.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) describe('@cube-creator/express/multipart', () => { describe('isMultipart', () => { @@ -143,7 +144,7 @@ describe('@cube-creator/express/multipart', () => { app.use(asyncMiddleware(async (req, res) => { const { part } = req.multipartFileQuadsStreams() const dataset = await $rdf.dataset().import(part('http://foo.bar/baz/')) - const parsed = clownface({ dataset }) + const parsed = $rdf.clownface({ dataset }) res.send(parsed.has(rdf.type, schema.Person).value) })) diff --git a/packages/model/BaseResource.ts b/packages/model/BaseResource.ts index 1ac52429e..4382bfb5a 100644 --- a/packages/model/BaseResource.ts +++ b/packages/model/BaseResource.ts @@ -3,8 +3,8 @@ import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' import type { GraphPointer } from 'clownface' import { schema } from '@tpluscode/rdf-ns-builders' import * as Schema from '@rdfine/schema' -import { cc } from '../core/namespace' -import { JobErrorMixin } from './Job' +import { cc } from '../core/namespace.js' +import { JobErrorMixin } from './Job.js' declare module '@tpluscode/rdfine/RdfResource' { interface RdfResourceCore { diff --git a/packages/model/ColumnMapping.ts b/packages/model/ColumnMapping.ts index 95372b23a..5addf719e 100644 --- a/packages/model/ColumnMapping.ts +++ b/packages/model/ColumnMapping.ts @@ -1,12 +1,13 @@ import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' import { Initializer, RdfResource, RdfResourceCore } from '@tpluscode/rdfine/RdfResource' -import RdfResourceImpl, { Constructor, namespace, property, ResourceIdentifier } from '@tpluscode/rdfine' +import { Constructor, namespace, property, ResourceIdentifier } from '@tpluscode/rdfine' import { cc } from '@cube-creator/core/namespace' import type { GraphPointer } from 'clownface' -import { CsvColumn } from './CsvColumn' -import { Table } from './Table' -import { Link } from './lib/Link' -import { initializer } from './lib/initializer' +import { RdfineEnvironment } from '@tpluscode/rdfine/environment' +import { CsvColumn } from './CsvColumn.js' +import { Table } from './Table.js' +import { Link } from './lib/Link.js' +import { initializer } from './lib/initializer.js' export interface ColumnMapping extends RdfResource { targetProperty: Term @@ -106,8 +107,8 @@ export function ReferenceColumnMappingMixin(Resource: ReferenceColumnMappingMixin.appliesTo = cc.ReferenceColumnMapping -export const literalFromPointer = (pointer: GraphPointer, initializer?: Initializer): LiteralColumnMapping => { - return RdfResourceImpl.factory.createEntity(pointer, [LiteralColumnMappingMixin], { +export const literalFromPointer = (env: RdfineEnvironment, pointer: GraphPointer, initializer?: Initializer): LiteralColumnMapping => { + return env.rdfine().factory.createEntity(pointer, [LiteralColumnMappingMixin], { initializer: { ...initializer, types: [cc.ColumnMapping, cc.LiteralColumnMapping], @@ -115,8 +116,8 @@ export const literalFromPointer = (pointer: GraphPointer, initializer?: Initializer): ReferenceColumnMapping => { - return RdfResourceImpl.factory.createEntity(pointer, [ReferenceColumnMappingMixin], { +export const referenceFromPointer = (env: RdfineEnvironment, pointer: GraphPointer, initializer?: Initializer): ReferenceColumnMapping => { + return env.rdfine().factory.createEntity(pointer, [ReferenceColumnMappingMixin], { initializer: { ...initializer, types: [cc.ColumnMapping, cc.ReferenceColumnMapping], diff --git a/packages/model/CsvColumn.ts b/packages/model/CsvColumn.ts index 3ad6a5205..51da70332 100644 --- a/packages/model/CsvColumn.ts +++ b/packages/model/CsvColumn.ts @@ -1,10 +1,11 @@ -import RdfResourceImpl, { Initializer, RdfResource } from '@tpluscode/rdfine/RdfResource' +import { Initializer, RdfResource } from '@tpluscode/rdfine/RdfResource' import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import { Constructor, property, ResourceIdentifier } from '@tpluscode/rdfine' import type { GraphPointer } from 'clownface' import { csvw, dtype, schema } from '@tpluscode/rdf-ns-builders' import { cc } from '@cube-creator/core/namespace' -import { initializer } from './lib/initializer' +import { RdfineEnvironment } from '@tpluscode/rdfine/environment' +import { initializer } from './lib/initializer.js' export interface CsvColumn extends RdfResource { name: string @@ -29,8 +30,8 @@ export function CsvColumnMixin(Resource: Base): Mixin CsvColumnMixin.appliesTo = csvw.Column -export const fromPointer = (pointer: GraphPointer, initializer?: Initializer): CsvColumn => { - return RdfResourceImpl.factory.createEntity(pointer, [CsvColumnMixin], { +export const fromPointer = (env: RdfineEnvironment, pointer: GraphPointer, initializer?: Initializer): CsvColumn => { + return env.rdfine().factory.createEntity(pointer, [CsvColumnMixin], { initializer, }) } diff --git a/packages/model/CsvMapping.ts b/packages/model/CsvMapping.ts index 1a34b4f15..180b1d575 100644 --- a/packages/model/CsvMapping.ts +++ b/packages/model/CsvMapping.ts @@ -2,11 +2,11 @@ import { RdfResource } from '@tpluscode/rdfine/RdfResource' import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import { Constructor, property } from '@tpluscode/rdfine' import { cc } from '@cube-creator/core/namespace' -import { CsvSource, SourcesCollection } from './CsvSource' -import { TableCollection } from './Table' -import { Link } from './lib/Link' -import { initializer } from './lib/initializer' -import { Project } from './Project' +import { CsvSource, SourcesCollection } from './CsvSource.js' +import { TableCollection } from './Table.js' +import { Link } from './lib/Link.js' +import { initializer } from './lib/initializer.js' +import { Project } from './Project.js' export interface CsvMapping extends RdfResource { sources: CsvSource[] diff --git a/packages/model/CsvSource.ts b/packages/model/CsvSource.ts index e1bde8732..0da88e885 100644 --- a/packages/model/CsvSource.ts +++ b/packages/model/CsvSource.ts @@ -8,12 +8,11 @@ import { cc } from '@cube-creator/core/namespace' import { DialectMixin } from '@rdfine/csvw' import { MediaObjectMixin as SchemaMediaObjectMixin } from '@rdfine/schema' import type { Collection } from '@rdfine/hydra' -import { blankNode } from '@rdf-esm/data-model' -import { initializer } from './lib/initializer' -import { Link } from './lib/Link' -import { CsvMapping } from './CsvMapping' -import { CsvColumn, CsvColumnMixin } from './CsvColumn' -import { MediaObjectMixin } from './MediaObject' +import { initializer } from './lib/initializer.js' +import { Link } from './lib/Link.js' +import { CsvMapping } from './CsvMapping.js' +import { CsvColumn, CsvColumnMixin } from './CsvColumn.js' +import { MediaObjectMixin } from './MediaObject.js' export interface CsvSource extends RdfResource { associatedMedia: Schema.MediaObject | undefined @@ -40,7 +39,7 @@ export function CsvSourceMixin(base: Base): Mixin { @property.literal({ path: schema.error, values: 'array' }) errorMessages!: string[] - @property.resource({ path: csvw.dialect, as: [DialectMixin], initial: () => blankNode() }) + @property.resource({ path: csvw.dialect, as: [DialectMixin], initial: ({ env }) => env.blankNode() }) dialect!: Csvw.Dialect @property.resource({ path: cc.csvMapping }) diff --git a/packages/model/Cube.ts b/packages/model/Cube.ts index b2afd1c00..495723592 100644 --- a/packages/model/Cube.ts +++ b/packages/model/Cube.ts @@ -5,11 +5,11 @@ import { Constructor, property } from '@tpluscode/rdfine' import { IriTemplate } from '@rdfine/hydra' import { dcterms, schema, xsd } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' -import { namedNode } from '@rdf-esm/data-model' -import { initializer } from './lib/initializer' +import $rdf from '@zazuko/env' +import { initializer } from './lib/initializer.js' -export const Draft = namedNode('https://ld.admin.ch/vocabulary/CreativeWorkStatus/Draft') -export const Published = namedNode('https://ld.admin.ch/vocabulary/CreativeWorkStatus/Published') +export const Draft = $rdf.namedNode('https://ld.admin.ch/vocabulary/CreativeWorkStatus/Draft') +export const Published = $rdf.namedNode('https://ld.admin.ch/vocabulary/CreativeWorkStatus/Published') export interface Cube extends RdfResourceCore { dateCreated: Date diff --git a/packages/model/Dataset.ts b/packages/model/Dataset.ts index 44b6c4029..8c2201455 100644 --- a/packages/model/Dataset.ts +++ b/packages/model/Dataset.ts @@ -4,11 +4,11 @@ import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import { Constructor, property } from '@tpluscode/rdfine' import { _void, dcat, dcterms, schema, xsd } from '@tpluscode/rdf-ns-builders' import { cc, cube } from '@cube-creator/core/namespace' -import { initializer } from './lib/initializer' -import { Cube } from './Cube' -import { DimensionMetadataCollection, DimensionMetadataCollectionMixin } from './DimensionMetadata' -import { Link } from './lib/Link' -import { childResource } from './lib/resourceIdentifiers' +import { initializer } from './lib/initializer.js' +import { Cube } from './Cube.js' +import { DimensionMetadataCollection, DimensionMetadataCollectionMixin } from './DimensionMetadata.js' +import { Link } from './lib/Link.js' +import { childResource } from './lib/resourceIdentifiers.js' export interface Dataset extends RdfResource { hasPart: Cube[] diff --git a/packages/model/DimensionMetadata.ts b/packages/model/DimensionMetadata.ts index ad92cc19d..0899b6cd8 100644 --- a/packages/model/DimensionMetadata.ts +++ b/packages/model/DimensionMetadata.ts @@ -3,10 +3,9 @@ import * as Rdfs from '@rdfine/rdfs' import { Constructor, namespace, property, RdfResource } from '@tpluscode/rdfine' import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import { qudt, schema, sh } from '@tpluscode/rdf-ns-builders' -import * as Thing from '@rdfine/schema/lib/Thing' import { cc, cube, meta } from '@cube-creator/core/namespace' -import { initializer } from './lib/initializer' -import './BaseResource' +import { initializer } from './lib/initializer.js' +import './BaseResource.js' export interface DimensionMetadata extends RdfResource { about: NamedNode @@ -76,19 +75,21 @@ export const Error = { DimensionMappingChanged: 'DimensionMappingChanged', } as const -export const createNoMeasureDimensionError = Thing.fromPointer({ +export const noMeasureDimensionError = { + type: schema.Thing, identifierLiteral: Error.MissingMeasureDimension, description: 'No Measure dimension defined', -}) +} -export const dimensionChangedWarning = Thing.fromPointer({ +export const dimensionChangedWarning = { + type: schema.Thing, identifierLiteral: Error.DimensionMappingChanged, description: 'Dimension mappings changed. It may be necessary to run transformation', -}) +} export const createCollection = initializer(DimensionMetadataCollectionMixin, { types: [cc.DimensionMetadataCollection], - [schema.error.value]: [createNoMeasureDimensionError], + [schema.error.value]: [noMeasureDimensionError], }) type RequiredProperties = 'about' diff --git a/packages/model/Factory.ts b/packages/model/Factory.ts new file mode 100644 index 000000000..6dce5a8e3 --- /dev/null +++ b/packages/model/Factory.ts @@ -0,0 +1,19 @@ +import type { RdfineEnvironment } from '@tpluscode/rdfine/environment' +import type { Factory } from '@tpluscode/rdfine/factory' +import * as CubeCreator from './index.js' + +declare module '@tpluscode/rdfine/environment' { + interface Rdfine { + cc: { + Table: Factory + Project: Factory + Organization: Factory + } + } +} + +export default class { + init(this: RdfineEnvironment) { + this.rdfine.cc = this._initVocabulary(CubeCreator) + } +} diff --git a/packages/model/ImportJob.ts b/packages/model/ImportJob.ts index 2090cd766..df78ffc04 100644 --- a/packages/model/ImportJob.ts +++ b/packages/model/ImportJob.ts @@ -5,10 +5,10 @@ import { ResourceMixin } from '@rdfine/rdfs' import { ActionMixin } from '@rdfine/schema' import { cc } from '@cube-creator/core/namespace' import { schema } from '@tpluscode/rdf-ns-builders' -import { initializer } from './lib/initializer' -import { Job } from './Job' -import { DimensionMetadataCollection } from './DimensionMetadata' -import { Link } from './lib/Link' +import { initializer } from './lib/initializer.js' +import { Job } from './Job.js' +import { DimensionMetadataCollection } from './DimensionMetadata.js' +import { Link } from './lib/Link.js' export interface ImportJob extends Job { sourceCube: NamedNode diff --git a/packages/model/Job.ts b/packages/model/Job.ts index ea737be0f..3083eea0e 100644 --- a/packages/model/Job.ts +++ b/packages/model/Job.ts @@ -2,22 +2,22 @@ import type { Literal, NamedNode, Term } from '@rdfjs/types' import { Constructor, property, RdfResource } from '@tpluscode/rdfine' import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import type { Collection } from '@rdfine/hydra' -import type * as Rdfs from '@rdfine/rdfs' +import type { Resource } from '@rdfine/rdfs' import { ResourceMixin } from '@rdfine/rdfs' -import { Action, ActionMixin, CreativeWork, CreativeWorkMixin, Thing, ThingMixin } from '@rdfine/schema' +import { Action, ActionMixin, CreativeWork, Thing, ThingMixin } from '@rdfine/schema' import { ValidationReport, ValidationReportMixin } from '@rdfine/shacl' import { cc } from '@cube-creator/core/namespace' import { schema, dcterms, rdfs, rdf } from '@tpluscode/rdf-ns-builders' -import { TableCollection } from './Table' -import { Link } from './lib/Link' -import { initializer } from './lib/initializer' -import { DimensionMetadataCollection } from './DimensionMetadata' +import { TableCollection } from './Table.js' +import { Link } from './lib/Link.js' +import { initializer } from './lib/initializer.js' +import { DimensionMetadataCollection } from './DimensionMetadata.js' export interface JobError extends Thing { validationReport?: ValidationReport } -export interface Job extends Action, Rdfs.Resource, RdfResource { +export interface Job extends Action, Resource, RdfResource { created: Date modified: Date link?: RdfResource @@ -154,7 +154,7 @@ export function PublishJobMixin>(base: Bas return this.pointer .out(schema.workExample) .filter(example => example.out(schema.encodingFormat).terms.length > 0) - .map(workExampleP => new CreativeWorkMixin.Class(workExampleP as any) as CreativeWork) + .map(workExampleP => this.env.rdfine.schema.CreativeWork(workExampleP as any) as CreativeWork) } addWorkExample(attrs: WorkExampleInput) { diff --git a/packages/model/MediaObject.ts b/packages/model/MediaObject.ts index 2dfadd899..876488feb 100644 --- a/packages/model/MediaObject.ts +++ b/packages/model/MediaObject.ts @@ -1,11 +1,11 @@ -import type { DatasetCore, NamedNode } from '@rdfjs/types' +import type { NamedNode } from '@rdfjs/types' import type * as Schema from '@rdfine/schema' -import RdfResourceImpl, { Initializer, RdfResourceCore, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' +import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' import { Constructor, property } from '@tpluscode/rdfine' -import { MediaObjectMixin as SchemaMediaObjectMixin } from '@rdfine/schema' import { schema } from '@tpluscode/rdf-ns-builders' -import type { GraphPointer } from 'clownface' import { cc } from '@cube-creator/core/namespace' +import { RdfineEnvironment } from '@tpluscode/rdfine/environment' +import { createFactory } from '@tpluscode/rdfine/factory' export interface MediaObjectEx { sourceKind: NamedNode @@ -26,12 +26,4 @@ export function MediaObjectMixin(pointer: GraphPointer, initializer: Initializer> = {}): Schema.MediaObject => { - return RdfResourceImpl.factory.createEntity(pointer, [MediaObjectMixin, SchemaMediaObjectMixin], { - initializer: { - ...initializer, - types: [schema.MediaObject], - }, - }) -} +MediaObjectMixin.createFactory = (env: RdfineEnvironment) => createFactory([MediaObjectMixin], { types: [schema.MediaObject] }, env) diff --git a/packages/model/Organization.ts b/packages/model/Organization.ts index 89ef0195e..21e5b94da 100644 --- a/packages/model/Organization.ts +++ b/packages/model/Organization.ts @@ -1,10 +1,13 @@ -import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' -import { Organization, OrganizationMixin as SchemaOrganizationMixin } from '@rdfine/schema' -import { Constructor, namespace, property, ResourceIdentifier } from '@tpluscode/rdfine' +import type { NamedNode, Term } from '@rdfjs/types' +import type { Organization } from '@rdfine/schema' +import { Constructor, namespace, property } from '@tpluscode/rdfine' import { cc } from '@cube-creator/core/namespace' import { dcat, schema, _void } from '@tpluscode/rdf-ns-builders' -import RdfResourceImpl, { Initializer, RdfResourceCore } from '@tpluscode/rdfine/RdfResource' -import type { GraphPointer } from 'clownface' +import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' +import { RdfineEnvironment } from '@tpluscode/rdfine/environment' +import { createFactory } from '@tpluscode/rdfine/factory' + +export type { Organization } from '@rdfine/schema' interface CreateIdentifier { cubeIdentifier: string @@ -74,12 +77,4 @@ export function OrganizationMixin(pointer: GraphPointer, initializer: Initializer> = {}): Organization => { - return RdfResourceImpl.factory.createEntity(pointer, [OrganizationMixin, SchemaOrganizationMixin], { - initializer: { - ...initializer, - types: [schema.Organization], - }, - }) -} +OrganizationMixin.createFactory = (env: RdfineEnvironment) => createFactory([OrganizationMixin], { types: [schema.Organization] }, env) diff --git a/packages/model/Project.ts b/packages/model/Project.ts index 7906e89ad..169bcbe37 100644 --- a/packages/model/Project.ts +++ b/packages/model/Project.ts @@ -1,19 +1,20 @@ -import type { DatasetCore, NamedNode } from '@rdfjs/types' +import type { NamedNode } from '@rdfjs/types' import { ResourceMixin } from '@rdfine/rdfs' -import { Constructor, namespace, property, RdfResource, ResourceIdentifier } from '@tpluscode/rdfine' +import { Constructor, namespace, property, RdfResource } from '@tpluscode/rdfine' import type { GraphPointer } from 'clownface' -import RdfResourceImpl, { Initializer, RdfResourceCore } from '@tpluscode/rdfine/RdfResource' import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import { cc, lindasSchema } from '@cube-creator/core/namespace' import { dcterms, schema } from '@tpluscode/rdf-ns-builders' import { Organization, Person, PersonMixin } from '@rdfine/schema' import type { Collection } from '@rdfine/hydra' -import { initializer } from './lib/initializer' -import { childResource } from './lib/resourceIdentifiers' -import { Link } from './lib/Link' -import { CsvMapping, CsvMappingMixin } from './CsvMapping' -import { JobCollection } from './Job' -import { Dataset } from './Dataset' +import { RdfineEnvironment } from '@tpluscode/rdfine/environment' +import { createFactory } from '@tpluscode/rdfine/factory' +import { initializer } from './lib/initializer.js' +import { childResource } from './lib/resourceIdentifiers.js' +import { Link } from './lib/Link.js' +import { CsvMapping, CsvMappingMixin } from './CsvMapping.js' +import { JobCollection } from './Job.js' +import { Dataset } from './Dataset.js' export interface Project extends RdfResource { csvMapping?: CsvMapping @@ -113,11 +114,4 @@ export const createCsvProject = initializer(ProjectMixin) -export const fromPointer = (pointer: GraphPointer, initializer: Initializer = {}): Project & RdfResourceCore => { - return RdfResourceImpl.factory.createEntity(pointer, [ProjectMixin], { - initializer: { - ...initializer, - types: [cc.CubeProject], - }, - }) -} +ProjectMixin.createFactory = (env: RdfineEnvironment) => createFactory([ProjectMixin], { types: [cc.CubeProject] }, env) diff --git a/packages/model/Table.ts b/packages/model/Table.ts index 5ba78a61d..878ca76f9 100644 --- a/packages/model/Table.ts +++ b/packages/model/Table.ts @@ -1,17 +1,18 @@ import type { DatasetCore } from '@rdfjs/types' -import RdfResourceImpl, { RdfResource, Constructor, namespace, property, ResourceIdentifier } from '@tpluscode/rdfine' -import type { GraphPointer } from 'clownface' +import { RdfResource, Constructor, namespace, property } from '@tpluscode/rdfine' +import { createFactory } from '@tpluscode/rdfine/factory' +import { RdfineEnvironment } from '@tpluscode/rdfine/environment' import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' import type * as Csvw from '@rdfine/csvw' import { cc } from '@cube-creator/core/namespace' import { schema } from '@tpluscode/rdf-ns-builders' import type { Collection } from '@rdfine/hydra' -import { CsvSource } from './CsvSource' -import { Link } from './lib/Link' -import { initializer } from './lib/initializer' -import { CsvMapping } from './CsvMapping' -import { childResource } from './lib/resourceIdentifiers' -import { parse, ParsedTemplate } from './lib/uriTemplateParser' +import { CsvSource } from './CsvSource.js' +import { Link } from './lib/Link.js' +import { initializer } from './lib/initializer.js' +import { CsvMapping } from './CsvMapping.js' +import { childResource } from './lib/resourceIdentifiers.js' +import { parse, ParsedTemplate } from './lib/uriTemplateParser.js' export interface Table extends RdfResource { csvw: Link @@ -63,10 +64,7 @@ export function TableMixin(base: Base): Mixin { } TableMixin.appliesTo = cc.Table - -export const fromPointer = (pointer: GraphPointer): Table => { - return RdfResourceImpl.factory.createEntity(pointer, [TableMixin]) -} +TableMixin.createFactory = (env: RdfineEnvironment) => createFactory
([TableMixin], { types: [cc.Table] }, env) type RequiredProperties = 'name' | 'csvSource' | 'csvMapping' diff --git a/packages/model/index.ts b/packages/model/index.ts index 4f3c3f939..1fa7f2638 100644 --- a/packages/model/index.ts +++ b/packages/model/index.ts @@ -1,25 +1,26 @@ -export { OrganizationMixin } from './Organization' -export type { CsvProject, ImportProject, Project, CubeProject, ProjectsCollection } from './Project' -export { ProjectMixin } from './Project' -export type { CsvMapping } from './CsvMapping' -export { CsvMappingMixin } from './CsvMapping' -export type { CsvSource, SourcesCollection } from './CsvSource' -export { CsvSourceMixin } from './CsvSource' -export { MediaObjectMixin } from './MediaObject' -export type { Table, TableCollection } from './Table' -export { TableMixin } from './Table' -export type { Dataset } from './Dataset' -export { DatasetMixin } from './Dataset' -export type { Job, JobError, TransformJob, PublishJob, UnlistJob, JobCollection } from './Job' -export { JobMixin, TransformJobMixin, PublishJobMixin, UnlistJobMixin } from './Job' -export type { ImportJob } from './ImportJob' -export { ImportJobMixin } from './ImportJob' -export type { CsvColumn } from './CsvColumn' -export { CsvColumnMixin } from './CsvColumn' -export type { ColumnMapping, LiteralColumnMapping, ReferenceColumnMapping } from './ColumnMapping' -export { ColumnMappingMixin, LiteralColumnMappingMixin, ReferenceColumnMappingMixin } from './ColumnMapping' -export type { Cube } from './Cube' -export { CubeMixin } from './Cube' -export type { DimensionMetadata, DimensionMetadataCollection } from './DimensionMetadata' -export { DimensionMetadataCollectionMixin } from './DimensionMetadata' -export { BaseResourceMixin } from './BaseResource' +export type { Organization } from './Organization.js' +export { OrganizationMixin } from './Organization.js' +export type { CsvProject, ImportProject, Project, CubeProject, ProjectsCollection } from './Project.js' +export { ProjectMixin } from './Project.js' +export type { CsvMapping } from './CsvMapping.js' +export { CsvMappingMixin } from './CsvMapping.js' +export type { CsvSource, SourcesCollection } from './CsvSource.js' +export { CsvSourceMixin } from './CsvSource.js' +export { MediaObjectMixin } from './MediaObject.js' +export type { Table, TableCollection } from './Table.js' +export { TableMixin } from './Table.js' +export type { Dataset } from './Dataset.js' +export { DatasetMixin } from './Dataset.js' +export type { Job, JobError, TransformJob, PublishJob, UnlistJob, JobCollection } from './Job.js' +export { JobMixin, TransformJobMixin, PublishJobMixin, UnlistJobMixin } from './Job.js' +export type { ImportJob } from './ImportJob.js' +export { ImportJobMixin } from './ImportJob.js' +export type { CsvColumn } from './CsvColumn.js' +export { CsvColumnMixin } from './CsvColumn.js' +export type { ColumnMapping, LiteralColumnMapping, ReferenceColumnMapping } from './ColumnMapping.js' +export { ColumnMappingMixin, LiteralColumnMappingMixin, ReferenceColumnMappingMixin } from './ColumnMapping.js' +export type { Cube } from './Cube.js' +export { CubeMixin } from './Cube.js' +export type { DimensionMetadata, DimensionMetadataCollection } from './DimensionMetadata.js' +export { DimensionMetadataCollectionMixin } from './DimensionMetadata.js' +export { BaseResourceMixin } from './BaseResource.js' diff --git a/packages/model/lib/initializer.ts b/packages/model/lib/initializer.ts index eb945dc68..346a1e47a 100644 --- a/packages/model/lib/initializer.ts +++ b/packages/model/lib/initializer.ts @@ -1,20 +1,22 @@ /* eslint-disable no-redeclare */ import { Mixin } from '@tpluscode/rdfine/lib/ResourceFactory' -import RdfResourceImpl, { ResourceIdentifier } from '@tpluscode/rdfine' +import { RdfineFactory, ResourceIdentifier } from '@tpluscode/rdfine' import type { GraphPointer } from 'clownface' import { Initializer } from '@tpluscode/rdfine/RdfResource' +import type { Environment } from '@rdfjs/environment/Environment' +import NsBuildersFactory from '@tpluscode/rdf-ns-builders' type MandatoryFields> = Pick>, TRequired> type InitializerFunction = never> = - (pointer: GraphPointer, init: MandatoryFields & Initializer) => T + (env: Environment, pointer: GraphPointer, init: MandatoryFields & Initializer) => T type Defaults = Initializer | (() => Initializer) -export function initializer(mixin: Mixin, defaults?: Defaults): (pointer: GraphPointer, init?: Initializer) => T +export function initializer(mixin: Mixin, defaults?: Defaults): (env: Environment, pointer: GraphPointer, init?: Initializer) => T export function initializer>(mixin: Mixin, defaults?: Defaults): InitializerFunction export function initializer>(mixin: Mixin, defaults?: Defaults): InitializerFunction { - return (pointer, init): T => { + return (env: Environment, pointer, init): T => { if (pointer.term.termType !== 'NamedNode' && pointer.term.termType !== 'BlankNode') { throw new Error('A resource must have a NamedNode identifier') } @@ -22,10 +24,13 @@ export function initializer>(mixin const defaultInit = typeof defaults === 'function' ? defaults() : defaults const combinedInit = { ...(defaultInit || {}), ...(init || {}) } - const resource = new (mixin(RdfResourceImpl))(pointer, combinedInit) if (mixin.appliesTo) { - resource.types.add(mixin.appliesTo) + pointer.addOut(env.ns.rdf.type, mixin.appliesTo) } - return RdfResourceImpl.factory.createEntity(resource.pointer) + + const resource = env.rdfine().factory.createEntity(pointer, [mixin], { + initializer: combinedInit, + }) + return resource } } diff --git a/packages/model/lib/resourceIdentifiers.ts b/packages/model/lib/resourceIdentifiers.ts index 993cb0249..471a52e8c 100644 --- a/packages/model/lib/resourceIdentifiers.ts +++ b/packages/model/lib/resourceIdentifiers.ts @@ -1,5 +1,5 @@ import type { NamedNode } from '@rdfjs/types' -import { namedNode } from '@rdf-esm/data-model' import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' +import $rdf from '@zazuko/env' -export const childResource = (segment: string) => (parent: RdfResourceCore): NamedNode => namedNode(`${parent.id.value}/${segment}`) +export const childResource = (segment: string) => (parent: RdfResourceCore): NamedNode => $rdf.namedNode(`${parent.id.value}/${segment}`) diff --git a/packages/model/lib/uriTemplateParser.js b/packages/model/lib/uriTemplateParser.js index 305e9f8ec..ba3a32218 100644 --- a/packages/model/lib/uriTemplateParser.js +++ b/packages/model/lib/uriTemplateParser.js @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -const uriTemplate = require('uri-template') -const isUri = require('is-uri') +import uriTemplate from 'uri-template' +import isUri from 'is-uri' class ParsedTemplateWrapper { constructor(template) { diff --git a/packages/model/package.json b/packages/model/package.json index ebbb71073..645a86d29 100644 --- a/packages/model/package.json +++ b/packages/model/package.json @@ -2,25 +2,29 @@ "name": "@cube-creator/model", "version": "0.1.27", "private": true, + "type": "module", + "exports": { + ".": "./index.js", + "./*": "./*.js" + }, "dependencies": { "@cube-creator/core": "1.0.0", - "@rdf-esm/data-model": "^0.5.3", - "@rdfine/csvw": "^0.6.3", - "@rdfine/hydra": "^0.8.0", - "@rdfine/rdfs": "^0.6.3", - "@rdfine/schema": "^0.6.3", - "@rdfine/shacl": "^0.8.5", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdfine": "^0.5.19", + "@zazuko/env": "^2.0.6", + "@rdfine/csvw": "^0.8.5", + "@rdfine/hydra": "^0.10.5", + "@rdfine/rdfs": "^0.8.5", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@tpluscode/rdf-ns-builders": "^4", + "@tpluscode/rdfine": "^0.7.7", "is-uri": "^1.2.0", "uri-template": "^1.0.1" }, "devDependencies": { "@cube-creator/testing": "^0.1.21", - "@types/clownface": "^1", "@types/is-uri": "^1", "@rdfjs/types": "^1.1.0", - "alcaeus": "^2", + "alcaeus": "^3.0.1", "chai": "^4.3.4", "mocha": "^10" } diff --git a/packages/model/test/BaseResource.test.ts b/packages/model/test/BaseResource.test.ts index 29e1d679c..cd2d55d89 100644 --- a/packages/model/test/BaseResource.test.ts +++ b/packages/model/test/BaseResource.test.ts @@ -1,11 +1,10 @@ import { describe, it } from 'mocha' -import RdfResource from '@tpluscode/rdfine/RdfResource' import { blankNode } from '@cube-creator/testing/clownface' -import { fromPointer } from '@rdfine/schema/lib/Thing' import { expect } from 'chai' -import { schema } from '@tpluscode/rdf-ns-builders/strict' -import { literal } from '@rdf-esm/data-model' -import { BaseResourceMixin } from '../BaseResource' +import { schema } from '@tpluscode/rdf-ns-builders' +// eslint-disable-next-line import/no-extraneous-dependencies +import $rdf from '@cube-creator/env' +import { BaseResourceMixin } from '../BaseResource.js' describe('@cube-creator/model/BaseResource', () => { describe('addError', () => { @@ -15,8 +14,8 @@ describe('@cube-creator/model/BaseResource', () => { .addOut(schema.error, err => { err.addOut(schema.identifier, 'Current') }) - const resource = RdfResource.factory.createEntity(graph, [BaseResourceMixin]) - const error = fromPointer({ + const resource = $rdf.rdfine().factory.createEntity(graph, [BaseResourceMixin]) + const error = $rdf.rdfine.schema.Thing({ identifierLiteral: 'my error', }) @@ -25,8 +24,8 @@ describe('@cube-creator/model/BaseResource', () => { // then expect(graph.out(schema.error).out(schema.identifier).terms).to.deep.contain.members([ - literal('Current'), - literal('my error'), + $rdf.literal('Current'), + $rdf.literal('my error'), ]) }) @@ -36,8 +35,8 @@ describe('@cube-creator/model/BaseResource', () => { .addOut(schema.error, err => { err.addOut(schema.identifier, 'the error') }) - const resource = RdfResource.factory.createEntity(graph, [BaseResourceMixin]) - const error = fromPointer({ + const resource = $rdf.rdfine().factory.createEntity(graph, [BaseResourceMixin]) + const error = $rdf.rdfine.schema.Thing({ identifierLiteral: 'the error', }) @@ -45,7 +44,7 @@ describe('@cube-creator/model/BaseResource', () => { resource.addError?.(error) // then - expect(graph.out(schema.error).out(schema.identifier).term).to.deep.eq(literal('the error')) + expect(graph.out(schema.error).out(schema.identifier).term).to.deep.eq($rdf.literal('the error')) }) }) @@ -56,7 +55,7 @@ describe('@cube-creator/model/BaseResource', () => { .addOut(schema.error, err => { err.addOut(schema.identifier, 'the error') }) - const resource = RdfResource.factory.createEntity(graph, [BaseResourceMixin]) + const resource = $rdf.rdfine().factory.createEntity(graph, [BaseResourceMixin]) // when resource.removeError?.('the error') diff --git a/packages/model/test/lib/uriTemplateParser.test.ts b/packages/model/test/lib/uriTemplateParser.test.ts index f13ec51b9..a4d044c20 100644 --- a/packages/model/test/lib/uriTemplateParser.test.ts +++ b/packages/model/test/lib/uriTemplateParser.test.ts @@ -1,6 +1,6 @@ import { describe, it } from 'mocha' import { expect } from 'chai' -import { parse } from '../../lib/uriTemplateParser' +import { parse } from '../../lib/uriTemplateParser.js' describe('@cube-creator/model/lib/uriTemplateParser', () => { describe('ParsedTemplateWrapper', () => { diff --git a/packages/shacl-middleware/index.ts b/packages/shacl-middleware/index.ts index 76b24c3a2..c26a0c7ea 100644 --- a/packages/shacl-middleware/index.ts +++ b/packages/shacl-middleware/index.ts @@ -1,12 +1,12 @@ import type { Term, Quad, NamedNode, DatasetCore } from '@rdfjs/types' import { Request, Response } from 'express' import asyncMiddleware from 'middleware-async' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { hydra, rdf, sh } from '@tpluscode/rdf-ns-builders' import SHACLValidator from 'rdf-validate-shacl' -import clownface, { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import { ProblemDocument } from 'http-problem-details' -import ValidationReport from 'rdf-validate-shacl/src/validation-report' +import ValidationReport from 'rdf-validate-shacl/src/validation-report.js' interface ShaclMiddlewareOptions { loadShapes?(req: Request): Promise @@ -24,7 +24,7 @@ interface ShaclMiddlewareOptions { async function defaultParse(req: Request) { if (!req.dataset) { - return clownface({ dataset: $rdf.dataset() }).node(req.hydra.term) + return $rdf.clownface().node(req.hydra.term) } return req.resource() @@ -103,12 +103,12 @@ export const shaclMiddleware = ({ getTargetNode, loadResource, loadShapes, loadR let dataset: DatasetCore if (disableShClass) { - clownface({ dataset: shapes }).has(sh.class).addOut(sh.deactivated, true) + $rdf.clownface({ dataset: shapes }).has(sh.class).addOut(sh.deactivated, true) dataset = resource.dataset } else { // Load data from linked instances to be able to validate their type - const classProperties = clownface({ dataset: shapes }) + const classProperties = $rdf.clownface({ dataset: shapes }) .out(sh.property) .has(sh.class) .out(sh.path) diff --git a/packages/shacl-middleware/package.json b/packages/shacl-middleware/package.json index e15ba5a44..9c8526a97 100644 --- a/packages/shacl-middleware/package.json +++ b/packages/shacl-middleware/package.json @@ -3,25 +3,22 @@ "version": "1.1.0", "private": true, "main": "index.js", + "type": "module", "dependencies": { - "@tpluscode/rdf-ns-builders": "^1.0.0", - "clownface": "^1.2.0", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@zazuko/env": "^2.0.6", "express": "^4.17.1", "http-problem-details": "^0.1.5", - "hydra-box": "^0.6.2", + "@kopflos-cms/core": "^0.2.0", "middleware-async": "^1.2.7", - "rdf-ext": "^1.3.0", - "rdf-validate-shacl": "^0.4.4" + "rdf-validate-shacl": "^0.5.3" }, "peerDependencies": { "express-rdf-request": "0.1.0" }, "devDependencies": { "@cube-creator/testing": "^0.1.15", - "@rdfjs/term-map": "^1.0.0", - "@tpluscode/rdf-string": "^0.2.21", - "@rdfjs/types": "^1.1.0", - "@types/rdf-validate-shacl": "^0.4.0", + "@tpluscode/rdf-string": "^1.3.0", "mocha": "^10", "supertest": "^6.0.0" } diff --git a/packages/shacl-middleware/test/shaclMiddleware.test.ts b/packages/shacl-middleware/test/shaclMiddleware.test.ts index fbfb9b11f..dfaf4664e 100644 --- a/packages/shacl-middleware/test/shaclMiddleware.test.ts +++ b/packages/shacl-middleware/test/shaclMiddleware.test.ts @@ -1,14 +1,13 @@ import { describe, it } from 'mocha' import express from 'express' import request from 'supertest' -import $rdf from 'rdf-ext' +import $rdf from '@zazuko/env' import { hydra, rdf, rdfs, schema, sh } from '@tpluscode/rdf-ns-builders' -import clownface from 'clownface' import { turtle } from '@tpluscode/rdf-string' import { appMock, mockResourceMiddleware } from '@cube-creator/testing/middleware' import { ex, cc } from '@cube-creator/testing/lib/namespace' -import { shaclMiddleware } from '..' -import { loader } from './support/loader' +import { shaclMiddleware } from '../index.js' +import { loader } from './support/loader.js' describe('middleware/shacl', () => { const loadResourcesTypes = async () => [] @@ -22,7 +21,7 @@ describe('middleware/shacl', () => { app.use(mockResourceMiddleware()) app.use(shaclMiddleware({ loadResource: loader([ - clownface({ dataset: $rdf.dataset() }).namedNode(ex.NotShape).addOut(rdf.type, hydra.Class), + $rdf.clownface().namedNode(ex.NotShape).addOut(rdf.type, hydra.Class), ]), loadResourcesTypes, })) @@ -41,7 +40,7 @@ describe('middleware/shacl', () => { app.use(appMock(api => { api.operation.addOut(hydra.expects, ex.Shape) })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) .addOut(sh.targetClass, cc.CubeProject) @@ -69,7 +68,7 @@ describe('middleware/shacl', () => { app.use(appMock(api => { api.operation.addOut(hydra.expects, ex.Shape) })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) .addOut(sh.targetClass, cc.CubeProject) @@ -99,7 +98,7 @@ describe('middleware/shacl', () => { api.operation.addOut(hydra.expects, ex.Shape) api.term = ex.resource })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) .addOut(sh.property, prop => prop.addOut(sh.path, rdfs.label).addOut(sh.minCount, 1)) @@ -128,7 +127,7 @@ describe('middleware/shacl', () => { app.use(appMock(api => { api.operation.addOut(hydra.expects, ex.Shape) })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) .addOut(sh.property, prop => prop.addOut(sh.path, rdfs.label).addOut(sh.minCount, 1)) @@ -160,7 +159,7 @@ describe('middleware/shacl', () => { app.use(appMock(api => { api.operation.addOut(hydra.expects, ex.Shape) })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) @@ -185,7 +184,7 @@ describe('middleware/shacl', () => { api.operation.addOut(hydra.expects, ex.Shape) api.term = ex.Resource })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) .addOut(sh.targetClass, schema.Person) @@ -212,7 +211,7 @@ describe('middleware/shacl', () => { api.operation.addOut(hydra.expects, ex.Shape) api.term = ex.Resource })) - const shape = clownface({ dataset: $rdf.dataset() }) + const shape = $rdf.clownface() .namedNode(ex.Shape) .addOut(rdf.type, sh.NodeShape) .addOut(sh.property, prop => prop.addOut(sh.path, rdfs.label).addOut(sh.minCount, 1)) diff --git a/packages/shacl-middleware/test/support/loader.ts b/packages/shacl-middleware/test/support/loader.ts index c3d62d479..37d4dbe3d 100644 --- a/packages/shacl-middleware/test/support/loader.ts +++ b/packages/shacl-middleware/test/support/loader.ts @@ -1,9 +1,9 @@ import type { NamedNode } from '@rdfjs/types' -import TermMap from '@rdfjs/term-map' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' export function loader(pointers: GraphPointer[]) { - const resources = pointers.reduce((map, next) => map.set(next.term, next), new TermMap>()) + const resources = pointers.reduce((map, next) => map.set(next.term, next), $rdf.termMap>()) return async function (id: NamedNode) { return resources.get(id) || null diff --git a/packages/testing/clownface.ts b/packages/testing/clownface.ts index e58bb5083..fbc5d068e 100644 --- a/packages/testing/clownface.ts +++ b/packages/testing/clownface.ts @@ -1,12 +1,12 @@ import type { BlankNode, NamedNode } from '@rdfjs/types' -import clownface, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' -import DatasetExt from 'rdf-ext/lib/Dataset' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' +import { Dataset as DatasetExt } from '@zazuko/env/lib/Dataset.js' export function namedNode(term: string | NamedNode): GraphPointer { - return clownface({ dataset: $rdf.dataset() }).namedNode(term) + return $rdf.clownface().namedNode(term) } export function blankNode(): GraphPointer { - return clownface({ dataset: $rdf.dataset() }).blankNode() + return $rdf.clownface().blankNode() } diff --git a/packages/testing/index.ts b/packages/testing/index.ts index fb8124dc0..6b5566208 100644 --- a/packages/testing/index.ts +++ b/packages/testing/index.ts @@ -1,6 +1,6 @@ import program from 'commander' import debug from 'debug' -import { insertTestDimensions, insertTestProject, insertPxCube, insertTestHierarchies } from './lib/seedData' +import { insertTestDimensions, insertTestProject, insertPxCube, insertTestHierarchies } from './lib/seedData.js' const log = debug('testing') log.enabled = true diff --git a/packages/testing/lib/chaiShapeMatcher.ts b/packages/testing/lib/chaiShapeMatcher.ts index 719edcd10..7e7da8d76 100644 --- a/packages/testing/lib/chaiShapeMatcher.ts +++ b/packages/testing/lib/chaiShapeMatcher.ts @@ -1,13 +1,11 @@ import type { BlankNode, DatasetCore, NamedNode } from '@rdfjs/types' import chai from 'chai' import type { NodeShape, ValidationResult } from '@rdfine/shacl' -import { fromPointer } from '@rdfine/shacl/lib/NodeShape' -import { ShapeBundle, ValidationResultBundle } from '@rdfine/shacl/bundles' -import RdfResourceImpl, { Initializer, RdfResource, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' -import $rdf from 'rdf-ext' -import clownface, { GraphPointer, MultiPointer } from 'clownface' +import { Initializer, RdfResource, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' +import $rdf from '@cube-creator/env' +import type { GraphPointer, MultiPointer } from 'clownface' import Validator from 'rdf-validate-shacl' -import type * as Validate from 'rdf-validate-shacl/src/validation-report' +import type * as Validate from 'rdf-validate-shacl/src/validation-report.js' import { rdf, sh } from '@tpluscode/rdf-ns-builders' declare global { @@ -19,8 +17,6 @@ declare global { } } -RdfResourceImpl.factory.addMixin(...ShapeBundle, ...ValidationResultBundle) - function isRdfine(shapeLike: any): shapeLike is RdfResource { return 'equals' in shapeLike && typeof shapeLike.equals === 'function' } @@ -34,7 +30,7 @@ function isDataset(shapeLike: any): shapeLike is DatasetCore { } function toJSON(result: Validate.ValidationResult) { - const { focusNode, resultMessage, resultPath, resultSeverity } = RdfResourceImpl.factory.createEntity(result.pointer as any).toJSON() + const { focusNode, resultMessage, resultPath, resultSeverity } = $rdf.rdfine().factory.createEntity(result.pointer as any).toJSON() return { focusNode, @@ -64,21 +60,21 @@ chai.Assertion.addMethod('matchShape', function (shapeInit: Initializer new RdfResourceImpl(clownface({ dataset: resourceDataset, term })).toJSON()) + actual = targetNode.map(term => $rdf.rdfine().createEntity($rdf.clownface({ dataset: resourceDataset, term })).toJSON()) } else { throw new Error(`Cannot match given object to a SHACL Shape. Expecting a rdfine object, graph pointer or RDF/JS dataset. Got ${obj?.constructor.name}`) } let shape: NodeShape if (isDataset(shapeInit)) { - const [shapePointer] = clownface({ dataset: shapeInit }) + const [shapePointer] = $rdf.clownface({ dataset: shapeInit }) .has(rdf.type, [sh.Shape, sh.NodeShape]).toArray() - shape = fromPointer(shapePointer, { targetNode }) + shape = $rdf.rdfine.sh.NodeShape(shapePointer, { targetNode }) } else if (isGraphPointer(shapeInit)) { - shape = fromPointer(shapeInit, { targetNode }) + shape = $rdf.rdfine.sh.NodeShape(shapeInit, { targetNode }) } else { - shape = fromPointer( - clownface({ dataset: $rdf.dataset() }).blankNode(), + shape = $rdf.rdfine.sh.NodeShape( + $rdf.clownface().blankNode(), { ...shapeInit, targetNode }) } diff --git a/packages/testing/lib/index.ts b/packages/testing/lib/index.ts index eaf618ab8..01f885e35 100644 --- a/packages/testing/lib/index.ts +++ b/packages/testing/lib/index.ts @@ -1,5 +1,5 @@ -import StreamClient from 'sparql-http-client/StreamClient' -import ParsingClient from 'sparql-http-client/ParsingClient' +import StreamClient from 'sparql-http-client/StreamClient.js' +import ParsingClient from 'sparql-http-client/ParsingClient.js' const endpoints = (db: 'cube-creator' | 'shared-dimensions') => ({ updateUrl: `http://db.cube-creator.lndo.site/${db}/update`, diff --git a/packages/testing/lib/namespace.ts b/packages/testing/lib/namespace.ts index 482cdb07c..ab7385291 100644 --- a/packages/testing/lib/namespace.ts +++ b/packages/testing/lib/namespace.ts @@ -1,4 +1,4 @@ -import namespace from '@rdfjs/namespace' +import rdf from '@zazuko/env' -export const ex = namespace('http://example.com/') -export const cc = namespace('https://cube-creator.zazuko.com/vocab#') +export const ex = rdf.namespace('http://example.com/') +export const cc = rdf.namespace('https://cube-creator.zazuko.com/vocab#') diff --git a/packages/testing/lib/seedData.ts b/packages/testing/lib/seedData.ts index e2ea2913b..cec39bf40 100644 --- a/packages/testing/lib/seedData.ts +++ b/packages/testing/lib/seedData.ts @@ -1,17 +1,20 @@ import fs from 'fs' import path from 'path' -import type { DatasetCore } from '@rdfjs/types' -import ParsingClient from 'sparql-http-client/ParsingClient' -import StreamClient from 'sparql-http-client/StreamClient' -import { parsers } from '@rdfjs/formats-common' -import $rdf from 'rdf-ext' +import type { Readable } from 'node:stream' +import type { DatasetCore, Stream } from '@rdfjs/types' +import ParsingClient from 'sparql-http-client/ParsingClient.js' +import StreamClient from 'sparql-http-client/StreamClient.js' +import formats from '@rdfjs/formats' +import $rdf from '@zazuko/env' import { xsd, _void, rdf } from '@tpluscode/rdf-ns-builders' import { sparql } from '@tpluscode/rdf-string' import RdfPxParser from 'rdf-parser-px' import TripleToQuadTransform from 'rdf-transform-triple-to-quad' import { DELETE } from '@tpluscode/sparql-builder' import { VALUES } from '@tpluscode/sparql-builder/expressions' -import { ccClients, mdClients } from './index' +import { ccClients, mdClients } from './index.js' + +const __dirname = path.dirname(new URL(import.meta.url).pathname) async function removeTestGraphs(client: ParsingClient, dataset: DatasetCore) { const graphs = [...dataset.match(null, _void.inDataset)].map(({ subject }) => subject) @@ -35,13 +38,13 @@ async function removeRootResources(client: ParsingClient, dataset: DatasetCore) FILTER (?s = ?root || isblank(?s)) } ` - .execute(client.query) + .execute(client) } } const insertTestData = async (pathName: string, { parsingClient, streamClient }: { parsingClient: ParsingClient; streamClient: StreamClient }) => { const file = fs.createReadStream(path.resolve(process.cwd(), pathName)) - const stream = parsers.import('application/trig', file) + const stream = formats.parsers.import('application/trig', file) as unknown as Stream & Readable if (stream) { const ds = await $rdf.dataset().import(stream) diff --git a/packages/testing/middleware.ts b/packages/testing/middleware.ts index 494f40ae1..5bd0c19be 100644 --- a/packages/testing/middleware.ts +++ b/packages/testing/middleware.ts @@ -1,10 +1,10 @@ import type { NamedNode } from '@rdfjs/types' -import { HydraBox } from 'hydra-box' +import { HydraBox } from '@kopflos-cms/core' import express from 'express' -import cf, { GraphPointer } from 'clownface' -import $rdf from 'rdf-ext' +import type { GraphPointer } from 'clownface' +import $rdf from '@zazuko/env' import rdfHandler from '@rdfjs/express-handler' -import { ex } from './lib/namespace' +import { ex } from './lib/namespace.js' declare module 'express-serve-static-core' { export interface Request { @@ -21,7 +21,7 @@ export function appMock(prepare?: (hydra: HydraBox) => void): express.RequestHan await rdfHandler.attach(req, res) const hydra: RecursivePartial = { - operation: cf({ dataset: $rdf.dataset() }).blankNode() as any, + operation: $rdf.clownface({ dataset: $rdf.dataset() }).blankNode() as any, api: { dataset: $rdf.dataset(), graph: $rdf.namedNode('foo'), @@ -43,7 +43,7 @@ export function mockResourceMiddleware(): express.RequestHandler { req.resource = async () => { if (!req.dataset) throw new Error('Missing request `.dataset`') - return cf({ dataset: await req.dataset() }).namedNode('') + return $rdf.clownface({ dataset: await req.dataset() }).namedNode('') } next() diff --git a/packages/testing/package.json b/packages/testing/package.json index 279946ad6..2df7f7ff6 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -2,33 +2,37 @@ "name": "@cube-creator/testing", "version": "0.1.21", "private": true, + "type": "module", + "exports": { + "./*": "./*.js", + "./lib": "./lib/index.js", + "./lib/namespace": "./lib/namespace.js" + }, "dependencies": { "@cube-creator/core": "1.0.0", - "@rdfine/shacl": "^0.8", - "@rdfjs/express-handler": "^1.2.1", - "@rdfjs/formats-common": "^2.1.0", - "@rdfjs/namespace": "^1.1.0", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdf-string": "^0.2.21", - "@tpluscode/rdfine": "^0.5.19", - "@tpluscode/sparql-builder": "^0.3.15", + "@cube-creator/env": "*", + "@rdfine/shacl": "^0.10.5", + "@rdfjs/express-handler": "^2.0.0", + "@rdfjs/formats": "^4", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdf-string": "^1.1.3", + "@tpluscode/rdfine": "^0.7.7", + "@tpluscode/sparql-builder": "^2.0.2", + "@zazuko/env": "^2.0.6", "chai": "^4.2.0", - "clownface": "^1.1.0", "commander": "^7.0.0", "debug": "^4.1.1", "express": "^4.17.1", - "hydra-box": "^0.6.2", - "rdf-ext": "^1.3.0", + "@kopflos-cms/core": "^0.2.0", "rdf-parser-px": "^0.2.0", "rdf-transform-triple-to-quad": "^1.0.2", - "rdf-validate-shacl": "^0.4.0", - "sparql-http-client": "^2.2.2" + "rdf-validate-shacl": "^0.5.5", + "sparql-http-client": "^3.0.0" }, "devDependencies": { - "@types/hydra-box": "^0.6.0", "@rdfjs/types": "^1.1.0", - "@types/rdf-transform-triple-to-quad": "^1.0.0", - "@types/rdf-validate-shacl": "^0.4.0", - "@types/rdfjs__express-handler": "^1.1.2" + "@types/rdf-transform-triple-to-quad": "^2.0.5", + "@types/rdf-validate-shacl": "^0.4.6", + "@types/rdfjs__express-handler": "^2.0.6" } } diff --git a/patches/@types+rdf-loader-code+0.3.7.patch b/patches/@types+rdf-loader-code+0.3.7.patch deleted file mode 100644 index aa65db34f..000000000 --- a/patches/@types+rdf-loader-code+0.3.7.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/@types/rdf-loader-code/evalTemplateLiteral.d.ts b/node_modules/@types/rdf-loader-code/evalTemplateLiteral.d.ts -new file mode 100644 -index 0000000..a34997c ---- /dev/null -+++ b/node_modules/@types/rdf-loader-code/evalTemplateLiteral.d.ts -@@ -0,0 +1,6 @@ -+function evalTemplateLiteral(content: string, options?: { -+ context?: Record -+ variables?: Map -+}): string -+ -+export = evalTemplateLiteral diff --git a/patches/hydra-box+0.6.6.patch b/patches/hydra-box+0.6.6.patch deleted file mode 100644 index 369b3c3e8..000000000 --- a/patches/hydra-box+0.6.6.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/node_modules/hydra-box/lib/middleware/iriTemplate.js b/node_modules/hydra-box/lib/middleware/iriTemplate.js -index b725da2..100702b 100644 ---- a/node_modules/hydra-box/lib/middleware/iriTemplate.js -+++ b/node_modules/hydra-box/lib/middleware/iriTemplate.js -@@ -65,13 +65,17 @@ function middleware ({ dataset, term, graph }) { - const templateParams = clownface({ dataset: rdf.dataset() }).blankNode() - - Object.entries(req.params).forEach(([key, value]) => { -+ const isQueryParam = key in req.query - const property = variablePropertyMap.get(key) - - if (!property) { - return - } - -- templateParams.addOut(property, createTermFromVariable({ template: iriTemplateNode, value })) -+ templateParams.addOut(property, createTermFromVariable({ -+ template: iriTemplateNode, -+ value: isQueryParam ? value.replace(/\+/g, ' ') : value -+ })) - }) - - req.dataset = () => { diff --git a/tsconfig.json b/tsconfig.json index 5e3f9d00a..f6b035fa2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,8 @@ { "compilerOptions": { "rootDir": ".", - "target": "ES2019", - "module": "CommonJS", + "target": "ES2020", + "module": "ESNext", "moduleResolution": "node", "esModuleInterop": true, "strict": true, diff --git a/apis/core/types/csv-sniffer/index.d.ts b/typings/csv-sniffer/index.d.ts similarity index 100% rename from apis/core/types/csv-sniffer/index.d.ts rename to typings/csv-sniffer/index.d.ts diff --git a/typings/rdf-cube-view-query/index.d.ts b/typings/rdf-cube-view-query/index.d.ts index d1b0d445c..2f5e07382 100644 --- a/typings/rdf-cube-view-query/index.d.ts +++ b/typings/rdf-cube-view-query/index.d.ts @@ -1,8 +1,8 @@ /* eslint-disable import/no-duplicates,@typescript-eslint/no-empty-interface,no-use-before-define */ declare module 'rdf-cube-view-query' { - import View = require('rdf-cube-view-query/lib/View') - import Cube = require('rdf-cube-view-query/lib/Cube') - import Source = require('rdf-cube-view-query/lib/Source') + import View = require('rdf-cube-view-query/lib/View.js') + import Cube = require('rdf-cube-view-query/lib/Cube.js') + import Source = require('rdf-cube-view-query/lib/Source.js') interface Lib { View: typeof View @@ -15,7 +15,7 @@ declare module 'rdf-cube-view-query' { export = _export } -declare module 'rdf-cube-view-query/lib/query/ViewQuery' { +declare module 'rdf-cube-view-query/lib/query/ViewQuery.js' { import type { GraphPointer } from 'clownface' namespace ViewQuery { @@ -35,13 +35,13 @@ declare module 'rdf-cube-view-query/lib/query/ViewQuery' { export = ViewQuery } -declare module 'rdf-cube-view-query/lib/View' { +declare module 'rdf-cube-view-query/lib/View.js' { import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' import type { GraphPointer } from 'clownface' - import ViewQuery = require('rdf-cube-view-query/lib/query/ViewQuery') - import Node = require('rdf-cube-view-query/lib/Node') - import Cube = require('rdf-cube-view-query/lib/Cube') - import Dimension = require('rdf-cube-view-query/lib/Dimension') + import ViewQuery = require('rdf-cube-view-query/lib/query/ViewQuery.js') + import Node = require('rdf-cube-view-query/lib/Node.js') + import Cube = require('rdf-cube-view-query/lib/Cube.js') + import Dimension = require('rdf-cube-view-query/lib/Dimension.js') type Observation = Record @@ -66,9 +66,9 @@ declare module 'rdf-cube-view-query/lib/View' { export = View } -declare module 'rdf-cube-view-query/lib/Source' { - import Cube = require('rdf-cube-view-query/lib/Cube') - import Node = require('rdf-cube-view-query/lib/Node') +declare module 'rdf-cube-view-query/lib/Source.js' { + import Cube = require('rdf-cube-view-query/lib/Cube.js') + import Node = require('rdf-cube-view-query/lib/Node.js') namespace Source { interface Source extends Node.Node { @@ -90,10 +90,10 @@ declare module 'rdf-cube-view-query/lib/Source' { export = Source } -declare module 'rdf-cube-view-query/lib/Cube' { +declare module 'rdf-cube-view-query/lib/Cube.js' { import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' - import Node = require('rdf-cube-view-query/lib/Node') - import Source = require('rdf-cube-view-query/lib/Source') + import Node = require('rdf-cube-view-query/lib/Node.js') + import Source = require('rdf-cube-view-query/lib/Source.js') namespace Cube { interface Cube extends Node.Node { @@ -110,7 +110,7 @@ declare module 'rdf-cube-view-query/lib/Cube' { export = Cube } -declare module 'rdf-cube-view-query/lib/Node' { +declare module 'rdf-cube-view-query/lib/Node.js' { import type { DatasetCore, NamedNode, Term } from '@rdfjs/types' import type { GraphPointer } from 'clownface' @@ -141,8 +141,8 @@ declare module 'rdf-cube-view-query/lib/Node' { export = Node } -declare module 'rdf-cube-view-query/lib/Dimension' { - import Node = require('rdf-cube-view-query/lib/Node') +declare module 'rdf-cube-view-query/lib/Dimension.js' { + import Node = require('rdf-cube-view-query/lib/Node.js') class Dimension extends Node { diff --git a/ui/babel.config.js b/ui/babel.config.js deleted file mode 100644 index e9558405f..000000000 --- a/ui/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} diff --git a/ui/package.json b/ui/package.json index 722629484..950f250e2 100644 --- a/ui/package.json +++ b/ui/package.json @@ -2,42 +2,42 @@ "name": "@cube-creator/ui", "version": "1.13.7", "private": true, + "type": "module", "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", + "serve": "vite", + "build": "vite build", "test:unit": "vue-cli-service test:unit", "test:e2e": "vue-cli-service test:e2e", - "lint": "vue-cli-service lint", + "lint": "eslint --ext .js,.vue,.ts --ignore-path .gitignore --fix src", "serve-local": "nodenv --env ../.local.env --exec 'vue-cli-service serve'" }, "dependencies": { "@ckpack/vue-color": "^1.1.8", "@cube-creator/core": "1.0.0", + "@cube-creator/env": "0.0.0", "@cube-creator/model": "0.1.27", "@fortawesome/fontawesome-svg-core": "~1.2.32", "@fortawesome/free-regular-svg-icons": "^5.15.1", "@fortawesome/free-solid-svg-icons": "^5.15.1", "@fortawesome/vue-fontawesome": "^3.0.0-5", "@he-tree/vue3": "^1.2.9", - "@hydrofoil/shaperone-core": "^0.11", - "@hydrofoil/shaperone-hydra": "0.3.16", - "@hydrofoil/shaperone-wc": "^0.7.13", - "@hydrofoil/shaperone-wc-shoelace": "^0.3.2", - "@hydrofoil/shaperone-rdf-validate-shacl": "^1.0.4", + "@hydrofoil/shaperone-core": "^0.12.1", + "@hydrofoil/shaperone-hydra": "0.4.1", + "@hydrofoil/shaperone-rdf-validate-shacl": "^1.1.1", + "@hydrofoil/shaperone-wc": "^0.8.1", + "@hydrofoil/shaperone-wc-shoelace": "^0.4.1", "@oruga-ui/oruga-next": "^0.5.10", "@oruga-ui/theme-bulma": "^0.2.3", - "@rdf-esm/data-model": "^0.5.3", - "@rdf-esm/dataset": "^0.5.1", - "@rdfine/schema": "^0.6.3", - "@rdfine/shacl": "^0.8", - "@rdfjs-elements/lit-helpers": "^0.3.5", - "@rdfjs-elements/rdf-editor": "^0.5", - "@rdfjs/term-set": "^1.0.1", + "@rdfine/schema": "^0.8.5", + "@rdfine/shacl": "^0.10.5", + "@rdfjs-elements/formats-pretty": "^0.6.7", + "@rdfjs-elements/lit-helpers": "^0.3.7", + "@rdfjs-elements/rdf-editor": "^0.5.7", "@sentry/tracing": "^6.2.0", "@sentry/vue": "^6.2.0", "@tinyhttp/content-disposition": "^2.0.5", - "@tpluscode/rdf-ns-builders": "^1.0.0", - "@tpluscode/rdfine": "^0.5.19", + "@tpluscode/rdf-ns-builders": "^4.3.0", + "@tpluscode/rdfine": "^0.7.7", "@uppy/aws-s3-multipart": "^3.1.1", "@uppy/core": "^3.0.4", "@uppy/dashboard": "^3.2.0", @@ -45,15 +45,25 @@ "@uppy/progress-bar": "^3.0.1", "@uppy/status-bar": "^3.0.1", "@uppy/vue": "^1.0.1", - "@zazuko/cube-hierarchy-query": "^1.0.2", - "@zazuko/rdf-vocabularies": ">=2021.3.17", - "alcaeus": "^2.1", + "@uppy/file-input": "^3.1.1", + "@vocabulary/dc11": "^1.0.4", + "@vocabulary/dcterms": "^1.0.4", + "@vocabulary/qb": "^1.0.4", + "@vocabulary/rdfs": "^1.0.4", + "@vocabulary/schema": "^1.0.4", + "@vocabulary/sdmx": "^1.0.4", + "@vocabulary/skos": "^1.0.4", + "@vocabulary/skosxl": "^1.0.4", + "@vocabulary/wgs": "^1.0.4", + "@vocabulary/xkos": "^1.0.4", + "@vocabulary/xsd": "^1.0.4", + "@zazuko/cube-hierarchy-query": "^2.2.1", + "@zazuko/env": "^2.0.6", + "alcaeus": "^3.0.1", "buffer": "^6.0.3", "bulma-quickview": "^2.0.0", - "clownface": "^1.5.1", - "clownface-shacl-path": "^1.0.1", + "clownface-shacl-path": "^2.1.0", "cookie-storage": "^6.1.0", - "core-js": "^3.6.5", "debounce": "^1.2.1", "html-parsed-element": "^0.4.1", "humanize-duration": "^3.27.3", @@ -74,35 +84,29 @@ }, "devDependencies": { "@cypress/webpack-preprocessor": "^5.4.10", - "@types/clownface": "^1.5.0", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", "@types/debounce": "^1.2.0", "@types/humanize-duration": "^3.27.1", "@types/markdown-it": "^12.2.3", - "@types/rdf-ext": "^1.3.11", - "@rdfjs/types": "^1.1.0", - "@types/rdfjs__dataset": "^1.0.4", - "@types/rdfjs__term-set": "^1.0.2", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", - "@vue/cli-plugin-babel": "^5.0.1", + "@vitejs/plugin-vue": "^5.0.4", "@vue/cli-plugin-e2e-cypress": "^5.0.1", - "@vue/cli-plugin-eslint": "^5.0.1", - "@vue/cli-plugin-router": "^5.0.1", "@vue/cli-plugin-typescript": "^5.0.1", - "@vue/cli-plugin-vuex": "^5.0.1", - "@vue/cli-service": "^5.0.1", "@vue/compiler-sfc": "^3.1.0", "@vue/eslint-config-standard": "^8.0.1", "@vue/eslint-config-typescript": "^10.0.0", - "@vue/test-utils": "^1.1.0", + "@vue/test-utils": "^2.4.4", "cypress": "^8.3.0", "cypress-file-upload": "^5.0.0", "eslint": "^8.0.0", + "eslint-plugin-vue": "^8.0", "node-env-run": "^4.0.2", + "rollup-plugin-node-polyfills": "^0.2.1", "sass": "^1.27.0", - "sass-loader": "^12.0.0", "typescript": "~4.5.0", - "vue-template-compiler": "^2.6.14" + "vite": "^5.2.10", + "vite-plugin-html-template": "^1.2.2" }, "browserslist": [ "> 1%", @@ -111,5 +115,8 @@ ], "jest": { "preset": "@vue/cli-plugin-unit-jest/presets/typescript-and-babel" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "^4.16.4" } } diff --git a/ui/public/index.html b/ui/public/index.html index 092037b75..45654f094 100644 --- a/ui/public/index.html +++ b/ui/public/index.html @@ -4,32 +4,32 @@ - + Cube Creator - <% if (NODE_ENV == "production") { %> - - <% } else { %> - + + + + - <% } %> +
- + diff --git a/ui/src/App.vue b/ui/src/App.vue index 9aa86c312..b61be5d6d 100644 --- a/ui/src/App.vue +++ b/ui/src/App.vue @@ -74,8 +74,8 @@ export default defineComponent({ }), release (): string { - const commit = process.env.VUE_APP_COMMIT?.slice(0, 7) ?? 'dev' - return `${process.env.VUE_APP_VERSION} (${commit})` + const commit = import.meta.env.VITE_COMMIT?.slice(0, 7) ?? 'dev' + return `${import.meta.env.VITE_VERSION} (${commit})` }, }, diff --git a/ui/src/api/index.ts b/ui/src/api/index.ts index 23b093b90..019ecc2e1 100644 --- a/ui/src/api/index.ts +++ b/ui/src/api/index.ts @@ -1,11 +1,8 @@ -import { Hydra } from 'alcaeus/web' import { HydraResponse, RdfResource, RuntimeOperation } from 'alcaeus' -import { ResponseWrapper } from 'alcaeus/ResponseWrapper' -import RdfResourceImpl, { RdfResourceCore, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' +import { ResponseWrapper } from 'alcaeus/alcaeus' +import { RdfResourceCore, ResourceIdentifier } from '@tpluscode/rdfine/RdfResource' import { hydra, sh } from '@tpluscode/rdf-ns-builders' -import { ShapeBundle } from '@rdfine/shacl/bundles' import { Shape, ValidationReportMixin, ValidationResultMixin } from '@rdfine/shacl' -import { ThingMixin } from '@rdfine/schema' import { Store } from 'vuex' import store from '@/store' import { RootState } from '@/store/types' @@ -20,8 +17,9 @@ import SharedDimensionMixin from './mixins/SharedDimension' import * as Models from '@cube-creator/model' import { findNodes } from 'clownface-shacl-path' import { FileLiteral } from '@/forms/FileLiteral' -import { GraphPointer } from 'clownface' +import type { GraphPointer } from 'clownface' import type { Term } from '@rdfjs/types' +import $rdf from '@cube-creator/env' export const rootURL = window.APP_CONFIG.apiCoreBase const segmentSeparator = '!!' // used to replace slash in URI to prevent escaping @@ -31,26 +29,24 @@ if (!rootURL) { } // Tells Hydra to use the API root URI as base URI for relative URIs -Hydra.baseUri = rootURL - -Hydra.resources.factory.addMixin(...Object.values(Models)) -Hydra.resources.factory.addMixin(apiResourceMixin(rootURL, segmentSeparator)) -Hydra.resources.factory.addMixin(CSVSourceMixin) -Hydra.resources.factory.addMixin(TableMixin) -Hydra.resources.factory.addMixin(HierarchyMixin) -Hydra.resources.factory.addMixin(JobCollectionMixin) -Hydra.resources.factory.addMixin(OperationMixin) -Hydra.resources.factory.addMixin(SharedDimensionMixin) -Hydra.resources.factory.addMixin(...ShapeBundle) -Hydra.resources.factory.addMixin(ThingMixin) -Hydra.resources.factory.addMixin(ValidationReportMixin) -Hydra.resources.factory.addMixin(ValidationResultMixin) +$rdf.hydra.baseUri = rootURL + +$rdf.hydra.resources.factory.addMixin(...Object.values(Models)) +$rdf.hydra.resources.factory.addMixin(apiResourceMixin(rootURL, segmentSeparator)) +$rdf.hydra.resources.factory.addMixin(CSVSourceMixin) +$rdf.hydra.resources.factory.addMixin(TableMixin) +$rdf.hydra.resources.factory.addMixin(HierarchyMixin) +$rdf.hydra.resources.factory.addMixin(JobCollectionMixin) +$rdf.hydra.resources.factory.addMixin(OperationMixin) +$rdf.hydra.resources.factory.addMixin(SharedDimensionMixin) +$rdf.hydra.resources.factory.addMixin(ValidationReportMixin) +$rdf.hydra.resources.factory.addMixin(ValidationResultMixin) // Inject the access token in all requests if present -Hydra.defaultHeaders = ({ uri }) => prepareHeaders(uri, store) +$rdf.hydra.defaultHeaders = ({ uri }) => prepareHeaders(uri, store) // Cache API documentation because we know that it doesn't ever change. -Hydra.cacheStrategy.shouldLoad = (previous) => { +$rdf.hydra.cacheStrategy.shouldLoad = (previous) => { return !previous.representation.root?.types.has(hydra.ApiDocumentation) } @@ -60,7 +56,7 @@ export const api = { async fetchResource (url: string): Promise { let request = pendingRequests.get(url) if (!request) { - request = Hydra.loadResource(url.split(segmentSeparator).join('/')) + request = $rdf.hydra.loadResource(url.split(segmentSeparator).join('/')) pendingRequests.set(url, request) } @@ -139,7 +135,7 @@ export const api = { async invokeSaveOperation (operation: RuntimeOperation | null | undefined, resource: RdfResource | GraphPointer, headers: HeadersInit = {}): Promise { const data = 'toJSON' in resource ? resource - : RdfResourceImpl.factory.createEntity(resource) as RdfResource + : $rdf.rdfine().factory.createEntity(resource) as RdfResource if (!operation) throw new Error('Operation does not exist') @@ -196,12 +192,12 @@ export function prepareHeaders (uri: string, store: Store): Record (base: Base) { class Impl extends ThingMixin(base) implements Partial { diff --git a/ui/src/components/CsvUploadForm.vue b/ui/src/components/CsvUploadForm.vue index 6794e7569..809125fe1 100644 --- a/ui/src/components/CsvUploadForm.vue +++ b/ui/src/components/CsvUploadForm.vue @@ -81,7 +81,7 @@ export default defineComponent({ methods: { submitLocal (files: UploadedFile[]): void { const mediaObjects = files.map((file) => - clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('') }) + $rdf.clownface({ dataset: $rdf.dataset(), term: $rdf.namedNode('') }) .addOut(cc.sourceKind, cc.MediaLocal) .addOut(schema.name, $rdf.literal(file.name)) .addOut(schema.identifier, $rdf.literal(file.s3Multipart.key)) @@ -93,7 +93,7 @@ export default defineComponent({ submitUrl (): void { const dataset = $rdf.dataset() const fileName = this.fileUrl.split('/').slice(-1)[0] - const mediaObject = clownface({ dataset, term: $rdf.namedNode('') }) + const mediaObject = $rdf.clownface({ dataset, term: $rdf.namedNode('') }) .addOut(cc.sourceKind, cc.MediaURL) .addOut(schema.name, $rdf.literal(fileName)) .addOut(schema.contentUrl, $rdf.namedNode(this.fileUrl)) diff --git a/ui/src/components/CubePreview.vue b/ui/src/components/CubePreview.vue index 46fc0a4d4..114dbf70a 100644 --- a/ui/src/components/CubePreview.vue +++ b/ui/src/components/CubePreview.vue @@ -139,7 +139,7 @@ import clownface from 'clownface' import { Collection } from 'alcaeus' import { hydra, qudt } from '@tpluscode/rdf-ns-builders' import * as Schema from '@rdfine/schema' -import * as $rdf from '@rdf-esm/dataset' +import $rdf from '@cube-creator/env' import { debounce } from 'debounce' import type { Cube, Dataset, DimensionMetadata, DimensionMetadataCollection } from '@cube-creator/model' import { api } from '@/api' @@ -284,7 +284,7 @@ export default defineComponent({ return } - const filters = clownface({ dataset: $rdf.dataset() }) + const filters = $rdf.clownface() .blankNode() .addOut(hydra.limit, this.pageSize) .addOut(hydra.pageIndex, this.page) diff --git a/ui/src/components/ExternalTerm.vue b/ui/src/components/ExternalTerm.vue index d8faebcd9..21e5a2724 100644 --- a/ui/src/components/ExternalTerm.vue +++ b/ui/src/components/ExternalTerm.vue @@ -10,7 +10,7 @@ import TermDisplay from './TermDisplay.vue' import { api } from '@/api' import { DESCRIBE } from '@tpluscode/sparql-builder' import { RdfResourceCore } from '@tpluscode/rdfine/RdfResource' -import { GraphPointer, MultiPointer } from 'clownface' +import type { GraphPointer, MultiPointer } from 'clownface' import type { Literal, NamedNode, Term } from '@rdfjs/types' import { schema } from '@tpluscode/rdf-ns-builders' import TermWithLanguage from '@/components/TermWithLanguage.vue' diff --git a/ui/src/components/FormSubmitCancel.vue b/ui/src/components/FormSubmitCancel.vue index 97bdc24a8..f3bf5ab40 100644 --- a/ui/src/components/FormSubmitCancel.vue +++ b/ui/src/components/FormSubmitCancel.vue @@ -27,7 +27,7 @@