Send response to user in the same thread where message is sent by user (using respond function)

Description
I am trying to have a message shortcut respond inside the same thread using the respond function. I have it working using say as described in this issue, but when I use respond it seems the thread_ts is ignored and the message is instead posted to the main channel (I'm using respond instead of say so i have temporary permission to respond inside private channels and messages). I'm not sure if this is a bug or an expected limitation of respond.
What type of issue is this? (place an x in one of the [ ])

[x] bug
[ ] enhancement (feature request)
[x] question
[ ] documentation related
[ ] example code related
[ ] testing related
[ ] discussion

Requirements (place an x in each of the [ ])

[x] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've searched for any related issues and avoided creating a duplicate issue.

Bug Report
Filling out the following details about bugs will help us solve your issue sooner.
Reproducible in:
package version: "@slack/bolt": "^1.6.0"
node version: v12.16.3
Steps to reproduce:
Glitch Project
Relevant function:
app.shortcut("add_image_shortcut", async data => {
  const { shortcut, ack, client, respond, body, context, payload, say } = data;
  ack();
  const { message } = body;
  // https://github.com/slackapi/bolt-js/issues/642
  const thread_ts = message.thread_ts || message.ts;

  // switching this to say make it post in the correct location, but i need to use respond so i a post to private channels
  respond({
    replace_original: false,
    text: "Search For a Comical Image",
    response_type: "ephemeral",
    thread_ts,
    blocks: [
      {
        type: "input",
        block_id: "query",
        label: {
          type: "plain_text",
          text: "Search For a Comical Image"
        },
        element: {
          type: "plain_text_input",
          action_id: "modal_search_phrase_input",
          placeholder: {
            type: "plain_text",
            text: "Enter a search phrase"
          }
        }
      },
      {
        type: "actions",
        elements: [
          {
            type: "button",
            text: {
              type: "plain_text",
              text: "Get an Comical reaction"
            },
            action_id: "preview_comical"
          }
        ]
      }
    ]
  });
});

Expected result:
Behaves the same as the say function, message is posted in thread:

Actual result:
Message is post in main thread

Hi @kaplantm, thanks for the detailed issue! 🙇🏻 Your code sample looks correct to me. Let me take some time to recreate it locally and get back to your shortly!

Hey @kaplantm, I wanted to loop around with you and not leave you hanging over the weekend!
⚒ I used your sample code to recreate the issue and started to look into the issue. You're correctly using the thread_ts value and Bolt's respond() function correctly sends the thread_ts to the response_url. From the client-side, everything looks good.
🏗 This appears to be a known issue with Slack Platform API. Next week, I'm going to spend some time learning whether a fix is planned or whether the respond_url documentation should mention that threaded responses are not correctly supported.
🏄🏻 The recommended workaround would be to use chat.postMessage to respond to the thread. The downside is that you'll need to request additional scopes to post to direct message, groups, and private channels. I know... this is exactly what you wanted to avoid with response_url. It's not ideal, but I hope gives you a path to move forward.
I'll loop back on this issue when I have an answer on the documentation update.

Thanks for the update. I will look into using postMessage in the meantime. Could you elaborate about how to use postMessage in a private channel / private messages? Based on the docs I thought I would have to gain authorization from each user (although I'm not sure how to do that, I keep searching for it but ending up on legacy documentation)

@kaplantm Your app needs to have im:write scope for starting a new DM. For creating public/private channels, it needs channels:manage. If everything is clear now, would you mind closing this issue?

Sorry, you're previous comment doesn't make sense to me. I don't understand how to use this as a workaround to respond to a message action in an existing private channel/DM thread. I cannot use the respond function since it does not respect threads. But I cannot use postMessage because it lacks the permissions to respond in private channels ("An API error occurred: channel_not_found"). Could you elaborate about how to use postMessage (and the setup/permissions necessary) to respond to a message action in a private channel / private DM thread?

@kaplantm

how to use this as a workaround to respond to a message action in an existing private channel/DM thread.
But I cannot use postMessage because it lacks the permissions to respond in private channels ("An API error occurred: channel_not_found").

There are some limitation but the workaround may not work in your use case. If your bot user is not a member of an existing conversation,

private channel: A human member of the conversation manually invites your app's bot user to the channel. There is no way to do this by your app's API call (as your app is not yet allowed to know even the existence of the channel)
1:1 DM / group DM: If your app's bot user is not a member of the DM, there is no way to use chat.postMessage with bot token. The only thing your app can do is to start a new DM that has the bot user as member

I hope this was helpful to you.


Update continuous-delivery-faqs.md

Updating a Gitops FAQ

 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.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6639f397470e75d2ebc5adb5--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6639f623fbcb4b0328703a4b--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6639f70bdb424800a496cf5f--harness-developer.netlify.app

@dsanthosh1 updated and approved. Let me know when to merge.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://66423f317c17a609b7c87a87--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6642f7cbfc4e5591fbec756a--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6642f7d49a4cd6916635597b--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6642f7de1f298a86745a99c7--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6642f7f9fc4e5591fbec7683--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6642f93eb1d2c8915d1afc61--harness-developer.netlify.app

@dsanthosh1 let me know when to merge.


Add Vector docs

This PR fixes #766
Maybe this could still use a special mention of the ArrowAuxiliaryData

Looks good, thanks!


[kong] Add serviceMonitor.honorLabels and serviceMonitor.metricRelabelings.

What this PR does / why we need it:
This PR adds the serviceMonitor.honorLabels and serviceMonitor.metricRelabelings to values and fixes the TOC in README.md btw.
Which issue this PR fixes
None
Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] PR is based off the current tip of the next branch and targets next, not main
[x] New or modified sections of values.yaml are documented in the README.md
[x] Title of the PR and commit headers start with chart name (e.g. [kong])

 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.

Ah, right, merging https://github.com/Kong/charts/pull/395 won't actually fix CI here yet; this is still based on next before that.
@wi1dcard this looks fine, we just need it to pass CI. That broke because of issues with the job configuration, which we've now fixed. If you update your fork with latest next, rebase, and push the result, it should be good to go.

Ah, right, merging #395 won't actually fix CI here yet; this is still based on next before that.
@wi1dcard this looks fine, we just need it to pass CI. That broke because of issues with the job configuration, which we've now fixed. If you update your fork with latest next, rebase, and push the result, it should be good to go.

Rebased, please check out.

Hey there, is there any chance we can publish a new release with this PR merged? Thanks!

@wi1dcard it got unlucky with timing and the CI issue--it came in as I was about to release 2.2 (which had a bunch of stuff overdue for release due to work elsewhere) and the CI breakage prevented including it (I wish Github had a way to rebase PRs without opening a new branch and cherry-picking from forks).
Does your environment easily allow you to make the changes to the serviceMonitor manually temporarily (although not desirable, Helm 3 will at least preserve the edits if you need to upgrade a release) or work from a local copy of the chart (check out the repo at next and point Helm to the local location instead of using the hosted release)? There are a few things I'd like to get in place before a 2.3 release.

@wi1dcard it got unlucky with timing and the CI issue--it came in as I was about to release 2.2 (which had a bunch of stuff overdue for release due to work elsewhere) and the CI breakage prevented including it (I wish Github had a way to rebase PRs without opening a new branch and cherry-picking from forks).
Does your environment easily allow you to make the changes to the serviceMonitor manually temporarily (although not desirable, Helm 3 will at least preserve the edits if you need to upgrade a release) or work from a local copy of the chart (check out the repo at next and point Helm to the local location instead of using the hosted release)? There are a few things I'd like to get in place before a 2.3 release.

I see. That makes sense. Thank you for your explanation! I've temporarily made some changes on the ServiceMonitor. I was wondering when will this PR get released so I can apply the changes with Helm. :)


fix: handle child layouts

Handle child layouts depending
on if they have flowLayout true or false.
Fixes all layouts having flowLayout
if the parent layout or one child has
flowLayout true.
Fixes vaadin/flow#20261

@platosha could you or someone else from Hilla team please review this pull request before we lost the memories what the topic was about 😄


Separate internal and external gRPC servers

Closes #1293
This PR does the following:

Create separate gRPC servers for external and internal APIs
Sidecar TLS policy for internal server is set to require certificate, thereby strengthening security
Updates the sidecar injector and operators to mind the new port
For self-hosted mode, daprd will pick an available port if not given
Updated tests
Commented out updating components from the operator, which was never functional, in order to re-evaluate it in a PR for that purpose

And Github Actions is down again..

This branch is failing to build with GH actions, re-opened with #1300


⚠ AVS (kty) has degraded performance

In 9c8c0bc, AVS (kty) (https://avus.com.br) experienced degraded performance:

HTTP code: 200
Response time: 8244 ms

Resolved: AVS (kty) performance has improved in 577ab16.


BUILD FAILED: installing realsense2

I have attempted to install realsense2 using  vcpkg install realsense2 command however,
C:\Users\June Han\Documents\GitHub\vcpkg>vcpkg install realsense2
Computing installation plan...
The following packages will be built and installed:
    realsense2[core]:x86-windows -> 2.40.0
Detecting compiler hash for triplet x86-windows...
Could not locate cached archive: C:\Users\June Han\AppData\Local\vcpkg\archives\6d\6d6cb5c6074c273821ce4aa31a0f0ec2ade67eaa.zip
Starting package 1/1: realsense2:x86-windows
Building package realsense2[core]:x86-windows...
-- Using cached C:/Users/June Han/Documents/GitHub/vcpkg/downloads/IntelRealSense-librealsense-aae6f315ce80ff80df5bc9439b4ee852187533c1.tar.gz
-- Cleaning sources at C:/Users/June Han/Documents/GitHub/vcpkg/buildtrees/realsense2/src/52187533c1-c3b9df90a7.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source C:/Users/June Han/Documents/GitHub/vcpkg/downloads/IntelRealSense-librealsense-aae6f315ce80ff80df5bc9439b4ee852187533c1.tar.gz
-- Applying patch fix_openni2.patch
-- Applying patch fix-dependency-glfw3.patch
-- Using source at C:/Users/June Han/Documents/GitHub/vcpkg/buildtrees/realsense2/src/52187533c1-c3b9df90a7.clean
-- Configuring x86-windows
-- Building x86-windows-dbg
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:145 (message):
    Command failed: "C:/Users/June Han/Documents/GitHub/vcpkg/downloads/tools/cmake-3.18.4-windows/cmake-3.18.4-win32-x86/bin/cmake.exe" --build . --config Debug --target install -- -v -j13
    Working Directory: C:/Users/June Han/Documents/GitHub/vcpkg/buildtrees/realsense2/x86-windows-dbg
    See logs for more information:
      C:\Users\June Han\Documents\GitHub\vcpkg\buildtrees\realsense2\install-x86-windows-dbg-out.log

Call Stack (most recent call first):
  scripts/cmake/vcpkg_build_cmake.cmake:96 (vcpkg_execute_build_process)
  scripts/cmake/vcpkg_install_cmake.cmake:27 (vcpkg_build_cmake)
  ports/realsense2/portfile.cmake:47 (vcpkg_install_cmake)
  scripts/ports.cmake:136 (include)

Error: Building package realsense2:x86-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with `.\vcpkg update`, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
  Package: realsense2:x86-windows
  Vcpkg version: 2020.11.12-nohash

I have pulled the latest version from github.
I do have windows sdk installed.
I have also attached the log below for reference if needed. Any help would be greatly appreciated.
install-x86-windows-dbg-out.log

The install-x86-windows-dbg-out.log shows:

C:\Users\June Han\Documents\GitHub\vcpkg\buildtrees\realsense2\src\52187533c1-c3b9df90a7.clean\src\win\win-helpers.cpp(15): fatal error C1083: Cannot open include file: 'atlstr.h': No such file or directory

In the Visual Studio Installer, make sure these are installed in the Desktop development with C++ workload

The atlstr.h file should be located in C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\atlmfc\include

I checked and C++ MFC is the issue.  After updating installations, I was able to install it successfully. Thanks for the help!


Auth

Hey guys.
Any way to implement a auth layer over the element api? Even if it's just Basic Auth?

See https://github.com/pixelandtonic/ElementAPI/issues/17 and https://github.com/pixelandtonic/ElementAPI/issues/18

Cool. Thanks for the references 👍


Feature/prepare publish

Changes proposed in this Pull Request:

Get ready to publish the 6.1.1 milestone.
https://github.com/brightlayer-ui/react-themes/milestone/1

After this gets merged in, we'll need a master PR.


[tree] persistAs* Functions have other behaviour on already persisted items, PR for #422

Attached is a test for the issue
the test fails with:
There was 1 failure:

1) Gedmo\Tree\NestedTreePositionTest::testFullTreePositionUpdates
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
 '
+ Vegitables
+ Meat
 Food
- Vegitables
+ Milk
  Fruits
   Citrons
   Oranges
- Milk
- Meat

 '

D:\www\DoctrineExtensions\tests\Gedmo\Tree\NestedTreePositionTest.php:194

In my humble oppinon this should produce / update the same tree as before, shouldn't it?
If we don't do a clear() after popuplate we get an exception:
1) Gedmo\Tree\NestedTreePositionTest::testFullTreePositionUpdates
Gedmo\Exception\UnexpectedValueException: Cannot set child as parent to node: 5

D:\www\DoctrineExtensions\lib\Gedmo\Tree\Strategy\ORM\Nested.php:325
D:\www\DoctrineExtensions\lib\Gedmo\Tree\Strategy\ORM\Nested.php:166
D:\www\DoctrineExtensions\lib\Gedmo\Tree\TreeListener.php:123
D:\www\DoctrineExtensions\vendor\doctrine-common\lib\Doctrine\Common\EventManager.php:62
D:\www\DoctrineExtensions\vendor\doctrine-orm\lib\Doctrine\ORM\UnitOfWork.php:296
D:\www\DoctrineExtensions\vendor\doctrine-orm\lib\Doctrine\ORM\EntityManager.php:355
D:\www\DoctrineExtensions\tests\Gedmo\Tree\NestedTreePositionTest.php:189
C:\Program Files (x86)\PHP\phpunit:46

issue #422

I use pretty much the same workaround than you @zhil (nestedTree.js too), but when I flush the tree, in database the left, depth and right values are messy. Is it because Nested Tree his doing his own stuff during the loop and this interfere with the manually ->set() functions ?
Strange because when I dump my entities during the loop, everything is ok in their properties.
I'm stuck since 3 days on it

Hello, and thank you for your contribution.
In the interest of spring cleaning and package modernization, I'm going through and closing old issues and pull requests that have had no recent activity, do not have associated tests, or have failing tests.
If you are still experiencing this issue or wish to contribute an up-to-date pull request, please create a new issue.
Thank you!


added support for isso: http://posativ.org/isso/

Now...

@dertuxmalwieder This has been rebased and merged into master. Thanks! :)

Thanks too!


session persistence with protocol version 5

Hi,
Not sure if this is a bug or if I'm doing something wrong here. I'm trying to establish a persistence session with my subscribing client. Using protocol version 3 (protocol=ProtocolVersion.V311) in combination with clean_session=False I see outstanding messages published with QOS 1 being picked up after a reconnect.
Swapping that out for protocol version 5 (protocol=ProtocolVersion.V5) in combination with clean_start, however, does not show the same behavior, no matter if I use clean_start=1, clean_start=2 or clean_start=3.
I tested them all because it is not really clear how the docs

clean_start – (MQTT v5.0 only) Set the clean start flag always, never, or only on the first successful connection to the broker.

translate to the values. The persistent session section  in the docs refers to the clean_session parameter only.
Could you please let me know what I'm doing wrong or confirm that this is a bug?
client code
def _get_aiomqtt_client(
    clean_session: bool = False, tls_context: ssl.SSLContext | None = None
):
    _id = "worker-client"
    port = settings.MQTT.TCP_PORT

    if tls_context is not None:
        port = settings.MQTT.TLS_PORT

    return aiomqtt.Client(
        hostname=settings.MQTT.HOSTNAME,
        port=port,
        username=settings.MQTT.USERNAME,
        password=settings.MQTT.PASSWORD,
        client_id=_id,
        tls_context=tls_context,
        protocol=ProtocolVersion.V5,
        clean_start=3,  # or 0 | 1 | 2  makes no difference
        )

version
aiomqtt==1.2.1

Edit
Looking at the paho source code I see
:param bool clean_start: (MQTT v5.0 only) True, False or MQTT_CLEAN_START_FIRST_ONLY

where
MQTT_CLEAN_START_FIRST_ONLY: CleanStartOption = 3

So it's either 0,1 or 3 (gotta love constructs like this).
To make this work you need to create the client like this
def _get_aiomqtt_client(
    clean_session: bool = False, tls_context: ssl.SSLContext | None = None
):
    from paho.mqtt.properties import Properties
    from paho.mqtt.packettypes import PacketTypes
    properties=Properties(PacketTypes.CONNECT)
    properties.SessionExpiryInterval = 30 * 60 # in seconds

    _id = "worker-client"
    port = settings.MQTT.TCP_PORT

    if tls_context is not None:
        port = settings.MQTT.TLS_PORT

    return aiomqtt.Client(
        hostname=settings.MQTT.HOSTNAME,
        port=port,
        username=settings.MQTT.USERNAME,
        password=settings.MQTT.PASSWORD,
        client_id=_id,
        tls_context=tls_context,
        protocol=ProtocolVersion.V5,
        clean_start=2,
        properties=properties
    )

Hi there, let's try to get to the bottom of this together 🙂
paho-mqtt is unfortunately a bit light on documentation. As far as I know, clean_session is a valid argument both for MQTTv3 and MQTTv5. I would leave clean_start at its default for now when we compare the two.
I'm having trouble reproducing this from your description. Could you post a minimal example that's runnable as-is and that shows the difference from your expectation?

I'll tentatively close this as there have been no further responses. If it is still a problem, please feel free to reopen! 🙂


Update Site settings “info”

Automatically generated by Netlify CMS

👷 Deploy Preview for agitated-bhaskara-57e91d processing.
🔨 Explore the source changes: 7636a6af623315a3861e4dd40c9ee2e924ed95ce
🔍 Inspect the deploy log: https://app.netlify.com/sites/agitated-bhaskara-57e91d/deploys/61353c7b7d685e0007326cf2


Preloading fails due to case insensitivity when foreignKey is a string

Describe the feature

Allow callers to specify how to generate utils.ToStringKey if foreignKey is a string.

Motivation

MySQL is not case-sensitive unless you add the "BINARY" setting.
For this reason, if the foreignKey type is string, the Association feature is not available.
Therefore, we would like to be able to operate on key that are generated from foreignKey in utils.ToStringKey with functional pattern.

Related Issues

@shinngohamatani Is this the same issue? In mysql with string keys, sometimes they are "On Sale" and other times "On sale", and when we preload, we see an error:
failed to assign association \u0026main.Tag{KeyName:\"tags\", Value:\"On Sale\"}, make sure foreign fields exists
To fix the problem I need to update all Value to exact match (case sensitive) but I expect that it should be case insensitive.

@shinngohamatani Is this the same issue? In mysql with string keys, sometimes they are "On Sale" and other times "On sale" (notice capital Sale and lowercase sale), and when we preload, we see an error: failed to assign association \u0026main.Tag{KeyName:\"tags\", Value:\"On Sale\"}, make sure foreign fields exists To fix the problem I need to update all Value to exact match (case sensitive) but I expect that it should be case insensitive.

I think it is, we have the same problem. Very annoying to get around this.

I've verified this - using UUID strings as FK's - all need to be the same case, or this error happens. I'm using Preload to get my child records.


OLS-272:  Disable question validation for follow-up questions

Description
Disable question validation for follow-up questions.
Type of change

[x] New feature

/lgtm
/approve


test: updated tests with aghelper table methods

updated isSelectedRow() with table_SelectedRow()

/ci-test-limit


Implement SYCL local memory

We need an analog to implement the behavior numba.cuda.shared.array

Possibly we need data structure for local memory.
dppy.local.static_alloc(shape=10, dtype=float32) should looks like array creation dppy.local.array(shape=10, dtype=float32)
dtype should be Numba or NumPy type? Try to change to NumPy types.

This issue is resolved. Example of local memory creation in test here.


Reverse proxy is not rewriting urls

Describe the bug
Using reverse for proxy does not rewrite urls for proxying
server:
  - name: default
    protocol: http
    host: xtream.myhost.com
    http_port: 0
    https_port: 443
    rtmp_port: 0
    timezone: America/Chicago
    message: Welcome to m3u-filter

user:
  - target: pl1
    credentials:
      - username: myuser
        password: mypassword
        proxy: reverse

and then
curl https://xtream.myhost.com/m3u?username=myuser&password=mypassword

URLs are upstream urls. I expect them to be https://xtream.myhost.com. Is that the intent of reverse proxy?

The Proxy Configuration is currently only for xtream api implemented. I need to implement it for m3u.

@RohirrimRider  i have implemented the reverse proxy functionality for m3u playlist.
feature/m3u_reverse_proxy
You can test it and give me a feedback

merged on master


Does static web apps support path wildcard rewrite?

How can I use route configuration to setup path wildcard write in azure static web apps?
For example, I have a website domain: https://myweb.azurestaticapps.net, and file structure like below:

/js

/default.js
helper.js

/assets

/imgs

/p1.jpg
/p2.jpg

I'd like to use wildcard pattern in rewrite property just as what reverse proxy does.
ex:

/myjs/default.js ----> /js/default.js
/imgs/p1.jpg ----> /assets/imgs/p1.jpg

I've set route rewrite rules in staticwebapp.config.json but it was not work:
{
  "routes": [
    {
      "route": "/myjs/*",
      "rewrite": "/js/*"
    },
    {
      "route": "imgs/*",
      "rewrite": "/assets/imgs/*"
    }
  ]
}

Is there any way to do this in static web apps? please help, thanks!
BTW, I think It would really useful especially when migrating our legacy website into azure static web apps!

We currently don't support wildcard paths for rewrite, but can consider supporting that in the future!

Think this is a pretty critical feature.
Consider applications where some routes are actually served server-side rendered (SSR) (common in NextJS, but also in other frameworks). In this case you would want a route that's SSR'ed to be handled like this. If the route is /users/* for viewing a user profile.
{
     route: "/users/*",
     rewrite: "/api/users/*"
}

However, I think this should be handled via capture as well which would make it not just consistent with other hosting platforms but also consistent with azure itself as other azure services would make the syntax roughly look like this.
{
     route: "/users/{user-id}",
     rewrite: "/api/users/{user-id}"
}

Which also plans better for nested wildcard support in the future.

@robersonliou and SWA team.
Sorry there is a easy and straight forward way to do this, follow the SWA Azure front door documentation, then use azure front door's rewrite system which has more advanced capture group, nested wildcard, etc support.

@ShanonJackson This is a basic requirement for many website that shouldn't need a global CDN service such as front door to resolve.  https://website.com/0000011 where the path(0000011) is a configuration code. I can use a staticwebapp.config rewrite to index.html to load the page but I lose my code.

I'm currently porting a website over from Netlify and the only issue I'm facing is the lack of wildcard rewrites. In Netlify I have a number of redirects
/what-we-think/editions/:category/page/:pagenumber/                             /what-we-think/editions/:category/
/blog/page/:pagenumber/                                                         /blog/
/:year/feed/*                                                                   /blog/

These rules affect several hundred pages.
I'd also like to point out the Netlify redirects file format is a very simple line per rule, space separated format... I've found it a much nicer file format than the JSON equivalent. I had to write a .NET Interactive notebook to convert from the Netlify format to the SWA JSON based format: https://gist.github.com/HowardvanRooijen/4d816612fddaabd88e706d0f6642c919

This could be useful for redirects too

@ShanonJackson @anthonychu suggested to use AzFn API for redirects:

https://johnnyreilly.com/azure-static-web-apps-dynamic-redirects-azure-functions says:

name the single function fallback, so it will be served up at /api/fallback. The code of the function is:

//@ts-check
const { parseURL } = require('ufo');
const routes = require('./redirects');

/**
 *
 * @param { import("@azure/functions").Context } context
 * @param { import("@azure/functions").HttpRequest } req
 */
async function fallback(context, req) {
  const originalUrl = req.headers['x-ms-original-url'];
  if (originalUrl) {
    // This URL has been proxied as there was no static file matching it.
    context.log(`x-ms-original-url: ${originalUrl}`);

    const parsedURL = parseURL(originalUrl);

    const matchedRoute = routes.find((route) =>
      parsedURL.pathname.includes(route.route)
    );

    if (matchedRoute) {
      context.log(`Redirecting ${originalUrl} to ${matchedRoute.redirect}`);

      context.res = {
        status: matchedRoute.statusCode,
        headers: { location: matchedRoute.redirect },
      };
      return;
    }
  }

  context.log(
    `No explicit redirect for ${originalUrl} so will redirect to 404`
  );

  context.res = {
    status: 302,
    headers: {
      location: originalUrl
        ? `/404?originalUrl=${encodeURIComponent(originalUrl)}`
        : '/404',
    },
  };
}

module.exports = fallback;

and  staticwebapp.config.json:
  "navigationFallback": {
    "rewrite": "/api/fallback"
  },
  "platform": {
    "apiRuntime": "node:18"
  },
  "routes": [
    {
      "route": "/404",
      "statusCode": 404
    }...

Redirect are driven by an entry in the redirects.js file:
  {
    route: '/2014/01/upgrading-to-typescript-095-personal.html',
    redirect: '/2014/01/09/upgrading-to-typescript-095-personal',
    statusCode: 301,
  },

I would find this feature very useful for my documentation site. I host multiple versions of documentation and it would be nice to allow a latest route which would get whatever the most recent version was. Therefore, I would like to rewrite e.g. latest/{page} to 1_2_1/{page} where each time I publish with a new version I would just update the rewrite rule for latest/{page} (there are too many pages to want to insert individual rewrite rules on a per page level).
Also, because each documentation set is built separately and then combined for publication to the SWA, they currently each deploy and reference their own css/js/etc. files. It would be really nice to be able to rewrite {version}/_static/{page} to _static/{page} and have them share common files. Again, doing this via wildcard rewriting would be much nicer (and less error prone) than crawling over all pages to update every reference to a static resource.
The solution suggested above by @OzBob could be made to work, but it forces a redirect rather than a rewrite - I would much rather a user is able to keep working with latest/* rather than being redirected to a specific version.
@mkarmark you say "can consider supporting that in the future!". Is there any mechanism, other than posting in this issue, for lobbying to get this feature moved up the priority ladder? I really like the SWA paradigm and it otherwise fits really well for my use case, but the lack of this one simple feature is a major stumbling block for me.

similar for redirects. and given the limit of 20kb for the config file this has made migrating sites and maintaining links near impossible without more coding.


Requesting for the use of latest crates namely anchor_spl 0.30.0 and others

I'm using solpg for a while it the experience is great it pretty much does the heavy lifting.
I would loved see the integration of anchor_spl 0.30.0
Thank You for your hard work

This upgrade is more challenging than other upgrades mainly because of the Anchor IDL changes (which we also use in the app itself) and the new declare_program! macro. Upgrading the crate versions won't be enough, and unfortunately, I don't know when I'll be able to get to this.
Thanks for your kind words!

Thank you for replying .
And we can use latest anchor version in vscode right?

Yes, of course.
https://www.anchor-lang.com/docs/installation


Benchmark Ruby-macho vs otool?

First of all, good work here. :bow:
Since now this is included in Homebrew, I'm curious to know the performance between Ruby implementation vs old otool. So how about adding benchmark along side test suite?

Thank you!
Benchmarking is a great idea. Do you have any instrumentation in mind?

You may find https://github.com/evanphx/benchmark-ips useful.

This looks great. I'm expanding the test suite on rarer/unusual load commands today, but I'll see about adding this tomorrow.

Certainly not a full-featured benchmark, but here are some numbers that give an indication of the status quo on crunching through a large number of files and identifying/dumping Mach-O files among them. (Spoiler: There's still room for improvement). Numbers obviously depend on a lot of factors, including what formulae are installed and disk speed. I'm showing numbers for three consecutive runs, so caching effects were taken into account to some degree.

If I had to take an educated guess, I'd bet that a significant part of the overhead is in the exception handling used to choose which class to load a Mach-O with.
The simple solution is to change MachO.open to open the file, do a magic test, and then pass the read file to FatFile/MachOFile via new_from_bin (and set the filename correctly). I'll add this tonight or tomorrow.

If I had to take an educated guess, I'd bet that a significant part of the overhead is in the exception handling used to choose which class to load a Mach-O with.

Good guess, but probably an insignificant overhead in the grand scheme of things. I haven't rigorously tested it, but my guess would be the IO overhead from reading every file completely into memory, while it would be sufficient to read only a few bytes to decide whether it's a Mach-O file (or not) and at most a few KB to read and parse all load commands for all architectures in case it actually is a (fat) Mach-O file. This would also explain why the CPU utilization is relatively low.

The simple solution is to change MachO.open to open the file, do a magic test, and then pass the read file to FatFile/MachOFile via new_from_bin (and set the filename correctly). I'll add this tonight or tomorrow.

This is a good and worthwhile optimization, but I think addressing the above will have a higher impact.

I haven't rigorously tested it, but my guess would be the IO overhead from reading every file completely into memory

This makes a lot of sense.
Since Homebrew interacts with ruby-macho solely through MachO.open, I can optimize this as well within the same PR.

Since Homebrew interacts with ruby-macho solely through MachO.open, I can optimize this as well within the same PR.

You could focus on optimizing this part while I try to clean up my endianess-WIP branch and start moving chunks of it here (via PRs). How does that sound?

You could focus on optimizing this part while I try to clean up my endianess-WIP branch and start moving chunks of it here (via PRs). How does that sound?

That sounds fantastic. I've opened a preliminary PR as #22 (not much in it yet)


[Protection] K App.

https://store.steampowered.com/app/1080130/QuietMansion2/
Incorporates 3rd-party DRM: K App.
KGSS(K GAME Security System) machine activation limit

https://store.steampowered.com/app/1351290/AccidentHouse/

https://store.steampowered.com/app/1704550/TEST_RE/

https://store.steampowered.com/app/1578440/QuietMansion1/


Fix: build on React Native 0.74

Description
Use install_modules_dependencies if available so we can easily support new react-native versions.
Fixes #33
Screenshots

Tests
It should work correctly in the example and RN 0.74+

Thanks!

landed in v2.1.1! Thanks


Error on simple graph

I try to render this simple graph and get this error: mermaid.min.js:28160 Uncaught TypeError: Cannot read property '0' of undefined.
What is wrong?
graph LR;
  head(head) --> file(file);
  file(file) --> just_link(just_link);
  file(file) ==> job_234(job_234);
  just_link(just_link) ==> joiner(joiner);
  joiner(joiner) --> csv(csv);
  job_234(job_234) --> job2_234(job2_234);

Turns out that the character v is also a keyword as in direction down which causes a syntax error in this graph. v cannot be used in ids. Will fix that.

Thank you! Works now!


Questions about Distance Label Generation Algorithm

Hi, thanks for sharing the code.
When I was training PolarMask, I noticed there are a lot of coordinate be targeted as the minimum number 10^-6. I am confused about why not chose the points outside $\Delta \theta$. Does this affect the results?
Thanks a lot!

Hi
Great question.
(1) some positive samples which are outside the mask, the distance in certain angles are set to a small value e.g. 10-6. Because these outliers have no Intersection with GT contours.
(2) These positive samples will not affect the final result, because these are low-quality positive samples(please refer to the definition of 'CenterNess'). So during inference the score of these outliers is low, and will be removed by NMS.


Yarn install Bug

Describe the bug
Upon running yarn install throws unable to get local issuer certificate.

When setting up the Bot composer tool the yarn install command throws the error as per below
yarn install v1.22.0
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
warning Pattern ["@bfcomposer/bf-lu@https://botbuilder.myget.org/F/botbuilder-declarative/npm/<EMAIL_ADDRESS>is trying to unpack in the same destination "C:\Users\perappr\AppData\Local\Yarn\Cache\v6\npm-@bfcomposer-bf-lu-1.1.8--integrity\node_modules\@bfcomposer\bf-lu" as pattern ["@bfcomposer/bf-lu@^1.1.8","<EMAIL_ADDRESS>This could result in non-deterministic behavior, skipping.
error An unexpected error occurred: "https://registry.yarnpkg.com/office-ui-fabric-react/-/office-ui-fabric-react-7.62.0.tgz: unable to get local issuer certificate".
Version

Browser

[ ] Chrome
[ ] Safari
[ ] Firefox
[ ] Edge

OS

[ ] macOS
[ ] Windows
[ ] Ubuntu

To Reproduce
steps tried from this link https://github.com/microsoft/BotFramework-Composer
Below are the steps executed.
$ cd Composer // switch to Composer folder
$ yarn install // install dependencies  --->
Steps to reproduce the behavior:
Follow steps

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior

Screenshots

Additional context

Hi, @perappr which os did you use? I have tried the master branch in win10, but it worked well

Hello @perappr this looks related to https://github.com/yarnpkg/yarn/issues/841. Can you read through that issue and see if the suggested config changes apply to you?


Fixed failing tests

Fixed failing tests
Tests are failing on content change from "Exit beta" button id being changed to "Continue to page"

Sorry, didn't realise these were already being worked on


UsernameJavaRegEx is not considered when adding the super admin

Describe the issue:
The super admin creation bypasses the username validation. Hence this could run into unexpected issues if the admin username was misconfigured.
How to reproduce:

Start the server once
Then set the super admin username to empty and start again

[super_admin]
username = ""

A user with an empty username is created while UsernameJavaRegEx is set to ^[\S]{3,30}$

Expected behavior:
It should error out saying username does not match with the regex
Environment information

Product Version: IS 5.10.0
Database: H2
Userstore: JDBC

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


Update sbt-typelevel, ... to 0.6.0

About this PR
📦 Updates

org.typelevel:sbt-typelevel
org.typelevel:sbt-typelevel-github-actions
org.typelevel:sbt-typelevel-site

from 0.4.22 to 0.6.0
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.typelevel" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.typelevel" }
}]

labels: sbt-plugin-update, early-semver-major, semver-spec-minor, version-scheme:early-semver, commit-count:1

Superseded by #267.

Superseded by #274.


[Help] Dataset Download Problem

Hello, thanks for your work!
I have trouble downloading the dataset because some image URLs are invalid. I can only download 911 images rather than 1000.
So could you help share the original images? Thanks!

Hello, thanks for your work!
I have trouble downloading the dataset because some image URLs are invalid. I can only download 911 images rather than 1000.
So could you help share the original images? Thanks!

Thanks for your interest! I just provide the original 1000 images with the required size of 299x299 in the folder "dataset/images". Enjoy!

Hello, thanks for your work!
I have trouble downloading the dataset because some image URLs are invalid. I can only download 911 images rather than 1000.
So could you help share the original images? Thanks!

Thanks for your interest! I just provide the original 1000 images with the required size of 299x299 in the folder "dataset/images". Enjoy!

Thanks for your interest! I just provide the original 1000 images with the required size of 299x299 in the folder "dataset/images". Enjoy!

I appreciate your kind help very much! Much thanks!

Thanks for your interest! I just provide the original 1000 images with the required size of 299x299 in the folder "dataset/images". Enjoy!

I appreciate your kind help very much! Much thanks!

Thanks for your interest! I just provide the original 1000 images with the required size of 299x299 in the folder "dataset/images". Enjoy!

I appreciate your kind help very much! Much thanks!

Thanks for your interest! I just provide the original 1000 images with the required size of 299x299 in the folder "dataset/images". Enjoy!

I appreciate your kind help very much! Much thanks!


Upload empty folders

Hi
We're not able to upload empty folders.
We are able to upload file structures but filepond ignores empty folders. Is there a way that we can upload empty folders too?
It would be good could have a callback for empty folders. That would be awesome.
Somebody in the past already requested that. But the ticket was closed due to low demand.
https://github.com/pqina/filepond/issues/463
Is there a chance that we can upload empty folders with froala? I've tried everything but failed unfortunately

No duplicate tickets please. Keep it in #463


:error_logger.add_report_handler(Sentry.Logger) not working on remote_console (production)

Environment

Elixir version (elixir -v):  1.5.1
Erlang/OTP version (erl): Erlang/OTP 19
Sentry version (mix deps): 6.0.5
Operating system: Linux

Description
Hello, thanks for the great job on the Sentry client but I have found an issue. When I configure Sentry by adding also :error_logger.add_report_handler(Sentry.Logger) in the start function in the following way:
   ...
    res = Supervisor.start_link(children, opts)

    if !(Sentry.Logger in :gen_event.which_handlers(:error_logger)) do
      :ok = :error_logger.add_report_handler(Sentry.Logger)
    end

    res
  end

The runtime exceptions are not reported while when I explicitly capture them (using the Sentry library) they are reported.
If I run in the console Sentry.capture_exception("test", [stacktrace: System.stacktrace(), extra: %{extra: "test"}]), this get's sent to Sentry (in the remote machine as well as when I run the app in development)
Expected Behavior
When I log in production and open the remote_console, I run Task.async(fn -> raise("ooops") end) and I receive a Sentry notification about an Erlang error that just occurred.
Actual Behavior
When I log in production and open the remote_console, I run Task.async(fn -> raise("ooops") end) nothing happens.
Steps to Reproduce
ssh on your production or staging machine configuring Sentry to capture the current env, open the remote console with ./bin/nameofyourapp remote_console and run Task.async(fn -> raise("ooops") end)
Anybody has any idea on how to debug that? Is it maybe that in the remote console runtime errors don't get reported? I am worried that if the app crashed in production I would not get any notification. Also, is there anything that I can check to make sure that the events are actually sent to the Sentry.Logger gen_event?

:gen_event.which_handlers :error_logger # => [Sentry.Logger, :sasl_report_tty_h, Logger.ErrorHandler, :error_logger] is what I see when I run this code on prod :/

@lorenzosinisi thanks for opening an issue, I'll definitely look into this.
Are you building releases using distillery?

Yes, using distillery.  But not if you create an error only in the console. Is definitely has to do with the way the remote_console works

I took a look into this, and I see the issue, but I'm not sure how to go about solving it yet.  It's hitting this clause: https://github.com/getsentry/sentry-elixir/blob/master/lib/sentry/logger.ex#L46-L48, but Elixir's Logger.ErrorHandler has the same clause and still gets called correctly.
I'll have to try to find some more information on why that would be.

@lorenzosinisi would you be able to give the master branch a try and see if the incorrect behavior persists?


Configure Readthedocs

Configure readthedocs properly with hooks, and update readme to reflect how this works.

Recreated hook/integration, we'll see if it works


Update Package Names for Fedora

Following the installation guide to install scipy system wide on fedora:
sudo dnf install numpy scipy python-matplotlib ipython python-pandas sympy python-nose atlas-devel
Produces the error:
No match for argument: scipy
No match for argument: sympy
Error: Unable to find a match: scipy sympy

I've updated the guide to include the correct package names:
sudo dnf install python-numpy python-scipy python-matplotlib ipython python-pandas python-sympy python-nose atlas-devel

Here https://developer.fedoraproject.org/tech/languages/python/scipy.html I can see that they use python3-... instead. Not sure what's preferred.

Here https://developer.fedoraproject.org/tech/languages/python/scipy.html I can see that they use python3-... instead. Not sure what's preferred.
Also I thought we cleaned this page a bit more than that. We are still referring to other packages than SciPy. cc @melissawm

It seems that python-... will point to the version of python the user is running. I'm not sure what the preferred way is.
Based on a chat I had with other fedora users it seems python3-... would be "more correct".
I've gone ahead and updated it.
Thank you @tupui for pointing it out.

I would use python3-ipython as well.  We don't need python3-nose or atlas-devel.
The whole page needs some attention, but that can be in a separate PR.

I would also change the heading from Fedora 22 and later to Fedora.

Thanks!


Heapster not compatible with kubeclient that uses v1beta3

I see List failures when heapster uses v1beta3 client library. I haven't looked at the client library differences when it comes to kubernetes API versions. This behavior is odd since the kube client exposes internal API objects.
2015-04-13T21:58:28.706955553Z + EXTRA_ARGS=
2015-04-13T21:58:28.706992235Z + '[' '!' -z --kubernetes_version=v1beta3 ']'
2015-04-13T21:58:28.706992235Z + EXTRA_ARGS=--kubernetes_version=v1beta3
2015-04-13T21:58:28.706992235Z + '[' '!' -z <IP_ADDRESS> ']'
2015-04-13T21:58:28.706992235Z + EXTRA_ARGS='--kubernetes_master <IP_ADDRESS>:80 --kubernetes_version=v1beta3'
2015-04-13T21:58:28.706992235Z + HEAPSTER=/usr/bin/heapster
2015-04-13T21:58:28.706992235Z + case $SINK in
2015-04-13T21:58:28.706992235Z + HEAPSTER='/usr/bin/heapster --sink influxdb'
2015-04-13T21:58:28.706992235Z + '[' '!' -z <IP_ADDRESS> ']'
2015-04-13T21:58:28.706992235Z + INFLUXDB_ADDRESS=
2015-04-13T21:58:28.706992235Z + '[' '!' -z <IP_ADDRESS> ']'
2015-04-13T21:58:28.706992235Z + INFLUXDB_ADDRESS=<IP_ADDRESS>:80
2015-04-13T21:58:28.706992235Z + /usr/bin/heapster --sink influxdb --sink_influxdb_host <IP_ADDRESS>:80 --kubernetes_master <IP_ADDRESS>:80 --kubernetes_version=v1beta3
2015-04-13T21:58:28.721064549Z I0413 21:58:28.721008       7 heapster.go:45] /usr/bin/heapster --sink influxdb --sink_influxdb_host <IP_ADDRESS>:80 --kubernetes_master <IP_ADDRESS>:80 --kubernetes_version=v1beta3
2015-04-13T21:58:28.721130318Z I0413 21:58:28.721120       7 heapster.go:46] Heapster version 0.10.0
2015-04-13T21:58:28.721592978Z I0413 21:58:28.721568       7 kube.go:237] Using Kubernetes client with master "http://<IP_ADDRESS>:80" and version v1beta3
2015-04-13T21:58:28.721644965Z I0413 21:58:28.721636       7 kube.go:238] Using kubelet port "10250"
2015-04-13T21:58:28.721684541Z I0413 21:58:28.721676       7 driver.go:164] Using influxdb on host "<IP_ADDRESS>:80" with database "k8s"
2015-04-13T21:58:28.725709614Z I0413 21:58:28.725696       7 heapster.go:57] Starting heapster on port 8082
2015-04-13T21:58:28.737456320Z E0413 21:58:28.737438       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:29.739191916Z E0413 21:58:29.739112       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:30.741866796Z E0413 21:58:30.741815       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:31.743400948Z E0413 21:58:31.743330       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:32.744916601Z E0413 21:58:32.744860       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:33.746331408Z E0413 21:58:33.746234       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:34.747989649Z E0413 21:58:34.747935       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:35.749541932Z E0413 21:58:35.749479       7 reflector.go:115] Failed to list *api.Node: minions "" not found
2015-04-13T21:58:36.751084129Z E0413 21:58:36.751028       7 reflector.go:115] Failed to list *api.Node: minions "" not found

I observe the same issue with v1beta3. However, I am trying to get heapster run on kubernetes. Can you let me know which versions of the kube clients can I go for along with heapster ? So that I can set it up without exploring with various versions. Can I go for kube client 0.15 and master branch of heapster ?

Kindly use vebeta1 as the runtime version for heapster. That is the default as of now.

This has been fixed in v0.13.0 release


Replace SbtAlg.getUpdatesForProject with coursier.Versions()

Coursier recently added an API to list versions of a module, see https://github.com/coursier/coursier/pull/1439. It seems to me that this could be used to replace SbtAlg.getUpdatesForProject which we're currently using to find updates of all dependencies Scala Steward knows about in order to decide on which repos it should work on. In getUpdatesForProject we're writing modules to an artificial sbt project that we then load with sbt and where we call sbt-update's task to find new versions. It seems to me that the new Coursier API allows us to find new versions without executing sbt. And since executing sbt is really slow, this change could make Scala Steward a lot faster (at least if --prune-repos=true).

I Will start taking a look at it if everybody's ok with it :)

Go for it! :-)

Fixed by #1133.


Integrations.Search.Algolia - Index rebuild doesn't handle complex types e.g. MediaWithCrops

Hi,
I'm using Umbraco.Cms.Integrations.Search.Algolia 1.1.1 and in the process of implementing site search. I have set up a basic search index in the backend and have selected a number of fields to be included, one of which is an image field which Umbraco treats as a MediaWithCrops object.
I'm finding that the indexer is treating these fields as simple strings where ideally we'd like to get back a path to the media item.
Example:

Is this something the plugin is capable of out of the box? If not, does the plugin have a way of intercepting the rebuild event on certain document types so that we can add this logic ourselves?
Thank you

Hi @d-gibbs ,
Could you tell me what editor are you using to get this payload in Algolia?
My Image Media Picker that is based on Umbraco.MediaPicker3 indexed the result as show in this video, with this JSON value: [{"key":"b0567635-3f07-4b32-b636-55b965a47081","mediaKey":"55514845-b8bd-487c-b370-9724852fd6bb"}].
Thanks,
Adrian

Hi @acoumb
That document type is using a control based on the Umbraco.MediaPicker3:

Field in algolia:

FWIW, we are using models builder which is set to SourceCodeManual.
Thank you

Hi @d-gibbs ,
Please find the updates in version 1.2.0 of the package.
Thank you,
Adrian

Version 1.3.0 is now released, with an updated indexing and documentation.
Closing this for now, but feel free to reach out if you have other input.


Added C API functions for compression args handling (w/ tests)

LGTM
Maybe add a comment to say the passed in args could be destroyed or something.

I've actually made some additional changes to the grpc_channel_args_compression_algorithm_set_state contract, on top of expanding the comment.

LGTM


Visibility timeout mentioned in description for all overloads.

[Enter feedback here]
Hi,
Some overloads of SendMessage method have visibilityTimeout parameter, while other don't, however in the description for all methods visibility timeout mentioned. ("The visibility timeout specifies how long the message should be invisible to Dequeue and Peek operations.")
It is somehow confusing, also it is not clear what will be actual visibility timeout for messages sent using the overloads where the visibilityTimeout is not in parameters?
Thanks in advance,
Pavel.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2b8218d6-a69d-a829-2d5c-fb7b3b58ccb8
Version Independent ID: a38ce876-a8b5-c54d-9442-a4ba15777ebf
Content: QueueClient.SendMessage Method (Azure.Storage.Queues) - Azure for .NET Developers
Content Source: xml/Azure.Storage.Queues/QueueClient.xml
Service: azure
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

@pavelisaev-ms Thanks for the feedback! We will work to update them to remove that information for those overloads where it isn't appropriate.
The default value however is always TimeSpan.Zero, meaning the message will be visible as soon as it is received in the queue.


E2E ansible molecule test fails on local environment because of "Resource creation timed out"

Bug Report

What did you do?

I ran operator-sdk e2e test on my local machine.
make test-e2e

It failed at test-e2e-ansible-molecule target. So, I ran only the test-e2e-ansible-molecule target. But seeing failures again.
make test-e2e-ansible-molecule

What did you expect to see?

The e2e ansible molecule tests finish successfully.
What did you see instead? Under which circumstances?

The test fails at task TASK [Re-emit failure] with the message of Resource creation timed out.
This is the full logs of make test-e2e-ansible-molecule.
e2e-ansible-molecule.log.txt
Environment
Operator type:

/language ansible

Kubernetes cluster type:

kind
$ operator-sdk version

operator-sdk version: "v1.17.0-2-g62a5ac95", commit: "62a5ac95694f7ed04f5a7ff0479cf43c6cda1f0e", kubernetes version: "v1.21", go version: "go1.17.6", GOOS: "linux", GOARCH: "amd64"

$ go version (if language is Go)

go version go1.17.6 linux/amd64

$ kubectl version

Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-06-22T04:47:11Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}

Possible Solution

The guess from @asmacdo

I think  that the resource constraints are too low, which would cause the operator to fail its liveness check and get restarted forever.

https://kubernetes.slack.com/archives/C017UU45SHL/p1644882778375379?thread_ts=1644882186.137619&cid=C017UU45SHL
Additional context

I originally post the question on Slack:
https://kubernetes.slack.com/archives/C017UU45SHL/p1644882186137619

I found that memcached-molecule-operator used in the test is configured to watch all namespaces. The operator watches Kubernetes core Secret kind. So, watching all namespaces invokes reconciliation loop to all the secret resources in the test kind cluster, which I assume causes high load of the operator. Because of the high load, the operator takes long time to complete reconciliation of Memcached CR, which causes Resource creation timed out.
I tried adding the operator WATCH_NAMESPACE env to watch own namespace as following. Then the test for memcached-molecule-operator passed.
        - name: WATCH_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

Does it make sense to limit WATCH_NAMESPACE to own namespace in the test?

It seems another reason why Kind test with memcached-molecule-operator was slow is that the test creates another kind cluster osdk-test in addition to the kind cluster operator-sdk-e2e that is used in other test cases. It seems running two kind clusters made execution of the testing slow on my local environment.


[disasters] small fixes

add contained_place_types overrides for more countries
filter child places which are unsupported
remove logging statements from #2461 (the issue didn't reproduce anymore, leading me to think that we were originally sampling too many places and timing out occasionally)
update place type for the page from list to str

thanks for the review!


Some method chains for comparison values in where blocks don't work

In a relation class, I was adding a method to encapsulate querying for records "in the future", but I wanted to anchor the comparison to the beginning of the current day, so that an record at e.g. 8pm doesn't disappear immediately at 8:01pm, but rather at 12:01am the next day (the purpose for this is an "events" calendar for a shop).
I turned to trusty time_math2 to help me with this. My first attempt was this:
      def in_future
        where { date_and_time >= TimeMath(Time.now).floor(:day) }
      end

But this failed with an error like this:
[2] pry(main)> repo.for_shop(1).to_a
NoMethodError: undefined method `floor' for #<Sequel::SQL::Function:0x007fd4a2deea58>
from /Users/tim/src/readings-2016/lib/persistence/relations/events.rb:22:in `block in in_future'

Exception: NoMethodError: undefined method `floor' for #<Sequel::SQL::Function:0x007fd4a8d29d38>
--
0: /Users/tim/src/readings-2016/lib/persistence/relations/events.rb:22:in `block in in_future'
1: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/restriction_dsl.rb:9:in `instance_exec'
2: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/restriction_dsl.rb:9:in `call'
3: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/schema.rb:27:in `restriction'
4: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/relation/reading.rb:341:in `where'
5: /Users/tim/src/readings-2016/lib/persistence/relations/events.rb:22:in `in_future'
6: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-3.1.0/lib/rom/pipeline.rb:66:in `method_missing'
7: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-repository-1.1.0/lib/rom/repository/relation_proxy.rb:297:in `method_missing'

This seems to be somehow related to the chaining of methods I was doing here. ROM::SQL::RestrictionDSL#method_missing was sending :TimeMath to ::Sequel::VIRTUAL_ROW and getting a Sequel::SQL::Function back, which obviously wouldn't respond to TimeMath's API.
If I adjust the query so there's a different kind of chain, it works:
      def in_future
        # Broken:
        # where { date_and_time >= TimeMath(Time.now).floor(:day) }

        # Works!
        where { date_and_time >= TimeMath.day.floor(Time.now) }
      end

I'm not really sure why this works and the other doesn't. Any ideas? It'd probably be ideal if the DSL could somehow support both kinds of approaches?

The first calls TimeMath method and the last resolves TimeMath constant
instead. If you adjust it to TimeMath() it will fail as well
On Mon, 6 Mar 2017 at 08:33, Tim Riley<EMAIL_ADDRESS>wrote:

In a relation class, I was adding a method to encapsulate querying for
records "in the future", but I wanted to anchor the comparison to the
beginning of the current day, so that an record at e.g. 8pm doesn't
disappear immediately at 8:01pm, but rather at 12:01am the next day (the
purpose for this is an "events" calendar for a shop).
I turned to trusty time_math2 to help me with this. My first attempt was
this:
  def in_future
    where { date_and_time >= TimeMath(Time.now).floor(:day) }
  end

But this failed with an error like this:
[2] pry(main)> repo.for_shop(1).to_a
NoMethodError: undefined method floor' for #<Sequel::SQL::Function:0x007fd4a2deea58> from /Users/tim/src/readings-2016/lib/persistence/relations/events.rb:22:in block in in_future'
Exception: NoMethodError: undefined method `floor' for #Sequel::SQL::Function:0x007fd4a8d29d38
0: /Users/tim/src/readings-2016/lib/persistence/relations/events.rb:22:in block in in_future' 1: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/restriction_dsl.rb:9:in instance_exec'
2: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/restriction_dsl.rb:9:in call' 3: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/schema.rb:27:in restriction'
4: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-sql-1.1.1/lib/rom/sql/relation/reading.rb:341:in where' 5: /Users/tim/src/readings-2016/lib/persistence/relations/events.rb:22:in in_future'
6: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-3.1.0/lib/rom/pipeline.rb:66:in method_missing' 7: /Users/tim/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rom-repository-1.1.0/lib/rom/repository/relation_proxy.rb:297:in method_missing'
This seems to be somehow related to the chaining of methods I was doing
here. ROM::SQL::RestrictionDSL#method_missing was sending :TimeMath to
::Sequel::VIRTUAL_ROW and getting a Sequel::SQL::Function back, which
obviously wouldn't respond to TimeMath's API.
If I adjust the query so there's a different kind of chain, it works:
  def in_future
    # Broken:
    # where { date_and_time >= TimeMath(Time.now).floor(:day) }

    # Works!
    where { date_and_time >= TimeMath.day.floor(Time.now) }
  end

I'm not really sure why this works and the other doesn't. Any ideas?
It'd probably be ideal if the DSL could somehow support both kinds of
approaches?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/rom-rb/rom-sql/issues/170, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAw-tvOK3j_vD-YUbndOlLTmtd78tTXzks5ri5q1gaJpZM4MTvbF
.

DSL is a basic object so you gotta do ::TimeMatch()

Thanks both, will give this a try :)

::TimeMath(Time.now) is actually a syntax error, it turns out. So you got to do something like this:
where { date_and_time >= ::Kernel.send(:TimeMath, Time.now).floor(:day).call }

Because TimeMath (the method) is just defined in the global namespace in its lib file.
So at least I know how to do it, anyway 😬
In this case I don't need to chain multiple TimeMath operations, so I might stick to the cleaner looking version:
where { date_and_time >= TimeMath.day.floor(Time.now) }

we could have a plugin for TimeMath that would expose a nice API inside these blocks. Also, I believe ::Kernel.TimeMath should work too.

btw this will work too: where(self[:date_and_time] >= TimeMath.floort(:day).())

I thought that would work too, @solnic, but it actually didn't. I got this error:
NoMethodError: private method `TimeMath' called for Kernel:Module

btw where { created_at >= now } produces AND ("created_at" >= NULL), will look into it later today


Be compatible with the broken change of resource count field from APISIX

PR https://github.com/apache/apisix/pull/4385 changes count field from string to number. We use count field in some places such as e2e suites, we may make the code base compatible with this change.
@lingsamuel @gxthrj @tao12345666333

@lingsamuel Please take a look when you have time.

Please assign me.

I think we can close this issue now, as #544 has been merged.


[nrf fromlist] dts: nordic: nrf54h20: Fix exmif node definition

Remove the "snps,designware-spi" compatible from the EXMIF node in nRF54H20i, as the spi_dw driver cannot be used for this peripheral without Nordic-specific modifications that are not present upstream. An attempt to do so (just setting CONFIG_SPI=y will cause that, as the driver initialization function will be executed then) results in a bus fault.
Upstream PR: https://github.com/zephyrproject-rtos/zephyr/pull/72928
The compatible is restored in the second [noup] commit, so that the EXMIF can be used with the modified spi_dw driver in NCS.

The commits went in with upmerge in #1721.


feat: 633 use loop

Hopefully Closes #633
Based on the team discussion. This PR introduces a new API
useLoop
This composable allows you to execute a callback on every frame, similar to useRenderLoop but unique to each TresCanvas instance and with access to the context.

[!WARNING]
useLoop can only be used inside of a TresCanvas since this component acts as the provider for the context data.

Usage
Register update callbacks
The user can register update callbacks (such as animations, fbo, etc) using the onBeforeRender
<script setup>
import { useLoop } from '@tresjs/core'

const boxRef = ref()

const { onBeforeRender } = useLoop()

onBeforeRender(({ delta }) => {
  boxRef.value.rotation.y += delta
})
</script>

Take over the render loop
The user can take over the render loop callback by using the render method
const { render } = useLoop()

render(({ renderer, scene, camera }) => {
  renderer.render(scene, camera)
})

[!NOTE]
To run this example please run the playground and go to http://localhost:5173/advanced/take-over-loop

Register after render callbacks (ex physics calculations)
The user can also register after rendering callbacks using the onAfterRender
const { onAfterRender } = useLoop()

onAfterRender(({ renderer }) => {
  // Calculations
})

Priority mechanism
Both useBeforeRender and useAfteRender provide an optional priority index. This indexes could be any from [Number.NEGATIVE_INFINITY ... 0 ... Number.NEGATIVE_INFINITY]
const { onBeforeRender, pause, resume } = useLoop()

onBeforeRender((state) => {
  if (!sphereRef.value) { return }
  console.log('updating sphere')
  sphereRef.value.position.y += Math.sin(state.elapsed) * 0.01
})

onBeforeRender(() => {
   console.log('this should happen before updating the sphere')
}, -1)

For example, to use Frame Object Buffer (FBO) is convenient to use a very big number to ensure that all updates happen before the FBO callback and the last one just before the scene render.

[!NOTE]
To run this example (FBO) please run the playground and go to http://localhost:5173/advanced/fbo`

Pausing and resuming the loop
The end user can use pause and resume methods:
const { onBeforeRender, pause, resume } = useLoop()

onBeforeRender(({ elapse }) => {
  sphereRef.value.position.y += Math.sin(elapsed) * 0.01
})

pause() // This stops the clock, delta = 0 and freezes elapsed.

Pending

[x] Tests
[ ] Discuss pausing the Render
[ ] Documentation

Hi @Tresjs/core team, this PR is the result of the latest meeting and the discussion on Discord, please let me know if there is any further questions or feedback, I will wait until final agreement on the contracts to create the documentation.
I added tests as well.

@alvarosabu ,

Hi @Tresjs/core team, this PR is the result of the latest meeting and the discussion on Discord, please let me know if there is any further questions or feedback, I will wait until final agreement on the contracts to create the documentation.

You're looking for a review of code/demos? Or not yet?

Hi @andretchen0 since we had the call only the 3 of us we wanted to have your opinion about this approach, I added examples for take over mode and fbo in the advance section.
I know also @Tinoooo wanted to discuss further the pause Render so I added the methods but didn't expose them yet.

@Tinoooo 's explanation of the design is ok by me.
Glad to review whenever. Let me know.

Hey @alvarosabu ,
This doesn't appear to implement the API from here. In particular, there doesn't seem to be a way to off callbacks. Is that right?

Let me confirm with him why he added an off method on that interface. We didn't discuss anything related to that haha that's why is not implemented  😅

Ok @andretchen0 I just confirmed with @Tinoooo is a method to unsubscribe the callback inspired by https://vueuse.org/shared/createEventHook/
I will need to implement it.

If it's helpful, on your branch, if you do ...
git fetch
git checkout fix/use-render-loop src/utils/createPriorityEventHook{.test,}.ts

... in src/utils/ you'll find createPriorityEventHook.ts, which I'd written for the POC.
It's like vueuse's createEventHook, but accepts a priority. Like createEventHook, it implements off.
It's got pretty good test coverage. I didn't write any documentation, but you can see examples in createPriorityEventHook.test.ts

Ok @andretchen0 I just confirmed with @Tinoooo is a method to unsubscribe the callback inspired by https://vueuse.org/shared/createEventHook/
I will need to implement it.

If you'd like, you can do the following on your branch:
git fetch
git checkout fix/use-render-loop src/utils/createPriorityEventHook{.test,}.ts

Then you'll have src/utils/createPriorityEventHook.ts, which I'd written for the POC.
It works like createEventHook, including implementing off. It accepts a priority and sorts events according priority/insertion order.
It's got pretty good test coverage. I didn't write any documentation, but you can see examples in createPriorityEventHook.test.ts
If you like, you can use it in the place of the Maps.
Otherwise, no worries if you want to use a different implementation.

Hi @andretchen0 this was really helpful thanks a lot for this, I just pushed a refactor that uses the utility you provided instead of the subscriber's map, works like a charm so no need for Array.from, I also updated the tests for callback registration similar to the ones on the createPriorityEventhook.test.ts
I also tested a few more things, like registering the same callback twice etc and everything seems to be covered, let me know if there is anything else pending.

Question for you both @Tinoooo @andretchen0 , should I add the usage of off to the docs?
const { off, on, trigger, ...} = onBeforeRender()

I'm not sure we should expose on and trigger tho 🤔

onBeforeRender

Yes, it should be in the docs.

I agree with @Tinoooo . off should be documented. on and trigger shouldn't be returned.

I agree with @Tinoooo . off should be documented. on and trigger shouldn't be returned.

Awesome, I already made the changes on the return and document the off method


Storages/EntryWatcher must use the logger of a provided ServiceContext

Must log to a remote.

Might be fixed already, requires testing.

Invalid, ServiceContexts are no longer in Core.


Add MixinExtension

Added MixinExtension to remap references in mixin too
When used with process-classes phase, MixinExtension logs unharmful warns but works fine when phase is package is used (Currently i dont have idea how to fix this)

I forgot about one moment so this changes is not enough to stop mixin's annotation processor from trying to remap targets


Dependency updates 2022-01

Minor and major non-breaking upgrades done
Upgraded react-router-dom to v6 (had breaking changes)
Upgraded @stellar/design-system to v0.5.0 (were some breaking changes)
Upgraded stellar-sdk to v10.0.0 (withMuxing is enabled by default now)
Cannot upgrade react-scripts because of this issue
Remaining eslint and node packages depend on the react-scripts version, so they will be upgraded together

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-demo-wallet-client-pr265.previews.kube001.services.stellar-ops.com/


added the solidity programming language for writing smart contracts i…

…n Ethereum
What does this PR do?
Add resource(s)
For resources
Description
It is one of the most used programming languages currently for developing smart contracts in Ethereum
Why is this valuable (or not)?
With the growth of blockchain development I think, this language should definitely need to be here
How do we know it's really free?
It is this standard reference guide from the developers of the Solidity itself
For book lists, is it a book? For course lists, is it a course? etc.
It is a guide showing how to start smart contract development using solidity language
Checklist:

[x] Read our contributing guidelines
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction)

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

It's usually not helpful to add a category for a single resource. Try to find another category, or see if there are other books in our lists that would fit into your category.

Hi @eshellman, thanks for your comment, I have added a few more free resources for Solidity which includes step by step guide.


replace hardcoded references to AdminServer with global class-attribute.

Added global class attribute ADMIN_SERVER_NAME defaulted to 'AdminServer'. This makes it available everywhere, without having to cd() to the root.
In createBaseDomain() update ADMIN_SERVER_NAME to adminName, after setting the AdminServer.Name.
Checked every occurrence of hardcoded  'AdminServer' and replaced it with self.ADMIN_SERVER_NAME
In enable_admin_channel() adminserver name was determined in the correct way (by getting it from the adminServerName property on the root. However, I replaced that with the self.ADMIN_SERVER_NAME, to have it similar to the other references.

Nice! Thank you very much.


Feature request: undo/redo

Impressive project! I really like it!
One feature that I think would be really useful for such editor is to support undo and redo operations.
I know kakoune has a fancy tree history, but maybe a simple linear history would already be good enough of a start.

Hey! Thanks for your kind words, I really appreciate it.
Undo and redo are a very good and essential idea. I have already started working on them, though I've got a brick wall because I'm confused by the API of the underlying to byte string rope.
https://github.com/Gskartwii/teehee/blob/deafef86c74a25d6d6a5e81f5af437393c7aa824/src/history.rs#L38-76
The above function is meant to be able to chain together two deltas (for example two byte insertions in Insert mode) into a single delta, so that an Insert mode change can be stored in a memory efficient manner. I'm just not quite able to work out how to construct the delta, though I will be making an effort to work on this between everything else. Feel free to advise me if you have an idea on that!


Replay Swift parseable output

Once rules_swift has the ability to generate serialized diagnostics, when building with Bazel, we should:

Supply the needed feature in the _xcodeproj_transition (if it uses a feature)
Add the dia and parseable output files to a targets output group in output_files.bzl for both build and index
Copy over these files as we do other outputs, to the location expected by Xcode
cat the parsable output in stubs/swiftc.py

rules_swift will need an updated version of this: https://github.com/bazelbuild/rules_swift/pull/304


Send exit(0) when stdin closed.

This will send the proper exit signal when stdin closed for #1308
I would like to automatically run webpack --watch as part of my application but, when it shuts down, the webpack process persists and continues running. I have observed that my application does close STDIN, however, webpack --watch is not currently checking if STDIN was closed or not.

Looks like Appveyor is broken.

@sokra – you mentioned that this feature was PR worthy in #1308, though I'm not sure if it's testable as it's using process.
I can't find any tests for the other process listeners in bin/webpack.js (here), so I'm not sure where to try adding tests for this.
Totally realize that this is probably an edge-case, but I'm happy to do the work to get it merged in, just need a bit of direction. Thanks!

yeah, there are no automatic tests for the CLI yet. You can goto webpack/test/browsertest and run node build.js. This uses the CLI. Then open tests.html for the browsertests.

Okay, well, this is working on my end of things – I'm opening the node process with the ErlangVM and when stdin closes, it's shutting down. Without my patch, the process is never closed.

I just want to know what to do to get this merged

Not sure... I'm not so much into these OS internals to decide if this is fine. Would love to see more feedback about the fix. It's pretty radical and if wrong it would break stuff..

The same change to brunch broke running it as a background process (brunch/brunch#998). From that discussion, they're going to make this behaviour opt-in through --stdin.

:+1: for this change, it is fairly common behaviour, but I would also follow @jjt advice of only checking stdin if a flag (for example, --stdin) is set.

I'm just the messenger :)

@matthewlehner Do you want to update the PR to reflect @jjt and @josevalim ideas?

:+1: I'm on it.

@sokra I've just implemented these changes with --watch-stdin as the new option.
I've rebased to master, but CI bugs still seem to be here.

The CI build fails because of incorrect code formating. Run npm test to see the results. Or run npm run beautify to fix it.

@sokra Ah ha, sorry about that. Everything passes now. :+1:

Just checking if there's anything I can do to help move this along? Appveyor still seems broken for some reason..

@sokra Just rebased to master and everything passes. Is there anything else I need to do to get this merged?

Thanks


How to de-obfuscate?

Is there a way to reverse this process and get the source code? Thanks

No I haven't found a way to deobfuscate

https://github.com/0x3C50/nofuscate


Add "Extras" folder with platform-specific helpers and guides

Resolves #204
Resolves #203

:+1:

:+1:


FIFO and exchange/wallet cost-basis calculation

I have some questions about exchanges/wallets. I have read the comments in issue 79 and found the discussion quite helpful, but some questions remain.
I plan to use FIFO for tax year 2022.
My understanding is that RP2 uses "across exchange" (pool) accounting for this, so that whatever is the first/earliest transaction with remaining/unused cost basis will be "sold", regardless of exchange. Is this correct?
My situation is as follows: I used external SaaS software to calculate my tax year 2021 taxes. After calculating what I needed for tax year 2021 filing it also provided me with a list of "end of year positions" indicating asset, crypto amount, and cost basis remaining, but did NOT break this out by exchange/wallet. As such, I currently don't have an easy way to segregate transactions by exchange for input to RP2, so I am just specifying a single exchange called "Unknown" for all transactions, even though the crypto  is actually spread over many exchanges and wallets. Is this OK? I assume so (given the understanding above regarding "across exchange" calculations)?
If I decide in future to try and segregate transactions by exchange, I'd like to make sure I properly understand the FIFO cost basis calculation behavior. Assuming it is "across exchange", how exactly does it work? For example, if I bought BTC on both exchange A and exchange B, and I then sell some BTC from exchange B, the balance of BTC on exchange B will obviously go down. But if the first/earliest BTC buy transactions are on exchange A, then doesn't that mean that the remaining cost basis of the transactions on exchange A should be reduced when selling on exchange B? Could this lead to a situation where an exchange has zero BTC remaining, but as non-zero cost basis remaining or, visa versa, an exchange has a non-zero BTC balance, but zero cost basis remaining? I think I'm getting quite muddled here. Can you help me understand where I'm going wrong?
Thanks for all your help!

I have some questions about exchanges/wallets. I have read the comments in issue 79 and found the discussion quite helpful, but some questions remain.
I plan to use FIFO for tax year 2022.
My understanding is that RP2 uses "across exchange" (pool) accounting for this, so that whatever is the first/earliest transaction with remaining/unused cost basis will be "sold", regardless of exchange. Is this correct?

Yes, correct.

My situation is as follows: I used external SaaS software to calculate my tax year 2021 taxes. After calculating what I needed for tax year 2021 filing it also provided me with a list of "end of year positions" indicating asset, crypto amount, and cost basis remaining, but did NOT break this out by exchange/wallet. As such, I currently don't have an easy way to segregate transactions by exchange for input to RP2, so I am just specifying a single exchange called "Unknown" for all transactions, even though the crypto is actually spread over many exchanges and wallets. Is this OK? I assume so (given the understanding above regarding "across exchange" calculations)?

I'm not sure about what how the IRS would react to transactions with "Unknown" exchange: it may be worth the effort of documenting exchange information. Also consider the technique described in this FAQ on how to switch from another tax software to RP2 (I think it may be relevant to your case): https://github.com/eprbell/rp2/blob/main/docs/user_faq.md#how-to-switch-from-another-tax-software-to-rp2

If I decide in future to try and segregate transactions by exchange, I'd like to make sure I properly understand the FIFO cost basis calculation behavior. Assuming it is "across exchange", how exactly does it work? For example, if I bought BTC on both exchange A and exchange B, and I then sell some BTC from exchange B, the balance of BTC on exchange B will obviously go down. But if the first/earliest BTC buy transactions are on exchange A, then doesn't that mean that the remaining cost basis of the transactions on exchange A should be reduced when selling on exchange B? Could this lead to a situation where an exchange has zero BTC remaining, but as non-zero cost basis remaining or, visa versa, an exchange has a non-zero BTC balance, but zero cost basis remaining? I think I'm getting quite muddled here. Can you help me understand where I'm going wrong?

I recommend you take a look at crypto_example.ods, which covers the case you described. Here's how to run the example: https://github.com/eprbell/rp2/blob/main/README.md#running. After generating files open the crypto_example_fifo_rp2_full_report.ods output file and look at the "BTC Tax" tab and specifically the "Gain / Loss Detail" table: this table contains the precise mapping between in and out lot fractions.
Hope this helps.

Thank you for the reply! I generated the example you suggested, and have been studying the reports. I hate to be a nuisance, but I'm still struggling to make sense of it.
Is it correct to say that a "lot" essentially represents one of the IN lines? And a "fraction" represents part of a "lot"?
What I'm struggling to grasp is how RP2 tracks the balance on a particular asset on an exchange as well as the cost basis for assets. It seems to me that these need to be tracked independently, because when an asset is sold from an exchange, the cost basis associated with that sale may be associated with crypto from another exchange (since the crypto from the other exchange may be "first" according to FIFO). Right? I'm not clear how this is tracked by RP2, and how I can manually follow along in the "full report" (if this is, indeed, possible).
Also, looking at the "BTC In-Out" tab of the full report I see this:

The "Send/Sold" column, according to the Legend, represents "Lots that have been sent or sold, according to the order defined by the Accounting Method (see General section)". So does this mean that this number represents the amount of the crypto in "Crypto In" that has been used/allocated so far in cost basis calculations for gain/loss transactions? So, if we look at line 4 in "In-Flow Detail", does that mean that 1 BTC of 4 BTC has been used , and 3 BTC (from that "lot") remains associated with the BTC cost basis? Or is this, rather than being about cost basis, about the amount of the lot that has been removed from the particular exchange via a corresponding OUT transaction associated with the same exchange?
I realize the above probably doesn't make a lot of sense. I'm really trying to "get it", but I'm struggling. Any pointers you can provide would be helpful.
Thanks!

Thank you for the reply! I generated the example you suggested, and have been studying the reports. I hate to be a nuisance, but I'm still struggling to make sense of it.

No problem, happy to help clarify any doubts.

Is it correct to say that a "lot" essentially represents one of the IN lines? And a "fraction" represents part of a "lot"?

An acquired lot is one of the IN lines, a taxable event is one of the OUT lines. These lots are fractioned and matched to one another according to the accounting method (FIFO). The result of the matching is shown in the "Gain / Loss" table: each line here shows precisely how one taxable event fraction is matched to one acquired lot fraction. The left half of the table (in blue) shows taxable event fractions, the right half (in purple) shows acquired lot fractions.

What I'm struggling to grasp is how RP2 tracks the balance on a particular asset on an exchange as well as the cost basis for assets.

In FIFO the IRS allows "universal pooling of assets" (see https://www.coindesk.com/layer2/2022/02/23/fifo-vs-specific-identification-how-do-you-choose/), which is what RP2 does.

It seems to me that these need to be tracked independently, because when an asset is sold from an exchange, the cost basis associated with that sale may be associated with crypto from another exchange (since the crypto from the other exchange may be "first" according to FIFO). Right?

Not sure I understand the question fully: universal pooling means that the acquired lots are treated as if they were coming from one single pool. Computing balances is a completely different calculation, which is done per-exchange and keeps track of non taxable transactions (like INTRA ones).

I'm not clear how this is tracked by RP2, and how I can manually follow along in the "full report" (if this is, indeed, possible).

You can read the "Gain / Loss" table line by line (be sure to scroll to the right to see acquired lots because it's a large table): look at which taxable event fraction is associated with which acquired lot fraction and you'll be able to understand how RP2 does the matching.

Also, looking at the "BTC In-Out" tab of the full report I see this:

The "Send/Sold" column, according to the Legend, represents "Lots that have been sent or sold, according to the order defined by the Accounting Method (see General section)". So does this mean that this number represents the amount of the crypto in "Crypto In" that has been used/allocated so far in cost basis calculations for gain/loss transactions?

Yes, and you'll be able to see the same transactions in the right half of the "Gain / Loss" table (the acquired lot half).

So, if we look at line 4 in "In-Flow Detail", does that mean that 1 BTC of 4 BTC has been used , and 3 BTC (from that "lot") remains associated with the BTC cost basis? Or is this, rather than being about cost basis, about the amount of the lot that has been removed from the particular exchange via a corresponding OUT transaction associated with the same exchange?

The "Sent/Sold" field shows the percentage of that acquired lot that has been disposed of. The "1" on the 4th line of the IN table should be a percentage (it should be 100%, not 1): I'm not sure why it doesn't show as percentage for you. What spreadsheet software are you using? I use Libre Office and it shows correctly as percentage for me.
Hope this helps.

I think it's all starting to make sense. Thank you!

The "Sent/Sold" field shows the percentage of that acquired lot that has been disposed of. The "1" on the 4th line of the IN table should be a percentage (it should be 100%, not 1): I'm not sure why it doesn't show as percentage for you. What spreadsheet software are you using? I use Libre Office and it shows correctly as percentage for me.

That's weird. I'm using LibreOffice <IP_ADDRESS> running on Linux Mint, and I haven't done anything to the formatting. It just defaults to Number/General.
Thanks again for taking the time to explain all of this! I appreciate it. (Feel free to close the ticket if you're ready to do so.)

I think it's all starting to make sense. Thank you!

Glad to hear that!

The "Sent/Sold" field shows the percentage of that acquired lot that has been disposed of. The "1" on the 4th line of the IN table should be a percentage (it should be 100%, not 1): I'm not sure why it doesn't show as percentage for you. What spreadsheet software are you using? I use Libre Office and it shows correctly as percentage for me.

That's weird. I'm using LibreOffice <IP_ADDRESS> running on Linux Mint, and I haven't done anything to the formatting. It just defaults to Number/General.

I'm using <IP_ADDRESS>: can you try again with a more recent version?

Thanks again for taking the time to explain all of this! I appreciate it. (Feel free to close the ticket if you're ready to do so.)

No worries, sounds good.


Fix two methods for MultiPart uploading in the API

Copy and add changes to the two methods.
The original methods are deprecated now.
The changes are related return type and arguments of the functions.
Also related to using url to the endpoint from the arguments and not
from the lookup service.
Relates-To: OLPEDGE-2051
Signed-off-by: Oleksii Zubko<EMAIL_ADDRESS>

Codecov Report

Merging #339 into master will decrease coverage by 0.1%.
The diff coverage is 82.6%.

@@           Coverage Diff            @@
##           master    #339     +/-   ##
========================================
- Coverage    89.4%   89.3%   -0.1%
========================================
  Files          65      65
  Lines        1788    1811     +23
  Branches      203     207      +4
========================================
+ Hits         1599    1618     +19
  Misses        111     111
- Partials       78      82      +4

Impacted Files
Coverage Δ

@here/olp-sdk-dataservice-api/lib/blob-api.ts
89.0% <82.6%> (-1.4%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 86789cb...8941464. Read the comment docs.


abra

Thank you, this is awesome! Sorry for the delay in responding. I have some comments/questions, please let me know if you'd like to discuss over chat/VC.