-
Notifications
You must be signed in to change notification settings - Fork 23
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
Migrate to a monorepo #297
Conversation
import * as base from './base'; | ||
import * as predefined from './predefined'; | ||
|
||
export { predefined, base }; | ||
// TODO: Or do we want to export everything from the base and predefined modules? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you elaborate a bit on this? WDYM with structured exports vs export everything from the base?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here we're exporting everything in a shared namespace:
import * as base from './base';
import * as predefined from './predefined';
So everything ends up being available in the project root module:
import {Condition, ERC721Ownership} from "@nucypher/shared";
Previously, we used named module exports:
export { predefined, base };
And used them like so:
import {based, predefined} from "@nucypher/shared";
// use base.Condition, predefined.ERC721Ownership
We could use both. Not sure yet - I need to sort out contents of pre
first.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great. I've left some minor suggestions
Codecov Report
@@ Coverage Diff @@
## monorepo #297 +/- ##
=============================================
- Coverage 81.38% 65.23% -16.15%
=============================================
Files 37 48 +11
Lines 1069 5218 +4149
Branches 112 35 -77
=============================================
+ Hits 870 3404 +2534
- Misses 191 1808 +1617
+ Partials 8 6 -2
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM ✌️
@@ -0,0 +1,9 @@ | |||
root = true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this file supposed to be in the repo or maybe should it be ignored?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's supposed to be in repo: https://editorconfig.org/
@@ -1,365 +0,0 @@ | |||
# Changelog |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens with this changelog?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm unsure how to transition from the old changelog to the new one. So far I figured that:
nucypher-ts
package will be discontinued and superseded bytaco
,pre
, etc. packages- We can make appropriate changes to changelog upon new package release
- We could put the old changelog at the bottom of the old changelog
- Or we could put it into
CHANGELOG.old.md
- Irregardless of the two above, we could explain this transition in the
README.md
@@ -0,0 +1,64 @@ | |||
import {Alice, Bob, getPorterUri, SecretKey, toBytes} from '@nucypher/shared'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a PRE example...I found confusing to find this here. It should be moved somewhere else and/or clearly marked in the filename/path.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I addressed these changes in another PR, #301
return <div>Loading...</div>; | ||
} | ||
|
||
const { Alice, Bob, EnactedPolicy, getPorterUri, SecretKey, toHexString } = nucypher; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above.
export * from './bob'; | ||
export * from './cbd-recipient'; | ||
export * from './enrico'; | ||
export * from './pre-recipient'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the difference between bob
and pre-recipient
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bob
is a vanilla PRE character, PreDecrypter
from ./pre-recipient
is a tdec-adapted Bob
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see, well, we should deprecate PreDecryper
as soon as possible, but I guess that's something that can wait after this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I will deprecate the reminder of PRE-tDec - #303
@@ -0,0 +1,2145 @@ | |||
/* Autogenerated file. Do not edit manually. */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When and how is this file autogenerated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file is generated by typechain
by postinstall
and build
npm scripts.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a huge organizational effort!
While I cannot say that this is the final form of the repository and packaging manifests, as a whole you present a massively improved DX for both contributors and implementers and a division of logic that resolves technical debt. I need more experience using the demos and building TACo dapps before I can make any further API suggestions but I broadly agree with the internal tool choices you made here. To unblock further efforts this PR must be merged along with the follow-ups.
Your meticulous effort and focus on maintainability haven’t gone unnoticed. It’s a solid step forward in both code quality and efficiency. On this note, I’m greenlighting the merge. Thanks @piotr-roslaniec 👏🏻
To Do
Consider moving to separate issues/PRs
changesets
for package release management. Need to redo theCHANGELOG.md
, too. - Configure automated releases withchangesets
#304nucypher-ts
demos (like https://github.com/nucypher/nucypher-ts-demo-tdec) as examples in./demos
- Refactor packages APIs #301webpack-5
andwebpack-bundler
examples are building, but are not actually working correctly. Fix them and consider adding examples for other bundlers. Consider adding e2e tests for integration examples (to be run on CI). - Improve DX when working with WASM dependencies #299pre
package, similar totaco
packages. - Delayed, some parts addressed on Refactor CBD API #231pre
andtaco
modules. - Refactor packages APIs #301Type of PR:
Required reviews:
What this does:
shared
,pre
, andtaco
packagespnpm
as a package managerjest
withvitest
./packages/test-utils
package to deduplicate tests across packagesNotes for reviewers:
06f95ad
is the largest because it moves a lot of code. You may want to view it separately. Other commits are more self-contained.taco
,pre
, andshared
test-utils
package is not meant to be published.pre
andtaco
will be published. Consider publishing ashared
package. Package naming TBD../examples
are using@nucypher/shared
. Ideally, they would be usingpre
andtaco
where appropriate. We need to figure out the structure ofpre
package before migrating them, and we need to addtaco
usage examples.