[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[Codegen 102]: merge getExtendsProps & getProps fns - Flow - #36891

Closed
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102
Closed

[Codegen 102]: merge getExtendsProps & getProps fns - Flow#36891
Pranav-yadav wants to merge 1 commit into
react:mainfrom
Pranav-yadav:codegen102

Conversation

@Pranav-yadav

@Pranav-yadavPranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
Contributor

Summary:

[Codegen 102] This PR is subtask of umbrella #34872. It extracts the code to compute the extendsProps and the props properties in Flow in a getProps() -> {extendsProps, props} function into the same index.js file. This will help unifying the buildComponentSchema functions between Flow and TS so we can factor it out in a later step.

Changelog:

[INTERNAL][CHANGED] - merge getExtendsProps & getProps fns into getProps fn - Flow.

Test Plan:

  • yarn flow && yarn test react-native-codegen --> should be green.

@facebook-github-botfacebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 13, 2023
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

... getProps() -> {extendsProps, props} function into the sameindex.js file.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, thanks for taking the time to look into this. You can also look at the twin PR here for more inspiration.

@cipolleschi do we want to extract final getProps() into index.js or props.js?
Since, extracting into index.js would require moving other helper functions from both extends.js and props.js in it.

We can move both to props.js so that the index.js is thinner

Also, both flow and lint are green yet the tests seem to fail. Am I missing something ?

Yeah, tests are failing. Do they fail locally for you or do they pass locally?
In theory, this is just a move, so they have to keep pass everywhere.
The error says:

GenerateViewConfigJs can generate for 'EnumPropNativeComponent.js'
Failed to find type definition for "ViewProps", please check that you have a valid codegen flow file
24 | return typeAlias.right.typeParameters.params[0].properties;
25 | } catch (e) {
> 26 | throw new Error(
| ^
27 | `Failed to find type definition for "${typeName}", please check that you have a valid codegen flow file`,
28 | );
29 | }

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

@cipolleschicipolleschi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @Pranav-yadav! I pointed out some changes to help you mov forward.

Let me know if you need further help here!

Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/extends.js Outdated
Comment threadpackages/react-native-codegen/src/parsers/flow/components/props.js Outdated
@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

So, I think you moved something that you shouldn't and now it fails to find the definition.

I'll try to rollback the changes and I'll try to apply them one at the time to see what broke the system.

Thanks @cipolleschi. I started again with atomic changes and to make sure everything works as before, eventually I had to move the entire extends.js into props.js.

PS: If we still want to keep extends.js it'll add extra overhead, also eventually we'll need all of it's logic in props.js :)

@analysis-bot

analysis-bot commented Apr 13, 2023

Copy link
Copy Markdown
PlatformEngineArchSize (bytes)Diff
androidhermesarm64-v8a8,622,804+0
androidhermesarmeabi-v7a7,936,158+0
androidhermesx869,109,453+0
androidhermesx86_648,964,474+0
androidjscarm64-v8a9,187,054+0
androidjscarmeabi-v7a8,377,930+0
androidjscx869,245,111+0
androidjscx86_649,503,774+0

Base commit: cff4bc8
Branch: main

@Pranav-yadav

Pranav-yadav commented Apr 13, 2023

Copy link
Copy Markdown
ContributorAuthor

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

/rebase

1 similar comment
@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Pranav-yadav commented Apr 17, 2023

Copy link
Copy Markdown
ContributorAuthor

The rebase comments didn't work. Strange! 🤔

Btw, looks like you missed the following comment;

Also, a general question:
what is lowest Nodejs engine compatibility provided RN packages (at least in case of codegen pkg)?
Also, for other RN packages whom should I ask this to?

Edit: Actually, the main question is about ECMAScript versions compatibility :)

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

ping @cipolleschi whenever you get time have a look at it.

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

/rebase

Reason: CI seems to be fixed!

- rm `extends.js` since, this diff simplifies it's dependents,
- it's fns are moved to `props.js` only; to simplify further.
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@cipolleschi

Copy link
Copy Markdown
Contributor

Hi @Pranav-yadav, you can see the engine we support from the package.json. Apps created from the template have a similar block in their package.json

@Pranav-yadav

Copy link
Copy Markdown
ContributorAuthor

Thanks.
I had checked earlier that the root package.json defines >=16.
Just wasn't sure about the rest of the packages under RN.

@facebook-github-botfacebook-github-bot added the Merged This PR has been merged. label Apr 24, 2023
@facebook-github-bot

Copy link
Copy Markdown
Contributor

@cipolleschi merged this pull request in efc6e14.

@Pranav-yadav

This comment was marked as resolved.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA SignedThis label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.MergedThis PR has been merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Pranav-yadav@cipolleschi@analysis-bot@facebook-github-bot