From 5d50acf0c9fbdb9ea45f0e90a55b64a1a1e5dfde Mon Sep 17 00:00:00 2001 From: Simonas Karuzas Date: Thu, 5 Dec 2019 16:38:31 +0200 Subject: [PATCH] feat: Using EventEmitter instead of pubsub-js --- examples/expressjs-ethr/src/web-server.ts | 2 +- examples/expressjs-ethr/yarn.lock | 68 ++++++++++---------- examples/expressjs/src/web-server.ts | 2 +- examples/expressjs/yarn.lock | 78 ++++++++++------------- packages/daf-cli/src/services.ts | 2 +- packages/daf-cli/src/setup.ts | 32 ++++------ packages/daf-core/package.json | 3 +- packages/daf-core/src/core.ts | 49 ++++---------- yarn.lock | 15 ++--- 9 files changed, 100 insertions(+), 151 deletions(-) diff --git a/examples/expressjs-ethr/src/web-server.ts b/examples/expressjs-ethr/src/web-server.ts index 2826975a9..ba6704bce 100644 --- a/examples/expressjs-ethr/src/web-server.ts +++ b/examples/expressjs-ethr/src/web-server.ts @@ -112,7 +112,7 @@ async function main() { }) }) - core.on(Daf.EventTypes.validatedMessage, async (eventType: string, message: Daf.Types.ValidatedMessage) => { + core.on(Daf.EventTypes.validatedMessage, async (message: Daf.Types.ValidatedMessage, b: any) => { debug('New message %s', message.hash) debug('Meta %O', message.meta) console.log(message) diff --git a/examples/expressjs-ethr/yarn.lock b/examples/expressjs-ethr/yarn.lock index a4ae1654d..d34f9fe92 100644 --- a/examples/expressjs-ethr/yarn.lock +++ b/examples/expressjs-ethr/yarn.lock @@ -586,65 +586,65 @@ cross-fetch@^3.0.4: node-fetch "2.6.0" whatwg-fetch "3.0.0" -daf-core@../../packages/daf-core, daf-core@^0.7.0: - version "0.7.0" +daf-core@../../packages/daf-core, daf-core@^0.8.0: + version "0.8.0" dependencies: blakejs "^1.1.0" debug "^4.1.1" - pubsub-js "^1.7.0" + events "^3.0.0" -daf-data-store@../../packages/daf-data-store, daf-data-store@^0.7.5: - version "0.7.5" +daf-data-store@../../packages/daf-data-store, daf-data-store@^0.8.0: + version "0.8.0" dependencies: blakejs "^1.1.0" - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" sql-bricks-sqlite "^0.1.0" daf-debug@../../packages/daf-debug: - version "0.7.0" + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" daf-did-comm@../../packages/daf-did-comm: - version "0.7.0" + version "0.8.0" dependencies: DIDComm-js "git://github.com/uport-project/DIDComm-js.git#fix/build-issues" - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" uuid "^3.3.3" -daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^0.7.0: - version "0.7.0" +daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^0.8.0: + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" did-jwt "^3.0.0" did-resolver "^1.1.0" daf-ethr-did-fs@../../packages/daf-ethr-did-fs: - version "0.7.0" + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" ethr-did "^1.1.0" daf-node-sqlite3@../../packages/daf-node-sqlite3: - version "0.7.5" + version "0.8.0" dependencies: - daf-data-store "^0.7.5" + daf-data-store "^0.8.0" debug "^4.1.1" sqlite3 "^4.1.0" daf-resolver-universal@../../packages/daf-resolver-universal: - version "0.7.0" + version "0.8.0" dependencies: cross-fetch "^3.0.4" debug "^4.1.1" daf-resolver@../../packages/daf-resolver: - version "0.7.0" + version "0.8.0" dependencies: debug "^4.1.1" did-resolver "^1.1.0" @@ -653,22 +653,22 @@ daf-resolver@../../packages/daf-resolver: web-did-resolver "^1.2.0" daf-selective-disclosure@../../packages/daf-selective-disclosure: - version "0.7.4" + version "0.8.0" dependencies: - daf-core "^0.7.0" - daf-did-jwt "^0.7.0" + daf-core "^0.8.0" + daf-did-jwt "^0.8.0" debug "^4.1.1" did-jwt "^3.0.0" daf-sodium-fs@../../packages/daf-sodium-fs: - version "0.7.0" + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" libsodium-wrappers "^0.7.6" daf-trust-graph@../../packages/daf-trust-graph: - version "0.7.8" + version "0.8.0" dependencies: apollo-cache-inmemory "^1.6.3" apollo-client "^2.6.4" @@ -677,7 +677,7 @@ daf-trust-graph@../../packages/daf-trust-graph: apollo-link-ws "^1.0.19" apollo-utilities "^1.3.2" cross-fetch "^3.0.4" - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" did-jwt "^3.0.0" graphql "^14.0.0" @@ -685,10 +685,10 @@ daf-trust-graph@../../packages/daf-trust-graph: subscriptions-transport-ws "^0.9.0" daf-w3c@../../packages/daf-w3c: - version "0.7.5" + version "0.8.0" dependencies: - daf-core "^0.7.0" - daf-did-jwt "^0.7.0" + daf-core "^0.8.0" + daf-did-jwt "^0.8.0" debug "^4.1.1" did-jwt-vc "^0.1.2" did-resolver "^1.1.0" @@ -1048,6 +1048,11 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + express-handlebars@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/express-handlebars/-/express-handlebars-3.1.0.tgz#c177ee9a81f6a2abada6b550b77b3e30c6bc0796" @@ -1925,11 +1930,6 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.5.0.tgz#47fd1292def7fdb1e138cd78afa8814cebcf7b13" integrity sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA== -pubsub-js@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/pubsub-js/-/pubsub-js-1.7.0.tgz#eca97f9a4217bef62b2d3aaa1552005260cc2e49" - integrity sha512-Pb68P9qFZxnvDipHMuj9oT1FoIgBcXJ9C9eWdHCLZAnulaUoJ3+Y87RhGMYilWpun6DMWVmvK70T4RP4drZMSA== - punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" diff --git a/examples/expressjs/src/web-server.ts b/examples/expressjs/src/web-server.ts index afc17e31f..b6a64de55 100644 --- a/examples/expressjs/src/web-server.ts +++ b/examples/expressjs/src/web-server.ts @@ -157,7 +157,7 @@ async function main() { }) }) - core.on(Daf.EventTypes.validatedMessage, async (eventType: string, message: Daf.Types.ValidatedMessage) => { + core.on(Daf.EventTypes.validatedMessage, async (message: Daf.Types.ValidatedMessage) => { debug('New message %s', message.hash) debug('Meta %O', message.meta) console.log(message) diff --git a/examples/expressjs/yarn.lock b/examples/expressjs/yarn.lock index 90f932d2b..eeb8fb91a 100644 --- a/examples/expressjs/yarn.lock +++ b/examples/expressjs/yarn.lock @@ -631,75 +631,65 @@ cross-fetch@^3.0.4: node-fetch "2.6.0" whatwg-fetch "3.0.0" -daf-core@../../packages/daf-core, daf-core@^0.7.0: - version "0.7.0" - dependencies: - blakejs "^1.1.0" - debug "^4.1.1" - pubsub-js "^1.7.0" - -daf-data-store@../../packages/daf-data-store: - version "0.7.3" +daf-core@../../packages/daf-core, daf-core@^0.8.0: + version "0.8.0" dependencies: blakejs "^1.1.0" - daf-core "^0.7.0" debug "^4.1.1" - sql-bricks-sqlite "^0.1.0" + events "^3.0.0" -daf-data-store@^0.7.3: - version "0.7.5" - resolved "https://registry.yarnpkg.com/daf-data-store/-/daf-data-store-0.7.5.tgz#66461bf3af007d18171fab3f8d3bcab2162fa1a5" - integrity sha512-ipqT/WRMpwVMiHkexsMbeniISJcBcfbI3I2fY22l1dXQ0Q2s/BYgPlZjtL41zgqbA8+0hjWzIfLvSSr5zIMrxg== +daf-data-store@../../packages/daf-data-store, daf-data-store@^0.8.0: + version "0.8.0" dependencies: blakejs "^1.1.0" - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" sql-bricks-sqlite "^0.1.0" daf-debug@../../packages/daf-debug: - version "0.7.0" + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" daf-did-comm@../../packages/daf-did-comm: - version "0.7.0" + version "0.8.0" dependencies: DIDComm-js "git://github.com/uport-project/DIDComm-js.git#fix/build-issues" - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" uuid "^3.3.3" -daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^0.7.0: - version "0.7.0" +daf-did-jwt@../../packages/daf-did-jwt, daf-did-jwt@^0.8.0: + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" did-jwt "^3.0.0" did-resolver "^1.1.0" daf-ethr-did-fs@../../packages/daf-ethr-did-fs: - version "0.7.0" + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" ethr-did "^1.1.0" daf-node-sqlite3@../../packages/daf-node-sqlite3: - version "0.7.3" + version "0.8.0" dependencies: - daf-data-store "^0.7.3" + daf-data-store "^0.8.0" debug "^4.1.1" sqlite3 "^4.1.0" daf-resolver-universal@../../packages/daf-resolver-universal: - version "0.7.0" + version "0.8.0" dependencies: cross-fetch "^3.0.4" debug "^4.1.1" daf-resolver@../../packages/daf-resolver: - version "0.7.0" + version "0.8.0" dependencies: debug "^4.1.1" did-resolver "^1.1.0" @@ -708,22 +698,22 @@ daf-resolver@../../packages/daf-resolver: web-did-resolver "^1.2.0" daf-selective-disclosure@../../packages/daf-selective-disclosure: - version "0.7.4" + version "0.8.0" dependencies: - daf-core "^0.7.0" - daf-did-jwt "^0.7.0" + daf-core "^0.8.0" + daf-did-jwt "^0.8.0" debug "^4.1.1" did-jwt "^3.0.0" daf-sodium-fs@../../packages/daf-sodium-fs: - version "0.7.0" + version "0.8.0" dependencies: - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" libsodium-wrappers "^0.7.6" daf-trust-graph@../../packages/daf-trust-graph: - version "0.7.4" + version "0.8.0" dependencies: apollo-cache-inmemory "^1.6.3" apollo-client "^2.6.4" @@ -732,7 +722,7 @@ daf-trust-graph@../../packages/daf-trust-graph: apollo-link-ws "^1.0.19" apollo-utilities "^1.3.2" cross-fetch "^3.0.4" - daf-core "^0.7.0" + daf-core "^0.8.0" debug "^4.1.1" did-jwt "^3.0.0" graphql "^14.0.0" @@ -740,10 +730,10 @@ daf-trust-graph@../../packages/daf-trust-graph: subscriptions-transport-ws "^0.9.0" daf-w3c@../../packages/daf-w3c: - version "0.7.2" + version "0.8.0" dependencies: - daf-core "^0.7.0" - daf-did-jwt "^0.7.0" + daf-core "^0.8.0" + daf-did-jwt "^0.8.0" debug "^4.1.1" did-jwt-vc "^0.1.2" did-resolver "^1.1.0" @@ -1116,6 +1106,11 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + express-handlebars@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/express-handlebars/-/express-handlebars-3.1.0.tgz#c177ee9a81f6a2abada6b550b77b3e30c6bc0796" @@ -2043,11 +2038,6 @@ psl@^1.1.24, psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.5.0.tgz#47fd1292def7fdb1e138cd78afa8814cebcf7b13" integrity sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA== -pubsub-js@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/pubsub-js/-/pubsub-js-1.7.0.tgz#eca97f9a4217bef62b2d3aaa1552005260cc2e49" - integrity sha512-Pb68P9qFZxnvDipHMuj9oT1FoIgBcXJ9C9eWdHCLZAnulaUoJ3+Y87RhGMYilWpun6DMWVmvK70T4RP4drZMSA== - punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" diff --git a/packages/daf-cli/src/services.ts b/packages/daf-cli/src/services.ts index c921eec06..a18300ea9 100644 --- a/packages/daf-cli/src/services.ts +++ b/packages/daf-cli/src/services.ts @@ -14,7 +14,7 @@ program export const listen = async (pollSeconds?: number) => { await dataStore.initialize() - core.on(EventTypes.validatedMessage, async (type, msg: Types.ValidatedMessage) => { + core.on(EventTypes.validatedMessage, async (msg: Types.ValidatedMessage) => { console.log('New message type:', msg.type) }) diff --git a/packages/daf-cli/src/setup.ts b/packages/daf-cli/src/setup.ts index 412cda273..cbea96be2 100644 --- a/packages/daf-cli/src/setup.ts +++ b/packages/daf-cli/src/setup.ts @@ -35,28 +35,23 @@ if (!process.env.DAF_IDENTITY_STORE || process.env.DAF_DATA_STORE || process.env // DID Document Resolver let didResolver: Daf.Resolver = new DafResolver({ - infuraProjectId + infuraProjectId, }) if (process.env.DAF_UNIVERSAL_RESOLVER_URL) { didResolver = new DafUniversalResolver({ - url: process.env.DAF_UNIVERSAL_RESOLVER_URL + url: process.env.DAF_UNIVERSAL_RESOLVER_URL, }) } const identityControllers = [new EthrDidFsController(identityStoreFilename)] const messageValidator = new DBG.MessageValidator() -messageValidator - .setNext(new DIDComm.MessageValidator()) - .setNext( - new DidJwt.MessageValidator({ - payloadValidators: [ - new W3c.PayloadValidator(), - new SD.PayloadValidator(), - ], - }), - ) +messageValidator.setNext(new DIDComm.MessageValidator()).setNext( + new DidJwt.MessageValidator({ + payloadValidators: [new W3c.PayloadValidator(), new SD.PayloadValidator()], + }), +) const actionHandler = new DBG.ActionHandler() actionHandler @@ -89,16 +84,13 @@ export const core = new Daf.Core({ didResolver, messageValidator, actionHandler, - encryptionKeyManager + encryptionKeyManager, }) const db = new NodeSqlite3(dataStoreFilename) export const dataStore = new DataStore(db) -core.on( - Daf.EventTypes.validatedMessage, - async (eventType: string, message: Daf.Types.ValidatedMessage) => { - debug('New message %O', message) - await dataStore.saveMessage(message) - }, -) +core.on(Daf.EventTypes.validatedMessage, async (message: Daf.Types.ValidatedMessage) => { + debug('New message %O', message) + await dataStore.saveMessage(message) +}) diff --git a/packages/daf-core/package.json b/packages/daf-core/package.json index b9fc2695b..d63e4ac83 100644 --- a/packages/daf-core/package.json +++ b/packages/daf-core/package.json @@ -10,11 +10,10 @@ "dependencies": { "blakejs": "^1.1.0", "debug": "^4.1.1", - "pubsub-js": "^1.7.0" + "events": "^3.0.0" }, "devDependencies": { "@types/debug": "^4.1.5", - "@types/pubsub-js": "^1.5.18", "did-resolver": "^1.1.0", "typescript": "^3.7.2" }, diff --git a/packages/daf-core/src/core.ts b/packages/daf-core/src/core.ts index f65943e97..d991ea68e 100644 --- a/packages/daf-core/src/core.ts +++ b/packages/daf-core/src/core.ts @@ -1,19 +1,10 @@ -import PubSub from 'pubsub-js' +import { EventEmitter } from 'events' import { DIDDocument } from 'did-resolver' import { IdentityManager, IdentityController } from './identity-manager' -import { - ServiceManager, - ServiceControllerWithConfig, - LastMessageTimestamp, -} from './service-manager' +import { ServiceManager, ServiceControllerWithConfig, LastMessageTimestamp } from './service-manager' import { MessageValidator } from './message-validator' import { ActionHandler } from './action-handler' -import { - ValidatedMessage, - PreValidatedMessage, - RawMessage, - Action, -} from './types' +import { ValidatedMessage, PreValidatedMessage, RawMessage, Action } from './types' import { EncryptionKeyManager } from './encryption-manager' import blake from 'blakejs' @@ -38,7 +29,7 @@ interface Config { encryptionKeyManager?: EncryptionKeyManager } -export class Core { +export class Core extends EventEmitter { public identityManager: IdentityManager public encryptionKeyManager?: EncryptionKeyManager public didResolver: Resolver @@ -47,6 +38,8 @@ export class Core { private actionHandler?: ActionHandler constructor(config: Config) { + super() + this.identityManager = new IdentityManager({ identityControllers: config.identityControllers, }) @@ -76,28 +69,20 @@ export class Core { await this.serviceManager.syncServices(lastMessageTimestamps) } - public async onRawMessage( - rawMessage: RawMessage, - ): Promise { + public async onRawMessage(rawMessage: RawMessage): Promise { debug('Raw message %O', rawMessage) try { - const preValidatedMessage = await this.messageValidator.validate( - rawMessage, - this, - ) - if ( - preValidatedMessage !== null && - this.isValidatedMessage(preValidatedMessage) - ) { + const preValidatedMessage = await this.messageValidator.validate(rawMessage, this) + if (preValidatedMessage !== null && this.isValidatedMessage(preValidatedMessage)) { const validatedMessage = { ...preValidatedMessage, hash: blake.blake2bHex(preValidatedMessage.raw), } - this.onValidatedMessage(validatedMessage) + this.emit(EventTypes.validatedMessage, validatedMessage) return validatedMessage } } catch (error) { - this.onMessageValidationError(error, rawMessage) + this.emit(EventTypes.error, error, rawMessage) } return null } @@ -121,18 +106,6 @@ export class Core { return true } - private onMessageValidationError(error: string, rawMessage: RawMessage) { - PubSub.publish(EventTypes.error, { error, rawMessage }) - } - - private onValidatedMessage(message: ValidatedMessage) { - PubSub.publish(EventTypes.validatedMessage + '.' + message.type, message) - } - - public on(type: string, callback: (type: string, data: any) => void) { - return PubSub.subscribe(type, callback) - } - public async handleAction(action: Action): Promise { if (this.actionHandler) { return this.actionHandler.handleAction(action, this) diff --git a/yarn.lock b/yarn.lock index bfa509555..e56c4520e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1688,11 +1688,6 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== -"@types/pubsub-js@^1.5.18": - version "1.5.18" - resolved "https://registry.yarnpkg.com/@types/pubsub-js/-/pubsub-js-1.5.18.tgz#dd12284c5e93b39874e62675702bf50c6f55e9ec" - integrity sha512-1xFx7o/DKwbDm5UwjnkkeAVk+U1puh0odDkY+NpTCuQfbhcGh4+fjQSuKVHLPP1F9osj3/lDtnr71kud9u3ZYA== - "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" @@ -3987,6 +3982,11 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + exec-sh@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" @@ -8188,11 +8188,6 @@ psl@^1.1.24, psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== -pubsub-js@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/pubsub-js/-/pubsub-js-1.7.0.tgz#eca97f9a4217bef62b2d3aaa1552005260cc2e49" - integrity sha512-Pb68P9qFZxnvDipHMuj9oT1FoIgBcXJ9C9eWdHCLZAnulaUoJ3+Y87RhGMYilWpun6DMWVmvK70T4RP4drZMSA== - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"