Programatically focus the select (but not activate)

Hi there,
I'm trying to figure out the the best way to focus the select when my page is displayed.  In hunting around there's a uiSelectCtrl.activate() method but no equivalent for focus.  In digging around HTML5 has an autofocus attribute but wasn't if that would make sense in SPAs or provide much value over a programatic focus mechanism.
I'm happy to do a pull request, but given I'm fairly new to angular, do you have any suggestions for approaching this?
Thanks!

@adharris You saved my day... thanks :+1:

@adharris, just for clarity, when you further add the uiSelectWrapper, what do you do with the <the ui select DOM element> line to match that?  That's where you want to get a reference to the uiSelect dom element as required by your first post?

I guess @surabhi-batra and @MWalid got this working? User the wrapper:
.form-group ng-controller='HubController'
    div(ui-select-wrapper)
      ui-select class='vote_hub' ng-disabled='disabled' ng-model='hubFilter.selected' on-select='setHub($item, $model); finishProp()' reset-search-input='false'
        ui-select-match id='vote_hub' placeholder='Who should see your proposal? ...' ng-enter='finishProp()' {{$select.selected.full_hub}}
        ui-select-choices refresh='refreshHubs($select.search)' refresh-delay='0' repeat='hub in hubs track by $index'
          div ng-bind-html='hub.full_hub | highlight: $select.search'

For some reason both those console.logs come up undefined:  .controller('uiSelect') at the directive level:
uiSelectWrapper = ->
  link: (scope, element, attrs) ->
    uiSelectController = element.children().controller('uiSelect')
    console.log 'uiSelectController: ', uiSelectController
    uiSelectController

and focusser[0] at the controller level:
  uiSelect = angular.element 'ui-select-wrapper'
  console.log 'uiSelect: ', uiSelect.focusser[0]

Suggestions?

When opening the select list with Activate the focus won't be put on the searchbox, is this a bug or expected behavior?

@rogier21 , you were able to get a hold of the controller then using the wrapper above?

@kimardenmiller yeah, the code works, I did exactly as adharris commented on Dec 11, 2014. But it doesn't focus the search after opening.

You trid uiSelect.focusser[0].focus()?
What version are you on?

Latest release: Version: 0.9.6 - 2015-01-12T20:24:40.589Z

@kimardenmiller cannot get hold of the 'uiSelect' controller neither. Have you been able to solve it?

@stefan-- I have not yet solved it.
@rogier21 I'm also on v. 0.9.6., but like stefan, cannot find the controller functions described by @adharris.
console.logs come up undefined for: .controller('uiSelect') for the wrapper as configured above.
You were able to hit the controller off the wrapper to open, so uiSelect.activate() works for  you?

@kimardenmiller are you asking me?
I just do this:
var selectElement = container.find('.ui-select-container');
var uiSelect = selectElement.controller('uiSelect');
uiSelect.open = true;
uiSelect.activate(false, true);

And it pops open the dropdown list... uiSelect contains the controller if I do a console.log on it I see all the properties I would expect.

Interesting @rogier21. Seems you are not using the 'wrapper' idea then, correct?  Seems to yield a little closer results for me, but still no actual focus happening.
Outputting uiSelect.focusser[0] to the console I now get the input element:
<input ng-disabled="$select.disabled" class="ui-select-focusser ui-select-offscreen ng-scope" type="text" aria-haspopup="true" role="button">
And uiSelect2.focusser[0].focus() runs, but does not do anything. I did my selections slightly differently, as container.find did not seem to work in my case, so I did:
    selectElement = angular.element('.ui-select-container')
    uiSelect = selectElement.controller('uiSelect')

Experimenting more, I found that the following will focus the ui-select, but only after an additional keystroke at the keyboard:
    $timeout ->
      element = angular.element '.ui-select-focusser'
      element.focus()  if element

Before this code runs, the previous field has focus:

When the above code runs, you can see that field losing focus:

But only after (any) keystroke do does ui-Select gain focus:

Thoughts on what else needs to be done fully gain focus of the ui-select input?

I went with the wrapper directive approach and hade the same problem with the input not being focused, but got it working by adding a timeout to the active()-method.
Like this:
    link: function(scope, element, attrs) {
            var uiSelectController = element.children().controller('uiSelect');
            console.log(uiSelectController);
            $timeout(function() {
                uiSelectController.activate(false, true);
            }, 50);
        }

@timmyrosen does your console.log(uiSelectController); produce the controller or undefined?
Mine produces undefined.
Can you see your html?

@kimardenmiller My console.log gives me the controller, otherwise it wouldn't work.
Sure, here is my html:
    <ui-select-wrapper focus="true">
      <ui-select ng-model="prompt.selected" on-select="prompt.onSelect($item)">
        <ui-select-match placeholder="Sök användare">{{$select.selected.given_name || $select.selected}}</ui-select-match>
        <ui-select-choices repeat="user as user in prompt.users | filter: $select.search">

        </ui-select-choices>
      </ui-select>
    </ui-select-wrapper>

Full directive:
  app.directive('uiSelectWrapper', function($timeout) {
    return {
        restrict: 'AE',
        scope: {
            focus: '='
        },
        link: function(scope, element, attrs) {
            var uiSelectController = element.children().controller('uiSelect');
            if (scope.focus) {
                $timeout(function() {
                    uiSelectController.activate(false, true);
                }, 50);
            }
        }
    };
});

@timmyrosen Thank you. My controller comes back undefined and I don't know why.
Cut and pasted your code in and get TypeError: Cannot read property 'activate' of undefined
What version of Angular are you on?

 ng-model="$select.search" ng-show="$select.searchEnabled && $select.open">

 0" refresh="refreshHubs($select.search)" refresh-delay="0" repeat="hub in hubs track by $index">

 0">

<input ng-disabled="$select.disabled" class="ui-select-focusser ui-select-offscreen ng-scope" type="text" aria-haspopup="true" role="button">

@kimardenmiller Wow, that's really messy, but looking at the first element in the wrapper it should work really. I'm on Angular v 1.3.11. What does your directive look like?

@timmyrosen keep in mind, I took compiled code from the dom to show you. My actual code (Slim) is:
    div(ui-select-wrapper)
       ui-select( name='hubFilter' class='vote_hub'
            ng-disabled='disabled' ng-model='sessionSettings.hubFilter'
            on-select='setHub($item, $model); finishProp()'
            reset-search-input='false' required )
          ui-select-match id='vote_hub' placeholder='{{ sessionSettings.actions.hubPlaceholder }}' ng-enter='finishProp()'
            span class='fa fa-search' &nbsp
            span {{ $select.selected.full_hub }}
            span class='close' ng-click='clear($event)' &times
          ui-select-choices refresh='refreshHubs($select.search)' refresh-delay='0' repeat='hub in hubs track by $index'
            div ng-bind-html='hub.full_hub | highlight: $select.search'

I showed you compiled code in case compilation is my problem.
My directive is a cut and paste of yours (ported to CoffeeScript):
uiSelectWrapper = ($timeout) ->
  restrict: "AE"
  scope:
    focus: "="

  link: (scope, element, attrs) ->
    uiSelectController = element.children().controller("uiSelect")
    console.log 'uiSelectController Rosen: ', uiSelectController
    if scope.focus
      $timeout (->
        uiSelectController.activate false, true
      ), 50

I'm on Angular 1.9, before the big changes. So I guess it could be there.

@kimardenmiller Angular 1.9? Do you mean 1.2.9? If so, then yeah that may be the case. If you can, I would recommend that you update to at least 1.3.
If you look at my directive you can see that I have a focus-attribute which must be set to true on the element (ui-select-wrapper) for the focus to take effect. Although if you still get undefined on the controller object, then the focus attribute doesn't really matter, and I would guess it may have something to do with the older version of angular.

Yes, @timmyrosen. Thanks for the careful eye on that. I actually did remove that if statement in the one I'm running:
uiSelectWrapper = ($timeout) ->
  link: (scope, element, attrs) ->
    uiSelectController = element.children().controller('uiSelect')
    console.log 'uiSelectWrapper Directive Log: ', uiSelectController
    $timeout ->
      uiSelectController
      console.log 'uiSelectWrapper Directive Log: ', uiSelectController
    , 550

So nothing on either console.log
I'll upgrade to ng 1.3 and see what it looks like then. Thanks so much for the time!
BTW: Went to see a preview of ng 2.0 last night in Mountain View. Crazy amount of changes actually. But exciting stuff. Start thinking ES6!

Take a loot at https://github.com/angular-ui/ui-select/pull/728 and let me know your comments on the PR pls

@dimirc the functionality looks awesome :+1:
So it was really as simple as this line in the link function?:
$select.setFocus();
All the need for this extra wrapper to "focus the focuser" was never necessary?
Is the magic that this line is in the link fuction as opposed to trying to hit the focuser from demo.js?

@kimardenmiller keep in mind that setFocus() is just added with this PR

https://github.com/angular-ui/ui-select/pull/728 merged

@kimardenmiller did you ever find the cause of your uiSelectController being undefined as of your Feb 11 comment? I'm having the same problem.

I didn’t, but the new focus feature (undocumented?) does seem to work.
/k

On Apr 13, 2015, at 8:49 PM, Konr Ness<EMAIL_ADDRESS>wrote:
@kimardenmiller https://github.com/kimardenmiller did you ever find the cause of your uiSelectController being undefined as of your Feb 11 comment? I'm having the same problem.
—
Reply to this email directly or view it on GitHub https://github.com/angular-ui/ui-select/issues/201#issuecomment-92590122.

I had the same problem with uiSelectController being undefined. The problem is that at the time that the link function in my wrapper directive executes, the controller has not yet been added. Setting a long enough timeout (here, 5 seconds to make sure) "solved" it:
$timeout(function () {
var selectElement = angular.element('.ui-select-container')
var uiSelect = selectElement.controller('uiSelect')
console.log("controller", uiSelect)
}, 5000)
Obviously a hack. Any event I could use to figure out when the controller has been initialized?

Quick question.
I have ui-select working great, but I'm trying to prevent the keyboard from popping on mobile devices when the dropdown is selected.  I'm having a hard time grasping exactly how this is achieved using the methods outlined above.  What is the best way to handle this considering the new setFocus() functionality etc.?  A quick explanation from start to fin would be greatly appreciated for us noobs!

This all seems very hacky.  Could we not add a one-time flag to the attributes that we can change to get a focus?


Translations errors in cordova 5

Hi!
This plugin is missing some translations....
With the latest cordova (that uses gradle) it generates errors and fails to build...
Solutions:

Set an empty value: <string name="discard"></string>
Set a default: <string name="discard">NOT TRANSLATED</string>
Use the google translator translations: <string name="discard">Stornieren</string>
Ignore it: <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation" >

I can make a pull request with one of the solutions.,
What would be the best way to solve this problem?
Some debug/errors shown:
...
:mergeReleaseResources UP-TO-DATE
:processReleaseManifest UP-TO-DATE
:processReleaseResources UP-TO-DATE
:generateReleaseSources UP-TO-DATE
:compileReleaseJava UP-TO-DATE
:lintVitalRelease/home/unknown/myApp/platforms/android/res/values/multiimagechooser_strings_en.xml:7: Error: "discard" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
    <string name="discard">Cancel</string>
            ~~~~~~~~~~~~~~
/home/unknown/myApp/platforms/android/res/values/multiimagechooser_strings_en.xml:8: Error: "done" is not translated in "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
    <string name="done">OK</string>
            ~~~~~~~~~~~
/home/unknown/myApp/platforms/android/res/values/strings.xml:3: Error: "app_name" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
    <string name="app_name">myApp</string>
            ~~~~~~~~~~~~~~~
/home/unknown/myApp/platforms/android/res/values/strings.xml:4: Error: "launcher_name" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
    <string name="launcher_name">@string/app_name</string>
            ~~~~~~~~~~~~~~~~~~~~
/home/unknown/myApp/platforms/android/res/values/strings.xml:5: Error: "activity_name" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
    <string name="activity_name">@string/launcher_name</string>
            ~~~~~~~~~~~~~~~~~~~~

   Explanation for issues of type "MissingTranslation":
   If an application has more than one locale, then all the strings declared
   in one language should also be translated in all other languages.

   If the string should not be translated, you can add the attribute
   translatable="false" on the <string> element, or you can define all your
   non-translatable strings in a resource file called donottranslate.xml. Or,
   you can ignore the issue with a tools:ignore="MissingTranslation"
   attribute.

   By default this detector allows regions of a language to just provide a
   subset of the strings and fall back to the standard language strings. You
   can require all regions to provide a full translation by setting the
   environment variable ANDROID_LINT_COMPLETE_REGIONS.

   You can tell lint (and other tools) which language is the default language
   in your res/values/ folder by specifying tools:locale="languageCode" for
   the root <resources> element in your resource file. (The tools prefix
   refers to the namespace declaration http://schemas.android.com/tools.)

5 errors, 0 warnings
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':lintVitalRelease'.
> Lint found fatal errors while assembling a release target.

  To proceed, either fix the issues identified by lint, or modify your build script as follows:
  ...
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }
  ...

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Considering the fact that the plugin is translated in each language, I think it is fair to assume that the buttons should be translated too.
But this only solves part of the issue as some of the translation errors concern the app_name, activity_name and launcher_name meaning that as soon as translations are included by one plugin your app build will break as it will require translation for the other strings. So to fix the second part I believe the best solution is to add translatable="false"to each of your string in strings.xml.

+1 I use ionicframework. And have the same when trying to ionic build android --release. I think it's not a big deal to add missed data.

where to add these lines ? im using ionic too and it fail to build --release

Having same problem. Building signed APK fails.
platforms/android/res/values/multiimagechooser_strings_en.xml
Error:(7) Error: "discard" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
Error:(8) Error: "done" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
Error:(3) Error: "app_name" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
Error:(4) Error: "launcher_name" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]
Error:(5) Error: "activity_name" is not translated in "de" (German), "es" (Spanish), "fr" (French), "hu" (Hungarian), "ja" (Japanese), "ko" (Korean) [MissingTranslation]

How to do correct translate?

@morfair @david-yoshi @alzalabany
In my first post I gave 4 solutions that you guys can use accordingly to your taste...

Need more detail on how to do it. What files need to be edited etc. For example I finally fixed it by adding
lintOptions {
disable 'MissingTranslation'
}
to the android{} block in build.gradle

I just edited my first post with the files paths and added a fifth solution...
Tip: I stopped using this plugin and used cordova-plugin-camera if I remember correctly it was because this one was crashing in some devices...

这种半吊子水平还搞什么国际化，去掉src/android/Library/res/下面的各种语言。配置文件即可


Explicitly export functions

Hey!
Got a small enhancement here, to comply with type checking tools requiring explicit exports of symbols.
Background
I've come across a project that uses this package and trying to type-check using mypy, which fails as follows:
$ mypy --explicit-package-bases --ignore-missing-imports --strict .

error: Module "auto_click_auto" does not explicitly export attribute "enable_click_shell_completion"  [attr-defined]

@KAUTH would appreciate you taking a look :)

Hey @guy-av thanks for investigating this and coming up with a proposal!

I've come across a project that uses this package and trying to type-check using mypy, which fails as follows:

$ mypy --explicit-package-bases --ignore-missing-imports --strict .

error: Module "auto_click_auto" does not explicitly export attribute "enable_click_shell_completion"  [attr-defined]

To sum up, in the mypy type checking that was run, the --strict flag that's being used returns the error mentioned in the description, because of the --no-implicit-reexport strictness flag that is included with --strict.
I believe that instead of keeping track of an all or __all__ list we can import using from-as. click itself follows a similar paradigm. So, for example, in our case it would be:
# This will re-export it as enable_click_shell_completion and allow other modules to import it
from .core import enable_click_shell_completion as enable_click_shell_completion

For more information, you can read https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-no-implicit-reexport.
Note:
For packages that will be using older versions of auto-click-auto we can ignore this error explicitly when using stricter mypy flags, for example, with # type: ignore[attr-defined].

I believe that instead of keeping track of an all or __all__ list we can import using from-as. click itself follows a similar paradigm. So, for example, in our case it would be:

# This will re-export it as enable_click_shell_completion and allow other modules to import it

from .core import enable_click_shell_completion as enable_click_shell_completion

Cool! Never knew from-as addresses this issue, I'll change the code to follow this notation

For packages that will be using older versions of auto-click-auto we can ignore this error explicitly when using stricter mypy flags, for example, with # type: ignore[attr-defined].

Definitely
Also possible with mypy --implicit-reexport.


Merging months of changes in guy-pi-debug back into Master

Guy accepted Guy's pull request (which probably means I'm not using git properly!)


Core dump: Assertion `editor_area' failed

Hello,
I tried to build the package on Archlinux.
Build is fine (with the fix 56c4577 ), but at start up there is a crash:
./nvui
nvui: nvui/src/cursor.cpp:37: Cursor::Cursor(EditorArea*): Assertion `editor_area' failed.
zsh: abort (core dumped)  ./nvui
I can provide versions of libraries if needed :)
Thanks a lot and have a nice day!

I can confirm it, I'm also ArchLinux. I'm using wayland (swayvm).
https://github.com/rohit-px2/nvui/blob/56c45771eab60258bbf105b16e175da4cad770ee/src/cursor.cpp#L37
nvui starts if I remove the assertation and works without any obvious problem. My guess is that the assert was intended for the method argument ea, not for editor_area.

Yeah, I just saw it. I was intending to assert ea.

@tom-kuca @the-glu I've fixed the assertion on the latest commit.

I can confirm it's working now, thanks for the quick fix :)

Good to hear! I'll close this issue then.


⚠ Bofrost.lu has degraded performance

In 711746b, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2010 ms

Resolved: Bofrost.lu performance has improved in 961c3f1 after 52 minutes.


Zend\Authentication\Adapter\Ldap::checkGroupMembership()

What's for it's protected? What's for it's here?
My env = Active Directory.
Anyway it seems bugged for me cuz filters are wrong for Active Directory. I'm not sure for OpenLDAP anyway.
So, if we provide to adapter options ['group' => 'Domain Users'] for example, then ldap query will be like:

Failed to verify group membership with (&(&(cn=Domain Users)(uniqueMember=CN=Username,OU=Users,DC=dc,DC=domain,DC=com))(objectClass=groupOfUniqueNames))

This query is absolutely wrong for Active Directory
It's also wrong cuz to check user membership we need to search a user with a memberOf attribute, not a group with a member attribute. Also it may affect performance, cuz group can have alot of user records in member attribute. Usualy more, than user have memberships in memberOf
Also member attribute will be filed only if checked group is Primary Group for this user, but this not means "membership" it self, and this mechanism is stale for Active Director anyway.
Quote: M$ blog record

According to what little we know about Active Directory, the primary group is used only if you have to deal with Macintosh clients or POSIX-compliant applications; otherwise, you can just leave the primary group alone

By default "Domain Users" is primary for all new users.
And there is some tips when searching memberof and group is also "Primary Group" for user LDAP query not work for group Domain Users
for "Domain Users" and if it's primary for user:
(&(cn=Username)(|(primaryGroupID=513)(memberof=CN=Domain Users,CN=Users,DC=dc,DC=domain,DC=com)))
or more strict will be better:
(&(objectclass=user)(distinguishedName=CN=Username,CN=Users,DC=dc,DC=domain,DC=com)(|(primaryGroupID=513)(memberof=CN=Domain Users,CN=Users,DC=dc,DC=domain,DC=com)))

This issue has been closed as part of the bug migration program as outlined here - http://framework.zend.com/blog/2016-04-11-issue-closures.html


Articulation points in A Graph | C++

🚀 Feature
Finding the articulation points in an undirected graph in c++
Have you read the Contributing Guidelines on Pull Requests?
Yes
Motivation
Finding Articulation points can help us understand that it is somehow related to bridges but finding bridges algorithm cannot help us to get the articulation points. They are completely different methods.
Pitch
Articulation points are vertices which when removed make the graph disconnected or precisely increase the number of connected components in a graph.

Please assign me this issue in Java under Dwoc @HarshCasper sir

Please assign me this issue in Java under Dwoc @HarshCasper sir


Throw explicit error for more than one argument to spark-bench.sh. Also provide usage string.

bin/spark-bench.sh only accepts one argument, which is the path to the configuration file for the run. Additional arguments should cause spark-bench.sh to throw an error and print a usage string.
Also, users should be able to provide -h and/or --help to see the usage string, as in
bin/spark-bench.sh -h

or
bin/spark-bench.sh --help

but NOT
bin/spark-bench.sh -h /path/to/config

This is an issue that was brought to my attention as a sidenote of #118

@stackingfunctions

Closed by PR from @stackingfunctions! Thank you!


Custom Certificate not working

Summary
I added my hostname certificate to Kong certificate but when i try to request with hostname Which is same with certificate sni, Kong alway using server default certificate. Some one please help me to fix this
Steps To Reproduce

Add certificate via postman (x-www-form-urlencoded) or via Kong Dashboard (I try both)
It work fine. My certificate strurture is

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

snis:
xxx.com
tracker-dev.xxx.com

call curl get certificate

{
    "next": null,
    "data": [
        {
            "created_at":<PHONE_NUMBER>,
            "cert": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----",
            "id": "3ff5dd22-389e-41cb-9032-cb1f2837be96",
            "key": "-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----",
            "snis": [
                "xxx.com",
                "tracker-dev.xxx.com"
            ]
        }
    ]
}

Call curl get snis

{
    "next": null,
    "data": [
        {
            "certificate": {
                "id": "3ff5dd22-389e-41cb-9032-cb1f2837be96"
            },
            "created_at":<PHONE_NUMBER>,
            "name": "xxx.com",
            "id": "316ba693-809d-4498-8cc3-6c733966387e"
        },
        {
            "certificate": {
                "id": "3ff5dd22-389e-41cb-9032-cb1f2837be96"
            },
            "created_at":<PHONE_NUMBER>,
            "name": "tracker-dev.xxx.com",
            "id": "516eecb9-9b53-4384-a73e-499ee8dde721"
        }
    ]
}

I added service and route with Host is tracker-dev.xxx.com, path is : /wss
Add entry <IP_ADDRESS> tracker-dev.xxx.com to /etc/hosts
Try to call curl

curl -v -k -i https://tracker-dev.xxx.com:8443/wss

Result:

*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to tracker-dev.xxx.com (<IP_ADDRESS>) port 8443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=Kong; OU=IT Department; CN=localhost
*  start date: Nov 21 07:14:14 2018 GMT
*  expire date: Dec 21 07:14:14 2018 GMT
*  issuer: C=US; ST=California; L=San Francisco; O=Kong; OU=IT Department; CN=localhost
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
> GET /wss HTTP/1.1
> Host: tracker-dev.xxx.com:8443
> User-Agent: curl/7.61.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
HTTP/1.1 404 Not Found
< Content-Type: text/html; charset=utf-8
Content-Type: text/html; charset=utf-8
< Content-Length: 139
Content-Length: 139
< Connection: keep-alive
Connection: keep-alive
< X-Powered-By: Express
X-Powered-By: Express
< Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *
< Content-Security-Policy: default-src 'self'
Content-Security-Policy: default-src 'self'
< X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
< Date: Wed, 21 Nov 2018 08:56:51 GMT
Date: Wed, 21 Nov 2018 08:56:51 GMT
< X-Kong-Upstream-Latency: 5
X-Kong-Upstream-Latency: 5
< X-Kong-Proxy-Latency: 5
X-Kong-Proxy-Latency: 5
< Via: kong/0.14.1
Via: kong/0.14.1

<
<!DOCTYPE html>

<meta charset="utf-8">
<title>Error</title>

Cannot GET /

* Connection #0 to host tracker-dev.xxx.com left intact

Additional Details & Logs

I used Kong via Kong helm chart version (0.6.3), connect to Kong via k8s node port
Kong version (0.14.1)

The current version of Kong only uses certificates to pick what to use as a server. Not which key/cert it uses as a client.

@james-callahan I don't understand here, How can i use dynamic certificate for special hostname ?

anyone help me?

I use the Kong plugin kong-plugin-jwt-keycloak:latest on kong 1.2.1 docker
In this plugin is made the verification of information in a JWT token, incl http/https requests from within Kong to the server originating the token
eg https://MY-HOST:8443/auth/realms/develop/.well-known/openid-configuration will lead to the public key of the token issuer
In my instance of Kong, such a request fails in https because the CA can not be verified
As the plugin runs within Kong, I ask my question also in this project
The CA certificate having issued the server certificate of MY-HOST is not included in the certificates of the Alpine image of Kong
It is verified by executing
docker exec dc-kong_kong_1 sh -c "curl https://MY-HOST:8443/auth/realms/develop/.well-known/openid-configuration" that fails (unable to verify the CA having issues the certificate of MY-HOST)
I tried to solve the problem by adding explicitely this CA at the level of the docker image :
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
COPY ./TERENASSLCA3.crt /usr/local/share/ca-certificates/TERENASSLCA3.crt
RUN update-ca-certificates

As a consequence the curl request now succeeds
However from within the Kong plugin the error remains
In Lua the request is executed this way :
local url = require "socket.url"
local http = require "socket.http"
local https = require "ssl.https"

local function get_request(url, scheme, port)
    local req
    if scheme == "https" then
        req = https.request
    else
        req = http.request
    end

    local res
    local status
    local err

    local chunks = {}
    res, status = req{
        url = url,
        port = port,
        sink = ltn12.sink.table(chunks)
    }

	-- manage res ...
end

Do you have an indication about how to add a CA certificate for Kong ?

Hey @vietkute02,
Thanks for opening this issue. Is this still valid with newer Kong versions?
Thanks!


The content encryption algorithm used at encryption time does not match the algorithm stored for decryption time. The object may be altered or corrupted.

Description
I am using SES rule set to save encrypted messages in a S3 bucket. The messages are encrypted using kms key.
When I try to get this objects using Amazon S3 Encryption client for .NET, I have a error:
The content encryption algorithm used at encryption time does not match the algorithm stored for decryption time. The object may be altered or corrupted.
I noticed that sdk is validate a material description metadata and in this json doesn't have encryption context property (aws:x-amz-cek-alg).

Not is possible to set this property in request encryption context, I have a error:
Conflict in reserved KMS Encryption Context key aws:x-amz-cek-alg. This value is reserved for the S3 Encryption Client and cannot be set by the use
Reproduction Steps
Try to get a encrypted object saved in S3 by a SES rule set.
Logs

Environment

SDK Version: 2.0.3
Package Version: 2.0.3
OS Info: Windows 10
Build Environment Visual Studio
Targeted .NET Platform:  .Net Core 3.1

Resolution

[ ] :wave: I can/would-like-to implement a fix for this problem myself

This is a :bug: bug-report

We are having the same issue, could you give an update please?

I am having the same issue. Any updates on this would be really appreciated!
To anyone else encountering this issue... have you determined a suitable workaround or alternative? Would love to hear how your handling this. My org has the requirement (not so much an option) that we encrypt the emails SES receives, so decryption is necessary one way or another.

Hi Justin, I stopped using encryption using SES and used only encryption on the S3 bucket.
https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html
But you can try using another framework like Node.js.
https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/s3-example-client-side-decrypt-item-with-kms-master-key.html

Hi there,
Thank you creating this issue.
Can you post the same code that you wrote which is failing? That way I can make sure that I am addressing the problem you are facing. Also, are you using AmazonS3EncryptionClientV2 or AmazonS3EncryptionClient?
Thank you.

Thanks you @wnmendonca, and everyone who was involved in this thread.
We have finally released a fix for this bug as part of this PR. The fix has also been released in version 2.0.5 of NuGet package Amazon.Extensions.S3.Encryption on 02/13/2023.

Please note that you should set your AmazonS3EncryptionClient configuration to"SecurityProfile.V2AndLegacy" for it to work.


Bug - Manager - Skill pop-up on Job Builder. Cannot scroll after pop-up resizes

Description
Skill pop-up on Job Builder. Cannot scroll after pop-up resizes. This actually makes it impossible to click on the "submit" button.
Steps to Reproduce
Steps to reproduce the behavior. Example:

Go to Skills step of the Job Poster Builder
Click on "Other Skill" drop down at the bottom of page. I actually did not get the same bug when I clicked on the suggested skills.
Click on the "add specificity" button under skill description
Try to scroll down on page to the "submit" button.

Duplicate of #1582


Remove the manual-loop workaround for VertexAI embeddings

LangChain fixed the "max-5-items-in-batch" problem with VertexAI embeddings on May 29th, see here.
The vertexAI path for embedding computation in the examples can be reverted to normal.

done.


Fixes for compara API change in 109

Description
THIS IS A CRITICAL FIX NEEDED FOR THE 109 STAGING SITES
One of the compara API calls has been changed to deal with metazoa annotation, where stable IDs may not be unique within a division. The new call requires passing in a GenomeDB object, which we can get from the API using the species production name.
The original call (to fetch a gene member) was fetch_by_stable_id() - it has changed to fetch_by_stable_id_GenomeDB(). It is used in quite a few different views with data related to gene trees and aligments.
Views affected
The following pages should load correctly with no errors:

Gene Summary: http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/Gene/Summary?g=ENSG00000139618;r=13:32315086-32400268
Orthologues: http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/Gene/Compara_Ortholog?db=core;g=ENSG00000139618;r=13:32315086-32400268
Orthologue alignments: http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/Gene/Compara_Ortholog/Alignment?db=core;g=ENSG00000139618;g1=MGP_SPRETEiJ_G0029058;hom_id=89314964;r=13:32315086-32400268
Gene Tree: http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/Gene/Compara_Tree?db=core;g=ENSG00000139618;g1=MGP_SPRETEiJ_G0029058;hom_id=89314964;r=13:32315086-32400268
LRG Summary: http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/LRG/Summary?lrg=LRG_1
RNA secondary structure: http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/Gene/SecondaryStructure?db=core;g=ENSG00000263764;r=22:3931050-39319113;t=ENST00000583861
Synteny (table under image): http://wp-np2-1f.ebi.ac.uk:10109/Homo_sapiens/Location/Synteny?db=core;g=ENSG00000263764;r=22:39319050-39319113;t=ENST00000583861

Possible complications
Should only affect the views that use this API call.
Merge conflicts
Should be OK, since it only touches a few specific areas of the code.
Related JIRA Issues (EBI developers only)
https://www.ebi.ac.uk/panda/jira/browse/ENSWEB-6679

Does this also needs updating (and any other in public-plugins)?
https://github.com/Ensembl/public-plugins/blob/main/widgets/modules/EnsEMBL/Web/Component/Gene/SpeciesTree.pm#L37

Looks like there are some instances in eg-web-common, this search can help you find out which repos are affected:
https://github.com/search?q=get_compara_Member&type=Code

Does this also needs updating (and any other in public-plugins)? https://github.com/Ensembl/public-plugins/blob/main/widgets/modules/EnsEMBL/Web/Component/Gene/SpeciesTree.pm#L37

PR: https://github.com/Ensembl/public-plugins/pull/620

Looks like there are some instances in eg-web-common, this search can help you find out which repos are affected: https://github.com/search?q=get_compara_Member&type=Code

PR: https://github.com/EnsemblGenomes/eg-web-common/pull/101


Readonly input displays errors on form-field

Please describe the feature you would like to request.
If the input has the attribute readonly, the input shouldn't show any errors. Unfortunately, the documentation doesn't say about readonly states, but I think it is quite strange show to a user errors if he didn't change a value in the input.
What is the use-case or motivation for this proposal?
If the input readonly, the matInput shouldn't do any actions.
Is there anything else we should know?
Here is the example https://stackblitz.com/edit/angular-l1uvza?file=app/input-error-state-matcher-example.html
Steps to reproduce:
click on the readonly input
see errors

no need anymore


Local features of MSVD & MSRVTT

You have done a great job! Have you extracted the local feature of msvd & msrvtt?  If you don't mind, can it be released?

We added msvd and msrvtt feature file link. Thank you for having an interest in our work.

thank you so much!


Avahi returns UTF-8 encoding error

With avahi I see
server.c: Packet too short or invalid while reading response record. (Maybe a UTF-8 problem?)

Interestingly avahi can resolve the (blah.local) hostname, just can't list services
Originally posted by @ZanderBrown in https://github.com/cbrand/micropython-mdns/issues/5#issuecomment-1253917144

@ZanderBrown I do not have a linux machine locally available right now which makes it a bit hard to debug so would either require to spin up a vm to check this further.
First of all I would like to know a couple of things though: Did you when testing it only install it via upip before too or did you bake it into your own micropython installation and did only upgrade it with upip because I am not quite sure when which code base it prioritizes.
Otherwise it would be great if you could tell me quickly how you test it, I would test it via avahi-browse but would like to know how you produce the avahi error on your end.

Right both were upip'd, and the underlying ‘firmware’ build is micropython master (with built-in mdns disabled)
It was actually two different devices, so certainly no cross-contamination between versions
The messages I'm getting are from avahi-daemon --kill && avahi-daemon --debug (in a root session), i.e. straight from the daemon itself — avahi-browse tells you nothing of course

@ZanderBrown thanks for the information. I had a bit of time to look into it today and could reproduce the issue in a VM in my network.
Version 1.2.1 works now with avahi and correctly display the service via avahi-browse for me. Can you check if it fixes the issue on your end?

+ wlp60s0 IPv4 pico-109362                                   _myawesomeservice._tcp local
Failed to resolve service 'pico-109362' of type '_myawesomeservice._tcp' in domain 'local': Timeout

MDNS: Adding callback with id 0
MDNS: Added consumer on stopped mdns client. Starting it now.
MDNS Responder: Responding to DNS A question for pico-109362.local
MDNS Responder: Answering service record query with services _myawesomeservice._tcp.local
MDNS Responder: Answering service record query with services _myawesomeservice._tcp.local
MDNS Responder: Responding to DNS PTR question for _myawesomeservice._tcp.local
MDNS Responder: Responding to DNS SRV question for pico-109362._myawesomeservice._tcp.local
MDNS Responder: Responding to DNS A question for pico-109362.local
MDNS Responder: Responding to DNS TXT question for pico-109362._myawesomeservice._tcp.local
Task exception wasn't retrieved
future: <Task> coro= <generator object 'send_response' at 2000bc60>
Traceback (most recent call last):
  File "uasyncio/core.py", line 1, in run_until_complete
  File "/lib/mdns_client/client.py", line 163, in send_response
  File "/lib/mdns_client/structs.py", line 104, in to_bytes
  File "/lib/mdns_client/structs.py", line 104, in <listcomp>
AttributeError: 'NoneType' object has no attribute 'to_bytes'
MDNS Responder: Responding to DNS SRV question for pico-109362._myawesomeservice._tcp.local
MDNS Responder: Responding to DNS TXT question for pico-109362._myawesomeservice._tcp.local
MDNS Responder: Responding to DNS A question for pico-109362.local
Task exception wasn't retrieved
future: <Task> coro= <generator object 'send_response' at 2000b060>
Traceback (most recent call last):
  File "uasyncio/core.py", line 1, in run_until_complete
  File "/lib/mdns_client/client.py", line 163, in send_response
  File "/lib/mdns_client/structs.py", line 104, in to_bytes
  File "/lib/mdns_client/structs.py", line 104, in <listcomp>
AttributeError: 'NoneType' object has no attribute 'to_bytes'

Well, avahi-browse certainly seems to see the service now — but something still seems up

Aha, providing data=  (I've been using this snippet for testing) seems to have everything working perfectly — which is fine, I need to provide that in my project anyway

Thanks for the additional information.
I think I also found what is going on there and provided a fix in 1.2.2. Can you give it one more try? I couldn't reproduce that error state locally but am pretty sure due to the traceback that I fixed it there.

1.2.2 avoids the exception on device, but avahi still reports a timeout (presumably it still expects a TXT record, even if it is empty)

Alright hopefully only one more :) Sorry for using you as a guinea pig:
1.2.3 now always returns a TXT record even if it is empty.

All looks good here

Thank you very much for the avahi testing and input! I am going to close the issue. Please open a new issue if you encounter anything else.


Remove version: OneWare.OneWareStudio version <IP_ADDRESS>

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

For moderators or/and anyone else

[!Caution]
As a result of several personal problems I've had over the last few months + my final exams coming up very soon, I'm currently unable to look at my GitHub notifications every day and maintain my executions correctly.
If you detect a certain problem on a certain pul request:

Either you can close the pull request directly without mentioning me.
Or you can send me a message on X (Twitter): @Exorcism0666

Thank you for your understanding, and I'm sorry if some pull requests can't be approved due to the situation I'm in.

This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping Exorcism0666.

[!warning]
With the new version of Komac, numerous Pull Requests may contain bugs or unwanted elements. If such issues arise, please tag russellbanks so that these bugs can be addressed in future updates.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

URL: https://cdn.one-ware.com/onewarestudio/<IP_ADDRESS>/OneWareStudio-<IP_ADDRESS>-x64.msi
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 913)


How are the inputs arranged for in-context retrieval evaluation?

Hi, thanks for the nice work and code! I wonder how the input tokens are arranged for in-context retrieval evaluation? E.g. in Table 1 "5 captions, 4 images", are the input to the model like ([IMG][Caption])x4+[Caption] or [IMG]X4+[Caption]x5 or something else? I guess it's the former one?
Also, how are the in-context prompts selected - are they randomly selected or the pairs that have similar semantic features with the query caption are selected? It would be great if you could provide a code snippet for it. Many thanks!

Hi, thanks for your interest! For Table 1, the input is: ([Caption][IMG])x4+[Caption]+[RET]. We basically want to format the in-context examples similar to the retrieval, so we do [Caption][IMG] throughout.
I've uploaded the code for reproducing Table 1 here: https://github.com/kohjingyu/fromage/blob/main/evals/VIST_Contextual_Image_Retrieval.ipynb (there's also a .py script in the same folder, which does the same thing).
Note that there was a bug in a previous version, so the results that this script produces (R@1 of 18.2) is actually better than the results we have in the current version of our paper (R@1 of 15.6). We'll update the paper shortly to reflect this.

Hi, just a quick follow-up question. The weights of ret_input_embeddings in this line doesn't seem to be in model.state_dict() when saving the model. I wonder if I should manually extract the ret_input_embeddings from the embedding layer with the ret token index?

Ah yes, sorry about that. We pruned the checkpoint to remove the pretrained weights/embeddings so that it was small enough to upload to GitHub :)
If you are using a model saved with L379 in main.py, you should be able to load the checkpoint by removing these two lines:
https://github.com/kohjingyu/fromage/blob/7d735cd334a21e307929cdb36d845cd00599f54a/fromage/models.py#L678-L679
Simply put, if you did not prune the checkpoint, torch.load
https://github.com/kohjingyu/fromage/blob/7d735cd334a21e307929cdb36d845cd00599f54a/fromage/models.py#L676
should be sufficient to load it.

I wonder if I should manually extract the ret_input_embeddings from the embedding layer with the ret token index?

You can also do this if you would like to prune the checkpoint. I've uploaded the script we used for this here (although it's untested). I think it would probably be easier if you just commented out the above lines for a custom checkpoint, though.
Hope that helps!

Thank you for the quick reply!


Create a self invoking function in js

It will be invoked as soon as it is sourced to the page upon page loading

Done. added function for search functionality


Hide intro text on blog post

Align title with the body text as it looks weird now without the line/intro text

Done


fix: always listen to events

Description
Brings back always-on event listeners, as we can't rely on values set in the React event loop to conditionally listen to events, as it causes some events to be missed.
Pull Request Type

[x] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)
Closes https://github.com/shapeshift/web/issues/5045
Risk
Small.
Testing
Refreshing on Native wallet should prompt for the password modal again, and KeepKey connections should be great.
Engineering
☝
Operations
☝
Screenshots (if applicable)
N/A

Current dependencies on/for this PR:

develop

PR #5050   👈

This comment was auto-generated by Graphite.


Fix that Docker Desktop's k8s cluster (and possibly the remote cluster as well) stops responding in some cases

Seemingly happens after too many cases of files being "live-updated" in the pod by Tilt.

Closed due to lack of specificity. (may have been similar/same as: https://github.com/debate-map/app/issues/314)


Supply context for http requests

We aggregate graph API tokens(XMRUs) by

binding a count bus to ctx during backup initialization.
Incrementing counters after extracting the bus reference from ctx in metrics middleware. We create a new count bus if bus reference is not found.

While testing the count bus, I found that it wasn't producing correct total XMRU values. This is because for http requests created by graph requestor, we are passing context.Background() during request creation. This results in creation of multiple count busses during 2) above, leading to incorrect total values.
We don't have this problem for http requests created via graph servicer. Because kiota http adapter attaches supplied ctx to request.

Does this PR need a docs update or release note?

[ ] :white_check_mark: Yes, it's included
[ ] :clock1: Yes, but in a later PR
[x] :no_entry: No

Type of change

[ ] :sunflower: Feature
[x] :bug: Bugfix
[ ] :world_map: Documentation
[ ] :robot: Supportability/Tests
[ ] :computer: CI/Deployment
[ ] :broom: Tech Debt/Cleanup

Issue(s)

#

Test Plan

[x] :muscle: Manual
[ ] :zap: Unit test
[ ] :green_heart: E2E

@ryanfkeepers Looks like this change is causing tests to timeout(except last run). So I'm removing it from mergequeue for now. It's possible that rate limiter middleware might be impacted by this fix ( QueueRequest -> ctxLimiter)
I'm taking a look. Will likely continue investigation tomorrow. We can let this be for now.

And just when I wrote above comment, the integration tests passed :/

I'm taking a look. Will likely continue investigation tomorrow. We can let this be for now.

@pandeyabs Actually, you just jogged my memory.  We purposefully avoid attaching the rate limiter here (by not attaching the context) specifically because item content downloads do not fall into the drive rate limiting system.  So this change will have unwanted side effects of unnecessary over-limiting.
That said, skipping the limiter by skipping the context is an anti-pattern and a smell, and we need to find a way to work around that without dropping the other things we want in the context.
Would you mind reverting this PR in the short term until that larger control gets fixed?  I've created an issue on the topic and assigned you to it here: https://github.com/alcionai/corso/issues/4364.

specifically because item content downloads do not fall into the drive rate limiting system.

They do. Graph throttling issues that we have seen with SDK consumers are with item content downloads going over the 1250 / min limit. It's undocumented by MSFT though. Will discuss more offline.

Closing this. Going to push this change as part of https://github.com/alcionai/corso/pull/4393/files so that we don't break main in the interim.


Use Prisma's Fluent Api

I was wondering if it is somehow possible to use Prisma's Fluent Api.
While this works with prisma-mock:
client = createPrismaMock({}, Prisma.dmmf.datamodel);

await client.category.create({
  data: {
    id: 1,
    name: 'cat 1',
  },
});

await client.tag.create({
  data: {
    id: 1,
    name: 'tag 1',
    categoryId: 1,
  },
});

// Nested tags are returned properly:
const tmp = await client.category.findUnique({
  where: {
    id: 1,
  },
  include: {
    tags: true,
  },
});

but this will throw ....findUnique(...).tags is not a function:
const tmp = await this.prisma.category.findUnique({
  where: {
    id: 1,
  },
}).tags();

Thanks in advance for an answer & thanks a lot for this very useful library!

Hi @singerla Thank you! That is a good question. Unfortunatly no it is indeed not yet supported.

Do you think this will be a good approach to mock fluent API? Would you suggest to implement this in prisma-mock at all?


Dependency Update Request: Update to latest Microsoft.Data.SqlClient 3.0.x

Is there any way you could update to the latest Microsoft.Data.SqlClient (3.0.x) ?
Thanks,
Christine

@ChristineBoersen It doesn't have an upper-bound on the PackageReference to Microsoft.Data.SqlClient so if you install 3.0.x in your project then the build system will automatically add a <BindingRedirect> for you.
...or have you done that already and discovered there's a breaking change or a bug?


skip empty name in stop

Hi I have this error:
Error: Missing required value in stops.txt for stop_name on line 11683.
Do you think I might possible to leave those missing value blank in the geojson instead of raising an error?
Best

I just pushed an update that makes this field optional. Check out GTFS-to-geoJSON version 1.0.5


Change the formatting

Hi,
Thank you for putting this together, I think it very clever.  I'm having a play with the code to try and get it to format the query how I write SQL and I was wondering if you could help.  Let's say I wanted to format the query like so.

SELECT COLUMN1
,      COLUMN2
FROM   TABLE1
WHERE  COLUMN1 = 'string'
GROUP  BY COLUMN1
,      COLUMN2

Any pointers on how I could do that?  I think its just a case of moving the type "word" up to the top level key words, and the commas left aligned.  I say just! I've been having a play but I think it's quite difficult!
Thanks.

One way you could accomplish this is writing a tool that would take in the sql-formatter output and move the commas from end of lines to the beginning of lines. I think that would be simpler than trying to modify the indentation code inside sql-formatter itself.

@mickeysox - did @nene answer your question?


Keyboard shortcuts won't work when modifier is present

If I try to change the status of an item using the keyboard shortcut (e.g. option+x) I get an error if there is a modifier for the item (e.g. !) and there is no space before the modifier.
To reproduce:

type - [ ]! this is an item
press option+x

Note that with - [ ] ! this is an item it works as expected.

Thanks for pointing this out, @riccardoferretti, and apologizes for the slow response—I was away for a few weeks.
I believe the issue occurs here: https://github.com/mihaiconstantin/bujo/blob/66a4f892f14faafd9e152f2c1b91223f485d6d56/src/models/Symbol.ts#L28
Because the Pattern.extractSymbol(symbol) fails to identify the line as a valid BuJo entry. This can be seen in the regex demo (i.e., https://regex101.com/r/ABVEf2/4) for the following text:
- [ ]! Some example task ^2rj7bd6p8pph

I will fix the regex pattern and push out an update. Thanks for catching this!


how can i change the cell font size?

I had added font-size in the css but its doesn't work, please help~
.tr-ng-grid > tbody > tr > td > .tr-ng-cell
{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
font-size:40px;
}

It does work:
http://jsfiddle.net/MoonStorm/sk21ckun/


Possible nonce naming improvement

Hello,
You can change the field data for better optimization, specifically as follows:
resources/views/sections.php
Change
<?php wp_nonce_field( 'wp_settings_save_' . $settings->option_name, '_wpnonce' ); ?>
or
<?php wp_nonce_field( 'wp_settings_save_' . $settings->option_name. '_wpnonce' ); ?>

Hi! Can you explain me why this would be better than the current code? Is it just the appending of _wpnonce to the name?
https://github.com/jeffreyvr/wp-settings/blob/master/resources/views/sections.php#L8C5-L8C97
Full disclosure, I'm going to edit the name of this issue as I think it gives the impression there is a CSRF vulnerability which, at least for now, I'm not seeing.

Because "wp_settings_save" nonce content is not verified

This issue has been stale for a bit. Looking back into it, I truly can't figure out what's wrong with the code as is.
The nonce field is set, and is verified - I don't understand what is wrong with the current implementation. If you stil feel I'm overlooking something, please let me know exactly what should be changed.
Thanks for reporting, but for now I'm closing this issue.


fix namespace packages handling of wheels

I'd like some feedback on this, not use if there's a better approach...
Fix #1214.

OK, 2 issues I can think of when using a pth file:

we cannot use the one included in the wheel: modules are loaded relative to it
the pth file won't be uninstalled by pip

Oh, gosh. I see now that easy_installs wheels by converting them to eggs. And since eggs do have these __init__ files, it seems perfectly reasonable for them to retain them as part of the install process. So this PR seems like the right fix, as the behavior falls under the existing deprecation of eggs themselves.


add baudrate 1500000

1500000bps is needed for single board computers with RK3399 CPUs
I hope this change is enough 😄

Thanks! @allcontributors please add @frauhottelmann for code

Thanks! @allcontributors please add @frauhottelmann for code


Added My Portfolio

https://dhruvabhat24.github.io/Portfolio-Collection/
Reference Live demo link

If you are contributiong by adding your portfolio then please add all the source code inside a folder with your name. But I can't accept this pr because it's very very simple , jus few cards with words ! I think I have to design ui first and then should create issue with description , I willl do that soon . Till then you can contribute by adding your portfolio , I will accep your pr

Okay if anything required I am ready to work on it.


fix stories with tracking

https://zakodium.github.io/react-plot/?path=/story/api-tracking--tracking-example
https://zakodium.github.io/react-plot/?path=/story/api-tracking--tracking-big
Those 2 stories seem to be broken
@lpatiny can you confirm before assigning to Wadjih?

Yes they are indeed broken but I guess they should be redone with the new useStartMoveEnd hook.
Should it be a 'useTracking' hook that extends useStartMoveEnd ?
Should this hook returns an object containing 'annotations' like the zoom ?
This hook would accept a callback that needs to return 'annotations' that will be placed in the spectrum.
const tracker = useTracking({
    onMove: (event) => {
      return <Text
          x={coordinates.x}
          y={coordinates.y}
        >{coordinates.x.toFixed(2) + ' / ' + coordinates.y.toFxied(2)}
        </text>;
    },
  });

Tracking information should disappear when leaving the plot.
Of course the example could be a little bit more fancy with a groups that contains a bullet annotation on the closest point and text hover.

I'll give this a try

Some ideas:

Being able to highlight the position of the series but also the list of the values in a kind of legend. To do this you need the little component that has the same style as the series.


Panic when flag package is used in wasm

No matter if the flag package is a direct dependency or transitive dependency, it will panic.
Minimum steps to reproduce it:

Change main.go in https://github.com/prep/wasmexec/blob/main/examples/hello/main.go to:

package main

import (
	"os"
	_ "flag"
)

func main() {
	_, _ = os.Stdout.Write([]byte("Hello from Go!\n"))
}

Compile it to wasm:

GOOS=js GOARCH=wasm go build -o hello.wasm ./main.go

Build wasmtime exec runtime

$ cd wasmtimexec/example
$ go build -o wasmtimeexec ./main.go

Run it with hello.wasm:

./wasmtimeexec ../../examples/hello/hello.wasm

It will produce the following error:
panic: runtime error: index out of range [0] with length 0

goroutine 1 [running]:
flag.init()
        /usr/local/go/src/flag/flag.go:1047 +0x2f

It seems the problem is that: flag pacakge try to run var CommandLine = NewFlagSet(os.Args[0], ExitOnError) and os.Args is expected to hold the command-line arguments, starting with the program name.
It seems os.Args is not correctly populated somehow.

I would guess you need to pass args in your script to wasmtime run. args are totally optional as they aren't defined by WebAssembly, rather WASI, which is optional
wasmtime run [OPTIONS] <MODULE> [--] [ARGS]...

@codefromthecrypt This isn't being run from the wasmtime command line tool. Instead, it's using my example wasmtimeexec binary to run the hello example. The example itself is compiled with the standard Go runtime (as opposed to tinygo), so WASI doesn't come into play 😉
The solution here would be to take a hint from wasm_exec.js and implement this before calling the exported run() function:
// Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory.
let offset = 4096;

const strPtr = (str) => {
	const ptr = offset;
	const bytes = encoder.encode(str + "\0");
	new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);
	offset += bytes.length;
	if (offset % 8 !== 0) {
		offset += 8 - (offset % 8);
	}
	return ptr;
};

const argc = this.argv.length;

const argvPtrs = [];
this.argv.forEach((arg) => {
	argvPtrs.push(strPtr(arg));
});
argvPtrs.push(0);

const keys = Object.keys(this.env).sort();
keys.forEach((key) => {
	argvPtrs.push(strPtr(`${key}=${this.env[key]}`));
});
argvPtrs.push(0);

const argv = offset;
argvPtrs.forEach((ptr) => {
	this.mem.setUint32(offset, ptr, true);
	this.mem.setUint32(offset + 4, 0, true);
	offset += 8;
});

// The linker guarantees global data starts from at least wasmMinDataAddr.
// Keep in sync with cmd/link/internal/ld/data.go:wasmMinDataAddr.
const wasmMinDataAddr = 4096 + 8192;
if (offset >= wasmMinDataAddr) {
	throw new Error("total length of command line and environment variables exceeds limit");
}

this._inst.exports.run(argc, argv);

This shouldn't be too hard and should probably be implemented on the Memory interface. I'll have a look at this when I can. Work is kind of hectic right now so it might not be immediate 🙏

oops sorry indeed this isn't wasi :D motor memory fail!

@prep @codefromthecrypt Thanks for investigating it!

I've just pushed a change to main that adds the wasmexec.SetArgs() function and updated the example implementations for reference. For wasmtime (which you seem to be using), it looks like this:
args := []string{"example.wasm", "-runtime=wasmtime", "arg1", "arg2"}
envs := []string{"HOME=/", "PWD=/home/test"}

argc, argv, err := wasmexec.SetArgs(instance.Memory, args, envs)
// ...

runFn := instance.GetFunc(store, "run")
// ...

_, err = runFn.Call(store, argc, argv)

@prep It works great! Thanks a lot!


Issue loading Scenario Module values

Oh not at all. If it does break this it's only in a relatively minor way (it's all dependent on scenario module load order and I'm not really sure how that is decided, maybe based on the order they were installed?). But old version of Tarsier break in one of the worst ways possible. It interrupts the scenario module loading process, preventing any further scenario modules from loading. Many mods are completely dependent upon that happening (SCANsat won't work at all, for instance).
This line, which shows up every time a new scene is loaded, is one of the first things I look for when I see Tarsier in the list of installed addons.
[TST]: Getting Telescope Galaxy Status
NullReferenceException: Object reference not set to an instance of an object
at TarsierSpaceTech.TSTProgressTracker.OnLoad (.ConfigNode node) [0x00000] in :0
at ScenarioModule.Load (.ConfigNode node) [0x00000] in :0
at ScenarioRunner.AddModule (.ConfigNode node) [0x00000] in :0
at ProtoScenarioModule.Load (.ScenarioRunner host) [0x00000] in :0
at ScenarioRunner+	.MoveNext () [0x00000] in :0

Although this is an old bug, and was kinda fixed. I have refactored this part of the code. Deploy in net release.


Separate configuration for ignored files and watching

Currently the configuration for ignoring files doesn't distinguish between files for deployment and for watching. This can lead to problems with huge trees.
My use case are sites including large image pyramids, generated by vips. These are subdirectories including fragments of images which are used to provide zoomable  high resolution images to the user.
The result are several dozen image fragment for each provided image. This blows up the content tree quite a lot, but since these are generated externally, they doesn't need to be watched. Adding these folders to the ignoreFiles in the module mount section, also exclude them from access for the templates, which leads to the problem, that they can't get required metadata, like the image size.

Actually I don't have a valid clue. But as you might remember I was quite busy developing Hugo sites beginning 2021 and back then there have been such problems quite early (in terms of tree growth).
The error itself seems to be a timeout:
goroutine 52 [IO wait, 5 minutes]

There isn't a building problem since (output croped):
$ hugo
[...]

                   |  DE
-------------------+--------
  Pages            |   782
  Paginator pages  |     2
  Non-page files   | 31976
  Static files     |   881
  Processed images |   365
  Aliases          |   355
  Sitemaps         |     1
  Cleaned          |     0

Total in 11680 ms

What you do experience if you do:
hugo server --watch=false

Or maybe also:
hugo server --poll

Thanks, the first already did it (well, at least starting hugo):
                   |  DE
-------------------+--------
  Pages            |   782
  Paginator pages  |     2
  Non-page files   | 31976
  Static files     |   881
  Processed images |   365
  Aliases          |   355
  Sitemaps         |     1
  Cleaned          |     0

Built in 7396 ms
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address <IP_ADDRESS>)
Press Ctrl+C to stop

But now the watcher is gone. But since building ist quite fast, this will do for further development.
Do you need any more information, in case you want to fix this instead of make the watcher configurable?

What does

hugo server --poll

Do?

There isn't a building problem since (output croped):

There are more differences between hugo and hugo server than the watching, one major thing is that we (by default) writes everything to memory in server mode. There are flags to disable that.

Do you need any more information, in case you want to fix this instead of make the watcher configurable?

We have millions of options already. We're not adding more without understanding that it's needed.

What does

hugo server --poll

Do?

$ hugo server --poll 1000ms

goroutine 95410 [select, 2 minutes]:
runtime.gopark(0x1402af9ff18?, 0x3?, 0x78?, 0xfe?, 0x1402af9feba?)
	runtime/proc.go:363 +0xe4 fp=0x1402af9fd40 sp=0x1402af9fd20 pc=0x1024541e4
runtime.selectgo(0x1402af9ff18, 0x1402af9feb4, 0x1402af9ffa8?, 0x0, 0x140b6a79440?, 0x1)
	runtime/select.go:328 +0x688 fp=0x1402af9fe60 sp=0x1402af9fd40 pc=0x102464af8
github.com/gohugoio/hugo/livereload.(*hub).run(0x10565c280)
	github.com/gohugoio/hugo/livereload/hub.go:39 +0x94 fp=0x1402af9ffb0 sp=0x1402af9fe60 pc=0x10393dd64
github.com/gohugoio/hugo/livereload.Initialize.func1()
	github.com/gohugoio/hugo/livereload/livereload.go:108 +0x28 fp=0x1402af9ffd0 sp=0x1402af9ffb0 pc=0x10393e2e8
runtime.goexit()
	runtime/asm_arm64.s:1172 +0x4 fp=0x1402af9ffd0 sp=0x1402af9ffd0 pc=0x102485654
created by github.com/gohugoio/hugo/livereload.Initialize
	github.com/gohugoio/hugo/livereload/livereload.go:108 +0x40

goroutine 95411 [select, 2 minutes, locked to thread]:
runtime.gopark(0x1402adb3fa0?, 0x2?, 0x88?, 0x3e?, 0x1402adb3f9c?)
	runtime/proc.go:363 +0xe4 fp=0x1402adb3e30 sp=0x1402adb3e10 pc=0x1024541e4
runtime.selectgo(0x1402adb3fa0, 0x1402adb3f98, 0x0?, 0x0, 0x0?, 0x1)
	runtime/select.go:328 +0x688 fp=0x1402adb3f50 sp=0x1402adb3e30 pc=0x102464af8
runtime.ensureSigM.func1()
	runtime/signal_unix.go:991 +0x190 fp=0x1402adb3fd0 sp=0x1402adb3f50 pc=0x102468e10
runtime.goexit()
	runtime/asm_arm64.s:1172 +0x4 fp=0x1402adb3fd0 sp=0x1402adb3fd0 pc=0x102485654
created by runtime.ensureSigM
	runtime/signal_unix.go:974 +0xf4

goroutine 95412 [syscall, 2 minutes]:
runtime.sigNoteSleep(0x0)
	runtime/os_darwin.go:123 +0x20 fp=0x1402b1d5790 sp=0x1402b1d5750 pc=0x10244e8a0
os/signal.signal_recv()
	runtime/sigqueue.go:149 +0x2c fp=0x1402b1d57b0 sp=0x1402b1d5790 pc=0x10248131c
os/signal.loop()
	os/signal/signal_unix.go:23 +0x1c fp=0x1402b1d57d0 sp=0x1402b1d57b0 pc=0x103933dcc
runtime.goexit()
	runtime/asm_arm64.s:1172 +0x4 fp=0x1402b1d57d0 sp=0x1402b1d57d0 pc=0x102485654
created by os/signal.Notify.func1.1
	os/signal/signal.go:151 +0x2c

goroutine 95413 [IO wait, 2 minutes]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	runtime/proc.go:363 +0xe4 fp=0x140d451bb60 sp=0x140d451bb40 pc=0x1024541e4
runtime.netpollblock(0x140d451bbf8?, 0x24bfcc4?, 0x1?)
	runtime/netpoll.go:526 +0x158 fp=0x140d451bba0 sp=0x140d451bb60 pc=0x10244d6c8
internal/poll.runtime_pollWait(0x12d69aea8, 0x72)
	runtime/netpoll.go:305 +0xa0 fp=0x140d451bbd0 sp=0x140d451bba0 pc=0x10247f150
internal/poll.(*pollDesc).wait(0x14000119c80?, 0x104525360?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28 fp=0x140d451bc00 sp=0x140d451bbd0 pc=0x1024bb6c8
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0x14000119c80)
	internal/poll/fd_unix.go:614 +0x1d0 fp=0x140d451bca0 sp=0x140d451bc00 pc=0x1024bfd30
net.(*netFD).accept(0x14000119c80)
	net/fd_unix.go:172 +0x28 fp=0x140d451bd60 sp=0x140d451bca0 pc=0x102530a78
net.(*TCPListener).accept(0x14000343a70)
	net/tcpsock_posix.go:142 +0x28 fp=0x140d451bda0 sp=0x140d451bd60 pc=0x102546c78
net.(*TCPListener).Accept(0x14000343a70)
	net/tcpsock.go:288 +0x2c fp=0x140d451bde0 sp=0x140d451bda0 pc=0x102545e8c
net/http.(*onceCloseListener).Accept(0x10468e6c0?)
	<autogenerated>:1 +0x30 fp=0x140d451be00 sp=0x140d451bde0 pc=0x10282a040
net/http.(*Server).Serve(0x1400e136f00, {0x10468d030, 0x14000343a70})
	net/http/server.go:3070 +0x30c fp=0x140d451bf30 sp=0x140d451be00 pc=0x10280696c
github.com/gohugoio/hugo/commands.(*commandeer).serve.func3()
	github.com/gohugoio/hugo/commands/server.go:617 +0x30 fp=0x140d451bf60 sp=0x140d451bf30 pc=0x1039631e0
golang.org/x/sync/errgroup.(*Group).Go.func1()
	golang.org/x/sync@v0.1.0/errgroup/errgroup.go:75 +0x5c fp=0x140d451bfd0 sp=0x140d451bf60 pc=0x1030d44ac
runtime.goexit()
	runtime/asm_arm64.s:1172 +0x4 fp=0x140d451bfd0 sp=0x140d451bfd0 pc=0x102485654
created by golang.org/x/sync/errgroup.(*Group).Go
	golang.org/x/sync@v0.1.0/errgroup/errgroup.go:72 +0xa4

r0      0x0
r1      0x0
r2      0x0
r3      0x0
r4      0x104241970
r5      0x16da6ec70
r6      0xa
r7      0x0
r8      0x3a7e26f536541563
r9      0x3a7e26f45bf2e563
r10     0x2
r11     0xfffffffd
r12     0x10000000000
r13     0x0
r14     0x0
r15     0x0
r16     0x148
r17     0x200b309a8
r18     0x0
r19     0x6
r20     0x16da6f000
r21     0x1807
r22     0x16da6f0e0
r23     0x0
r24     0xffffffffffffffff
r25     0x103e1dfa0
r26     0x16da6ec80
r27     0x28
r28     0x14000002b60
r29     0x16da6ec20
lr      0x1a061dcec
sp      0x16da6ec00
pc      0x1a05e7224
fault   0x1a05e7224

Fails, with quite some long massage, to long to attach. And it took a lot longer then the five minutes above.
$ hugo server --poll 1000ms &> poll-error.txt
$ du -chs poll-error.txt
 96M	poll-error.txt
 96M	total

I can also try with longer intervals, like 2000ms, 5000ms. More doesn't really make sense to me since, that't getting in the time span of a regular rebuild.

There isn't a building problem since (output croped):

There are more differences between hugo and hugo server than the watching, one major thing is that we (by default) writes everything to memory in server mode. There are flags to disable that.

Yes, I know. That used to work about 1,5 years ago, but with smaller trees:
hugo server --disableFastRender --renderToDisk

But now it doesn't.

Do you need any more information, in case you want to fix this instead of make the watcher configurable?

We have millions of options already. We're not adding more without understanding that it's needed.

Certainly it's better to fix the root cause for this. But I'm not sure how well a fix would scale with let's say 100.000 files (just a made up but not unreasonable number).

@bep: Can this be realized by allowing just anything as exclude pattern of #12222?


http: envoy.reloadable_features.hash_multiple_header_values deprecated

Commit Message: http: envoy.reloadable_features.hash_multiple_header_values deprecated
Additional Description:
Risk Level: low
Testing: unittest changed
Docs Changes: n/a
Release Notes: added for removed runtime flag
Platform Specific Features: no
Fixes #19504
Signed-off-by: He Jie Xu<EMAIL_ADDRESS>

(also will need main merge as someone beat you to a removal :-) )

haha, yea, I saw few deprecation pr out there :)


docs(scheduler): correct the description of asapScheduler

Description:
asapScheduler does not use the micro task queue. As far as I know, only process.nextTick, native Promise, Object.observe and MutationObserver used the micro task queue. What I found in the code was that it put the task into a custom queue and set up a macro task to execute the tasks of the queue.

Coverage remained the same at 96.809% when pulling 0dcf06332c813cb741facc8be25f6fe0677edc4f on xyzingh:patch-1 into 941684eeda94a9da6c0da0e0b046129345dee0f0 on ReactiveX:master.

The asapScheduler does use the micro task queue. It calls the package's internal Immediate implementation that's based upon Promise.resolve: https://github.com/ReactiveX/rxjs/blob/6.3.2/src/internal/util/Immediate.ts

The asapScheduler does use the micro task queue. It calls the package's internal Immediate implementation that's based upon Promise.resolve: https://github.com/ReactiveX/rxjs/blob/6.3.2/src/internal/util/Immediate.ts

@cartant Thanks for your reminding, you are right. Please close this pr.


Azure Static Web App - Github Workflow - Api Deploy is not flexible/doesn't work for custom folder structure

Hello,
Github workflow file allows us to set up an output_location for the FRONTEND app but it doesn't specify any output location for the API.  It does allow to set up a build command for the API but how it automatically identifies the API out directory? What if we using mono repository/typescript and have it in a different folder? How can I instruct the workflow to look for a specific folder?

Do you have a repo with this issue that we can look at?

Hey @anthonychu, thanks for the quick reply.
Unfortunately, the project it's private, but I am happy to spin up a demo if the explanation below is not 100% clear.
Basically, GitHub workflow seems to not be flexible enough regarding the API build & output folder. Depending on your project setup, folder, the API build won't be in the same folder as the frontend build. Let's consider this scenario where you have both frontend and api folder on different locations:
frontend-dist
   assets
   static

backend-dist
  host.json
  myFunctionDir

The workflow YAML only accepts an output_location, so I imagine it expects to see a folder named by API together to the main output location, right? Considering the above scenario how github workflow would "guess" the API folder if there is no option to instruct it?

Another thing: I can't instruct the workflow to skip the API BUILD process and only do the deploy? Currently, the api_build_command is empty but it seems the github workflow is still trying to execute yarn run build in the API base directory.
I am following this guide: https://docs.microsoft.com/en-us/azure/static-web-apps/github-actions-workflow but I can't manage to deploy my API as we're using many packages/mono repositories and currently it's not possible to specify a custom folder for the API.
I did a workaround to manually cp all the API/Functions JS files to a folder named by API inside the app_output dir but the workflow is trying to build the API despite I haven't set up a build command for it.

Update: I managed to manually build & copy the API files and copy it inside the same app output_folder, but now the workflow is not able to guess that the project is using nodejs and is returning The function language detected is unsupported or invalid. It's a bit strange as the api folder has a package.json, so it's pretty guessable that we're using nodejs.
It seems the only solution would be to refactor our monorepository/folder structure to satisfy the workflow.

Can you share more of your workflow? Are you relying on the Static Web Apps deploy action to build the app, or are you added additional steps before it to build the app?
For monorepos, it’s best to set up your own steps to build the app and rely on our action to deploy it. As you’ve noted, there’s no way to just deploy the API output without building. That is tracked in #343 and likely to be addressed in a few months. For now, you might be able to trick it into doing the right thing by running npm init -y to create an empty package.json file in the backend-dist folder and pass it as the api_location. The build will run but it should be a no-op and we should detect it as a Node function app.

Hey @anthonychu , thanks! I have completely removed static web apps deploy action and had to do a workaround to manually build and output the frontend/api folder in a way that the static web app expects it. I've also added a package.json in the folder, otherwise, it won't work.
We're using typescript/monorepository structure and I tried other alternatives but only the above worked. Sorry for being late to reply.

Closing that for now.

I have completely removed static web apps deploy action and had to do a workaround to manually build and output the frontend/api folder in a way that the static web app expects it. I've also added a package.json in the folder, otherwise, it won't work.

@lucashfreitas I am blocked by the very same issue. Can you share how you achieved the above?

We're working on a couple of things. First is to allow you to specify the language (and language version) for the function app. Once that's possible, add support for skip_api_build #343. @simonaco @Reshmi-Sriram  can share updates on progress.