HDFS-15671. testBalancerRPCDelayQpsDefault fails intermittently

HDFS-15671 TestBalancerRPCDelay#testBalancerRPCDelayQpsDefault fails on Trunk
Some blocks cannot be replicated on the existing nodes which causes the unit test to fail during the creation of the file and waiting for the replications.
Setting dfs.namenode.redundancy.considerLoad to false.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 33s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

+1 :green_heart:
test4tests
0m  0s

The patch appears to include 1 new or modified test files.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
32m 10s

trunk passed

+1 :green_heart:
compile
1m 31s

trunk passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
compile
1m 21s

trunk passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
checkstyle
1m  6s

trunk passed

+1 :green_heart:
mvnsite
1m 30s

trunk passed

+1 :green_heart:
javadoc
1m  3s

trunk passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
javadoc
1m 33s

trunk passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
spotbugs
3m 22s

trunk passed

+1 :green_heart:
shadedclient
16m 47s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
1m 19s

the patch passed

+1 :green_heart:
compile
1m 22s

the patch passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
javac
1m 22s

the patch passed

+1 :green_heart:
compile
1m 13s

the patch passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
javac
1m 13s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
checkstyle
0m 57s

the patch passed

+1 :green_heart:
mvnsite
1m 19s

the patch passed

+1 :green_heart:
javadoc
0m 50s

the patch passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
javadoc
1m 29s

the patch passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
spotbugs
3m 27s

the patch passed

+1 :green_heart:
shadedclient
16m 41s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
unit
230m 22s

hadoop-hdfs in the patch passed.

+1 :green_heart:
asflicense
0m 48s

The patch does not generate ASF License warnings.

318m 14s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3097/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3097

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell

uname
Linux b130e6aeca2a 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / 7dbfcfb38ed0b58aa72223bf8c9b0b4d276d5e93

Default Java
Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3097/1/testReport/

Max. process+thread count
3043 (vs. ulimit of 5500)

modules
C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoop-hdfs

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3097/1/console

versions
git=2.25.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.


Dep optimization failed with error:

I have this error
[vite] Dep optimization failed with error:
path.endsWith is not a function
TypeError: path.endsWith is not a function
    at Object.test (/Users/lucaban/ghq/github.com/CyCraft/pepicons/pepicons.com/node_modules/vite-plugin-svg/index.js:41:30)
    at Object.transform (/Users/lucaban/ghq/github.com/CyCraft/pepicons/pepicons.com/node_modules/vite/dist/transform.js:94:23)
    at /Users/lucaban/ghq/github.com/CyCraft/pepicons/pepicons.com/node_modules/rollup/dist/shared/rollup.js:18200:25 {
  code: 'PLUGIN_ERROR',
  plugin: 'vite:transforms',
  hook: 'transform',
  id: '/Users/lucaban/ghq/github.com/CyCraft/pepicons/pepicons.com/node_modules/vue/dist/vue.runtime.esm-bundler.js',
  watchFiles: [
    '/Users/lucaban/ghq/github.com/CyCraft/pepicons/pepicons.com/node_modules/vue/dist/vue.runtime.esm-bundler.js'
  ]
}

This only happens with 1.0.0-beta.4, not with 0.20.8

Closed in favour of #4


undefined method `each' for nil:NilClass

Hi, I have an error in logs with the latest version:
#<NoMethodError: undefined method `each' for nil:NilClass>
/fluentd/plugins/filter_kubernetes_sumologic.rb:84:in `filter'

There is no labels field in kubernetes hash in my case.
Thank you!

ahh thanks for the issue, I will look into this soon.

This has been fixed in v2.0.0


Remove mustache dep

What was the end-user problem that led to this PR?
The problem is that I just can't find where this development dependency is used. Furthermore, I can't find where it was used in the past :S
What was your diagnosis of the problem?
My diagnosis was that maybe it's never been used?
What is your fix for the problem, implemented in this PR?
My fix is to remove the dependency.
Why did you choose this fix out of the possible options?
I chose this fix because the less dependency, the better.

Ok, I get it now. This is a transitive dependency (of ronn). At some point we had to lock it because mustache 1.0 dropped support for old rubies.
So, just another bonus for not having to support old rubies :)

@bundlerbot r+


help to install the firmware

Hello, i just bought my evil crow keylogger and i was been trying to program he but, the auto instalation is not working for 32u4 just for esp32, and i try to program by the ATMEGA32U4.ino file and works, but the wifi is not apering, i put the jumper on right pins, please help

Hello!
Sorry for replying now, I've been busy the last few weeks
Let me know if you have any other questions
Thanks


Uml 72 zend forms as an alternative

See what Zend forms could look like.

I appreciate that this code stems from a spike rather than a story, so if you'd rather do them as part of a different PR, please can you create a task ticket for them for this or next sprint.

Will get them done now. Shouldn't take too long.


[FEAT] Implement a Waitlist Page - FRONTEND

Description
Develop a waitlist page that effectively communicates the product's benefits, and features, and includes a form for visitors to join the waitlist.
Acceptance Criteria

Compelling Headline:

When a visitor lands on the waitlist page, a headline should capture their attention and convey the product's main benefit.

Product Description Section:

Given the waitlist page loads, a brief description of the product highlighting its unique aspects should be displayed.
At least three key benefits or features of the product should be listed.
Supporting icons or images should be included to enhance the description visually.

Waitlist Form:

Given a visitor views the waitlist page, an input field for collecting the user's name and emails should be present.
When the visitor submits a valid email, the email should be sent to the backend for storage.
If an invalid email format is entered, an error message should be displayed prompting the user to enter a valid email.

Form Submission Feedback:

When a visitor submits their email, a confirmation message should appear, indicating successful sign-up.
If the submission fails, an appropriate error message should be displayed.

Request:

URL: POST /api/v1/waitlist
Request Body:

{
    "fullName": "String",
    "email": "String"
  }

Successful Response:

  {
    "message": "Thank you for joining the waitlist!",
    "email": "String"
  }

Error Response:

  {
    "message": "Invalid email format",
    "statusCode": 400
  }

Purpose
Create a waitlist page showcasing the product and benefits to encourage user sign-ups.
Requirements

[ ] Compelling headline created.
[ ] Brief and impactful product description written.
[ ] At least three key benefits or features are listed.
[ ] Supporting icons or images included.
[ ] Input field for user name and email added.
[ ] Emails collected are sent to the backend.
[ ] Form validation for email format implemented.
[ ] Confirmation message upon successful submission.
[ ] Error message for invalid email format.
[ ] Text reviewed for clarity and conciseness.

Expected Outcome
Visitors should quickly understand the product's value proposition and be motivated to join the waitlist by entering their email and clicking the submit button.
Testing

Headline and Content Display:

Verify that the headline, product description, and benefits/features are displayed correctly on the waitlist page.

Email Input Validation and Submission:

Verify that the input field accepts valid email formats and displays an error message for invalid formats.
Verify that submitting a valid email triggers a confirmation message and sends the email to the backend.

Form Submission Error Handling:

Verify that submitting an invalid email format triggers an appropriate error message.

this is laabelled as FE. This is a BE repo


Allow launching alternate URLs

I think this could be really useful. For example: you have a youtube app, (side-note, why is the YouTube executable named you-tube? I just feel it looks weird.) and it normally launches "https://youtube.com". You want multiple shortcuts, say one that launchers "https://www.youtube.com/user/github" to get straight to the GitHub YouTube channel. What if you could run you-tube https://www.youtube.com/user/github or even just you-tube user/github to get another window that's still part of the same application?

@Aidoboy thx for the feedback.
Questions:

Could you detail what use case / problem led you to this?

Put differently: what would this feature solve that simply creating a second nativefied app wouldn't?

What do you mean by "get another windows that's still part of the same application"?
What kind of associated behavior would you expect?

→ Given some thought to these questions, would https://github.com/jiahaog/nativefier/issues/348 - "Support "shared runtime" mode, bundling apps as pure configuration" be what you're looking for too? Is this fair to consider your bug a duplicate?
Comments:

Regarding the weird inferred name, you can override it with option --name.

No, I don't think this is a duplicate of #348, for several reasons.

Each extra app has separate cookies, which is rather inconvenient. I'll probably start to get annoyed the 6th time I pull my Twitch password out of Keepass.
I want the instances of the app to share the same icon on the taskbar, so if I had 3 Twitch windows open with separate streams that each launched from their prospective shortcuts, the taskbar would start to get really cluttered with icons that should really be stacked.

Is that clearer?

@ronjouch Yeah, that re-title is good. In the meantime, do you think I could have multiple nativefier executables in the same directory with modified path names but the same --name names? Or maybe soft link cookie directories?

In the meantime, do you think I could have multiple nativefier executables in the same directory with modified path names but the same --name names? Or maybe soft link cookie directories?

@Aidoboy try it, but ⚠ I wouldn't be surprised to see the separate chrome instances at best stepping on each other toes, at worst corrupting the shared user profile / cookies.


basic feature missing: no compile errors are shown for .JS files

if "compile-hero.javascript-output-toggle": true is used, and a script can not be compiled, there is no output to a VSCode terminal = it is missing. (Preferably output it to the 'problems' terminal/plane).
It just does nothing. It would make sense to get the compilers message shown somewhere.

An example to a solution could be: https://github.com/microsoft/vscode-extension-samples/tree/master/terminal-sample


[Aborea] Bugfix

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

Changes / Description

standard value added

Character Sheet Info Roll20 Internal Use only.


How do I use Mixins feature to create an overlay mixin?

Like this one:
React Bootstrap Modal
which is based on
OverlayMixin?

I've used something like this. Maybe you can expand on this to make it a mixin:
    showUserModal() {

      var el = $('

<user-form></user-form>

').appendTo('body');
      el.modal().one('hidden.bs.modal', function() {
        el.remove();
      });
      var userModal = riot.mount('user-form')[0];
      userModal.on('createuser', function(user) {
        controller.createUser(user);
      });

    }

Eventually, I'll have to refactor this code to a more reusable form:

Thanks!
On Sun, May 31, 2015 at 9:14 AM, Simo Moujami<EMAIL_ADDRESS>wrote:

I've used something like this. Maybe you can expand on this to make it a mixin:
    showUserModal() {
      var el = $('

<user-form></user-form>

').appendTo('body');
      el.modal().one('hidden.bs.modal', function() {
        el.remove();
      });
      var userModal = riot.mount('user-form')[0];
      userModal.on('createuser', function(user) {
        controller.createUser(user);
      });
    }

Eventually, I'll have to refactor this code to a more reusable form:
Reply to this email directly or view it on GitHub:
https://github.com/muut/riotjs/issues/770#issuecomment-107131937

@simoami thank you for the help!


Multiple Series Column Chart w/ Custom Color

I was able to change the color for the bars by looping through the series than the points and changing the color to my custom color. That works, but the legend still shows the generic color not the custom colors that the bars correctly show.
Any help, what i must be doing wrong.  Here is my code i loop through to set the custom color:
for idx, s in enumerate(chart.series):
# series
for point in s.points:
col_idx = idx % len(new_color_list)
point.format.fill.solid()
point.format.fill.fore_color.rgb = RGBColor.from_string(new_color_list[col_idx])
Again the bars get the right custom color but the Legend does not change color.
Here is a screenshot of demo data showing the issue.

Try changing the colors on the series, not the individual points. That should produce the result you're after:
for series in chart.series:
    fill = series.format.fill
    fill.solid()
    fill.fore_color_rgb = ...

Worked, thanks!


Import geographic geometries and or SVGs

Hello there, big fan here 👋 .
I was wondering if you would be interested in supporting importing geographic geometry files such as GeoJSON and TopoJSON. I made an experiment and already got it working:
You can see a video here and the code is available here.

The ux and other details still need to be worked out. There's things where I could use some guidance.
This works by uploading the geometry file and converting it into an SVG path that RoughJS can paint. So maybe it could be splitted into two things: Support SVGs and support geometry files.
Missing things

Detecting the size of the geometry automatically
Be able to resize it.
Improve collisions

Cool things it could have

Importing wizard that allows the user to choose the way to convert the geometry: feature, merge, mesh.
Ability to choose the projection, currently it uses Equal Earth.
UI to build a choropleth based on geometry file's data 🤯 .

@Fausto95 @vjeux @dai-shi Hello, so have you had some time to consider this? I know the app is growing a lot in features and it might be sensible to not bloat it with niche stuff. So if you think this could be part of a plugin system I'm happy to help build it.
I've given some though about how could we add this feature without it being too niche, and this is what I came up with:

geoJSON and topoJSON files need to be converted into SVG path in order to be rendered.
Once converted, we need to support rendering, coloring, resizing, and all the default actions in plain SVG paths.
SVGs are a way more common use-case thant geoJSON and topoJSON files.

Given those premises, I propose:

Create an upload SVG file button.
Add support for rendering SVGs.
Once that's ready, add an extension check into the upload SVGs pipeline. This step will check for .geoJSON and .topoJSON extensions.

If geoJSON convert into path and render.
If topoJSON convert into geoJSON then convert into path and render.

Thanks!


iqc: Feature Request - ppi check

Add dpi check to iqc script.  Default would be 600 ppi but user can specify different ppi

@dzellner Is this still a feature that you think we should add? Are projects using multiple dpi settings across all of the images common enough that it would be a potential issue?


GoBack - if there is a page on the modal stack, pop it without requiring UseModalNavigation

Also, added TryGetValue to check for existence of parameter and return it's value if it exists.
This is my first PR so not sure if this is the way to do it.

Thanks for the PR, I've added a few small comments!


What should promises resolve with?

syncManager.register and syncManager.unregister currently return promises resolving to booleans. There's no mention in the spec of what these booleans mean. I don't think they should refer to success/failure -- the promise's fate already covers that.
Should we change that to something like
  Promise<SyncRegistrationOptions> register(DOMString id, optional SyncRegistrationOptions options);
  Promise<void> unregister(DOMString id);

And register can return the options that were actually stored (in case they were modified by the user agent.) Or just have both return void promises?

In the push spec, unsubscribe resolves with a boolean indicating if anything was actually unsubscribed. Maybe that's useful here too?
register should resolve with undefined, or some kind of object that represents registration state (which could have similar properties to SyncRegistrationOptions. When would register resolve with different options than the ones you pass in?

Agree that a bool is useful for unregister.
We've discussed the option of using a chooser for sync. A dialog with text like,  "How often would you like this page to be able to sync in the background? Once a day, twice a day, weekly, never" would pop up on a call to register. If we did that, then returning the parameters in a SyncRegistrationOptions would be useful.
I think returning the SyncRegistrationOptions is at least not harmful, and potentially useful in the future. +1

@jakearchibald  -- In your unregister scenario, then, does syncManager.unregister("non-existing-sync-event-id") resolve with false, rather than rejecting? If so, could it ever reject?

For unregister see also the Push API: https://w3c.github.io/push-api/#pushsubscription-interface
I think these similar APIs should avoid being different without cause.

@clelland

In your unregister scenario, then, does syncManager.unregister("non-existing-sync-event-id") resolve with false, rather than rejecting? If so, could it ever reject?

Yeah, it would resolve with false. Once syncManager.unregister("non-existing-sync-event-id") resolves, there is no registration with ID "non-existing-sync-event-id". Ok, there never was one, but that doesn't feel exceptional. Eg, clearTimeout(nonExistingID) does not throw.
However, @mvano makes a very good point. Push & ServiceWorker itself doesn't have unregister(id), it has registration.unregister(). Makes sense to be the sync up* here.

this pun will never, ever get old

I think what we do here depends on the outcome of #30. We don't really need to resolve with anything if we end up exposing the individual registrations.

Resolved. unregister returns a boolean in the spec. True if successful false if it wasn't found.


Describe how to not loose helm functionality when using this plugin

Is your feature request related to a problem? Please describe.
When I am using a cluster with argocd to play around and test something, often I will use argocd in full-gui mode : point, click, add helm repo, enter the values into the boxes, become frustrated that someone hasn't set default values in the values.yaml file and have to enter it into the text box for values, and iterate.
A lot of the above is actually missing if you want to use helm with vault-plugin because argocd doesn't know that you're using helm.
I am pretty sure I can fight my way through and make it work by modifying the docker image so that helm is a script that calls the real helm template command and pipes it to the plugin, but that's a lot of work and really not documented.
Describe the solution you'd like
A document to follow for enabling the plugin in a way that doesn't remove functionality from argocd when using helm charts.
Describe alternatives you've considered
replacing the helm binary in the image.

Hi - if I understand you right, you seek a way to be able to manipulate the values files/explicitly set values that an Argo app using Helm + AVP is deployed with, from the Argo CD UI. I don't know if this is possible, b/c as I understand it, the Argo CD UI is able to provide the "Helm values form" because of the helm key in the Argo app manifest, which isn't and cannot be used in conjunction with a config management plugin like AVP because of how Argo CD works.

@jkayani is correct there is really nothing we can do about that. As you can see in this issue https://github.com/argoproj/argo-cd/issues/7623 it’s a known problem. We just combat this by formatting the plugin to take advantage of Helm arguments and be as like the native Helm support https://argocd-vault-plugin.readthedocs.io/en/stable/usage/#with-helm

One of the reasons I worded the ticket as "describe how to" rather than a bug report/feature asking for the functionality to be restored is because I guessed that it was the architecture of argocd that is in the way here.  It should however be possible to get this functionality working by running as a wrapper for helm in the same way as described here rather than as a real plugin.  I have not yet spent the time to do so but the idea would be to add it to the documentation so people know that it's an option.

I've been working on a separate project to do this.  We use argocd helm applications all the time with avp and kustomize.
https://github.com/teejaded/helm-wrap/tree/examples/examples/avp-kustomized-helm


Cleanup

Trying to clean the code up to make adding features easier.
Work in progress. Please don't merge yet.

@alexanderchr Thanks for contributing! Can you share a bit more detail about your intent and plans for this work?

Sure. I started this work when i tried to make a few changes in the header class and several other classes broke down although i only modified the implementation. I mainly try to accomplish four things:

Reduced interdependency between classes https://github.com/aurelia/http-client/blob/master/src/http-response-message.js#L26)
Simplified code execution paths (entire constructor method https://github.com/aurelia/http-client/blob/master/src/http-response-message.js#L5)
Code formatting
Cleaner tests

@bryanrsmith Can you review this?

@bryanrsmith This PR has been hanging out for a couple of weeks. When you get a chance, can you review it and see if it's something we want to take?

@alexanderchr Thanks so much for helping to improve code quality. At this point I'm a little hesitant to merge this. There were a lot of formatting changes and moves made at the same time as functional changes. It's really hard for me to tell what actually changed and I don't feel like I can review it confidently. We're also starting to roll out some new linter rules to enforce consistent formatting and style across all aurelia projects. While I appreciate the work on improving consistency here, I think it'd be nice to roll that work up together and keep it separate from functional changes to reduce churn.
I do think you've got some good improvements, though. Would you be willing to break up these changes into smaller commits so that it's clear what changes were made and why? Ideally formatting changes and simple code moves would be made in their own commits.

Thanks for reviewing. I'll take a closer look at it and see if i can break out some changes.


Fullscreen and resizable webview

is it possible to toggle fullscreen on and off?

My main reason for asking about fullscreen toggling is because when I enabled immersive mode and an input element came to focus, it would get hidden behind either the keyboard or the status barand also I needed my webview to resize based on my css. So i thought it would be better to control the fullscreen visibility manually, but i found a better hack. I modified the original plugin immersive mode function and commented out the layout flags.
	protected boolean immersiveMode()
	{
		if (!isImmersiveModeSupported())
		{
			context.error("Not supported");
			return false;
		}

		activity.runOnUiThread(new Runnable()
		{
			@Override
			public void run()
			{
				try
				{
					resetWindow();

					final int uiOptions =
						// View.SYSTEM_UI_FLAG_LAYOUT_STABLE
						// | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
						// | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
						View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
						| View.SYSTEM_UI_FLAG_FULLSCREEN
						| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;

					// window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
					decorView.setSystemUiVisibility(uiOptions);

					decorView.setOnFocusChangeListener(new View.OnFocusChangeListener()
					{
						@Override
						public void onFocusChange(View v, boolean hasFocus)
						{
							if (hasFocus)
							{
								decorView.setSystemUiVisibility(uiOptions);
							}
						}
					});

					decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener()
					{
						@Override
						public void onSystemUiVisibilityChange(int visibility)
						{
							decorView.setSystemUiVisibility(uiOptions);
						}
					});

					context.success();
				}
				catch (Exception e)
				{
					context.error(e.getMessage());
				}
			}
		});

		return true;
	}

then simply added the plugin using my modified fork i.e

cordova plugin add https://github.com/kilisio/cordova-plugin-fullscreen.git#forked_dev

I dont know java, but it was a fun hacking and learning something new... thanks for the great plugin

Great to hear you found a solution!


Research: parsing HTML in the article

Task description
Research parsing HTML on the card preview and PostView (future component)
Post content is stored in HTML format.
Research how to render the content
Key points:

[ ] Security: check the HTML sanitizer for React

[ ] Get HTML and render in the post card/ post view etc..

Estimating

check https://www.npmjs.com/package/sanitize-html-react


Reset border-radius on button element

Overwrites https://www.chromestatus.com/features/5743649186906112
@necolas

See #697. This was already proposed but closed because Chrome decided to revert the change.

🎉


Handle empty issue body when removing HTML

If an issue is created with an empty body, the action failed when calling replace on null. This PR updates the removeHTML function to return an empty string if the text argument is null.

Thanks @conarro! I added a few comments. Would you also mind creating a corresponding issue for this as well please? Thanks!

@rr-codes filed an issue here #31. Just applied your suggestions, let me know if you want me to squash or anything!


See 'docker run --help'.
make: *** [Makefile:13: run] Error 125

I tried changing the $RANDOM variable in the Makefile to a non random value like "123123" but it spits the same error as in the error log above.

Also got this error before that one but fixed it by changing "--name" to "-v" in the Makefile:
$ make run
docker: Error response from daemon: invalid mount config for type "bind": invalid mount path: 'bitcoin-addresses.txt' mount path must be absolute.
See 'docker run --help'.
make: *** [Makefile:13: run] Error 125

I ment that I changed the "--mount" to "-v". I got it working somehow but theres nothing running? Also the get-addresses-docker doesn't seem to work:
$ make run
docker: Error response from daemon: invalid mount config for type "bind": invalid mount path: 'bitcoin-addresses.txt' mount path must be absolute.
See 'docker run --help'.
make: *** [Makefile:13: run] Error 125
$ nano Makefile
$ make run
0ac50f78370b02d233aede42041af15d2f084a8a574c13518b83eec45cd4ad5f
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ make get-addresses-docker

After restarting docker.socket it no longer runs with the same invalid container name error:
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
$ sudo systemctl restart docker.socket
$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
$ sudo systemctl restart docker.socket
$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
$ make run
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd-28005": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
make: *** [Makefile:13: run] Error 126
$ sudo make run
docker: Error response from daemon: Invalid container name (-23706), only [a-zA-Z0-9][a-zA-Z0-9_.-] are allowed.
See 'docker run --help'.
make: *** [Makefile:13: run] Error 125
$

What are the values for environment variables VICTIM_ONION_ID and ADDRESS_FILE?
Looking at your error messages I suspect the following:

You may have the '.onion' suffix on your VICTIM_ONION_ID. It should not be there.
Your ADDRESS_FILE seems to contain relative path to file "bitcoin-addresses.txt". It should be absolute path.

Please try again after checking these. @89023890234890

Removing the "-" from the "--name" in the Makefile on line 17 seems to get rid of the invalid container name error but it still doesn't launch the docker processes at all:
$ sudo make run
0c1dcd5539ce364ba824a462d860f22e16c96caa9139c33227a4982bbf4a96dd
$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

The make get-addresses also still does nothing, most likely because there is no Docker process running.

Your variables look correct.
I see you use sudo for the make command. The variables may not propagate to the privileged session.
Can you try either
sudo -E make run
or doing it all in privileged session, starting from the exports

Same result with sudo -E make run and redoing everything as a root user. The make run runs fine but no docker process starts. Below you can see the output from doing docker ps -a. Seems like it exits with an error?
# docker ps -a
CONTAINER ID   IMAGE                     COMMAND      CREATED          STATUS                      PORTS     NAMES
cb51d6ba708e   valtteri/onionfermenter   "./run.sh"   38 minutes ago   Exited (1) 38 minutes ago             sharp_almeida

Just to confirm: Did you undo all changes you did to the code, especially Makefile?

Yes. Default Makefile.

I was able to reproduce the issue. It was caused by the VOLUME statement it the Dockerfile, which broke only docker deployment.
I fixed the issue and built a new container with tag '2-fix-permission-issue'. I shall test k8s deployment before merging to main and replacing the latest container image.
Meanwhile you may plug that tag into the make run command and see what happens.

# make run 2-fix-permission-issue
ea07e37f5d45cec77447aecb4d3108a9f35a7c50de8f4cb6eecdb62f70a38a18
make: *** No rule to make target '2-fix-permission-issue'.  Stop.

The fix is now merged to main. Please use the latest code and try again. You may need to delete old docker image to ensure the fixed one is pulled.
You can delete the old image with command docker rmi valtteri/onionfermenter:latest
Please let me know if you still face problems. I will otherwise close this issue in 24 hours.
@89023890234890

Seems to build fine now but the get-addresses-docker command doesn't work.
$sudo docker ps
CONTAINER ID   IMAGE                            COMMAND      CREATED         STATUS         PORTS     NAMES
ada90a4230f7   valtteri/onionfermenter:latest   "./run.sh"   9 seconds ago   Up 7 seconds             26983
$sudo make get-addresses-docker
Usage: grep [OPTION]... PATTERNS [FILE]...
Try 'grep --help' for more information.

The get-addresses and get-addresses-docker rely on the VICTIM_ONION_ID environment variable.
Thus if you use sudo here as well, you need to provide the same -E flag as with sudo -E make run. So it becomes sudo -E get-addresses-docker.
The hidden_service directory is inside the container.

I got the .onion address but when I visit it in Tor browser I get this:
The requested onion service descriptor can't be found on the hashring and therefore the service is not reachable by the client.

It takes around 5 minutes for onion services to be publicly reachable after starting.
Please let it run for a while and try accessing it again.

OnionFermenter intercepts everything but just does not do anything with the data, except for modifying onion and bitcoin addresses and relaying it.
I guess you would like to have it print out any credentials in the intercept. It is hard to have general solution printing just credentials that works with any onion services. It is though possible and easy to just log all traffic and then manually search it for credentials.
In fact the functionality to save all traffic from clients to file is currently only commented out: https://github.com/ValtteriL/OnionFermenter/blob/5a2b770f5d8ce695cdc7c5c2864334d2da05a136/src/onionfermenter_worker_server.erl#L66

Fixed in https://github.com/ValtteriL/OnionFermenter/pull/3


apoc.meta.graph does not display ALL relationships

 Issue by adriens
Tuesday Aug 14, 2018 at 10:51 GMT
Originally opened as https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/884

Runtime Configuration :

Neo4J : 3.4.5 Enterprise
APOC Installed <IP_ADDRESS>

Description
i have a graph datbase with the following nodes and relationships (please note the relation between a column and a view):

but when i ask to apoc to show me the graph structure, i'm missing the relations between column->view

I wonder how is this possible ?...in the documentation it is said that this procedure does not sample datas, but it looks like all nodes have not been parsed.

 Comment by adriens
Tuesday Aug 14, 2018 at 10:54 GMT

But db.schema seems to do the job :

 Comment by adriens
Tuesday Aug 14, 2018 at 11:22 GMT

Yes, it looks somehting like that...as to feed the graph, i first load column->tables then column-> views...
i do this in a sequential way. So the sample does maybe stop after a certain range, after the first load.

 Comment by jexp
Tuesday Aug 14, 2018 at 11:10 GMT

Thanks for reporting. The problem is that the db-statistics only store half of the relationship information (only one label) so db.schema reports often false positives.
apoc.meta.graph samples a subset of the graph to confirm those relationships. In your case it seems that those (:Column)-[:COLUMN_OF]->() that were sampled didn't include (:View) and the views also didn't include those columns.
I'll check if there is an omission in the implementation.

 Comment by adriens
Tuesday Aug 14, 2018 at 11:22 GMT

...hence causin the second sample to be skipped...

 Comment by adriens
Wednesday Aug 15, 2018 at 00:18 GMT

I've added new kind of nodes and it seems like having added this has changed the sample used , now
db.schema and call apoc.meta.graph() give the same output, see below the correct relationships getting out of Column :

We have recently released (<IP_ADDRESS> and 5.5.0) fixes for these procedures that apply fixes to the sampling. I cannot reproduce this issue, so will close this issue as assumed fixed. If you come across it in those or future builds feel free to reopen and supply a reproducible case :) Thank you!


Add Travis linting, testing, and deployment

We should configure a Node Travis setup that

lints
tests
builds
and deploys to Github Pages.

How do you feel about eslint and prettier?

👍


74 - add token standard to wiki

Add token standard PDF

opted for a PDF because Nuclino exports broken markdown for tables. this is probably better as a downloadable paper format anyway

@RektangularStudios/rektangularstudios

@wvalthar do I need to update anything else to make this work properly and show up?

force merge


Images with no exif data

This is similar to #105.
In the autoOrient method, if an image has no exif data $exif['Orientation'] will not be set and therefore a notice is thrown.

I don't make a specific effort to worry about notices, but I'll accept a PR if it bugs you. Looks like the check got omitted when I wrote version 3.

Feel free to open a PR to alleviate this notice.


Feature request: filter inactive computers

It would be useful to be able to filter out inactive devices from listings.

It seems that some widgets display inactive devices and some don't. It would be great to simply not display inactive devices and have a filter to control that.

This is one of the things we discussed at the virtual meeting


Quick fix to SSE upload race

If a connection breaks during packfile-end, keep going rather than crashing with a low-level I/O error.
Prevents a race condition where if the connection breaks, the packfile may or may not succeed.

CI failed due to unrelated test, ref #798.

Merging based on offline comments from @ryansanford.


Check if config contians a key before fetching. Default to 0

Thank you for sending the PR! We appreciate you spending the time to work on these changes.
Help us understand your motivation by explaining why you decided to make this change.

Potential Fix to #19793
Test Plan

modified the code and tried to recreate the bug and was unable to. The red screen never popped up and nothing else seemed to be affected in a negative way.
Related PRs

No
Release Notes

[ANDROID] [BUGFIX] [FrameBasedAnimationDriver.java] - Safely unwrapping ReadableMap by defaulting to 0 if key not present.

Signed the CLA


documentation fixes

The PR mostly fixes the documentation build.

@crawfordsm @mwcraig I haven't had any luck committing this to the PR directly so I made this PR against your feature branch.
Do you know any tutorials on how to use the "commits from maintainers" feature directly on the PR?


Document early termination of all and friends.

Do all, any, and, or terminate early (short-circuit) when encountering the first overpowering value (e.g. all can return false as soon it sees the first false).
If so, should we add a note to the docs?
If not, should we also add a note, explain why, and then point to other options to achieve this behavior?

I believe Harry and I had a conversation about this once. I'll write what I remember from that conversation.
They do not short-circuit. If you look at the Haskell definition for Foldable, you will see that the elem function is included in the definition of Foldable whereas PureScript's elem is a derived function. So, why is PureScript different?
Haskell supports "default implementations" of type class members. Looking at the Haskell source code, we can see per the "MINIMAL" pragma that a data type only needs to implement either foldMap or foldr to have an instance for Foldable. All other functions defined in that class can be derived using one of those two functions. However, such defaults may not be as performant (i.e. short-circuit). Fortunately, these defaults can be overridden. So, if elem should short-circuit on a data type like List, someone writing an instance for List could stop the recursion as soon as the first element is found.
PureScript does not support default implementations. The closest thing we have are functions like foldrDefault that can be used within the definition of a type class member. Note: these need to be "eta-expanded" (i.e. include the arguments on the left hand side) to prevent a stack overflow issue.:
data List a = Cons a (List a) | Nil

instance foldableList :: Foldable List where
  foldMap aToMonoid list = -- normal definition
  foldr acc init list = foldrDefault (flip acc) init list

If PureScript did support default implementations, we could include things like all, any, or, etc. for free (as we already do via derived functions), but also get short-circuiting versions for types that can support that.

Yep 👍 There’s another factor in this, which is that it’s difficult to short circuit here because our versions of any, all, and, and or use a HeytingAlgebra constraint rather than a concrete Boolean type, which means that we can’t know whether we’ve seen a true or a false in order to short circuit unless we add an Eq constraint so that we can check for equality with either tt or ff (the generalised versions of true and false).


Fix two issues with no-misspelled-properties rule

What do the changes you have made achieve?
Fix two issues ( #352, #679 ) related to the no-misspelled-properties rule
Are there any new warning messages?
No
Have you written tests?
Yes
Have you included relevant documentation
N/A
Which issues does this resolve?
Closes #352
Closes #679
<DCO 1.1 Signed-off-by: Ben Griffith<EMAIL_ADDRESS>

Coverage increased (+0.02%) to 97.112% when pulling 81bb14bce248cd87ce045c0c45fecda31d5d12e4 on bgriffith:feature/no-miss-props into 098de67fb150497a55edce4de13432f94f7cd44b on sasstools:develop.

Need to update since older versions of node don't handle Object.assign.

Use Array.concat instead

Coverage increased (+0.02%) to 97.112% when pulling 50a859de8c0f86b06ef9e4ad9dba43b60382ad84 on bgriffith:feature/no-miss-props into 6b7211a7d916c101b84b762d50a4aaec00142a83 on sasstools:develop.

👍


Preserve nb user

the workaround for issue #104.

I do not get this, as far as I can see these changes were included in the image since October 2020. What changed now?

@jan-janssen, I have described the issue at #104


Make links sent in discord work as links in minecraft

Simple QoL change to make it so people don't have to open discord to open links

Sounds like a simple change but isn't actually that trivial. It's something I want to do, but I'll have to look into the discord api some more about how to get a formatted message instead of just the raw content.


feat: add channels to style and label callback

fix: https://github.com/antvis/G2/issues/6248
对于聚合图表，需要提供聚合之后的数据给 label 和 style 的回调，这样才能根据聚合后的数据进行可视化。

export function diamondIntervalGroupX(): G2Spec {
  return {
    type: 'interval',
    data: {
      type: 'fetch',
      value: 'data/diamond.csv',
    },
    encode: {
      x: 'clarity',
      y: 'price',
    },
    labels: [
      {
        text: (_, index, __, channels) => channels.y[index],
      },
    ],
    transform: [{ type: 'groupX', y: 'max' }],
    style: {
      fill: (_, index, __, channels) =>
        channels.y[index] < 11700 ? 'red' : 'blue',
    },
  };
}

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

7 of 7 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.002%) to 86.409%

Totals

Change from base Build<PHONE_NUMBER>:
0.002%

Covered Lines:
10374

Relevant Lines:
11629

💛  - Coveralls


semicolon is errors for statements that aren't finished i.e. with a .catch statement.

Bug Report

TSLint version: 4.0.1
TypeScript version: 2.1.1
Running TSLint via:  Node.js API

TypeScript code being linted
updateAllocations(combined: xxxxx[], xxxxxx: number): Observable<PersonAllocation[]> {
        this.path = '/' + personId + '/allocation';
        let body = JSON.stringify(combined);
        return this.apiService.postObs(this.path, body)
        .map((res:Response) => res.json() as xxxxxxx[])
        .catch(error);
    }

with tslint.json configuration:
"semicolon": [
        true,
        "always"
    ],

Actual behavior
src/xxxx/xxxxx/xxxxx.service.ts[23, 42]: Missing semicolon
Expected behavior
This should not bother me for a missing semicolon when it is not a finished method... if there is a catch at the end of the statement it should leave this alone...

there's no error if you prefix your function with function

@xtianus79 where exactly is your lint error falling? the line number you posted exceeds the length of your code block.

Closing this issue for housekeeping. If this is still an issue for you @xtianus79 please do comment here and we can take another look!


graphene: add getters/setters for Size/Point/Point3D

Could have used a proper debug implementation but can't be done without fixing https://github.com/gtk-rs/gir/issues/1202

Could have used a proper debug implementation but can't be done without fixing gtk-rs/gir#1202

These are BoxedInline, they have no automatic Debug impl. So go for it!

Could have used a proper debug implementation but can't be done without fixing gtk-rs/gir#1202

These are BoxedInline, they have no automatic Debug impl. So go for it!

that's sadly not the case https://github.com/gtk-rs/gtk-rs-core/blob/master/graphene/src/auto/size.rs#L7-L17

Oh you can override that, and that's currently explicitly enabled in Gir.toml:
[[object]]
name = "Graphene.Size"
status = "generate"
boxed_inline = true
    [[object.derive]]
    name = "Debug"

Matrix, Plane, Quaternion and Quad seem to have no getters currently

Matrix, Plane, Quaternion and Quad seem to have no getters currently

Matrix, Plane, Quaternion and Quad seem to have no getters currently

Matrix seems to have two getters, to_float to get a [f32; 16] or value(col, row) -> f32 .I added a values variant though that returns a [[f32;4];4]

Looks good to me otherwise

Thanks for the review @sdroege, should be updated now :)

A ton of methods are not properly marked as manual, so they are not documented :/ I will add that in this PR as well


Setup.py changes in scripts

Hey @jakebeal , as discussed in the 2nd point here,  I have tried making those changes. I am not sure if we should be renaming any functions or file names in utilities themselves, should this be all we do so that at least the convention for scripts is fixed?

@karin-sionov: I'd like to get your thoughts on naming here.

Hi,
Few inputs:

I think sbol-excel-to-sbol is a bit confusing name. Maybe just sbol-convert-from-excel? Or perhaps not adding the "sbol-" prefix in here? The same goes for sbol-sbolToGenbank and sbol-sbolToFasta: consider changing them to sbol-convert-to-fasta or something like that.
It still does not match the Readme file, but that's an easy change I can make nyself once we decide upon the utilities names.
I am still more bothered by the sbol-converter utility that remains conversion in the script... This is why I opened the #91  issue in the first place - seems odd to me to change all the utilities aside from that one. I know @mohitdmak suggested not to change it, but I admit I did not understand the reason, since in this commit you change all its inner functions so it looks like it requires the same amount of work :)

Actually I take my 3rd point back. I think calling the main utility "SBOL-converter" is enough without changing the script's name (.py), since the script also calls other utilities.
So @mohitdmak what do you think about the first two points?

Hi @karin-sionov ,

Yes, actually regarding the 3rd point, I was a bit averse to changing the script's name as it would involve changing the script's reference in multiple places, and it might be better to just have the final executables have proper naming. So I agree with your latter comment in this regard.
For the 1st point, I don't have any problem following your naming suggestion, it seems more intuitive than mine.
As for the 2nd point, I think I changed the readme for the changed console scripts in the current commit. Is any of them left out?

This doesn't seem to have been needed, and we are declining to make the change.


Same initial quaternion rotation, but for WebVR

Different implementation of the same concept.

What are these files?

holy ****.
Give me a sec. what the heck is that....


Stackoverflow when having cyclic variable references

Expected Behavior

A warning should occur informing the user of the reference cycle.
Current Behavior

Stackoverflow error when ASTVariable.getDataType() is called.
Possible Solution

Extend validation of ASTVariables so that cyclic references can be detected.
Steps to Reproduce (for bugs)

Simply run
x as y

y as z

z as x

in any end2ast test

Duplicate of Issue #13


feat(presets): vitepress

Adding a new preset for VitePress-based applications.

This PR relates to:

https://github.com/aziontech/vulcan-examples/pull/55
https://github.com/aziontech/azion-samples/pull/112

@PabloDiehl Please change the base to stage

:tada: This PR is included in version 2.12.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Custom Color and Shape?

Is it possible to specify both the color and shape for each legend element?
I just started working with D3, so hopefully, there is an easy answer. Normally, I would do something like: .attr( 'fill', ( d, i ) => colorScheme[i] ), but with d3-legend it doesn't look like the data binding is directly accessible this way
Below is a modified example from the tutorial:
var colorScheme = ['#FF928B', '#7D82B8', '#EFE9AE']
var triangleU = d3.symbol().type( d3.symbolTriangle )(),
  wye = d3.symbol().type( d3.symbolWye )();

var symbolScale =  d3.scaleOrdinal()
  .domain( ['Red Triangle', 'Blue Wye', 'Yellow Wye'] )
  .range( [ triangleU, wye, wye] );

var svg = d3.select( 'svg' );
svg.append( 'g' )
  .attr( 'class', 'legendSymbol' )
  .attr( 'transform', 'translate(20, 20)' );

var legendPath = d3.legendSymbol()
  .scale( symbolScale )
  .orient( 'horizontal' )
  .labelWrap( 30 )
  .title( 'Symbol Legend Title' )

  // TODO: Specify colors for each symbol?

svg.select( '.legendSymbol' )
  .call( legendPath );

You would just need to select all of the cells after the fact to iterate over your colors. Unfortunately type type of double encoding is not default behavior, but here's a codepen that does something similar with the size legend: https://codepen.io/susielu/pen/RjeNbL
The relevant line for you would be something like this:
svg.selectAll(".cell path").attr("fill", (d, i) => colorScheme[i])

Thanks!


Fix CircleCI file [WIP]

⚠ WIP
Main issue is fixed, unit tests are still broken.

Feels good to see someone's interested!
I've fixed a bunch of linter errors, you can pull the commits in this PR from my fork on master (hash links are broken)

cc9db0c Add missing err handling from linter (megacheck)
10a4c33 Fix err string formating (golint)
dc94d53 Make linter ignore vendor directory

There's still errors on the API side (circle build), I'll probably try to fix them this week - please notice me if you're already working on it 😉

Thanks @halfa. I've added your fixes in this PR.


Failing actor test

2023-03-13T22:39:21.9408422Z panic: close of closed channel
2023-03-13T22:39:21.9408434Z
2023-03-13T22:39:21.9408551Z goroutine 6780 [running]:
2023-03-13T22:39:21.9409042Z github.com/nspcc-dev/neo-go/pkg/rpcclient/actor.(*EventWaiter).WaitAny(0xc00bcf8120, {0x16c9ff8, 0xc000050118}, 0x1, {0xc00bcee140?, 0x1, 0x1})
2023-03-13T22:39:21.9409394Z 	/home/runner/work/neo-go/neo-go/pkg/rpcclient/actor/waiter.go:338 +0xb76
2023-03-13T22:39:21.9409857Z github.com/nspcc-dev/neo-go/pkg/rpcclient/actor.(*EventWaiter).Wait(0x4a4537?, {0x16, 0xb3, 0xaf, 0xc6, 0x0, 0x29, 0x8, 0xa1, 0x59, ...}, ...)
2023-03-13T22:39:21.9410203Z 	/home/runner/work/neo-go/neo-go/pkg/rpcclient/actor/waiter.go:226 +0xd3
2023-03-13T22:39:21.9410608Z github.com/nspcc-dev/neo-go/pkg/services/rpcsrv.testSubClientWaitWithMissedEvent.func1()
2023-03-13T22:39:21.9410968Z 	/home/runner/work/neo-go/neo-go/pkg/services/rpcsrv/client_test.go:2244 +0x15c
2023-03-13T22:39:21.9411349Z created by github.com/nspcc-dev/neo-go/pkg/services/rpcsrv.testSubClientWaitWithMissedEvent
2023-03-13T22:39:21.9411710Z 	/home/runner/work/neo-go/neo-go/pkg/services/rpcsrv/client_test.go:2243 +0x586
2023-03-13T22:39:21.9411993Z FAIL	github.com/nspcc-dev/neo-go/pkg/services/rpcsrv	41.504s

A channel should be closed by its creator. A channel can be closed by wsclient. Easy as that. Or not?


PoC: use htoml's parser

This was an attempt to see if using the existing htoml's parser, but
translating to our own Toml type would:

Be easy to do

I think yes, it took just a tiny bit of translation code. I had to use
undefined for the Inline/Outline attribute because htoml doesn't have
this concept. I think that means we could remove it from our type, if
it's not needed for querying. If I'm wrong here, that could be the
deal breaker.

Pass the BurntSushi decoder tests

We're at 66/12 using this tiny spike. I haven't investigated yet as to
what's breaking the 12 remaining, but would be happy to do so if this
approach has merit.

Keep the benefits of improved queriability that prompted creating
this package in the first place

My assumption is that the querying code will work provided the
interface of our Toml type is preserved. This spike didn't change it
(modulo the Inline/Outline question) so I think this could be true.
If this approach is sound, my next step would be to drop all the
now-unnecessary modules and rebrand this as something like toml-query,
to avoid the import and module clashes, then investigate and address the
decoder test failures.
@clord what do you think?
Note: FWIW, if I update the QuerySpec to use undefined for the Inline/Outline field in the fixture document, it still passes.

I like the idea of having the ability to read from htoml's tree. Might make migration easier for some people. But I think there is room for internal optimizations to the parser too.

So what do you think would be the next steps to deciding on direction? (I don't think we should pursue both). Do you think our parser is far enough along that a benchmark would show if it's actually a performance win?

Using the latest version of htoml got us to 74/4.
Test: table-array-implicit (valid)

Malformed parser output. 'value' should be a JSON array when 'type' indicates 'array', but it is a map[string]interface {}.
-------------------------------------------------------------------------------
Test: table-array-many (valid)

Malformed parser output. 'value' should be a JSON array when 'type' indicates 'array', but it is a map[string]interface {}.
-------------------------------------------------------------------------------
Test: table-array-nest (valid)

Malformed parser output. 'value' should be a JSON array when 'type' indicates 'array', but it is a map[string]interface {}.
-------------------------------------------------------------------------------
Test: table-array-one (valid)

Malformed parser output. 'value' should be a JSON array when 'type' indicates 'array', but it is a map[string]interface {}.

74 passed, 4 failed

These last 4 are probably failing because of a bug in either htoml-toml-parse translation, or my JSON encoder. There seems to be some trickiness with arrays of values vs arrays of tables that's not being handled properly.

OK, this now passes all decoder specs.
It looks like tracking an array of tables vs an array of values is important; the burnt-sushi specs require a different JSON representation for the two cases. To do that, I introduced TTableArray to the TNamable data type. We're effectively a constructor-for-constructor copy of htoml's Node type now, so I really doubt there's any value in having our own representation.
I'd be most interested in re-branding this package as toml-query, providing a reworked version of just that module directly on top of the htoml type, and focusing on making that feature really great.
htoml is about to release 1.0 and I would bet on it becoming defacto. Any performance improvements would be better served as patches to that library rather than re-inventing an additional parser in another competing library, IHMO. And I think this PoC proves that an improved query interface (at least as far as is implemented here) can be accomplished on top of that type.
@clord WDYT?

I've decided to pursue this as a full parser. Early on I was open to doing a query layer, but since then we've both invested time in developing the parser further. There is exactly no harm in having some choice in the community over which parser. For instance, there are multiple xml parsers with different tradeoffs available. So the whole 'one true library' argument seems moot to me.


Plutus core/cgp 363

This fixes type substitutions, replacing them with type environments.

If there are no objections to merging, I will do so shortly.

Sorry, busy day. Looking into it.

Alright, should be good to go. I didn't bother with &&> and the like but that should be fine since it no longer uses a monadic approach.


redesign

fix: fail explicitly if current namespace is requested but not available
fix: retain annotation for reflective access
feat: add desired and matches methods on DependentResource

Made one more comment, I think we can merge it. Made a comment, but probably the best appraoch would be to fine tune it in a subsequent PRs.