-
Notifications
You must be signed in to change notification settings - Fork 71
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
[RFC] 0012 UI5 Tooling Extension API v3 #664
Conversation
770da5a
to
3f49acc
Compare
3f49acc
to
68c725a
Compare
i like many -if not all- of the proposed enhancement! Also, introducing a breaking change w/ That being said, I'm somewhat torn on the ESM-only approach of providing the ui5 tooling modules themselves as this forces migration of all tasks and middlewares requiring any What I'd like to also see is some improvement on bundling size - |
68c725a
to
a8e666d
Compare
I agree with @vobu , especially on the build comment. Today, "tree shaking" ignores |
I'd love to see the end of
|
Thank you both for your feedback! Much appreciated! @vobu: Our motivation to move to ESM mainly stems from the fact that many of our dependencies already made the move. This lead to situations where we struggled to consume security patches in dependencies. But we also like the concept in general, as well as the great interoperability with CommonJS. We think the Node.js ecosystem will move towards ESM more and more.
We actually do not expect any great efforts for extensions that migrate to our v3 modules. When lifting the dependency, all they should need to do is replace for example
Maybe Fastify is not the best example for our case, since the library itself is still written in CommonJS. It does not provide ES-modules in addition to CommonJS modules, but merely "ESM-syle" export of the same CommonJS modules. When trying to
That's still a major topic for us and many UI5 devs are looking into it. While it doesn't seem likely to get major improvements in UI5 Tooling v3, we got some related features like source maps for bundles and faster bundling in general.
That's already part of the current v3 alpha release. If nobody faces any trouble during the beta, this will be reality soon 👍 |
b5c2611
to
209662b
Compare
…source For custom middleware this will returned a Specification Version-dependent (=compatible) interface of the Project instance a Resource is associated with. This was already described in RFC12[1] but not part of the initial implementation of MiddlewareUtil#getProject. [1] SAP/ui5-tooling#664
For custom task, this will returned a Specification Version-dependent (=compatible) interface of the Project instance a Resource is associated with. This was already described in RFC12[1] but not part of the initial implementation of TaskUtil#getProject. [1] SAP/ui5-tooling#664
For custom task, this will return a Specification Version-dependent (=compatible) interface of the Project instance a Resource is associated with. This was already described in RFC12[1] but not part of the initial implementation of TaskUtil#getProject. [1] SAP/ui5-tooling#664
…source For custom middleware this will return a Specification Version-dependent (=compatible) interface of the Project instance a Resource is associated with. This was already described in RFC12[1] but not part of the initial implementation of MiddlewareUtil#getProject. [1] SAP/ui5-tooling#664
…source For custom middleware this will return a Specification Version-dependent (=compatible) interface of the Project instance a Resource is associated with. This was already described in RFC12[1] but not part of the initial implementation of MiddlewareUtil#getProject. [1] SAP/ui5-tooling#664
This allows to provide other helpful functions too, like "createFilterReader"
* Replace getResourceFactory() function with a resourceFactory property * Replace getLogger function with a log property passed directly to the task/middleware (not using the corresponding -util)
With the latest changes in SAP/ui5-project#431, the method now returns an instance of a "SpecificationVersion" class. This would require an additional specVersion-dependent interface. Since use cases in custom tasks and -middelare are not clear, we should rather keep it simple for now and do not provide this method.
c978671
to
083085f
Compare
As proposed in chapter 6 of RFC0012[1], restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must only contain lowercase characters * Must only contain alphanumeric characters, dash, underscore, dot - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012[1]. [1]: SAP/ui5-tooling#664
As proposed in chapter 6 of RFC0012[1], restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must only contain lowercase characters * Must only contain alphanumeric characters, dash, underscore, dot - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012[1]. [1]: SAP/ui5-tooling#664
As proposed in chapter 6 of RFC0012([1]), restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must only contain lowercase characters * Must only contain alphanumeric characters, dash, underscore, dot - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012([1]). [1]: SAP/ui5-tooling#664
083085f
to
6ee70e3
Compare
As proposed in chapter 6 of RFC0012([1]), restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must contain lowercase characters only * Must contain alphanumeric characters, dash, underscore and period only - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012([1]). [1]: SAP/ui5-tooling#664
As proposed in chapter 6 of RFC0012([1]), restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must contain lowercase characters only * Must contain alphanumeric characters, dash, underscore and period only - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012([1]). [1]: SAP/ui5-tooling#664
As proposed in chapter 6 of RFC0012([1]), restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must contain lowercase characters only * Must contain alphanumeric characters, dash, underscore and period only - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012([1]). [1]: SAP/ui5-tooling#664
As proposed in chapter 6 of RFC0012([1]), restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must contain lowercase characters only * Must contain alphanumeric characters, dash, underscore and period only - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012([1]). [1]: SAP/ui5-tooling#664
As proposed in chapter 6 of RFC0012([1]), restrict the 'name' property for projects and extensions defining specification version 3.0 and later. BREAKING CHANGE: For projects and extensions defining specVersion 3.0 and later, the metadata.name property must satisfy the following conditions: * Must be at least 3 characters long * Must be no longer than 50 characters * Must contain lowercase characters only * Must contain alphanumeric characters, dash, underscore and period only - Exception: `@` and `/` are allowed at certain positions as explained below * Must start with an alphabetic character or an `@`-character * If a name starts with an `@`-character, it must contain exactly one forward-slash `/` - This is aligned with the npm concept for package scopes - e.g. `@org/lib.name` For details, please see refer to chapter 6 of RFC0012([1]). [1]: SAP/ui5-tooling#664
Making this PR ready to be merged
Request for comment summarizing potential enhancements to APIs provided to UI5 Tooling extensions. Namely custom tasks and custom middleware.
View rendered version (main branch)