-
Notifications
You must be signed in to change notification settings - Fork 2
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
Feat/types #290
base: master
Are you sure you want to change the base?
Feat/types #290
Conversation
I decided to have a crack at |
Nice! But how to run the new test file? Any script to add? |
@coderabbitai review |
Actions performedReview triggered.
|
WalkthroughWalkthroughThe changes introduce a TypeScript implementation for Continuation-Passing Style (CPS) functions, enhancing asynchronous programming. New types and functions are defined in Changes
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
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.
Actionable comments posted: 1
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (3)
- index.d.ts (1 hunks)
- package.json (1 hunks)
- type-test/chain.ts (1 hunks)
Additional context used
Biome
index.d.ts
[error] 20-20: Shouldn't redeclare 'CPS'. Consider to delete it or rename it.
'CPS' is defined here:
(lint/suspicious/noRedeclare)
Additional comments not posted (10)
index.d.ts (4)
1-4
: Type Definition: CPSFnThis type definition for
CPSFn
correctly captures the essence of CPS functions by taking an array of callbacks and returning void. The use of generics here is appropriate and ensures flexibility.
5-10
: Type Definition: ChainFnsThe
ChainFns
type is well-defined, allowing for the chaining of CPS functions with type safety. The optional chaining and use of generics are correctly implemented.
12-18
: Type Definition: CPSThe
CPS
type extendsCPSFn
with achain
method, facilitating the chaining of CPS functions. This is a key feature of the PR and is implemented correctly.
24-24
: Export StatementExporting both
CPS
andCPSFn
is necessary for external usage. The export statement is correctly placed and formatted.type-test/chain.ts (4)
1-7
: Import and Initial CPS FunctionThe import statement correctly pulls in the necessary types from
index.d.ts
, and the initial CPS functioncpsFn
is defined properly, showcasing basic CPS functionality.
8-12
: Function Definition: f1This function demonstrates the chaining of CPS functions with type adjustments. The implementation is correct and serves as a good example of how CPS functions can be composed.
13-16
: Function Definition: f2Similar to
f1
,f2
provides a continuation of the CPS chain, focusing on a single callback scenario. This is well-implemented and demonstrates flexibility in CPS function chaining.
17-35
: CPS Chaining ExamplesThese examples (
chainOneWay
,chainSecondWay
,chainThirdWay
) effectively demonstrate the chaining of CPS functions in various configurations. Each example is correctly implemented and showcases the potential of CPS chaining in handling complex control flows.package.json (2)
6-6
: Addition of 'types' FieldThe addition of the
types
field pointing toindex.d.ts
is crucial for TypeScript support and is correctly implemented.
9-9
: Update to 'files' ArrayIncluding
index.d.ts
in thefiles
array ensures that the TypeScript definitions are distributed with the package. This change is appropriately made and supports the overall goal of enhancing TypeScript usability.
declare function CPS< | ||
Callbacks extends Array<(...args: unknown[]) => void> | ||
>(fn: CPSFn<Callbacks>): CPS<Callbacks> | ||
|
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.
Function Declaration: CPS
This function declaration is essential for creating CPS instances. However, the static analysis tool flagged a potential redeclaration issue.
Consider renaming this function or ensuring that it does not conflict with other declarations in the codebase.
-declare function CPS<
+declare function createCPS<
Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
declare function CPS< | |
Callbacks extends Array<(...args: unknown[]) => void> | |
>(fn: CPSFn<Callbacks>): CPS<Callbacks> | |
declare function createCPS< | |
Callbacks extends Array<(...args: unknown[]) => void> | |
>(fn: CPSFn<Callbacks>): CPS<Callbacks> |
Tools
Biome
[error] 20-20: Shouldn't redeclare 'CPS'. Consider to delete it or rename it.
'CPS' is defined here:
(lint/suspicious/noRedeclare)
I'll add a |
@coderabbitai generate interesting stats about this repository and render them as a table |
Tip For best results, initiate chat on the files or code changes. @dmitriz, here are the interesting statistics about the repository:
Let me know if you need any further details! Analysis chainScripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Count the number of authors in the repository.
authors=$(git shortlog -sn --all | wc -l)
# Count the total number of lines of code in the repository.
lines_of_code=$(tokei --output json | jq '.total.code')
# Count the number of TODO comments in the repository.
todos=$(rg -c 'TODO' | wc -l)
# Count the total number of files in the repository.
files=$(fd . | wc -l)
# Count the total number of commits in the repository.
commits=$(git rev-list --count HEAD)
# Output the results as a table.
echo -e "Metric\tCount"
echo -e "------\t-----"
echo -e "Authors\t$authors"
echo -e "Lines of Code\t$lines_of_code"
echo -e "TODOs\t$todos"
echo -e "Files\t$files"
echo -e "Commits\t$commits"
Length of output: 465 Script: #!/bin/bash
# Re-run tokei without jq to inspect the raw output.
tokei --output json
Length of output: 6877 Script: #!/bin/bash
# Correctly parse the total number of lines of code from the tokei output.
lines_of_code=$(tokei --output json | jq '.Total.code')
# Output the results as a table.
echo -e "Metric\tCount"
echo -e "------\t-----"
echo -e "Authors\t2"
echo -e "Lines of Code\t$lines_of_code"
echo -e "TODOs\t2"
echo -e "Files\t40"
echo -e "Commits\t4"
Length of output: 316 |
See #272 for discussion
Summary by CodeRabbit
New Features
Documentation
package.json
to include type definitions and ensure proper distribution of necessary files.Tests