diff --git a/packages/solid-crs-components/lib/alerts/alert.component.spec.ts b/packages/solid-crs-components/lib/alerts/alert.component.spec.ts index 8b69c12d..84e770bf 100644 --- a/packages/solid-crs-components/lib/alerts/alert.component.spec.ts +++ b/packages/solid-crs-components/lib/alerts/alert.component.spec.ts @@ -1,4 +1,4 @@ -import { ArgumentError, MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { Alert } from './alert'; import { AlertComponent } from './alert.component'; @@ -48,14 +48,14 @@ describe('AlertComponent', () => { message: 'foo', }; - component.translator = new MemoryTranslator('en-GB'); + component.translator = new MockTranslator('nl-NL'); window.document.body.appendChild(component); await component.updateComplete; const message = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.message').innerHTML.replace(//g, ''); - expect(message).toBe('[foo]'); + expect(message).toBe('foo'); }); diff --git a/packages/solid-crs-components/lib/collections/collection-card.component.spec.ts b/packages/solid-crs-components/lib/collections/collection-card.component.spec.ts index bed5c6b1..34772dc1 100644 --- a/packages/solid-crs-components/lib/collections/collection-card.component.spec.ts +++ b/packages/solid-crs-components/lib/collections/collection-card.component.spec.ts @@ -1,4 +1,4 @@ -import { ArgumentError, Collection, MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { Collection, MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { CollectionCardComponent } from './collection-card.component'; describe('AlertComponent', () => { @@ -16,14 +16,14 @@ describe('AlertComponent', () => { component = window.document.createElement('nde-collection-card') as CollectionCardComponent; - component.translator = new MemoryTranslator('en-GB'); + component.translator = new MockTranslator('nl-NL'); fetchMock.resetMocks(); fetchMock.mockResponseOnce(JSON.stringify({ 'collections': { 'card': { - 'name-unavailable': 'Name unavailable', + 'name-unavailable': component.translator.translate('collections.card.name-unavailable'), }, }, })); @@ -77,7 +77,7 @@ describe('AlertComponent', () => { const html = window.document.body.getElementsByTagName(tag)[0].shadowRoot.innerHTML; expect(html).not.toContain(testCollection.name); - expect(html).toContain('Name unavailable'); + expect(html).toContain(component.translator.translate('collections.card.name-unavailable')); expect(html).toContain(testCollection.description); }); @@ -91,7 +91,7 @@ describe('AlertComponent', () => { expect(html).not.toContain(testCollection.name); expect(html).not.toContain(testCollection.description); - expect(html).toContain('Name unavailable'); + expect(html).toContain(component.translator.translate('collections.card.name-unavailable')); }); diff --git a/packages/solid-crs-components/lib/collections/object-card.component.spec.ts b/packages/solid-crs-components/lib/collections/object-card.component.spec.ts index b55e82b1..17f82038 100644 --- a/packages/solid-crs-components/lib/collections/object-card.component.spec.ts +++ b/packages/solid-crs-components/lib/collections/object-card.component.spec.ts @@ -1,4 +1,4 @@ -import { CollectionObject, MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { CollectionObject, MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectCardComponent } from './object-card.component'; describe('ObjectCardComponent', () => { @@ -21,23 +21,7 @@ describe('ObjectCardComponent', () => { component = window.document.createElement('nde-object-card') as ObjectCardComponent; - component.translator = new MemoryTranslator('en-GB'); - - fetchMock.resetMocks(); - - fetchMock.mockResponseOnce(JSON.stringify({ - 'collections': { - 'card': { - 'name-unavailable': 'Name unavailable', - 'additionalType-unavailable': 'Type unavailable', - }, - }, - 'common': { - 'date': { - 'just-now': 'Just Now', - }, - }, - })); + component.translator = new MockTranslator('nl-NL'); }); @@ -63,9 +47,9 @@ describe('ObjectCardComponent', () => { expect(html).toContain(testObject.name); expect(html).toContain(testObject.additionalType[0].name); - expect(html).not.toContain('Name unavailable'); - expect(html).not.toContain('Type unavailable'); - expect(html).toContain('- Just Now'); + expect(html).not.toContain(component.translator.translate('collections.card.name-unavailable')); + expect(html).not.toContain(component.translator.translate('collections.card.additionalType-unavailable')); + expect(html).toContain(component.translator.translate('common.date.just-now')); }); @@ -78,10 +62,10 @@ describe('ObjectCardComponent', () => { const html = window.document.body.getElementsByTagName(tag)[0].shadowRoot.innerHTML; expect(html).not.toContain(testObject.name); - expect(html).toContain('Name unavailable'); + expect(html).toContain(component.translator.translate('collections.card.name-unavailable')); expect(html).toContain(testObject.additionalType[0].name); - expect(html).not.toContain('Type unavailable'); - expect(html).toContain('- Just Now'); + expect(html).not.toContain(component.translator.translate('collections.card.additionalType-unavailable')); + expect(html).toContain(component.translator.translate('common.date.just-now')); }); @@ -93,10 +77,10 @@ describe('ObjectCardComponent', () => { const html = window.document.body.getElementsByTagName(tag)[0].shadowRoot.innerHTML; expect(html).toContain(testObject.name); - expect(html).not.toContain('Name unavailable'); expect(html).not.toContain(testObject.additionalType[0].name); - expect(html).toContain('Type unavailable'); - expect(html).toContain('- Just Now'); + expect(html).not.toContain(component.translator.translate('collections.card.name-unavailable')); + expect(html).toContain(component.translator.translate('collections.card.additionalType-unavailable')); + expect(html).toContain(component.translator.translate('common.date.just-now')); }); @@ -109,10 +93,10 @@ describe('ObjectCardComponent', () => { const html = window.document.body.getElementsByTagName(tag)[0].shadowRoot.innerHTML; expect(html).toContain(testObject.name); - expect(html).not.toContain('Name unavailable'); + expect(html).not.toContain(component.translator.translate('collections.card.name-unavailable')); expect(html).toContain(testObject.additionalType[0].name); - expect(html).not.toContain('Type unavailable'); - expect(html).not.toContain('- Just Now'); + expect(html).not.toContain(component.translator.translate('collections.card.additionalType-unavailable')); + expect(html).not.toContain(component.translator.translate('common.date.just-now')); }); diff --git a/packages/solid-crs-components/package.json b/packages/solid-crs-components/package.json index efe4a442..ac9a6bd9 100644 --- a/packages/solid-crs-components/package.json +++ b/packages/solid-crs-components/package.json @@ -82,7 +82,7 @@ "branches": 93.17, "functions": 98.97, "lines": 100, - "statements": 99.68 + "statements": 99.69 } }, "coveragePathIgnorePatterns": [ @@ -100,6 +100,7 @@ "warnOnly": true } } - } + }, + "maxWorkers": 6 } -} +} \ No newline at end of file diff --git a/packages/solid-crs-core/lib/logging/console-logger.spec.ts b/packages/solid-crs-core/lib/logging/console-logger.spec.ts index f3ea3a84..6ecdf086 100644 --- a/packages/solid-crs-core/lib/logging/console-logger.spec.ts +++ b/packages/solid-crs-core/lib/logging/console-logger.spec.ts @@ -161,4 +161,36 @@ describe('ConsoleLogger', () => { }); + describe('warn', () => { + + it('should throw when typename is undefined', async() => { + + expect(() => service.warn(undefined, 'message')).toThrow(ArgumentError); + + }); + + it('should throw when message is undefined', async() => { + + expect(() => service.warn('ConsoleLoggerTests', undefined)).toThrow(ArgumentError); + + }); + + }); + + describe('error', () => { + + it('should throw when typename is undefined', async() => { + + expect(() => service.error(undefined, 'message')).toThrow(ArgumentError); + + }); + + it('should throw when message is undefined', async() => { + + expect(() => service.error('ConsoleLoggerTests', undefined)).toThrow(ArgumentError); + + }); + + }); + }); diff --git a/packages/solid-crs-core/lib/router/router.spec.ts b/packages/solid-crs-core/lib/router/router.spec.ts index 2d6b9290..bb56ad24 100644 --- a/packages/solid-crs-core/lib/router/router.spec.ts +++ b/packages/solid-crs-core/lib/router/router.spec.ts @@ -1,4 +1,4 @@ -import { matchPath, activeRoute, Route, urlVariables, updateHistory, updateTitle, routerStateConfig, ROUTER, RouterStates, NavigateEvent, NavigatedEvent } from './router'; +import { matchPath, activeRoute, Route, urlVariables, updateHistory, updateTitle, routerStateConfig, ROUTER, RouterStates, NavigateEvent, NavigatedEvent, routerEventsConfig, RouterEvents, createRoute } from './router'; describe('Router', () => { @@ -55,18 +55,18 @@ describe('Router', () => { { path: '/test/{{numbers}}/testing', targets: [] }, ]; - expect(activeRoute(routes)).toEqual(routes[0]); + expect(activeRoute(routes)).toEqual(expect.objectContaining(routes[0])); }); - it('should return undefined when no match is found', () => { + it('should error when no match is found', () => { const routes: Route[] = [ { path: '/test/testing', targets: [] }, { path: '/test', targets: [] }, ]; - expect(activeRoute(routes)).toEqual(undefined); + expect(() => activeRoute(routes)).toThrow('No route match found for this URL'); }); @@ -74,22 +74,64 @@ describe('Router', () => { describe('urlVariables', () => { - it('should return a correct map of URL variables', () => { + const route: Route = { + path: '/{{partOne}}/{{numbers}}/{{partTwo}}', + targets: [], + }; + + beforeEach(() => { + + delete window.location; + (window.location as any) = new URL('http://localhost/test/12345/testing?search=test#test'); + + }); + + it('should return a correct map of path params', () => { // window.location.pathname = '/test/12345/testing' - const resultMap = urlVariables('/{{partOne}}/{{numbers}}/{{partTwo}}'); + const result = urlVariables(route); + + expect(result.pathParams.get('partOne')).toEqual('test'); + expect(result.pathParams.get('numbers')).toEqual('12345'); + expect(result.pathParams.get('partTwo')).toEqual('testing'); + + }); + + it('should return correct searchParams', () => { - expect(resultMap.get('partOne')).toEqual('test'); - expect(resultMap.get('numbers')).toEqual('12345'); - expect(resultMap.get('partTwo')).toEqual('testing'); + const result = urlVariables(route); + expect(result.searchParams.get('search')).toEqual('test'); + + }); + + it('should return correct hash', () => { + + const result = urlVariables(route); + expect(result.hash).toEqual('#test'); + + }); + + it('should return empty map when no path variable exists', () => { + + const routeWithoutParams: Route = { + path: '/path/without/variables', + targets: [], + }; + + expect(urlVariables(routeWithoutParams).pathParams.size).toEqual(0); }); it('should error when no match was found for every variable', () => { + const invalidRoute: Route = { + path: '/{{partOne}}//{{numbers}}/{{partTwo}}', + targets: [], + }; + // usually happens when an invalid path was provided (here: double slashes) // or when the regex is made incorrect matches (should not happen) - expect(() => urlVariables('/{{partOne}}//{{numbers}}/{{partTwo}}')).toThrow('No match for every variable'); + expect(() => urlVariables(invalidRoute)).toThrow('No match for every variable'); }); @@ -167,6 +209,7 @@ describe('Router', () => { { path, targets: [ 'target' ], + title: 'test title', }, ]; @@ -191,6 +234,13 @@ describe('Router', () => { expect(config[ROUTER].states[RouterStates.NAVIGATING].invoke.onDone.actions[0]()) .toEqual(updateTitle(activeRoute(routes).title)); + // dont update title when it is undefined in activeroute + const routesWithoutTitle = routes.map((rte) => ({ path: rte.path, targets: rte.targets })); + const configWithoutTitle = routerStateConfig(routesWithoutTitle); + + expect(configWithoutTitle[ROUTER].states[RouterStates.NAVIGATING].invoke.onDone.actions[0]()) + .toEqual(updateTitle(activeRoute(routesWithoutTitle).title)); + }); it('invoke.onDone.target should always contain RouterStates.IDLE', () => { @@ -231,4 +281,39 @@ describe('Router', () => { }); + describe('routerEventsConfig', () => { + + it('should return NAVIGATE event config', () => { + + const result = routerEventsConfig(); + expect(result).toEqual(expect.objectContaining({ [RouterEvents.NAVIGATE]: expect.objectContaining({}) })); + expect(result[RouterEvents.NAVIGATE].target).toContain(`#${RouterStates.NAVIGATING}`); + expect((result[RouterEvents.NAVIGATE].actions[0].assignment as any).path(undefined, new NavigateEvent('path'))).toEqual('path'); + + expect((result[RouterEvents.NAVIGATE].actions[0].assignment as any).path(undefined, new NavigateEvent())) + .toEqual(window.location.pathname); + + }); + + it('should return NAVIGATED event config', () => { + + const result = routerEventsConfig(); + expect(result).toEqual(expect.objectContaining({ [RouterEvents.NAVIGATED]: expect.objectContaining({}) })); + expect(result[RouterEvents.NAVIGATED].actions[0](undefined, new NavigatedEvent('test', 'test'))).toEqual(undefined); + + }); + + }); + + describe('createRoute', () => { + + it('should return correct route object', () => { + + expect(createRoute('path', [])).toEqual({ path: 'path', targets: [], title: undefined }); + expect(createRoute('path', [], 'title')).toEqual({ path: 'path', targets: [], title: 'title' }); + + }); + + }); + }); diff --git a/packages/solid-crs-core/lib/router/router.ts b/packages/solid-crs-core/lib/router/router.ts index a0a992eb..0ad448b8 100644 --- a/packages/solid-crs-core/lib/router/router.ts +++ b/packages/solid-crs-core/lib/router/router.ts @@ -1,4 +1,4 @@ -import { EventObject } from 'xstate'; +import { assign, EventObject, send } from 'xstate'; import { ArgumentError } from '../errors/argument-error'; /** @@ -23,6 +23,24 @@ export interface Route { title?: string; } +export interface UrlVariables { + + /** + * The query parameters of a URL + */ + searchParams: URLSearchParams; + + /** + * The path parameters of a URL + */ + pathParams: Map; + + /** + * The hash of a URL + */ + hash: string; +} + /** * Checks the window.location.pathname against a given path * Path should be a full match @@ -48,54 +66,77 @@ export const matchPath = (match: string): boolean => { }; /** - * Returns the currently active route base on window.location.pathname + * For a given route, returns the URL variables as a Map * - * @param routes A list of all routes - * @returns The currently active route + * @param route The route for which to retrieve variables */ -export const activeRoute = (routes: Route[]): Route | undefined => { +export const urlVariables = (route: Route): UrlVariables => { - if (!routes || routes.length < 1) { + const searchParams = new URL(window.location.href).searchParams; + const hash = new URL(window.location.href).hash; - throw new ArgumentError('Argument routes should be set.', routes); + const regex = new RegExp(`^${route.path.replace(/{{[^/]+}}/ig, '(.+)')}$`, 'i'); + + const parts = route.path.split('/') + .filter((part) => part.startsWith('{{') && part.endsWith('}}')); + + const pathParams = new Map(); + + if (parts.length > 0) { + + const matches = (window.location.pathname.match(regex)||[]).splice(1); + + // this check might not be necessary + if (matches.length !== parts.length) { + + throw new ArgumentError('No match for every variable', { parts, matches }); + + } + + const variableNames = parts.map((part) => part.substring(2, part.length - 2)); + + variableNames.forEach((variable, i) => { + + pathParams.set(variable, matches[i]); + + }); } - return routes.find((route) => matchPath(route.path)); + return { + searchParams, + pathParams, + hash, + }; }; /** - * For a given path, returns the URL variables as a Map + * Returns the currently active route base on window.location.pathname * - * @param path The path structure with variable names + * @param routes A list of all routes + * @returns The currently active route */ -export const urlVariables = (path: string): Map => { - - const regex = new RegExp(`^${path.replace(/{{[^/]+}}/ig, '(.+)')}$`, 'i'); +export const activeRoute = (routes: Route[]): Route & UrlVariables => { - const parts = path.split('/') - .filter((part) => part.startsWith('{{') && part.endsWith('}}')); - - const matches = (window.location.pathname.match(regex)||[]).splice(1); - - // this check might not be necessary - if (matches.length !== parts.length) { + if (!routes || routes.length < 1) { - throw new ArgumentError('No match for every variable', { parts, matches }); + throw new ArgumentError('Argument routes should be set.', routes); } - const variables = new Map(); - const variableNames = parts.map((part) => part.substring(2, part.length - 2)); + const route = routes.find((rte) => matchPath(rte.path)); - variableNames.forEach((variable, i) => { + if (!route) { - variables.set(variable, matches[i]); + throw new ArgumentError('No route match found for this URL', window.location.href); - }); + } - return variables; + return { + ...route, + ...urlVariables(route), + }; }; @@ -135,6 +176,39 @@ export const updateHistory = (path: string, title?: string): void => { }; +/** + * Event references for the router, with readable log format. + */ +export enum RouterEvents { + NAVIGATE = '[RouterEvent: Navigate]', + NAVIGATED = '[RouterEvent: Navigated]', +} + +/** + * An event which is dispatched when routing should start + */ +export class NavigateEvent implements EventObject { + + public type: RouterEvents.NAVIGATE = RouterEvents.NAVIGATE; + constructor(public path?: string) { } + +} + +/** + * An event which is dispatched at the end of routing + */ +export class NavigatedEvent implements EventObject { + + public type: RouterEvents.NAVIGATED = RouterEvents.NAVIGATED; + constructor(public path: string, public title?: string) { } + +} + +/** + * Union type of router events. + */ +export type RouterEvent = NavigateEvent | NavigatedEvent; + /** * State references for the application's features, with readable log format. */ @@ -173,6 +247,7 @@ export const routerStateConfig = (routes: Route[]) => ({ if (route?.title) updateTitle(route.title); }, + send(new NavigatedEvent(window.location.pathname, activeRoute(routes)?.title)), ], }, }, @@ -181,35 +256,15 @@ export const routerStateConfig = (routes: Route[]) => ({ }, }); -/** - * Event references for the router, with readable log format. - */ -export enum RouterEvents { - NAVIGATE = '[AppEvent: Navigate]', - NAVIGATED = '[AppEvent: Navigated]', -} - -/** - * An event which is dispatched when routing should start - */ -export class NavigateEvent implements EventObject { - - public type: RouterEvents.NAVIGATE = RouterEvents.NAVIGATE; - constructor(public path?: string) { } - -} - -/** - * An event which is dispatched at the end of routing - */ -export class NavigatedEvent implements EventObject { - - public type: RouterEvents.NAVIGATED = RouterEvents.NAVIGATED; - constructor(public path: string, public title?: string) { } - -} +export const routerEventsConfig = () => ({ + [RouterEvents.NAVIGATE]: { + target: [ `#${RouterStates.NAVIGATING}` ], + actions: [ assign({ path: (c, event: NavigateEvent) => event.path||window.location.pathname }) ], + }, + [RouterEvents.NAVIGATED]: { + actions: [ (c: unknown, event: NavigatedEvent): void => updateHistory(event.path, event.title) ], + }, +}); -/** - * Union type of router events. - */ -export type RouterEvent = NavigateEvent | NavigatedEvent; +export const createRoute = (path: string, targets: string[], title?: string): Route => + ({ path, targets, title }); diff --git a/packages/solid-crs-core/lib/solid/collection-object-solid-store.spec.ts b/packages/solid-crs-core/lib/solid/collection-object-solid-store.spec.ts index 63de8e26..8ee4b324 100644 --- a/packages/solid-crs-core/lib/solid/collection-object-solid-store.spec.ts +++ b/packages/solid-crs-core/lib/solid/collection-object-solid-store.spec.ts @@ -69,6 +69,19 @@ describe('CollectionObjectSolidStore', () => { }); + it('should error when no digitalObject was found in dataset', async () => { + + let objectThing = client.createThing({ url: mockObject.uri }); + objectThing = client.addUrl(objectThing, 'http://schema.org/isPartOf', mockCollection.uri); + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + (client.getThingAll as any) = jest.fn(() => [ objectThing ]); + (client.getThing as any) = jest.fn(() => undefined); + + await expect(service.getObjectsForCollection(mockCollection)).rejects.toThrow('Could not find digitalObject in dataset'); + + }); + it('should return empty list when no dataset was found', async () => { (client.getSolidDataset as any) = jest.fn(async () => null); @@ -152,6 +165,25 @@ describe('CollectionObjectSolidStore', () => { }); + it('should error when no object thing was found', async () => { + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + (client.getThing as any) = jest.fn(() => undefined); + + await expect(service.get('test-uri')).rejects.toThrow('Could not find objectThing in dataset'); + + }); + + it('should error when no digital object was found', async () => { + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + (client.getThing as any) = jest.fn((d, uri) => uri === 'test-uri' ? 'test-thing' : undefined); + (client.getUrl as any) = jest.fn(() => 'test-url'); + + await expect(service.get('test-uri')).rejects.toThrow('Could not find digitalObject in dataset'); + + }); + it('should return collection object', async () => { (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); @@ -259,6 +291,68 @@ describe('CollectionObjectSolidStore', () => { }); + it('should error when no collection thing was found', async () => { + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + (client.getThing as any) = jest.fn(() => undefined); + + await expect(service.save(mockObject)).rejects.toThrow('Could not find collectionThing in dataset'); + + }); + + it('should error when no distribution uri was found', async () => { + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + (client.getThing as any) = jest.fn(() => client.createThing()); + (client.getUrl as any) = jest.fn(() => undefined); + + await expect(service.save(mockObject)).rejects.toThrow('Could not find distributionUri in dataset'); + + }); + + it('should error when no distribution thing was found', async () => { + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + + (client.getThing as any) = jest.fn((d, uri) => { + + if (uri === 'http://test-uri/') { + + return undefined; + + } + + return client.createThing(); + + }); + + (client.getUrl as any) = jest.fn(() => 'http://test-uri/'); + + await expect(service.save(mockObject)).rejects.toThrow('Could not find distributionThing in dataset'); + + }); + + it('should error when no content (objects) uri was found', async () => { + + (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); + (client.getThing as any) = jest.fn(() => client.createThing()); + + (client.getUrl as any) = jest.fn((t, pred) => { + + if (pred === 'http://schema.org/contentUrl') { + + return undefined; + + } + + return 'test-url'; + + }); + + await expect(service.save(mockObject)).rejects.toThrow('Could not find contentUrl in dataset'); + + }); + it('should return object when saved', async () => { (client.getSolidDataset as any) = jest.fn(async () => 'test-dataset'); @@ -660,6 +754,10 @@ describe('CollectionObjectSolidStore', () => { describe('getTerm()', () => { + const termUri = 'https://test.url/'; + const termName = 'name'; + const termThing = client.createThing({ url: termUri }); + it.each([ null, undefined ])('should error when dataset is %s', (value) => { expect(() => CollectionObjectSolidStore.getTerm('uri', value)).toThrow('Argument dataset should be set'); @@ -680,11 +778,16 @@ describe('CollectionObjectSolidStore', () => { }); - it('should return correct Thing when present', () => { + it('should error when name not found in thing', async () => { + + (client.getStringNoLocale as any) = jest.fn(() => undefined); + (client.getThing as any) = jest.fn(() => termThing); + + expect(() => CollectionObjectSolidStore.getTerm('uri', client.createSolidDataset())).toThrow('Could not find name in dataset'); - const termUri = 'https://test.url/'; - const termName = 'name'; - const termThing = client.createThing({ url: termUri }); + }); + + it('should return correct Thing when present', () => { (client.getStringNoLocale as any) = jest.fn(() => termName); (client.getThing as any) = jest.fn(() => termThing); diff --git a/packages/solid-crs-core/package-lock.json b/packages/solid-crs-core/package-lock.json index 1fe30b62..a7cf7f21 100644 --- a/packages/solid-crs-core/package-lock.json +++ b/packages/solid-crs-core/package-lock.json @@ -532,84 +532,6 @@ } } }, - "@inrupt/jose-legacy-modules": { - "version": "0.0.3-3.15.4", - "resolved": "https://registry.npmjs.org/@inrupt/jose-legacy-modules/-/jose-legacy-modules-0.0.3-3.15.4.tgz", - "integrity": "sha512-gcmIqLLFyhNZWw9OKK3kNgEbpKU0z6kn6NPWQlJf0Dy5QtuIgwcS7aRU2GJScz+Dx9KGQVvyAapYX3buHyrBXw==", - "requires": { - "jose": "3.15.4" - } - }, - "@inrupt/oidc-client-ext": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@inrupt/oidc-client-ext/-/oidc-client-ext-1.11.2.tgz", - "integrity": "sha512-htdqsFnLOSUhi+AkhyYCTA1vjUsZT8TeQOiXEtLDgneCRxwxCGfRwVSgXSC30OeophlgrZ7/QVixaz3BB5yXEA==", - "requires": { - "@inrupt/jose-legacy-modules": "0.0.3-3.15.4", - "@inrupt/solid-client-authn-core": "^1.11.2", - "@types/uuid": "^8.3.0", - "form-urlencoded": "~6.0.3", - "oidc-client": "^1.11.3", - "uuid": "^8.3.1" - } - }, - "@inrupt/solid-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client/-/solid-client-1.6.1.tgz", - "integrity": "sha512-fTU30u73Re+vl7Rn4+U6jgodCtaLNGjlgLgiHivArsczApCf+fzh5MqD6uZlf0kRKsZpHm6q+7n5JRwBhOr/8Q==", - "requires": { - "@rdfjs/dataset": "^1.0.1", - "@types/n3": "^1.1.6", - "@types/rdf-js": "^4.0.0", - "@types/rdfjs__dataset": "^1.0.2", - "cross-fetch": "^3.0.4", - "http-link-header": "^1.0.2", - "n3": "1.8.1" - } - }, - "@inrupt/solid-client-authn-browser": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-browser/-/solid-client-authn-browser-1.11.2.tgz", - "integrity": "sha512-DifF7hSMuFEB9+lDAYjRq6E7DOIZjQwdk9gUkPj93tdIb4icHXQ9JTMwBAxXmdTruPC2g5Pzu0PQ0PCvbIpuDA==", - "requires": { - "@inrupt/jose-legacy-modules": "0.0.3-3.15.4", - "@inrupt/oidc-client-ext": "^1.11.2", - "@inrupt/solid-client-authn-core": "^1.11.2", - "@types/lodash.clonedeep": "^4.5.6", - "@types/node": "^15.0.1", - "@types/uuid": "^8.3.0", - "events": "^3.3.0", - "lodash.clonedeep": "^4.5.0", - "uuid": "^8.3.1" - }, - "dependencies": { - "@types/node": { - "version": "15.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", - "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==" - } - } - }, - "@inrupt/solid-client-authn-core": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-core/-/solid-client-authn-core-1.11.2.tgz", - "integrity": "sha512-hL+BC81lE4V0EXZE8PJ418y/vFvW+rfcmHgHqi0ZKSSxLNVE08Ok4W2d+g6wcW3wyePZ9FOL2K8BIh7/jCGj8Q==", - "requires": { - "@inrupt/jose-legacy-modules": "0.0.3-3.15.4", - "@inrupt/solid-common-vocab": "^1.0.0", - "@types/lodash.clonedeep": "^4.5.6", - "@types/uuid": "^8.3.0", - "cross-fetch": "^3.0.6", - "events": "^3.3.0", - "lodash.clonedeep": "^4.5.0", - "uuid": "^8.3.1" - } - }, - "@inrupt/solid-common-vocab": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@inrupt/solid-common-vocab/-/solid-common-vocab-1.0.0.tgz", - "integrity": "sha512-LcImhJqqPsNl/OlULzEEK2rYevty0eh1zaOLVz3lnydEU1DQkeaJ8fKBxKdp5/QjCtnIYcaDjh5U11PGh29Dgg==" - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -829,99 +751,6 @@ "chalk": "^4.0.0" } }, - "@netwerk-digitaal-erfgoed/solid-crs-client": { - "version": "0.11.0", - "resolved": "https://npm.pkg.github.com/download/@netwerk-digitaal-erfgoed/solid-crs-client/0.11.0/ad896fdc991380f96581aac07887b03cc7c2079c3f87b7361ddefff0e1a04b15", - "integrity": "sha512-AIxMybp3EqfIAOcvPht95SRhH0YrteUh3+JJNWJf7Gq4xe1kcdsXYkv1lCYKZ+ZgbMfSxoMAb60on+fwhDiEcA==", - "requires": { - "@inrupt/solid-client": "1.6.1", - "@inrupt/solid-client-authn-browser": "1.11.2", - "@peculiar/webcrypto": "^1.1.7", - "buffer": "^6.0.3", - "crypto": "^1.0.1", - "crypto-browserify": "^3.12.0", - "process": "^0.11.10", - "rxjs": "^6.6.7", - "stream-browserify": "^3.0.0", - "util": "^0.12.4" - } - }, - "@peculiar/asn1-schema": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.0.44.tgz", - "integrity": "sha512-uaCnjQ9A9WwQSMuDJcNOCYEPXTahgKbFMvI7eMOMd8lXgx0J1eU7F3BoMsK5PFxa3dVUxjSQbaOjfgGoeHGgoQ==", - "requires": { - "@types/asn1js": "^2.0.2", - "asn1js": "^2.1.1", - "pvtsutils": "^1.2.1", - "tslib": "^2.3.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - } - } - }, - "@peculiar/json-schema": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", - "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", - "requires": { - "tslib": "^2.0.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - } - } - }, - "@peculiar/webcrypto": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.2.2.tgz", - "integrity": "sha512-xb8MEgfq93TAkIb70kn+llZgIFQwhdiCiOJHzekVTAS74Y+ae5bZn8KEsuycop/LXAm1kx+Kad/v9eTDTWuY/w==", - "requires": { - "@peculiar/asn1-schema": "^2.0.38", - "@peculiar/json-schema": "^1.1.12", - "pvtsutils": "^1.2.1", - "tslib": "^2.3.1", - "webcrypto-core": "^1.3.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - } - } - }, - "@rdfjs/data-model": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.3.4.tgz", - "integrity": "sha512-iKzNcKvJotgbFDdti7GTQDCYmL7GsGldkYStiP0K8EYtN7deJu5t7U11rKTz+nR7RtesUggT+lriZ7BakFv8QQ==", - "requires": { - "@rdfjs/types": ">=1.0.1" - } - }, - "@rdfjs/dataset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-1.1.1.tgz", - "integrity": "sha512-BNwCSvG0cz0srsG5esq6CQKJc1m8g/M0DZpLuiEp0MMpfwguXX7VeS8TCg4UUG3DV/DqEvhy83ZKSEjdsYseeA==", - "requires": { - "@rdfjs/data-model": "^1.2.0" - } - }, - "@rdfjs/types": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.0.1.tgz", - "integrity": "sha512-YxVkH0XrCNG3MWeZxfg596GFe+oorTVusmNxRP6ZHTsGczZ8AGvG3UchRNkg3Fy4MyysI7vBAA5YZbESL+VmHQ==", - "requires": { - "@types/node": "*" - } - }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -946,11 +775,6 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, - "@types/asn1js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-2.0.2.tgz", - "integrity": "sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==" - }, "@types/babel__core": { "version": "7.1.14", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", @@ -1035,32 +859,11 @@ "pretty-format": "^26.0.0" } }, - "@types/lodash": { - "version": "4.14.177", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", - "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==" - }, - "@types/lodash.clonedeep": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz", - "integrity": "sha512-cE1jYr2dEg1wBImvXlNtp0xDoS79rfEdGozQVgliDZj1uERH4k+rmEMTudP9b4VQ8O6nRb5gPqft0QzEQGMQgA==", - "requires": { - "@types/lodash": "*" - } - }, - "@types/n3": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.10.4.tgz", - "integrity": "sha512-FfRTwcbXcScVHuAjIASveRWL6Fi6fPALl1Ge8tMESYLqU7R42LJvtdBpUi+f9YK0oQPqIN+zFFgMDFJfLMx0bg==", - "requires": { - "@types/node": "*", - "rdf-js": "^4.0.2" - } - }, "@types/node": { "version": "14.17.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", - "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==" + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==", + "dev": true }, "@types/node-gettext": { "version": "3.0.2", @@ -1086,22 +889,6 @@ "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==", "dev": true }, - "@types/rdf-js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/rdf-js/-/rdf-js-4.0.2.tgz", - "integrity": "sha512-soR/+RMogGiDU1lrpuQl5ZL55/L1eq/JlR2dWx052Uh/RYs9okh3XZHFlIJXHZqjqyjEn4WdbOMfBj7vvc2WVQ==", - "requires": { - "rdf-js": "*" - } - }, - "@types/rdfjs__dataset": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-1.0.5.tgz", - "integrity": "sha512-8OBC9Kr/ZSgNoUTe5mHTDPHaPt8Xen4XbYfqcbYv56d+4WdKliHXaFmFc0L4I5vsynE5JGu21Hvg2zWgX1Az6Q==", - "requires": { - "rdf-js": "^4.0.2" - } - }, "@types/stack-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", @@ -1111,7 +898,8 @@ "@types/uuid": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", + "dev": true }, "@types/yargs": { "version": "15.0.13", @@ -1137,7 +925,8 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true }, "acorn-globals": { "version": "6.0.0", @@ -1279,32 +1068,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "asn1js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.1.1.tgz", - "integrity": "sha512-t9u0dU0rJN4ML+uxgN6VM2Z4H5jWIYm0w8LsZLzMJaQsgL3IJNbxHgmbWDvJAwspyHpDFuzUaUFh4c05UB4+6g==", - "requires": { - "pvutils": "^1.0.17" - } - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -1332,7 +1095,8 @@ "available-typed-arrays": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", - "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" + "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==", + "dev": true }, "babel-jest": { "version": "26.6.3", @@ -1466,16 +1230,6 @@ } } }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1495,83 +1249,12 @@ "fill-range": "^7.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, "browserslist": { "version": "4.16.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", @@ -1594,26 +1277,12 @@ "node-int64": "^0.4.0" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1635,6 +1304,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -1689,15 +1359,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "cjs-module-lexer": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", @@ -1861,11 +1522,6 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "core-js": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", - "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==" - }, "cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -1879,47 +1535,6 @@ "yaml": "^1.10.0" } }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1930,6 +1545,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "dev": true, "requires": { "node-fetch": "2.6.1" } @@ -1948,30 +1564,8 @@ "crypto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "dev": true }, "cssom": { "version": "0.4.4", @@ -2056,6 +1650,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -2107,15 +1702,6 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -2134,23 +1720,6 @@ "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -2183,27 +1752,6 @@ "integrity": "sha512-P/B84AgUSQXaum7a8m11HUsYL8tj9h/Pt5f7Hg7Ty6bm5DxlFq+e5+ouHUoNQMsKDJ7u4yGfI8mOErCmSH9wyg==", "dev": true }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -2247,6 +1795,7 @@ "version": "1.18.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -2271,6 +1820,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2512,20 +2062,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "exec-sh": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", @@ -2851,7 +2387,8 @@ "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true }, "form-data": { "version": "3.0.1", @@ -2864,11 +2401,6 @@ "mime-types": "^2.1.12" } }, - "form-urlencoded": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-6.0.5.tgz", - "integrity": "sha512-7M7IhZNujsHqjYovM1WTSqcAVOqfvgF8acu6ok1ct1a00l6LVrmagJKkOdRUH/PYKEDOZ7ZAw/Mtq1/Q8CuRTQ==" - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2894,7 +2426,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "functional-red-black-tree": { "version": "1.0.1", @@ -2918,6 +2451,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3008,6 +2542,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -3015,7 +2550,8 @@ "has-bigints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true }, "has-flag": { "version": "4.0.0", @@ -3026,12 +2562,14 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -3088,42 +2626,6 @@ } } }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -3145,11 +2647,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-link-header": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.3.tgz", - "integrity": "sha512-nARK1wSKoBBrtcoESlHBx36c1Ln/gnbNQi1eB6MeTUefJIT3NvUOsV15bClga0k38f0q/kN5xxrGSDS3EFnm9w==" - }, "http-proxy-agent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", @@ -3186,11 +2683,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -3242,12 +2734,14 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -3284,6 +2778,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3299,6 +2794,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -3307,6 +2803,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3321,7 +2818,8 @@ "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true }, "is-ci": { "version": "2.0.0", @@ -3365,6 +2863,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3423,6 +2922,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3439,7 +2939,8 @@ "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true }, "is-number": { "version": "7.0.0", @@ -3451,6 +2952,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3480,6 +2982,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3501,6 +3004,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3509,6 +3013,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -3517,6 +3022,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.7.tgz", "integrity": "sha512-VxlpTBGknhQ3o7YiVjIhdLU6+oD8dPz/79vvvH4F+S/c8608UCVa9fgDpa1kZgFoUST2DCgacc70UszKgzKuvA==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.4", "call-bind": "^1.0.2", @@ -4295,11 +3801,6 @@ "supports-color": "^7.0.0" } }, - "jose": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-3.15.4.tgz", - "integrity": "sha512-SXeGi+g5ZcNgV6o7f+Mx3Q1gaYMSBzAi3cmcZPxoeCEZPgfSCnnyfmMXzXoLDh+XL4KMtGvhOsYBoqQhnuR2rQ==" - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4560,7 +4061,8 @@ "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true }, "lodash.merge": { "version": "4.6.2", @@ -4670,16 +4172,6 @@ "object-visit": "^1.0.0" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4696,22 +4188,6 @@ "picomatch": "^2.2.3" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "mime-db": { "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", @@ -4733,16 +4209,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4790,15 +4256,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "n3": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.8.1.tgz", - "integrity": "sha512-oS0XBNhHH+1TFByvJs84q2lsy3MqpkIeLNT8r9OPyblcvcQbZHcKspwdVcWWzNrlMpSHmbOG1KO5AbXy2++Csw==", - "requires": { - "queue-microtask": "^1.1.2", - "readable-stream": "^3.6.0" - } - }, "nanoid": { "version": "3.1.23", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", @@ -4839,7 +4296,8 @@ "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true }, "node-int64": { "version": "0.4.0", @@ -4957,12 +4415,14 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -4977,6 +4437,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -4993,18 +4454,6 @@ "isobject": "^3.0.1" } }, - "oidc-client": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz", - "integrity": "sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg==", - "requires": { - "acorn": "^7.4.1", - "base64-js": "^1.5.1", - "core-js": "^3.8.3", - "crypto-js": "^4.0.0", - "serialize-javascript": "^4.0.0" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5091,18 +4540,6 @@ "callsites": "^3.0.0" } }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -5157,18 +4594,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -5237,11 +4662,6 @@ "react-is": "^17.0.1" } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -5270,26 +4690,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5306,56 +4706,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "pvtsutils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.1.tgz", - "integrity": "sha512-Q867jEr30lBR2YSFFLZ0/XsEvpweqH6Kj096wmlRAFXrdRGPCNq2iz9B5Tk085EZ+OBZyYAVA5UhPkjSHGrUzQ==", - "requires": { - "tslib": "^2.3.1" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - } - } - }, - "pvutils": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz", - "integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "rdf-js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/rdf-js/-/rdf-js-4.0.2.tgz", - "integrity": "sha512-ApvlFa/WsQh8LpPK/6hctQwG06Z9ztQQGWVtrcrf9L6+sejHNXLPOqL+w7q3hF+iL0C4sv3AX1PUtGkLNzyZ0Q==", - "requires": { - "@rdfjs/types": "*" - } - }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -5393,16 +4743,6 @@ "type-fest": "^0.8.1" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -5528,15 +4868,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "rollup": { "version": "2.49.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.49.0.tgz", @@ -5592,7 +4923,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -5606,7 +4938,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sane": { "version": "4.1.0", @@ -5773,14 +5106,6 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -5810,15 +5135,6 @@ } } }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5866,6 +5182,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -6161,15 +5478,6 @@ } } }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, "string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", @@ -6201,6 +5509,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -6210,26 +5519,12 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -6504,6 +5799,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has-bigints": "^1.0.1", @@ -6594,6 +5890,7 @@ "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -6603,11 +5900,6 @@ "which-typed-array": "^1.1.2" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -6688,25 +5980,6 @@ "makeerror": "1.0.x" } }, - "webcrypto-core": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.3.0.tgz", - "integrity": "sha512-/+Hz+uNM6T8FtizWRYMNdGTXxWaljLFzQ5GKU4WqCTZKpaki94YqDA39h/SpWxEZfgkVMZzrqqtPlfy2+BloQw==", - "requires": { - "@peculiar/asn1-schema": "^2.0.38", - "@peculiar/json-schema": "^1.1.12", - "asn1js": "^2.1.1", - "pvtsutils": "^1.2.0", - "tslib": "^2.3.1" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - } - } - }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -6752,6 +6025,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -6770,6 +6044,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.6.tgz", "integrity": "sha512-DdY984dGD5sQ7Tf+x1CkXzdg85b9uEel6nr4UkFg1LoE9OXv3uRuZhe5CoWdawhGACeFpEZXH8fFLQnDhbpm/Q==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.4", "call-bind": "^1.0.2", diff --git a/packages/solid-crs-core/package.json b/packages/solid-crs-core/package.json index 946d1527..14e37b6f 100644 --- a/packages/solid-crs-core/package.json +++ b/packages/solid-crs-core/package.json @@ -74,10 +74,10 @@ ], "coverageThreshold": { "global": { - "statements": 95.82, - "branches": 89.76, - "lines": 95.75, - "functions": 98.11 + "branches": 92.06, + "statements": 97.38, + "lines": 97.25, + "functions": 99.38 } }, "automock": false, @@ -99,6 +99,7 @@ } }, "displayName": "core", - "preset": "@digita-ai/jest-config" + "preset": "@digita-ai/jest-config", + "maxWorkers": 6 } -} +} \ No newline at end of file diff --git a/packages/solid-crs-manage/lib/app-root.component.ts b/packages/solid-crs-manage/lib/app-root.component.ts index a1e47a95..0182f55c 100644 --- a/packages/solid-crs-manage/lib/app-root.component.ts +++ b/packages/solid-crs-manage/lib/app-root.component.ts @@ -35,7 +35,7 @@ export class AppRootComponent extends RxLitElement { * this is an interpreted machine given an initial context. */ @internalProperty() - actor: Interpreter; + actor: Interpreter; /** * The state of this component. @@ -87,6 +87,45 @@ export class AppRootComponent extends RxLitElement { await new Promise((resolve) => this.translator.addEventListener(TRANSLATIONS_LOADED, resolve)); + super.connectedCallback(); + + } + + /** + * Dismisses an alert when a dismiss event is fired by the AlertComponent. + * + * @param event The event fired when dismissing an alert. + */ + dismiss(event: CustomEvent): void { + + this.logger.debug(AppRootComponent.name, 'Dismiss', event); + + if (!event) { + + throw new ArgumentError('Argument event should be set.', event); + + } + + if (!event.detail) { + + throw new ArgumentError('Argument event.detail should be set.', event.detail); + + } + + this.actor.send(new DismissAlertEvent(event.detail)); + + } + + firstUpdated(changed: PropertyValues): void { + + window.onpopstate = () => { + + window.location.reload(); + + }; + + document.title = this.translator.translate('app.root.title'); + this.actor = interpret( (appMachine( new SolidSDKService(this.logger), @@ -123,42 +162,6 @@ export class AppRootComponent extends RxLitElement { }), { devTools: process.env.MODE === 'DEV' }, ); - super.connectedCallback(); - this.actor.start(); - - } - - /** - * Dismisses an alert when a dismiss event is fired by the AlertComponent. - * - * @param event The event fired when dismissing an alert. - */ - dismiss(event: CustomEvent): void { - - this.logger.debug(AppRootComponent.name, 'Dismiss', event); - - if (!event) { - - throw new ArgumentError('Argument event should be set.', event); - - } - - if (!event.detail) { - - throw new ArgumentError('Argument event.detail should be set.', event.detail); - - } - - this.actor.send(new DismissAlertEvent(event.detail)); - - } - - firstUpdated(changed: PropertyValues): void { - - super.firstUpdated(changed); - - document.title = this.translator.translate('app.root.title'); - this.subscribe('state', from(this.actor)); this.subscribe('collections', from(this.actor).pipe( @@ -177,6 +180,10 @@ export class AppRootComponent extends RxLitElement { map((state) => state.context.selected), )); + this.actor.start(); + + super.firstUpdated(changed); + } /** @@ -284,7 +291,7 @@ export class AppRootComponent extends RxLitElement { ` : '' } - ${ !this.state?.matches({ [AppRootStates.AUTHENTICATE]: AppAuthenticateStates.AUTHENTICATED }) ? html``: ''} + ${ !this.state?.matches({ [AppRootStates.AUTHENTICATE]: AppAuthenticateStates.AUTHENTICATED }) ? html``: ''} ${ this.state?.matches({ [AppRootStates.DATA]: AppDataStates.DETERMINING_POD_TYPE }) ? html`` : html` ${ this.state?.matches({ [AppRootStates.AUTHENTICATE]: AppAuthenticateStates.AUTHENTICATED, [AppRootStates.FEATURE]: AppFeatureStates.COLLECTION }) ? html`` : '' } diff --git a/packages/solid-crs-manage/lib/app.events.ts b/packages/solid-crs-manage/lib/app.events.ts index 2234bb46..ee69187e 100644 --- a/packages/solid-crs-manage/lib/app.events.ts +++ b/packages/solid-crs-manage/lib/app.events.ts @@ -1,5 +1,5 @@ import { Alert } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { Collection, SolidSession } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { Collection, RouterEvent, SolidSession } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { DoneInvokeEvent, EventObject } from 'xstate'; import { assign, choose, send } from 'xstate/lib/actions'; import { AppContext } from './app.machine'; @@ -126,6 +126,7 @@ export class SetProfileEvent implements EventObject { * Union type of app events. */ export type AppEvent = + | RouterEvent | LoggedInEvent | LoggingOutEvent | LoggedOutEvent diff --git a/packages/solid-crs-manage/lib/app.machine.ts b/packages/solid-crs-manage/lib/app.machine.ts index f36c75f2..d52d4b68 100644 --- a/packages/solid-crs-manage/lib/app.machine.ts +++ b/packages/solid-crs-manage/lib/app.machine.ts @@ -1,11 +1,11 @@ import { Alert, FormActors, formMachine, FormValidatorResult, State } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { Collection, CollectionObjectStore, CollectionObject, CollectionStore, SolidService, SolidProfile, SolidSession } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { Collection, CollectionObjectStore, CollectionObject, CollectionStore, SolidService, SolidProfile, SolidSession, Route, routerStateConfig, NavigatedEvent, RouterStates, createRoute, activeRoute, routerEventsConfig, RouterEvents, updateHistory } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { createMachine } from 'xstate'; import { assign, forwardTo, log, send } from 'xstate/lib/actions'; import { addAlert, AddAlertEvent, addCollection, AppEvent, AppEvents, dismissAlert, LoggedInEvent, LoggedOutEvent, LoggingOutEvent, removeSession, setCollections, setProfile, SetProfileEvent, setSession } from './app.events'; import { authenticateMachine } from './features/authenticate/authenticate.machine'; import { collectionMachine } from './features/collection/collection.machine'; -import { CollectionEvents } from './features/collection/collection.events'; +import { CollectionEvents, SelectedCollectionEvent } from './features/collection/collection.events'; import { searchMachine } from './features/search/search.machine'; import { SearchEvents, SearchUpdatedEvent } from './features/search/search.events'; import { objectMachine } from './features/object/object.machine'; @@ -44,6 +44,11 @@ export interface AppContext { * The URI of the DataCatalog in which the collections are stored */ catalog?: Collection; + + /** + * The path of the router + */ + path?: string; } /** @@ -75,6 +80,7 @@ export enum AppFeatureStates { COLLECTION = '[AppFeatureState: Collection]', SEARCH = '[AppFeatureState: Search]', OBJECT = '[AppFeatureState: Object]', + IDLE = '[AppFeatureState: Idle]', } /** @@ -100,7 +106,17 @@ export enum AppAuthenticateStates { /** * Union type of all app events. */ -export type AppStates = AppRootStates | AppFeatureStates | AppAuthenticateStates; +export type AppStates = AppRootStates | AppFeatureStates | AppAuthenticateStates | RouterStates; + +/** + * The routing configuration for the app machine + */ +export const routes: Route[] = [ + createRoute( + '.*', + [ `#${AppFeatureStates.COLLECTION}` ], + ), +]; /** * The application root machine and its configuration. @@ -114,16 +130,24 @@ export const appMachine = ( ) => createMachine>({ id: AppActors.APP_MACHINE, + context: { + alerts: [], + }, type: 'parallel', on: { - [ObjectEvents.SELECTED_OBJECT]: { - actions: forwardTo(AppActors.OBJECT_MACHINE), - }, + /** + * Router events + */ + ... (routerEventsConfig as any)(), }, states: { - /** - * Determines which feature is currently active. - */ + /** + * Router + */ + ... (routerStateConfig as any)(routes), + /** + * Determines which feature is currently active. + */ [AppRootStates.FEATURE]: { initial: AppFeatureStates.WAITING_FOR_AUTH, on: { @@ -136,7 +160,37 @@ export const appMachine = ( [AppEvents.ERROR]: { actions: [ log(() => 'An error occurred'), - send((context, event) => new AddAlertEvent({ type: 'danger', message: event.data?.error ? event.data.error.toString() : 'app.root.alerts.error' })), + send((c, event) => new AddAlertEvent({ type: 'danger', message: event.data?.error ? event.data.error.toString() : 'app.root.alerts.error' })), + ], + }, + [ObjectEvents.SELECTED_OBJECT]: { + actions: [ + log('selected object'), + send((c, event) => new NavigatedEvent(`/object/${encodeURIComponent(event.object.uri)}`, `${event.object.name} | Collectieregistratiesysteem`)), + forwardTo(AppActors.OBJECT_MACHINE), + ], + }, + [CollectionEvents.SELECTED_COLLECTION]: { + actions: [ + log('selected collection'), + send((c, event) => new NavigatedEvent(`/collection/${encodeURIComponent(event.collection?.uri)}`, `${event.collection?.name} | Collectieregistratiesysteem`)), + assign({ selected: (c, event) => event.collection }), + forwardTo(AppActors.COLLECTION_MACHINE), + ], + }, + [SearchEvents.SEARCH_UPDATED]: { + actions: [ + send((c, event) => new NavigatedEvent(`/search/${event.searchTerm}`)), + assign({ selected: (context, event) => undefined }), + ], + target: `#${AppFeatureStates.SEARCH}`, + cond: (_, event: SearchUpdatedEvent) => event.searchTerm !== undefined && event.searchTerm !== '', + }, + [RouterEvents.NAVIGATED]: { + // this overwrites default behavior as defined in the routerStateConfig + actions: [ + (c, event) => updateHistory(event.path, event.title), + assign({ alerts: () => [] }), ], }, }, @@ -145,6 +199,7 @@ export const appMachine = ( * Only create the collection machine once the user has logged in and the session is set */ [AppFeatureStates.WAITING_FOR_AUTH]: { + id: AppFeatureStates.WAITING_FOR_AUTH, on: { [AppEvents.SET_PROFILE]: { target: AppFeatureStates.COLLECTION, @@ -155,24 +210,20 @@ export const appMachine = ( * The collection feature is shown. */ [AppFeatureStates.COLLECTION]: { + id: AppFeatureStates.COLLECTION, + entry: [ + // send((context, event) => new NavigatedEvent(`/collection/${encodeURIComponent(context.selected.uri)}`)), + assign({ selected: (context) => + context.selected + ?? context.collections?.find((collection) => + collection.uri === decodeURIComponent(activeRoute(routes).pathParams.get('collectionUri'))) + ?? context.collections ? context.collections[0] : undefined }), + ], on: { [ObjectEvents.SELECTED_OBJECT]: { target: AppFeatureStates.OBJECT, actions: send((context, event) => event), }, - [SearchEvents.SEARCH_UPDATED]: { - actions: assign({ - selected: (context, event) => undefined, - }), - target: AppFeatureStates.SEARCH, - cond: (_, event: SearchUpdatedEvent) => event.searchTerm !== undefined && event.searchTerm !== '', - }, - [CollectionEvents.SELECTED_COLLECTION]: { - actions: [ - forwardTo(AppActors.COLLECTION_MACHINE), - assign({ selected: (context, event) => event.collection }), - ], - }, }, invoke: [ { @@ -192,6 +243,7 @@ export const appMachine = ( * Shows the search feature. */ [AppFeatureStates.SEARCH]: { + id: AppFeatureStates.SEARCH, on: { [ObjectEvents.SELECTED_OBJECT]: { target: AppFeatureStates.OBJECT, @@ -201,7 +253,10 @@ export const appMachine = ( * Forward the search updated event to the search machine. */ [SearchEvents.SEARCH_UPDATED]: { - actions: send((context, event) => event, { to: AppActors.SEARCH_MACHINE }), + actions: [ + send((c, event) => new NavigatedEvent(`/search/${event.searchTerm}`)), + send((context, event) => event, { to: AppActors.SEARCH_MACHINE }), + ], }, /** * Transition to collection feature when a collection is selected. @@ -209,6 +264,7 @@ export const appMachine = ( [CollectionEvents.SELECTED_COLLECTION]: { target: AppFeatureStates.COLLECTION, actions: [ + send((c, event) => event), assign({ selected: (context, event) => event.collection ? event.collection : context.selected }), ], }, @@ -224,10 +280,7 @@ export const appMachine = ( searchTerm: event.searchTerm, }), onDone: { - actions: send((context, event) => ({ - type: CollectionEvents.SELECTED_COLLECTION, - collection: context.collections[0], - })), + actions: send((context, event) => new SelectedCollectionEvent(context.collections[0])), }, onError: { actions: send((context, event) => event), @@ -239,17 +292,11 @@ export const appMachine = ( * The object feature is shown. */ [AppFeatureStates.OBJECT]: { + id: AppFeatureStates.OBJECT, on: { [CollectionEvents.SELECTED_COLLECTION]: { target: AppFeatureStates.COLLECTION, - actions: send((context, event) => event), - }, - [SearchEvents.SEARCH_UPDATED]: { - actions: assign({ - selected: (context, event) => undefined, - }), - target: AppFeatureStates.SEARCH, - cond: (_, event: SearchUpdatedEvent) => event.searchTerm !== undefined && event.searchTerm !== '', + actions: send((c, event) => event), }, }, invoke: [ @@ -283,9 +330,12 @@ export const appMachine = ( * Get profile and assign to context. */ { - src: (context, event) => solid.getProfile(context.session.webId), + src: (context) => solid.getProfile(context.session.webId), onDone: { - actions: [ setProfile, send(new SetProfileEvent()) ], + actions: [ + setProfile, + send(new SetProfileEvent()), + ], }, }, { @@ -422,6 +472,7 @@ export const appMachine = ( * Refresh collections, set current collection and assign to state. */ [AppDataStates.REFRESHING]: { + id: AppDataStates.REFRESHING, invoke: { /** * Get all collections from store. @@ -429,23 +480,19 @@ export const appMachine = ( src: () => collectionStore.all(), onDone: [ { - target: AppDataStates.IDLE, + target: [ AppDataStates.IDLE ], actions: [ + send((c, event) => new SelectedCollectionEvent(event.data[0])), setCollections, - send((context, event) => ({ - type: CollectionEvents.SELECTED_COLLECTION, - collection: event.data.find((collection: Collection) => - context.selected?.uri === collection.uri) ?? event.data[0], - })), ], - cond: (context, event) => event.data.length > 0, + cond: (c, event) => event.data.length > 0, }, { target: AppDataStates.CREATING, }, ], onError: { - actions: send((context, event) => event), + actions: send((c, event) => event), }, }, }, @@ -459,10 +506,10 @@ export const appMachine = ( */ src: () => collectionStore.save(collectionTemplate), onDone: { - target: AppDataStates.IDLE, + target: [ AppDataStates.IDLE ], actions: [ addCollection, - send((context, event) => ({ type: CollectionEvents.SELECTED_COLLECTION, collection: event.data })), + send((context, event) => new SelectedCollectionEvent(event.data)), ], }, onError: { diff --git a/packages/solid-crs-manage/lib/features/authenticate/authenticate-root.component.spec.ts b/packages/solid-crs-manage/lib/features/authenticate/authenticate-root.component.spec.ts index 8ac9c952..ea69ee7d 100644 --- a/packages/solid-crs-manage/lib/features/authenticate/authenticate-root.component.spec.ts +++ b/packages/solid-crs-manage/lib/features/authenticate/authenticate-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert, FormActors, FormContext, FormSubmittedEvent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, SolidService, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, SolidService, SolidMockService, MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent, LoggedInEvent } from '../../app.events'; import { appMachine } from '../../app.machine'; @@ -71,7 +71,7 @@ describe('AuthenticateRootComponent', () => { component = window.document.createElement('nde-authenticate-root') as AuthenticateRootComponent; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); component.actor = machine; }); diff --git a/packages/solid-crs-manage/lib/features/collection/collection-root.component.spec.ts b/packages/solid-crs-manage/lib/features/collection/collection-root.component.spec.ts index ed22a08c..dc7724e1 100644 --- a/packages/solid-crs-manage/lib/features/collection/collection-root.component.spec.ts +++ b/packages/solid-crs-manage/lib/features/collection/collection-root.component.spec.ts @@ -1,5 +1,5 @@ -import { Alert, FormActors, PopupComponent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { Alert, FormActors } from '@netwerk-digitaal-erfgoed/solid-crs-components'; +import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MockTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; import { appMachine } from '../../app.machine'; @@ -70,7 +70,7 @@ describe('CollectionRootComponent', () => { component.formActor = machine.children.get(FormActors.FORM_MACHINE); - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-manage/lib/features/collection/collection.events.ts b/packages/solid-crs-manage/lib/features/collection/collection.events.ts index 0a7bb5d5..92e0536a 100644 --- a/packages/solid-crs-manage/lib/features/collection/collection.events.ts +++ b/packages/solid-crs-manage/lib/features/collection/collection.events.ts @@ -1,6 +1,6 @@ -import { Alert, Event, FormSubmittedEvent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; +import { Alert, FormSubmittedEvent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; import { Collection } from '@netwerk-digitaal-erfgoed/solid-crs-core'; -import { sendParent } from 'xstate'; +import { EventObject, sendParent } from 'xstate'; import { AppEvents } from '../../app.events'; import { ClickedDeleteObjectEvent, SelectedObjectEvent } from '../object/object.events'; @@ -18,58 +18,72 @@ export enum CollectionEvents { } /** - * Event interfaces for the collection component, with their payloads. + * Event classes for the collection component, with their payloads. */ /** * Fired when the user clicks the delete collection button. */ -export interface ClickedDeleteCollectionEvent extends Event { - type: CollectionEvents.CLICKED_DELETE; - collection: Collection; +export class ClickedDeleteCollectionEvent implements EventObject { + + public type: CollectionEvents.CLICKED_DELETE = CollectionEvents.CLICKED_DELETE; + constructor(public collection: Collection) { } + } /** * Fired when the user clicks the edit button. */ -export interface ClickedEditEvent extends Event { - type: CollectionEvents.CLICKED_EDIT; +export class ClickedEditEvent implements EventObject { + + public type: CollectionEvents.CLICKED_EDIT = CollectionEvents.CLICKED_EDIT; + } /** * Fired when the user clicks the save button. */ -export interface ClickedSaveEvent extends Event { - type: CollectionEvents.CLICKED_SAVE; +export class ClickedSaveEvent implements EventObject { + + public type: CollectionEvents.CLICKED_SAVE = CollectionEvents.CLICKED_SAVE; + } /** * Fired when the user clicks the cancel button when editing. */ -export interface CancelledEditEvent extends Event { - type: CollectionEvents.CANCELLED_EDIT; +export class CancelledEditEvent implements EventObject { + + public type: CollectionEvents.CANCELLED_EDIT = CollectionEvents.CANCELLED_EDIT; + } /** * Fired when the user clicks the add object button. */ -export interface ClickedCreateObjectEvent extends Event { - type: CollectionEvents.CLICKED_CREATE_OBJECT; +export class ClickedCreateObjectEvent implements EventObject { + + public type: CollectionEvents.CLICKED_CREATE_OBJECT = CollectionEvents.CLICKED_CREATE_OBJECT; + } /** * An event which is dispatched when the collections were successfully retrieved */ -export interface SelectedCollectionEvent extends Event { - type: CollectionEvents.SELECTED_COLLECTION; - collection: Collection; +export class SelectedCollectionEvent implements EventObject { + + public type: CollectionEvents.SELECTED_COLLECTION = CollectionEvents.SELECTED_COLLECTION; + constructor(public collection: Collection) { } + } /** * Fired when the application is done saving a collection. */ -export interface SavedCollectionEvent extends Event { - type: CollectionEvents.SAVED_COLLECTION; +export class SavedCollectionEvent implements EventObject { + + public type: CollectionEvents.SAVED_COLLECTION = CollectionEvents.SAVED_COLLECTION; + } /** diff --git a/packages/solid-crs-manage/lib/features/object/object-root.component.spec.ts b/packages/solid-crs-manage/lib/features/object/object-root.component.spec.ts index 7f4110b8..dbc36f36 100644 --- a/packages/solid-crs-manage/lib/features/object/object-root.component.spec.ts +++ b/packages/solid-crs-manage/lib/features/object/object-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, Collection, CollectionObject, CollectionMemoryStore, Term, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, Collection, CollectionObject, CollectionMemoryStore, Term, SolidMockService, MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectImageryComponent } from '@netwerk-digitaal-erfgoed/solid-crs-semcom-components'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; @@ -78,7 +78,7 @@ describe('ObjectRootComponent', () => { component.actor = machine; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); component.object = object1; diff --git a/packages/solid-crs-manage/lib/features/object/object-root.component.ts b/packages/solid-crs-manage/lib/features/object/object-root.component.ts index a0f1e71e..ef739acb 100644 --- a/packages/solid-crs-manage/lib/features/object/object-root.component.ts +++ b/packages/solid-crs-manage/lib/features/object/object-root.component.ts @@ -248,11 +248,17 @@ export class ObjectRootComponent extends RxLitElement { this.subscribe('object', from(this.actor).pipe( map((state) => { - this.formCards?.forEach((card) => card.object = state.context?.object); + if (state.context?.object && state.context?.original) { - this.initFormMachine(state.context?.object, state.context?.original); + this.formCards?.forEach((card) => card.object = state.context.object); - return state.context?.object; + this.initFormMachine(state.context.object, state.context.original); + + return state.context?.object; + + } + + return undefined; }) )); diff --git a/packages/solid-crs-manage/lib/features/object/object.machine.spec.ts b/packages/solid-crs-manage/lib/features/object/object.machine.spec.ts index 314d578f..8ebaf724 100644 --- a/packages/solid-crs-manage/lib/features/object/object.machine.spec.ts +++ b/packages/solid-crs-manage/lib/features/object/object.machine.spec.ts @@ -1,4 +1,4 @@ -import { FormActors, FormContext, FormSubmittedEvent, FormUpdatedEvent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; +import { FormContext } from '@netwerk-digitaal-erfgoed/solid-crs-components'; import { CollectionObjectMemoryStore, CollectionObjectStore, ConsoleLogger, LoggerLevel, CollectionStore, CollectionMemoryStore, Collection, CollectionObject, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { appMachine } from '../../app.machine'; @@ -112,6 +112,12 @@ describe('ObjectMachine', () => { machine.onTransition((state) => { + if(state.matches(ObjectStates.IDLE)) { + + machine.send(new ClickedSaveEvent(object1)); + + } + if(state.matches(ObjectStates.SAVING)) { done(); @@ -121,7 +127,6 @@ describe('ObjectMachine', () => { }); machine.start(); - machine.send(new ClickedSaveEvent(object1)); }); @@ -198,6 +203,12 @@ describe('ObjectMachine', () => { machine.onTransition((state) => { + if(state.matches(ObjectStates.IDLE) && !(state.event instanceof ClickedObjectSidebarItem)) { + + machine.send(new ClickedTermFieldEvent('field', [ { name: 'test', uri: 'test' } ])); + + } + if(state.matches(ObjectStates.IDLE) && state.event instanceof ClickedObjectSidebarItem) { done(); @@ -213,7 +224,6 @@ describe('ObjectMachine', () => { }); machine.start(); - machine.send(new ClickedTermFieldEvent('field', [ { name: 'test', uri: 'test' } ])); }); @@ -221,6 +231,12 @@ describe('ObjectMachine', () => { machine.onTransition((state) => { + if(state.matches(ObjectStates.IDLE)) { + + machine.send(new ClickedTermFieldEvent('name', [ { name: 'test', uri: 'test' } ])); + + } + if(state.matches(ObjectStates.EDITING_FIELD)) { done(); @@ -230,7 +246,6 @@ describe('ObjectMachine', () => { }); machine.start(); - machine.send(new ClickedTermFieldEvent('name', [ { name: 'test', uri: 'test' } ])); }); @@ -238,6 +253,12 @@ describe('ObjectMachine', () => { machine.onTransition((state) => { + if(state.matches(ObjectStates.IDLE)) { + + machine.send(new ClickedDeleteObjectEvent(object1)); + + } + if(state.matches(ObjectStates.DELETING)) { done(); @@ -247,7 +268,6 @@ describe('ObjectMachine', () => { }); machine.start(); - machine.send(new ClickedDeleteObjectEvent(object1)); }); diff --git a/packages/solid-crs-manage/lib/features/object/object.machine.ts b/packages/solid-crs-manage/lib/features/object/object.machine.ts index b0c0dd6a..91974c77 100644 --- a/packages/solid-crs-manage/lib/features/object/object.machine.ts +++ b/packages/solid-crs-manage/lib/features/object/object.machine.ts @@ -1,7 +1,8 @@ import { FormValidatorResult, FormContext, State } from '@netwerk-digitaal-erfgoed/solid-crs-components'; import { assign, createMachine, send, sendParent } from 'xstate'; -import { Collection, CollectionObject, CollectionObjectStore, TermService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { activeRoute, Collection, CollectionObject, CollectionObjectStore, TermService, urlVariables } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import edtf from 'edtf'; +import { routes } from '../../app.machine'; import { ClickedTermFieldEvent, ObjectEvent, ObjectEvents, SelectedTermsEvent } from './object.events'; import { TermActors, termMachine } from './terms/term.machine'; @@ -47,6 +48,7 @@ export enum ObjectStates { SAVING = '[ObjectsState: Saving]', EDITING_FIELD = '[ObjectsState: Editing Field]', DELETING = '[ObjectsState: Deleting]', + LOADING_OBJECT = '[ObjectsState: Loading Object]', } /** @@ -209,17 +211,45 @@ export const objectMachine = (objectStore: CollectionObjectStore) => createMachine>({ id: ObjectActors.OBJECT_MACHINE, context: { }, - initial: ObjectStates.IDLE, + initial: ObjectStates.LOADING_OBJECT, on: { [ObjectEvents.SELECTED_OBJECT]: { actions: assign({ - object: (context, event) => event.object, - original: (context, event) => event.object, + object: (c, event) => event.object, + original: (c, event) => event.object, }), target: ObjectStates.IDLE, }, }, states: { + [ObjectStates.LOADING_OBJECT]: { + invoke: { + src: async (context): Promise => { + + if (context.object) { + + return context.object; + + } else { + + return await objectStore.get(decodeURIComponent(activeRoute(routes).pathParams.get('objectUri'))); + + } + + }, + onDone: { + target: ObjectStates.IDLE, + actions: assign({ + object: (c, event) => event.data, + original: (c, event) => event.data, + }), + }, + onError: { + target: ObjectStates.IDLE, + actions: sendParent((c, event) => event), + }, + }, + }, [ObjectStates.SAVING]: { invoke: { src: (context) => objectStore.save(context.object), diff --git a/packages/solid-crs-manage/lib/features/search/search-root.component.spec.ts b/packages/solid-crs-manage/lib/features/search/search-root.component.spec.ts index 29df2812..7e39ebd8 100644 --- a/packages/solid-crs-manage/lib/features/search/search-root.component.spec.ts +++ b/packages/solid-crs-manage/lib/features/search/search-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MockTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; import { appMachine } from '../../app.machine'; @@ -59,7 +59,7 @@ describe('SearchRootComponent', () => { component = window.document.createElement('nde-search-root') as SearchRootComponent; component.actor = machine; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); @@ -188,7 +188,7 @@ describe('SearchRootComponent', () => { const textDiv = emptyContainer.querySelector('.text'); expect(textDiv).toBeTruthy(); - expect(textDiv.textContent).toBe('[search.root.empty.no-search-results]'); + expect(textDiv.textContent).toContain('search.root.empty.no-search-results'); }); diff --git a/packages/solid-crs-manage/package.json b/packages/solid-crs-manage/package.json index 41cb1ba7..b434e1ba 100644 --- a/packages/solid-crs-manage/package.json +++ b/packages/solid-crs-manage/package.json @@ -88,10 +88,10 @@ ], "coverageThreshold": { "global": { - "statements": 88.87, - "branches": 85.26, - "lines": 89.61, - "functions": 79.58 + "statements": 87.14, + "branches": 83.79, + "lines": 87.95, + "functions": 76.07 } }, "automock": false, @@ -110,6 +110,7 @@ "warnOnly": true } } - } + }, + "maxWorkers": 6 } } diff --git a/packages/solid-crs-manage/tests/setup.ts b/packages/solid-crs-manage/tests/setup.ts index 3826e60f..c817939f 100644 --- a/packages/solid-crs-manage/tests/setup.ts +++ b/packages/solid-crs-manage/tests/setup.ts @@ -12,15 +12,54 @@ Object.defineProperty(window.self, 'crypto', { }, }); +import * as core from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { AlertComponent, CardComponent, CollectionCardComponent, ContentHeaderComponent, FormElementComponent, ObjectCardComponent, SidebarComponent, ProgressBarComponent, PopupComponent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; import fetchMock from 'jest-fetch-mock'; -import { AuthenticateRootComponent } from '../lib/features/authenticate/authenticate-root.component'; -import { AuthenticateSetupComponent } from '../lib/features/authenticate/authenticate-setup.component'; -import { AppRootComponent } from '../lib/app-root.component'; -import { CollectionRootComponent } from '../lib/features/collection/collection-root.component'; -import { SearchRootComponent } from '../lib/features/search/search-root.component'; -import { ObjectRootComponent } from '../lib/features/object/object-root.component'; +import { ROUTER, RouterStates } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { TermSearchComponent } from '../lib/features/object/terms/term-search.component'; +import { ObjectRootComponent } from '../lib/features/object/object-root.component'; +import { SearchRootComponent } from '../lib/features/search/search-root.component'; +import { CollectionRootComponent } from '../lib/features/collection/collection-root.component'; +import { AppRootComponent } from '../lib/app-root.component'; +import { AuthenticateSetupComponent } from '../lib/features/authenticate/authenticate-setup.component'; +import { AuthenticateRootComponent } from '../lib/features/authenticate/authenticate-root.component'; + +// mock router function and state config +// essentially disables the router in tests +core.urlVariables = () => ({ + searchParams: { + get: jest.fn(() => ''), + }, + pathParams: { + get: jest.fn(() => ''), + }, +}); + +core.activeRoute = () => ({ + path: undefined, targets: [], + ...core.urlVariables(undefined), +}); + +core.routerStateConfig = () => ({ + [ROUTER]: { + initial: RouterStates.IDLE, + states: { + [RouterStates.IDLE]: { + id: RouterStates.IDLE, + }, + [RouterStates.NAVIGATING]: { + id: RouterStates.NAVIGATING, + invoke: { + src: async () => Promise.resolve(), + onDone: { + target: [], + actions: [], + }, + }, + }, + }, + }, +}); /** * Enable mocks for fetch. diff --git a/packages/solid-crs-presentation/lib/app-root.component.spec.ts b/packages/solid-crs-presentation/lib/app-root.component.spec.ts index 0d702a18..08518534 100644 --- a/packages/solid-crs-presentation/lib/app-root.component.spec.ts +++ b/packages/solid-crs-presentation/lib/app-root.component.spec.ts @@ -55,7 +55,7 @@ describe('AppRootComponent', () => { })); component = window.document.createElement('nde-app-root') as AppRootComponent; - component.translator = new MockTranslator(); + component.translator = new MockTranslator('nl-NL'); component.actor = machine; }); diff --git a/packages/solid-crs-presentation/lib/app.machine.ts b/packages/solid-crs-presentation/lib/app.machine.ts index c8aab9b0..5e5427ec 100644 --- a/packages/solid-crs-presentation/lib/app.machine.ts +++ b/packages/solid-crs-presentation/lib/app.machine.ts @@ -1,5 +1,5 @@ import { Alert, State } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionObjectStore, CollectionSolidStore, CollectionStore, SolidProfile, SolidService, SolidSession, Route, activeRoute, urlVariables, RouterStates, updateHistory, routerStateConfig, RouterEvents, NavigatedEvent, NavigateEvent, updateTitle } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, Collection, CollectionObjectStore, CollectionSolidStore, CollectionStore, SolidProfile, SolidService, SolidSession, Route, activeRoute, routerEventsConfig, RouterStates, routerStateConfig, NavigatedEvent, NavigateEvent, updateTitle, createRoute, RouterEvents, updateHistory } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { createMachine, DoneInvokeEvent } from 'xstate'; import { assign, forwardTo, log, send } from 'xstate/lib/actions'; import { addAlert, AddAlertEvent, AppEvent, AppEvents, dismissAlert, setCollections, setProfile } from './app.events'; @@ -99,25 +99,25 @@ export enum AppDataStates { /** * Union type of all app events. */ -export type AppStates = AppRootStates | AppFeatureStates | RouterStates | AppDataStates | RouterStates; +export type AppStates = AppRootStates | AppFeatureStates | RouterStates | AppDataStates; const routes: Route[] = [ - { - path: '/{{webId}}/collection/{{collectionUri}}', - targets: [ `#${AppFeatureStates.COLLECTION}` ], - }, - { - path: '/{{webId}}/object/{{objectUri}}', - targets: [ `#${AppDataStates.LOADING_OBJECT}` ], - }, - { - path: '/{{webId}}/search/{{searchTerm}}', - targets: [ `#${AppFeatureStates.SEARCH}` ], - }, - { - path: '/{{webId}}/about', - targets: [ `#${AppFeatureStates.ABOUT}` ], - }, + createRoute( + '/{{webId}}/collection/{{collectionUri}}', + [ `#${AppFeatureStates.COLLECTION}` ], + ), + createRoute( + '/{{webId}}/object/{{objectUri}}', + [ `#${AppDataStates.LOADING_OBJECT}` ], + ), + createRoute( + '/{{webId}}/search/{{searchTerm}}', + [ `#${AppFeatureStates.SEARCH}` ], + ), + createRoute( + '/{{webId}}/about', + [ `#${AppFeatureStates.ABOUT}` ], + ), ]; /** @@ -134,6 +134,10 @@ export const appMachine = ( }, type: 'parallel', on: { + /** + * Router events + */ + ...(routerEventsConfig as any)(), [ObjectEvents.SELECTED_OBJECT]: { actions: [ send((context, event) => new NavigatedEvent(`/${encodeURIComponent(context.profile?.uri)}/object/${encodeURIComponent(event.object.uri)}`)), @@ -161,7 +165,7 @@ export const appMachine = ( /** * Router */ - ...routerStateConfig(routes), + ...(routerStateConfig as any)(routes), /** * Determines which feature is currently active. */ @@ -222,7 +226,7 @@ export const appMachine = ( /** * Get all collections from store. */ - src: () => solidService.getProfile(decodeURIComponent(urlVariables(activeRoute(routes).path).get('webId'))), + src: () => solidService.getProfile(decodeURIComponent(activeRoute(routes).pathParams.get('webId'))), onDone: [ { target: [ AppDataStates.LOADING_COLLECTIONS ], @@ -273,7 +277,7 @@ export const appMachine = ( if (window.location.pathname?.match(/^\/.+\/object\/.+\/?$/)) { - return objectStore.get(decodeURIComponent(urlVariables(activeRoute(routes).path).get('objectUri'))); + return objectStore.get(decodeURIComponent(activeRoute(routes).pathParams.get('objectUri'))); } else throw new ArgumentError('invalid URL for this state', window.location.pathname); @@ -324,7 +328,7 @@ export const appMachine = ( assign({ selected: (context) => context.selected || context.collections?.find((collection) => - collection.uri === decodeURIComponent(urlVariables(activeRoute(routes).path).get('collectionUri'))) + collection.uri === decodeURIComponent(activeRoute(routes).pathParams.get('collectionUri'))) || context.collections[0] }), ], on: { @@ -397,7 +401,7 @@ export const appMachine = ( id: AppActors.SEARCH_MACHINE, src: searchMachine(collectionStore, objectStore), data: (context, event: SearchUpdatedEvent) => ({ - searchTerm: event.searchTerm||(urlVariables(activeRoute(routes).path).get('searchTerm')||''), + searchTerm: event.searchTerm||(activeRoute(routes).pathParams.get('searchTerm')||''), }), onDone: { actions: send((context, event) => ({ diff --git a/packages/solid-crs-presentation/lib/features/about/about-root.component.spec.ts b/packages/solid-crs-presentation/lib/features/about/about-root.component.spec.ts index 3cbf774f..e54f5421 100644 --- a/packages/solid-crs-presentation/lib/features/about/about-root.component.spec.ts +++ b/packages/solid-crs-presentation/lib/features/about/about-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert, LargeCardComponent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MockTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; import { AppContext, appMachine } from '../../app.machine'; @@ -52,7 +52,7 @@ describe('AboutRootComponent', () => { component = window.document.createElement('nde-about-root') as AboutRootComponent; component.actor = machine; component.collections = [ collection1, collection2 ]; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-presentation/lib/features/collection/collection-root.component.spec.ts b/packages/solid-crs-presentation/lib/features/collection/collection-root.component.spec.ts index dc870245..529f9781 100644 --- a/packages/solid-crs-presentation/lib/features/collection/collection-root.component.spec.ts +++ b/packages/solid-crs-presentation/lib/features/collection/collection-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MockTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; import { appMachine } from '../../app.machine'; @@ -65,7 +65,7 @@ describe('CollectionRootComponent', () => { component.actor = machine; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-presentation/lib/features/object/object-root.component.spec.ts b/packages/solid-crs-presentation/lib/features/object/object-root.component.spec.ts index fa52ff1b..6ec850c2 100644 --- a/packages/solid-crs-presentation/lib/features/object/object-root.component.spec.ts +++ b/packages/solid-crs-presentation/lib/features/object/object-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert, LargeCardComponent } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, CollectionObjectMemoryStore, MemoryTranslator, Collection, CollectionObject, CollectionMemoryStore, ConsoleLogger, LoggerLevel, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, CollectionObjectMemoryStore, Collection, CollectionObject, CollectionMemoryStore, ConsoleLogger, LoggerLevel, SolidMockService, MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectImageryComponent } from '@netwerk-digitaal-erfgoed/solid-crs-semcom-components'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; @@ -92,7 +92,7 @@ describe('ObjectRootComponent', () => { component.actor = machine; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); component.object = object1; diff --git a/packages/solid-crs-presentation/lib/features/search/search-root.component.spec.ts b/packages/solid-crs-presentation/lib/features/search/search-root.component.spec.ts index 53a21b87..fa4c3442 100644 --- a/packages/solid-crs-presentation/lib/features/search/search-root.component.spec.ts +++ b/packages/solid-crs-presentation/lib/features/search/search-root.component.spec.ts @@ -1,5 +1,5 @@ import { Alert } from '@netwerk-digitaal-erfgoed/solid-crs-components'; -import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MemoryTranslator, MockTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { ArgumentError, Collection, CollectionMemoryStore, CollectionObject, CollectionObjectMemoryStore, ConsoleLogger, LoggerLevel, MockTranslator, SolidMockService } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { interpret, Interpreter } from 'xstate'; import { AppEvents, DismissAlertEvent } from '../../app.events'; import { appMachine } from '../../app.machine'; @@ -186,7 +186,7 @@ describe('SearchRootComponent', () => { const textDiv = emptyContainer.querySelector('.text'); expect(textDiv).toBeTruthy(); - expect(textDiv.textContent).toEqual('search.root.empty.no-search-results'); + expect(textDiv.textContent).toContain('search.root.empty.no-search-results'); }); diff --git a/packages/solid-crs-presentation/package-lock.json b/packages/solid-crs-presentation/package-lock.json index 71df4dba..2078a0a8 100644 --- a/packages/solid-crs-presentation/package-lock.json +++ b/packages/solid-crs-presentation/package-lock.json @@ -4,6 +4,14 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@appnest/lit-translate": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/@appnest/lit-translate/-/lit-translate-1.1.18.tgz", + "integrity": "sha512-iVdyYw6EXsg8/+WeAJ3Ex2izp3nsfhBs1wyo1AAqOEUcbKOa7xzQhWHFoejNgoV+PpDBeqDlfbqrCZsKqV6F3Q==", + "requires": { + "lit-html": "^1.1.2" + } + }, "@babel/code-frame": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", @@ -455,6 +463,95 @@ } } }, + "@inrupt/jose-legacy-modules": { + "version": "0.0.3-3.15.4", + "resolved": "https://registry.npmjs.org/@inrupt/jose-legacy-modules/-/jose-legacy-modules-0.0.3-3.15.4.tgz", + "integrity": "sha512-gcmIqLLFyhNZWw9OKK3kNgEbpKU0z6kn6NPWQlJf0Dy5QtuIgwcS7aRU2GJScz+Dx9KGQVvyAapYX3buHyrBXw==", + "requires": { + "jose": "3.15.4" + } + }, + "@inrupt/oidc-client-ext": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@inrupt/oidc-client-ext/-/oidc-client-ext-1.11.2.tgz", + "integrity": "sha512-htdqsFnLOSUhi+AkhyYCTA1vjUsZT8TeQOiXEtLDgneCRxwxCGfRwVSgXSC30OeophlgrZ7/QVixaz3BB5yXEA==", + "requires": { + "@inrupt/jose-legacy-modules": "0.0.3-3.15.4", + "@inrupt/solid-client-authn-core": "^1.11.2", + "@types/uuid": "^8.3.0", + "form-urlencoded": "~6.0.3", + "oidc-client": "^1.11.3", + "uuid": "^8.3.1" + } + }, + "@inrupt/solid-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client/-/solid-client-1.6.1.tgz", + "integrity": "sha512-fTU30u73Re+vl7Rn4+U6jgodCtaLNGjlgLgiHivArsczApCf+fzh5MqD6uZlf0kRKsZpHm6q+7n5JRwBhOr/8Q==", + "requires": { + "@rdfjs/dataset": "^1.0.1", + "@types/n3": "^1.1.6", + "@types/rdf-js": "^4.0.0", + "@types/rdfjs__dataset": "^1.0.2", + "cross-fetch": "^3.0.4", + "http-link-header": "^1.0.2", + "n3": "1.8.1" + }, + "dependencies": { + "n3": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.8.1.tgz", + "integrity": "sha512-oS0XBNhHH+1TFByvJs84q2lsy3MqpkIeLNT8r9OPyblcvcQbZHcKspwdVcWWzNrlMpSHmbOG1KO5AbXy2++Csw==", + "requires": { + "queue-microtask": "^1.1.2", + "readable-stream": "^3.6.0" + } + } + } + }, + "@inrupt/solid-client-authn-browser": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-browser/-/solid-client-authn-browser-1.11.2.tgz", + "integrity": "sha512-DifF7hSMuFEB9+lDAYjRq6E7DOIZjQwdk9gUkPj93tdIb4icHXQ9JTMwBAxXmdTruPC2g5Pzu0PQ0PCvbIpuDA==", + "requires": { + "@inrupt/jose-legacy-modules": "0.0.3-3.15.4", + "@inrupt/oidc-client-ext": "^1.11.2", + "@inrupt/solid-client-authn-core": "^1.11.2", + "@types/lodash.clonedeep": "^4.5.6", + "@types/node": "^15.0.1", + "@types/uuid": "^8.3.0", + "events": "^3.3.0", + "lodash.clonedeep": "^4.5.0", + "uuid": "^8.3.1" + }, + "dependencies": { + "@types/node": { + "version": "15.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", + "integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==" + } + } + }, + "@inrupt/solid-client-authn-core": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@inrupt/solid-client-authn-core/-/solid-client-authn-core-1.11.2.tgz", + "integrity": "sha512-hL+BC81lE4V0EXZE8PJ418y/vFvW+rfcmHgHqi0ZKSSxLNVE08Ok4W2d+g6wcW3wyePZ9FOL2K8BIh7/jCGj8Q==", + "requires": { + "@inrupt/jose-legacy-modules": "0.0.3-3.15.4", + "@inrupt/solid-common-vocab": "^1.0.0", + "@types/lodash.clonedeep": "^4.5.6", + "@types/uuid": "^8.3.0", + "cross-fetch": "^3.0.6", + "events": "^3.3.0", + "lodash.clonedeep": "^4.5.0", + "uuid": "^8.3.1" + } + }, + "@inrupt/solid-common-vocab": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@inrupt/solid-common-vocab/-/solid-common-vocab-1.0.0.tgz", + "integrity": "sha512-LcImhJqqPsNl/OlULzEEK2rYevty0eh1zaOLVz3lnydEU1DQkeaJ8fKBxKdp5/QjCtnIYcaDjh5U11PGh29Dgg==" + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1069,11 +1166,169 @@ } } }, + "@netwerk-digitaal-erfgoed/solid-crs-client": { + "version": "0.11.0", + "resolved": "https://npm.pkg.github.com/download/@netwerk-digitaal-erfgoed/solid-crs-client/0.11.0/ad896fdc991380f96581aac07887b03cc7c2079c3f87b7361ddefff0e1a04b15", + "integrity": "sha512-AIxMybp3EqfIAOcvPht95SRhH0YrteUh3+JJNWJf7Gq4xe1kcdsXYkv1lCYKZ+ZgbMfSxoMAb60on+fwhDiEcA==", + "requires": { + "@inrupt/solid-client": "1.6.1", + "@inrupt/solid-client-authn-browser": "1.11.2", + "@peculiar/webcrypto": "^1.1.7", + "buffer": "^6.0.3", + "crypto": "^1.0.1", + "crypto-browserify": "^3.12.0", + "process": "^0.11.10", + "rxjs": "^6.6.7", + "stream-browserify": "^3.0.0", + "util": "^0.12.4" + } + }, + "@netwerk-digitaal-erfgoed/solid-crs-components": { + "version": "0.11.0", + "resolved": "https://npm.pkg.github.com/download/@netwerk-digitaal-erfgoed/solid-crs-components/0.11.0/2832feaac23cab90e7efbdea576f078ef5d003928a7bd9a52408dbac7f226fe1", + "integrity": "sha512-ntdOZkV3JK9pLggbB7qgtStMAyKbfeJL7vxIqiPLNTWvhLf4pq0OFneum+e7UztGbDcPU4VSIUsm+tAkM0muVg==", + "requires": { + "@digita-ai/semcom-core": "0.3.4", + "@netwerk-digitaal-erfgoed/solid-crs-core": "0.11.0", + "@netwerk-digitaal-erfgoed/solid-crs-theme": "0.11.0", + "lit-element": "2.4.0", + "rx-lit": "1.0.1", + "rxjs": "^6.6.7", + "xstate": "^4.17.1" + }, + "dependencies": { + "@digita-ai/semcom-core": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/semcom-core/0.3.4/4e4eb79b614fef361a15ba726c2a2fac7573ef6d44c941197e246ea1f6417d05", + "integrity": "sha512-lStrJsNAtkMoQ/OKZ90JxXefSHHmxM6W3gwozgNsqGmkjZUwLwOFqMnByWyjwW16tcSzplfdC2sU9oNdaAJ26Q==", + "requires": { + "@types/rdf-ext": "^1.3.8", + "@types/rdf-js": "^4.0.1", + "rdf-ext": "^1.3.0" + } + } + } + }, + "@netwerk-digitaal-erfgoed/solid-crs-core": { + "version": "0.11.0", + "resolved": "https://npm.pkg.github.com/download/@netwerk-digitaal-erfgoed/solid-crs-core/0.11.0/c19d9c7596247fb96a1f8415533be23d7b9daae66e3ac1efd119e624c399c518", + "integrity": "sha512-klgJ8U7fWxO+d2MREa+Q2IBL1STsU0wojqsJNeTnp9JOfE/b1b0UiI7q5U/NvS3RSL71SPpwztt9Mlrz/2o1bA==", + "requires": { + "@appnest/lit-translate": "^1.1.18", + "@netwerk-digitaal-erfgoed/solid-crs-client": "0.11.0", + "moment": "^2.29.1", + "rxjs": "^6.6.7", + "uuid": "8.3.2", + "xstate": "^4.23.4" + }, + "dependencies": { + "xstate": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.26.1.tgz", + "integrity": "sha512-JLofAEnN26l/1vbODgsDa+Phqa61PwDlxWu8+2pK+YbXf+y9pQSDLRvcYH2H1kkeUBA5fGp+xFL/zfE8jNMw4g==" + } + } + }, + "@netwerk-digitaal-erfgoed/solid-crs-semcom-components": { + "version": "0.11.0", + "resolved": "https://npm.pkg.github.com/download/@netwerk-digitaal-erfgoed/solid-crs-semcom-components/0.11.0/f4c21df704e51d43a182906d416ad4529ea486275b6437544126d5c0022843ed", + "integrity": "sha512-S4v2zO07XAv9H3V20BhE9QfKfzGJE4hxOe2F4dibxj0wcA4Q+qYT8PhWCsKcOMkrwr5FzPZtsddQicSg6pLlDw==", + "requires": { + "@netwerk-digitaal-erfgoed/solid-crs-client": "0.11.0", + "@netwerk-digitaal-erfgoed/solid-crs-components": "0.11.0", + "@netwerk-digitaal-erfgoed/solid-crs-core": "0.11.0", + "@netwerk-digitaal-erfgoed/solid-crs-theme": "0.11.0", + "@xstate/inspect": "^0.4.1", + "edtf": "^3.1.0", + "lit-element": "2.4.0", + "rx-lit": "1.0.1", + "rxjs": "^6.6.7", + "uuid": "^8.3.2", + "xstate": "^4.17.1" + } + }, + "@netwerk-digitaal-erfgoed/solid-crs-theme": { + "version": "0.11.0", + "resolved": "https://npm.pkg.github.com/download/@netwerk-digitaal-erfgoed/solid-crs-theme/0.11.0/20f27ab7e754c7856ffd23b0f67b192594e19c8d85a5a00b5a20fc50c41f6513", + "integrity": "sha512-pkbFEirSXHnxCPqTA3UNP7YuGbtnh0mMPrm4TUs2pshZHvSipo7xZSEAP531YzvQWOcjkaY7DTplMC5NdZ2Wtw==" + }, + "@peculiar/asn1-schema": { + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.0.44.tgz", + "integrity": "sha512-uaCnjQ9A9WwQSMuDJcNOCYEPXTahgKbFMvI7eMOMd8lXgx0J1eU7F3BoMsK5PFxa3dVUxjSQbaOjfgGoeHGgoQ==", + "requires": { + "@types/asn1js": "^2.0.2", + "asn1js": "^2.1.1", + "pvtsutils": "^1.2.1", + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@peculiar/webcrypto": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.2.3.tgz", + "integrity": "sha512-q7wDfZy3k/tpnsYB23/MyyDkjn6IdHh8w+xwoVMS5cu6CjVoFzngXDZEOOuSE4zus2yO6ciQhhHxd4XkLpwVnQ==", + "requires": { + "@peculiar/asn1-schema": "^2.0.44", + "@peculiar/json-schema": "^1.1.12", + "pvtsutils": "^1.2.1", + "tslib": "^2.3.1", + "webcrypto-core": "^1.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@rdfjs/data-model": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-1.3.4.tgz", + "integrity": "sha512-iKzNcKvJotgbFDdti7GTQDCYmL7GsGldkYStiP0K8EYtN7deJu5t7U11rKTz+nR7RtesUggT+lriZ7BakFv8QQ==", + "requires": { + "@rdfjs/types": ">=1.0.1" + } + }, + "@rdfjs/dataset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-1.1.1.tgz", + "integrity": "sha512-BNwCSvG0cz0srsG5esq6CQKJc1m8g/M0DZpLuiEp0MMpfwguXX7VeS8TCg4UUG3DV/DqEvhy83ZKSEjdsYseeA==", + "requires": { + "@rdfjs/data-model": "^1.2.0" + } + }, + "@rdfjs/to-ntriples": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-1.0.2.tgz", + "integrity": "sha512-ngw5XAaGHjgGiwWWBPGlfdCclHftonmbje5lMys4G2j4NvfExraPIuRZgjSnd5lg4dnulRVUll8tRbgKO+7EDA==" + }, "@rdfjs/types": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.0.1.tgz", "integrity": "sha512-YxVkH0XrCNG3MWeZxfg596GFe+oorTVusmNxRP6ZHTsGczZ8AGvG3UchRNkg3Fy4MyysI7vBAA5YZbESL+VmHQ==", - "dev": true, "requires": { "@types/node": "*" } @@ -1134,6 +1389,11 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@types/asn1js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-2.0.2.tgz", + "integrity": "sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==" + }, "@types/babel__core": { "version": "7.1.14", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", @@ -1223,11 +1483,32 @@ "pretty-format": "^26.0.0" } }, + "@types/lodash": { + "version": "4.14.177", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", + "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==" + }, + "@types/lodash.clonedeep": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz", + "integrity": "sha512-cE1jYr2dEg1wBImvXlNtp0xDoS79rfEdGozQVgliDZj1uERH4k+rmEMTudP9b4VQ8O6nRb5gPqft0QzEQGMQgA==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/n3": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.10.4.tgz", + "integrity": "sha512-FfRTwcbXcScVHuAjIASveRWL6Fi6fPALl1Ge8tMESYLqU7R42LJvtdBpUi+f9YK0oQPqIN+zFFgMDFJfLMx0bg==", + "requires": { + "@types/node": "*", + "rdf-js": "^4.0.2" + } + }, "@types/node": { "version": "14.17.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", - "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==", - "dev": true + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -1246,6 +1527,39 @@ "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==", "dev": true }, + "@types/rdf-dataset-indexed": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@types/rdf-dataset-indexed/-/rdf-dataset-indexed-0.4.6.tgz", + "integrity": "sha512-DS1qLCwrWImac+DRTopSLLXqEcHF70vyZ2kh2d1pQwA/V/JN3WM+wXnSVk4f+Xt722VFlM3ij2uT4nB3PPXxjA==", + "requires": { + "rdf-js": "^4.0.2" + } + }, + "@types/rdf-ext": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/rdf-ext/-/rdf-ext-1.3.11.tgz", + "integrity": "sha512-FBVBa+JZFa/zYxqbh09mF8D4fzxFaPLpz8IZeIyP8qSud1d6PhHIjCLS9NuoQTM5g/kVs6EPWFDCy7mxMqkKbA==", + "requires": { + "@types/rdf-dataset-indexed": "*", + "rdf-js": "^4.0.2" + } + }, + "@types/rdf-js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/rdf-js/-/rdf-js-4.0.2.tgz", + "integrity": "sha512-soR/+RMogGiDU1lrpuQl5ZL55/L1eq/JlR2dWx052Uh/RYs9okh3XZHFlIJXHZqjqyjEn4WdbOMfBj7vvc2WVQ==", + "requires": { + "rdf-js": "*" + } + }, + "@types/rdfjs__dataset": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-1.0.5.tgz", + "integrity": "sha512-8OBC9Kr/ZSgNoUTe5mHTDPHaPt8Xen4XbYfqcbYv56d+4WdKliHXaFmFc0L4I5vsynE5JGu21Hvg2zWgX1Az6Q==", + "requires": { + "rdf-js": "^4.0.2" + } + }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -1270,8 +1584,7 @@ "@types/uuid": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", - "dev": true + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" }, "@types/yargs": { "version": "15.0.13", @@ -1305,8 +1618,7 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "6.0.0", @@ -1690,6 +2002,32 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "asn1js": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.1.1.tgz", + "integrity": "sha512-t9u0dU0rJN4ML+uxgN6VM2Z4H5jWIYm0w8LsZLzMJaQsgL3IJNbxHgmbWDvJAwspyHpDFuzUaUFh4c05UB4+6g==", + "requires": { + "pvutils": "^1.0.17" + } + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -1732,8 +2070,7 @@ "available-typed-arrays": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", - "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==", - "dev": true + "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" }, "babel-jest": { "version": "26.6.3", @@ -1897,6 +2234,11 @@ "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", "dev": true }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1923,12 +2265,76 @@ "to-regex": "^3.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, "browserslist": { "version": "4.16.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", @@ -1965,6 +2371,11 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, "builtin-modules": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", @@ -1990,7 +2401,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2043,6 +2453,15 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "cjs-module-lexer": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", @@ -2134,6 +2553,11 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -2179,6 +2603,11 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, + "core-js": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2202,6 +2631,22 @@ "yaml": "^1.7.2" } }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "create-frame": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/create-frame/-/create-frame-1.0.0.tgz", @@ -2223,6 +2668,31 @@ } } }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -2233,7 +2703,6 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", - "dev": true, "requires": { "node-fetch": "2.6.1" } @@ -2252,8 +2721,30 @@ "crypto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", - "dev": true + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, "cssom": { "version": "0.4.4", @@ -2367,7 +2858,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -2414,6 +2904,15 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -2432,6 +2931,28 @@ "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=" + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -2458,6 +2979,12 @@ } } }, + "drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "optional": true + }, "ecstatic": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", @@ -2470,11 +2997,41 @@ "url-join": "^2.0.5" } }, + "edtf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/edtf/-/edtf-3.1.0.tgz", + "integrity": "sha512-m9pPUyBb/REAYraG/+l+D7HRHpCwK+8jaZyBrO0BP0elRSRxt0O+4ttbpY5SyctkLL/hF/AMEaco36m74ZxQIw==", + "requires": { + "nearley": "^2.19.7", + "randexp": "^0.5.3" + } + }, "electron-to-chromium": { "version": "1.3.737", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.737.tgz", "integrity": "sha512-P/B84AgUSQXaum7a8m11HUsYL8tj9h/Pt5f7Hg7Ty6bm5DxlFq+e5+ouHUoNQMsKDJ7u4yGfI8mOErCmSH9wyg==" }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -2535,7 +3092,6 @@ "version": "1.18.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -2559,8 +3115,7 @@ "object-inspect": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" } } }, @@ -2568,7 +3123,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -2910,6 +3464,20 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "exec-sh": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", @@ -3219,8 +3787,7 @@ "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, "form-data": { "version": "3.0.1", @@ -3233,6 +3800,11 @@ "mime-types": "^2.1.12" } }, + "form-urlencoded": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-6.0.5.tgz", + "integrity": "sha512-7M7IhZNujsHqjYovM1WTSqcAVOqfvgF8acu6ok1ct1a00l6LVrmagJKkOdRUH/PYKEDOZ7ZAw/Mtq1/Q8CuRTQ==" + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3291,7 +3863,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3493,8 +4064,7 @@ "has-bigints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" }, "has-flag": { "version": "3.0.0", @@ -3504,14 +4074,12 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -3563,6 +4131,25 @@ } } }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3605,6 +4192,16 @@ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==" }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -3635,6 +4232,11 @@ "kind-of": "^6.0.0" } }, + "http-link-header": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.3.tgz", + "integrity": "sha512-nARK1wSKoBBrtcoESlHBx36c1Ln/gnbNQi1eB6MeTUefJIT3NvUOsV15bClga0k38f0q/kN5xxrGSDS3EFnm9w==" + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -3759,7 +4361,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.0", "has": "^1.0.3", @@ -3794,7 +4395,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3809,7 +4409,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -3818,7 +4417,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3832,8 +4430,7 @@ "is-callable": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-ci": { "version": "2.0.0", @@ -3874,7 +4471,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3937,7 +4533,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -3958,8 +4553,7 @@ "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" }, "is-number": { "version": "4.0.0", @@ -3970,7 +4564,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -4019,7 +4612,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4043,7 +4635,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -4052,7 +4643,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -4061,7 +4651,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.7.tgz", "integrity": "sha512-VxlpTBGknhQ3o7YiVjIhdLU6+oD8dPz/79vvvH4F+S/c8608UCVa9fgDpa1kZgFoUST2DCgacc70UszKgzKuvA==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.4", "call-bind": "^1.0.2", @@ -5864,6 +6453,11 @@ } } }, + "jose": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-3.15.4.tgz", + "integrity": "sha512-SXeGi+g5ZcNgV6o7f+Mx3Q1gaYMSBzAi3cmcZPxoeCEZPgfSCnnyfmMXzXoLDh+XL4KMtGvhOsYBoqQhnuR2rQ==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6027,8 +6621,7 @@ "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, "lodash.merge": { "version": "4.6.2", @@ -6155,6 +6748,16 @@ "object-visit": "^1.0.0" } }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -6235,6 +6838,22 @@ } } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -6262,6 +6881,16 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -6308,6 +6937,11 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, + "moo": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", + "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -6406,6 +7040,28 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "requires": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "dependencies": { + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + } + } + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -6420,8 +7076,7 @@ "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, "node-int64": { "version": "0.4.0", @@ -6547,14 +7202,12 @@ "object-inspect": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", - "dev": true + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-visit": { "version": "1.0.1", @@ -6568,7 +7221,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -6584,6 +7236,18 @@ "isobject": "^3.0.1" } }, + "oidc-client": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz", + "integrity": "sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg==", + "requires": { + "acorn": "^7.4.1", + "base64-js": "^1.5.1", + "core-js": "^3.8.3", + "crypto-js": "^4.0.0", + "serialize-javascript": "^4.0.0" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6662,6 +7326,18 @@ "callsites": "^3.0.0" } }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -6710,6 +7386,18 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -6859,6 +7547,11 @@ } } }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -6892,6 +7585,26 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -6908,6 +7621,26 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "pvtsutils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.1.tgz", + "integrity": "sha512-Q867jEr30lBR2YSFFLZ0/XsEvpweqH6Kj096wmlRAFXrdRGPCNq2iz9B5Tk085EZ+OBZyYAVA5UhPkjSHGrUzQ==", + "requires": { + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "pvutils": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz", + "integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==" + }, "qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", @@ -6922,15 +7655,71 @@ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=" + }, + "randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "optional": true, + "requires": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "dependencies": { + "ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "optional": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "rdf-ext": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/rdf-ext/-/rdf-ext-1.3.5.tgz", + "integrity": "sha512-LS/waItwp5aGY9Ay7y147HxWLIaSvw4r172S995aGwVkvg0KwUA0NY8w61p/LoFdQ4V6mzxQdVoRN6x/6OaK0w==", + "requires": { + "@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" + } + }, "rdf-js": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/rdf-js/-/rdf-js-4.0.2.tgz", "integrity": "sha512-ApvlFa/WsQh8LpPK/6hctQwG06Z9ztQQGWVtrcrf9L6+sejHNXLPOqL+w7q3hF+iL0C4sv3AX1PUtGkLNzyZ0Q==", - "dev": true, "requires": { "@rdfjs/types": "*" } }, + "rdf-normalize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rdf-normalize/-/rdf-normalize-1.0.0.tgz", + "integrity": "sha1-U0lrrzYszp2fyh8iFsbDAAf5nMo=" + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -7179,6 +7968,15 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "rollup": { "version": "2.49.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.49.0.tgz", @@ -7267,8 +8065,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { "version": "4.1.0", @@ -7333,6 +8130,14 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -7358,6 +8163,15 @@ "split-string": "^3.0.1" } }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7405,7 +8219,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -7685,6 +8498,15 @@ } } }, + "stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "requires": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -7710,7 +8532,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -7720,7 +8541,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -8157,7 +8977,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has-bigints": "^1.0.1", @@ -8256,7 +9075,6 @@ "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8356,6 +9174,25 @@ "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=" }, + "webcrypto-core": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.4.0.tgz", + "integrity": "sha512-HY3Zo0GcRIQUUDnlZ/shGjN+4f7LVMkdJZoGPog+oHhJsJdMz6iM8Za5xZ0t6qg7Fx/JXXz+oBv2J2p982hGTQ==", + "requires": { + "@peculiar/asn1-schema": "^2.0.44", + "@peculiar/json-schema": "^1.1.12", + "asn1js": "^2.1.1", + "pvtsutils": "^1.2.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -8401,7 +9238,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -8420,7 +9256,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.6.tgz", "integrity": "sha512-DdY984dGD5sQ7Tf+x1CkXzdg85b9uEel6nr4UkFg1LoE9OXv3uRuZhe5CoWdawhGACeFpEZXH8fFLQnDhbpm/Q==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.4", "call-bind": "^1.0.2", diff --git a/packages/solid-crs-presentation/package.json b/packages/solid-crs-presentation/package.json index bd26d23e..28998e3c 100644 --- a/packages/solid-crs-presentation/package.json +++ b/packages/solid-crs-presentation/package.json @@ -109,6 +109,7 @@ "warnOnly": true } } - } + }, + "maxWorkers": 6 } } diff --git a/packages/solid-crs-presentation/tests/setup.ts b/packages/solid-crs-presentation/tests/setup.ts index ff3bb09e..ae1a9198 100644 --- a/packages/solid-crs-presentation/tests/setup.ts +++ b/packages/solid-crs-presentation/tests/setup.ts @@ -24,10 +24,19 @@ import { AppRootComponent } from '../lib/app-root.component'; // mock router function and state config // essentially disables the router in tests -core.activeRoute = () => ({ path: undefined, targets: [] }); core.urlVariables = () => ({ - get: jest.fn(() => ''), + searchParams: { + get: jest.fn(() => ''), + }, + pathParams: { + get: jest.fn(() => ''), + }, +}); + +core.activeRoute = () => ({ + path: undefined, targets: [], + ...core.urlVariables(undefined), }); core.routerStateConfig = () => ({ @@ -51,8 +60,6 @@ core.routerStateConfig = () => ({ }, }); -core.MemoryTranslator = core.MockTranslator; - /** * Enable mocks for fetch. */ diff --git a/packages/solid-crs-semcom-components/lib/object-creation.component.spec.ts b/packages/solid-crs-semcom-components/lib/object-creation.component.spec.ts index 49ec48e9..393a56ad 100644 --- a/packages/solid-crs-semcom-components/lib/object-creation.component.spec.ts +++ b/packages/solid-crs-semcom-components/lib/object-creation.component.spec.ts @@ -1,4 +1,4 @@ -import { MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectCreationComponent } from './object-creation.component'; describe('ObjectCreationComponent', () => { @@ -9,7 +9,7 @@ describe('ObjectCreationComponent', () => { beforeEach(() => { component = window.document.createElement(tag) as ObjectCreationComponent; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-semcom-components/lib/object-dimensions.component.spec.ts b/packages/solid-crs-semcom-components/lib/object-dimensions.component.spec.ts index 51482cef..457cb3f1 100644 --- a/packages/solid-crs-semcom-components/lib/object-dimensions.component.spec.ts +++ b/packages/solid-crs-semcom-components/lib/object-dimensions.component.spec.ts @@ -1,4 +1,4 @@ -import { MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectDimensionsComponent } from './object-dimensions.component'; describe('ObjectDimensionsComponent', () => { @@ -9,7 +9,7 @@ describe('ObjectDimensionsComponent', () => { beforeEach(() => { component = window.document.createElement(tag) as ObjectDimensionsComponent; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-semcom-components/lib/object-identification.component.spec.ts b/packages/solid-crs-semcom-components/lib/object-identification.component.spec.ts index a73db015..7515e1b5 100644 --- a/packages/solid-crs-semcom-components/lib/object-identification.component.spec.ts +++ b/packages/solid-crs-semcom-components/lib/object-identification.component.spec.ts @@ -1,4 +1,4 @@ -import { MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectIdentificationComponent } from './object-identification.component'; describe('ObjectIdentificationComponent', () => { @@ -9,7 +9,7 @@ describe('ObjectIdentificationComponent', () => { beforeEach(() => { component = window.document.createElement(tag) as ObjectIdentificationComponent; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-semcom-components/lib/object-imagery.component.spec.ts b/packages/solid-crs-semcom-components/lib/object-imagery.component.spec.ts index 7c118e55..45099e23 100644 --- a/packages/solid-crs-semcom-components/lib/object-imagery.component.spec.ts +++ b/packages/solid-crs-semcom-components/lib/object-imagery.component.spec.ts @@ -1,4 +1,4 @@ -import { MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectImageryComponent } from './object-imagery.component'; describe('ObjectImageryComponent', () => { @@ -9,7 +9,7 @@ describe('ObjectImageryComponent', () => { beforeEach(() => { component = window.document.createElement(tag) as ObjectImageryComponent; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-semcom-components/lib/object-representation.component.spec.ts b/packages/solid-crs-semcom-components/lib/object-representation.component.spec.ts index d3cf77ee..c23f11a2 100644 --- a/packages/solid-crs-semcom-components/lib/object-representation.component.spec.ts +++ b/packages/solid-crs-semcom-components/lib/object-representation.component.spec.ts @@ -1,4 +1,4 @@ -import { MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { ObjectRepresentationComponent } from './object-representation.component'; describe('ObjectRepresentationComponent', () => { @@ -9,7 +9,7 @@ describe('ObjectRepresentationComponent', () => { beforeEach(() => { component = window.document.createElement(tag) as ObjectRepresentationComponent; - component.translator = new MemoryTranslator('nl-NL'); + component.translator = new MockTranslator('nl-NL'); }); diff --git a/packages/solid-crs-semcom-components/lib/object.component.spec.ts b/packages/solid-crs-semcom-components/lib/object.component.spec.ts index f2def9c1..4996241c 100644 --- a/packages/solid-crs-semcom-components/lib/object.component.spec.ts +++ b/packages/solid-crs-semcom-components/lib/object.component.spec.ts @@ -1,4 +1,4 @@ -import { MemoryTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; +import { MockTranslator } from '@netwerk-digitaal-erfgoed/solid-crs-core'; import { RxLitElement } from 'rx-lit'; describe.each([ @@ -33,8 +33,8 @@ describe.each([ beforeEach(() => { component = window.document.createElement(tag) as RxLitElement; + (component as any).translator = new MockTranslator('nl-NL'); (component as any).object = object1; - (component as any).translator = new MemoryTranslator('nl-NL'); (component as any).collections = [ collection1 ]; }); diff --git a/packages/solid-crs-semcom-components/package.json b/packages/solid-crs-semcom-components/package.json index 8ec3d862..aa5872f1 100644 --- a/packages/solid-crs-semcom-components/package.json +++ b/packages/solid-crs-semcom-components/package.json @@ -83,6 +83,7 @@ "ts-jest": { "tsconfig": "/tsconfig.spec.json" } - } + }, + "maxWorkers": 6 } }