-
-
Notifications
You must be signed in to change notification settings - Fork 365
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
Rule proposal: isolated-functions #2214
Comments
I like it.
I would base it on the package name instead. I think some kind of comment annotation would be useful just to enforce it yourself. I would call it import makeSynchronous from 'make-synchronous';
export const fetchSync = () => {
// @isolated
const getText = makeSynchronous(async () => {
const url = 'https://example.com'
const res = await fetch(url)
return res.text()
})
console.log(getText())
} |
Related TypeScript issues: |
How about similar options to template-indent
|
Yeah, I think it could support an object with: |
This won't work if you rely on TypeScript external helpers like |
I renamed this to |
Description
It'd be nice to have a rule that makes sure certain functions are free of external dependencies. For example, this won't work:
(from make-synchronous docs: "The given function is executed in a subprocess, so you cannot use any variables/imports from outside the scope of the function. You can pass in arguments to the function. To import dependencies, use await import(…) in the function body.")
There are other scenarios where functions should/must avoid using variables from outside their scopes, like server actions (maybe?), or if using
myFn.toString()
.I don't know exactly what the conditions for banning scope-external variables should be, but maybe
makeSynchronous(...)
-style calling would be a good start, given it's part of the Sindresorhus Cinematic Universe. Config could look similar to no-restricted-syntax:Fail
Pass
Additional Info
The devil would be in the details here, and it'd probably be impossible to completely get rid of false positives or false negatives but it could still be useful to (try to) remind people when they can't use normal function scoping.
I had a look for similar ideas in the docs/issues but maybe I missed something? Does this exist?
The text was updated successfully, but these errors were encountered: