Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace pump module with stream.pipeline #170

Closed
2 tasks done
goloroden opened this issue Sep 10, 2019 · 0 comments
Closed
2 tasks done

Replace pump module with stream.pipeline #170

goloroden opened this issue Sep 10, 2019 · 0 comments

Comments

@goloroden
Copy link
Member

goloroden commented Sep 10, 2019

What is this task about?

Right now, for connecting streams, we use the pump module. For a while now, Node.js itself has a pipeline function in its stream module which does the same thing, and flawlessly works with promises. We should replace the external module by the internal one.

What needs to be done to complete this task?

  • Search for all occurences of pump
  • Replace these occurences with pipeline
@goloroden goloroden changed the title Replace pump module by stream.pipeline Replace pump module with stream.pipeline Sep 10, 2019
yeldiRium added a commit that referenced this issue Sep 10, 2019
goloroden added a commit that referenced this issue Oct 15, 2019
…#183)

* WIP

* WIP

* WIP

* Clean up dependencies.

* Add worker messaging.

* Add CircleCI configuration.

* Fix CircleCI configuration.

* Add CircleCI badge.

* Update base image.

* Rename v2 to V2.

* Make integration tests run.

* WIP

* Cache messages before the first worker has registered.

* WIP: Introduce filestore api.

* Remove unneeded tests.

* Add documentation.

* Rename storage to stores.

* Work on base structure. (#157)

* WIP

* Immutable Commands and Events. Streamline eventstores api.

* WIP

* Seperate commands and events into internal and external. Streamline elements wording.

* Introduce dispatcher server.

* Fix duplicate IP addresses (happens on CircleCI). Add Dependabot.

* Fix branch.

* Change retry options for tests.

* Switch CircleCI configuration from Docker to VM.

* Try to fix CircleCI configuration.

* Try to fix CircleCI configuration.

* Try to fix CircleCI configuration.

* Fix IP address test.

* Implement event server.

* Wait for connection.

* Add missing contributors (transfer from other repositories).

* Update Dockerfiles. Introduce Consul.

* Further clean up.

* Update lock file.

* Update .dockerignore file.

* Implement in-memory lockstore and first draft of commandstore. Remove RabbitMQ support.

* Add isLocked function. Update dependencies.

* Increase test timeout.

* Remove command store.

* Lockstore implementations (#160)

* Add sortObjectKeys with recursive option.

* Ensure object key order when getting lock name

* Add unit and integration tests for Postgres Lockstore

* Add Postgres implementation for lockstore

* Add MySQL/MariaDB Lockstore

* Select only expiresAt to check when lock exists

* Add SqlServer lockstore implementation

* Code cleanup in Postgres Lockstore

* Add MongoDb lockstore implementation

* Add Redis container + client

* Add Redis lockstore implementation

* Ensure nested keys are also sorted.

* Fix test names for sortObjectKeys

* Stick to redis client 2.8.0

* Await release lock on failure for InMemory Lockstore

* Fix remarks on MariaDB Lockstore.

* Fix remarks on MySQL Lockstore.

* Use object parameter on sortObjectKeys

* Update InMemory Lockstore for sortObjectKeys

* Update MariaDb Lockstore for sortObjectKeys.

* Fix remarks on MongoDb Lockstore.

* Update MySql Lockstore for sortObjectKeys +  inline releaseLock

* Fix remarks on Postgres Lockstore.

* Fix remarks on Redis Lockstore.

* Fix remarks on SqlServer Lockstore.

* Add maxLockSize on lockstore implementations + tests.

* Inject Lockstore into Commandstore.

* Add semi-columns on MySql/MariaDb lockstores.

* Reuse createPool for SqlServer

* Remove Lockstore injection in CommandStore

* Add nonce and optional maxLockSize on Redis Lockstore.

Redis username is now optional.

* Add nonce and optional maxLockSize on Postgres Lockstore.

* Update Redis test config.

* Set nonce default to null string for Redis.

* Add nonce and optional maxLockSize on SqlServer Lockstore.

* Add nonce and optional maxLockSize on MongoDb Lockstore.

* Add nonce and optional maxLockSize on MySql Lockstore.

* Throw error on release only if lock is still active.

* Select expiresAt for check on release

* Add nonce and optional maxLockSize on MariaDb Lockstore.

* Readjusted delays for renew lock test. SqlServer tends to be flaky.

* Add tests for strict lock mode with nonce on renew and release.

* Remove useless parameter initialization.

* Implement the in-memory queuestore. (#162)

* Add draft for in-memory queue store.

* Fix casing.

* Experimentally switch to TypeScript.

* Fix whitespace.

* Introduce types folder.

* Introduce src folder.

* Switch to Node.js 12. Review a few files.

* Introduce Dictionary and offspring. Migrate defekt.

* Refactor elements and start to work on application loading.

* WIP

* Finalize Application and clean up.

* Turn Dictionary type to IDictionary interface.

* Remove leading I from interfaces. Remove types folders.

* Clean up logger service and client service.

* WIP

* Add types to omitByDeep.

* Add aggregateIdentifier to Snapshot and check for it in Aggregate.

* Add InvalidOperation error.

* Add EventStore interface.

* Migrate InMemoryEventStore to TypeScript.

* Rename EventStore to Eventstore

* WIP

* Finish repository.

* Implement read aggregate service.

* Introduce aggregate service.

* Revert queue store to JavaScript.

* Add typings for assertthat.

* Make unit tests run for utils.

* Improve ts-test script to exclude shared folder.

* Add missing types for module uuidv4.

* Export and import Todo type correctly.

* Add package tsconfig-paths and integrate it into ts-test script

Ts-node does not load the paths from tsconfig.json by itself. Thus in
the tests run with ts-node the custom types for external packages (and
things like our offspring) can't be resolved.
The package tsconfig-paths has resulted from a discussion about this
topic on
github (TypeStrong/ts-node#138 (comment)),
which loads said modules.

* Fix broken import in Application.ts.

* Migrate CommandExternalTests.

Currently only half of them runs, because Application.load fails.

* Rename ICustomError from defekt to CustomError.

* Change excluded files in mocha call.

The previous value was left over from a test <.<

* Let mocha run all tests instead of stopping on first failing test.

* Return transformed configuration in getApplicationConfiguration.

It returned an empty object before that was just not filled with values.

* Remove Is from interface names and validate correct folder.

* Migrate part of the ApplicationTest to TypeScript.

* Add types for package isolated.

* Install @types/shelljs.

* Move @types/shelljs to devDependencies.

* Fix assertthat types: atLeast/atMost can support more than numbers.

* Change tsconfig root directory so that it includes the tests.

* Fix Application: build external objects from internal ones.

Instead of from the not yet existing external ones.

* Fix Application: internal and documentation.

Flatten structure of internal objects; Don't give documentation a default value.

* Adjust tsconfig.json to accept tests outside src.

* Apply new types in assertthat also to not property.

* Add type signatures to tests suites.

* Remove project config from tsconfig.json.

* Migrate ApplicationTests and CommandExternalTests to TypeScript.

* Move InMemoryEventStore to separate file; Re-export from index.ts.

* Migrate CommandInternalTests to TypeScript.

* Remove package get-option-tests.

* Migrate EventExternalTests to TypeScript.

* Migrate EventInternalTests to TypeScript.

* Migrate LoggerServiceTests to TypeScript.

* Migrate ClientServiceTest to TypeScript.

* Replace AppServiceTest with AggregateServiceTest in TypeScript.

* Add test for AggregateApiForReadOnly.

* Fix file name, and introduce a new suite.

* Add tests for AggregateApiForEvents.

* Add more tests.

* Test correct call to event handle function using sinon fake.

* Fix version constraint for sinon.

* Reorder InMemoryEventstore functions to match interface.

* Write test for Aggregate and remove old js tests.

* Migrate sendCommand and its test to TypeScript.

* Fix some filenames and only run tests matching *Tests.ts.

* Remove unit tests for stores; TypeScript makes them unnecessary.

We only need the integration tests in the future.

* Replace eslint rule no-useless-constructor with TS equivalent.

* Migrate Command Http endpoint to TypeScript.

- add type declarations for limes
- extend express' `Request` with fields from limes validation
  middleware
- adjust some types in various places to work with express and limes
  types
- add new error for failing authentication

* Add type definitions for partof.

* Add test-debug script and add --exit flag to mocha calls.

This is to end the runner after all tests have completed, even if
there are still streams/sockets/stuff like that open.
We can't prevent this, since supertest and express can't explicitly
end connections.

* Migrate event http api to TypeScript.

* Migrate health http api to TypeScript.

* Migrate static http endpoint to TypeScript.

* Add type definitions for streamtoarray.

* Migrate Repository tests to TypeScript.

* Update dependencies.

* Add type definition for marble-run.

* Remove unit tests for cores since they contain only option tests.

* Migrate InMemoryDispatcher to TypeScript.

* Add types for buntstift.

* Migrate docker related scripts to TypeScript.

* Update eslint-config-es to newest version and simplify eslintrc.

* Update eslint-config-es to 3.1.4.

* Fix dependabot configuration.

* Install roboter v7.1.0 and assertthat v4.0.1

* Upgrade dependencies.

* Pin dependency versions.

* Replace offspring defekt with defekt v3.0.0.

* Move type declaration dependencies to devDependencies.

* Replace nodeenv and uuidv4 type declarations with package updates.

* Replace processenv type declarations with package update.

* Replace isolated type declarations with package update.

* Replace record-stdstreams type declarations with updated package.

* Revert integration pre/post to before mistake.

* Replace buntstift, limes, validate-value type declarations.

* Replace streamtoarray by TypeScript migrated version.

* Replace partof with TypeScript version.

* Replace flaschenpost type declarations with new version.

* Remove marble-run type declarations.

* Update dependencies.

* Clean up TypeScript code style and adhere to new eslint rules.

* Make tests run with roboter.

* Store rootDirectory in application.

* Pass absolute path when calling getLoggerService.

* Fix require of assertthat in javascript tests.

* squash with logger fix

* Supress log output in tests.

* Add filestore interface; Migrate filesystem-filestore.

* Add missing method `authorize` to Filestore interface.

* Migrate file API to TypeScript.

* Fix ESLint errors.

* Add source paths of debug messages to tests again.

* Remove obsolete npm scripts for test and build.

* Replace pump with stream.pipeline.

Closes #170.

* Move S3 filestore to TypeScript.

* Migrate more files to TypeScript.

* Update dependencies and fix eslint problems.

* Rename static async `initialize` "constructors" to `create`.

* Fix linting issue in FileSystemFilestore.

* Remove unneeded packages.

* Migrate MariaDbEventstore to TypeScript; Replace mysql2 with mysql.

* Migrate the MySqlEventstore and fix some issues with the initialize/create change.

* Move promisified mysql query logic into separate file.

* Migrate MariaDbLockstore to TypeScript.

* Migrate MySqlLockstore to TypeScript.

* Replace limit-alphanumeric by own implementation.

* Add @types/mysql

* Migrate MongoDB eventstore to TypeScript.

* Migrate PostgreSQL eventstore to TypeScript.

* Migrate SQL Server eventstore to TypeScript.

* Update dependencies.

* Start to migrate the microservices.

* Remove setting the log level on CircleCI, as this is now done using a .env file.

* Migrate PostgreSQL lockstore to TypeScript.

* Extract maxDate to its own file.

* Improve comments.

* Use the correct exception type for invalid operations.

* Fix naming, simplify code.

* Use limitAlphanumeric; Set onUnexpectedClose methods to protected.

* Fix aggregateIdentifier usage in mysql queries.

* Migrate Eventstore integration tests to TypeScript.

* Fix left over bugs in the migrated Eventstores.

* Migrate integration tests for Filestores and fix some bugs.

* Migrate Lockstores and tests to TypeScript.

* Replace sort-keys with self implemented version.

The self-implemented version used befor the typescript migration
passed non-objects through instead of throwing an exception, as
sort-keys does. We needed the old behavior back.

* Fix issues arising from merge.

* Migrate MongoDB and Redis lockstores to TypeScript.

* Rename factory functions to createXyz.

* Fix import path.

* Update Node.js base image.

* Add tests for sortKeys.

* Add types for freeport-promise.

* Update measure-time and runfork.

* Make tests run.

* Update CircleCI and Dependabot configuration.

* Optimize bug template.

* Remove dependency on freeport-promise.

* Add badges, and move license to external file.

* Remove unneeded dependencies.

* Increase test timeout.

* Finally remove keys and remove Consul configuration.

* Enable new topology layer for MongoDB.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants