This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e 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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, '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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, '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 \u003e 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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, '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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, '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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, '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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont
, '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
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Implementation of review comments for classpath and jar - #196

Open
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories
Open

Implementation of review comments for classpath and jar#196
projsaha wants to merge 5 commits into
OpenNTF:masterfrom
projsaha:resourceFactories

Conversation

@projsaha

Copy link
Copy Markdown
Contributor

resourceFactories

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #453 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I had to add this class file for JarResourceFactory separately although the logic lies entirely in ClasspathResourceFactory. The reason is I cannot put two schemes that can be handled by a factory class. So ClasspathResourceFactory has scheme as classpath and JarResourceFactory has scheme as jar. If we can put comma separated values as scheme for resource factories, we need additional code change in newResource(URI uri) method in AbstractAggregatorImpl to handle it. Please suggest.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

But you can add two schemes that are handled by the same resource factory. See BundleResourceFactory, which handles bundleentry, bundleresource and namedbundleresource schemes.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is related to the way we are handling extensions in non-osgi environment. As you know, we are externalising the properties associated with an extension in a properties file - so there are two properties files whose name is com.ibm.jaggr.core.impl.resource.ClasspathResourceFactory.properties and com.ibm.jaggr.core.impl.resource.JarResourceFactory.properties. In these files, we are having scheme as classpath in the first and jar in the second.
So if we are going to use the ClasspathResourceFactory for two schemes, we need to have a method to mention comma separated values for the scheme types.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think that would make sense. Doesn't seem like it would be too difficult to implement.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #456 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is good, however, now that we've gotten to this point, I'm failing to see what the value is of having a separate class for jar resources. Why not just add a constructor argument to ClasspathResource for setting the scheme property and use that class for both types of resources?

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #457 SUCCESS
This pull request looks good
(what's this?)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This still doesn't look right. If zipFileEntry specifies a jar file name (e.g. jarfile!/pathComponent), then getPath() needs to return only the part after the !/ separator. The jar file name is not part of the path, just like a host name is not part of an HTTP resource path.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

The variable zipFileEntry is initialized in the ctor of ClasspathResource in such a way that it is actually the path after the jar name. So we are good here.

@buildhive

Copy link
Copy Markdown

OpenNTF » JavascriptAggregator #463 SUCCESS
This pull request looks good
(what's this?)

@projsaha

Copy link
Copy Markdown
ContributorAuthor

Removed JarResourceFactory by adding support to mentioning comma separated schemes as scheme value for resource factory extensions in jaggr-web.

@projsaha

Copy link
Copy Markdown
ContributorAuthor

I think this change is required. Make the resourceMap variable static in the class ClassPathResourceFactory. This map contains the mapping of a jar file name with the names of the files and folders when the jat file is expanded. We do not want to calculate this variable repeatedly with every instance of this class. This class is intantiated with the call of newInstance(URI) of class ClasspathResource.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@projsaha@buildhive@CLAassistant@chuckdumont