serverless-offline 13.3.4 → 13.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -96
- package/package.json +3 -3
- package/src/config/constants.js +2 -0
- package/src/config/supportedRuntimes.js +30 -9
- package/src/events/http/HttpServer.js +1 -0
- package/src/events/http/lambda-events/LambdaProxyIntegrationEvent.js +12 -1
- package/src/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +12 -1
- package/src/lambda/LambdaFunction.js +8 -0
- package/src/lambda/handler-runner/HandlerRunner.js +1 -1
- package/src/lambda/handler-runner/docker-runner/DockerContainer.js +27 -38
- package/src/lambda/handler-runner/docker-runner/DockerImage.js +1 -5
- package/src/lambda/handler-runner/docker-runner/DockerRunner.js +2 -2
- package/src/lambda/handler-runner/docker-runner/DockerRuntime.js +33 -0
package/README.md
CHANGED
|
@@ -859,130 +859,206 @@ We try to follow [Airbnb's JavaScript Style Guide](https://github.com/airbnb/jav
|
|
|
859
859
|
|
|
860
860
|
## Contributors
|
|
861
861
|
|
|
862
|
-
| [<img alt="dnalborczyk" src="https://
|
|
863
|
-
|
|
|
864
|
-
| [dnalborczyk](https://github.com/dnalborczyk)
|
|
862
|
+
| [<img alt="dnalborczyk" src="https://avatars.githubusercontent.com/u/2903325?v=4&s=117" width="117">](https://github.com/dnalborczyk) | [<img alt="dherault" src="https://avatars.githubusercontent.com/u/4154003?v=4&s=117" width="117">](https://github.com/dherault) | [<img alt="computerpunc" src="https://avatars.githubusercontent.com/u/721008?v=4&s=117" width="117">](https://github.com/computerpunc) | [<img alt="frozenbonito" src="https://avatars.githubusercontent.com/u/26363256?v=4&s=117" width="117">](https://github.com/frozenbonito) | [<img alt="leonardoalifraco" src="https://avatars.githubusercontent.com/u/2942943?v=4&s=117" width="117">](https://github.com/leonardoalifraco) |
|
|
863
|
+
| :-----------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
864
|
+
| [dnalborczyk](https://github.com/dnalborczyk) | [dherault](https://github.com/dherault) | [computerpunc](https://github.com/computerpunc) | [frozenbonito](https://github.com/frozenbonito) | [leonardoalifraco](https://github.com/leonardoalifraco) |
|
|
865
865
|
|
|
866
|
-
| [<img alt="
|
|
867
|
-
|
|
|
868
|
-
|
|
|
866
|
+
| [<img alt="medikoo" src="https://avatars.githubusercontent.com/u/122434?v=4&s=117" width="117">](https://github.com/medikoo) | [<img alt="apancutt" src="https://avatars.githubusercontent.com/u/1040525?v=4&s=117" width="117">](https://github.com/apancutt) | [<img alt="chardos" src="https://avatars.githubusercontent.com/u/4082442?v=4&s=117" width="117">](https://github.com/chardos) | [<img alt="daniel-cottone" src="https://avatars.githubusercontent.com/u/26556340?v=4&s=117" width="117">](https://github.com/daniel-cottone) | [<img alt="bryantbiggs" src="https://avatars.githubusercontent.com/u/10913471?v=4&s=117" width="117">](https://github.com/bryantbiggs) |
|
|
867
|
+
| :--------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
868
|
+
| [medikoo](https://github.com/medikoo) | [apancutt](https://github.com/apancutt) | [chardos](https://github.com/chardos) | [daniel-cottone](https://github.com/daniel-cottone) | [bryantbiggs](https://github.com/bryantbiggs) |
|
|
869
869
|
|
|
870
|
-
| [<img alt="
|
|
871
|
-
|
|
|
872
|
-
| [
|
|
870
|
+
| [<img alt="pgrzesik" src="https://avatars.githubusercontent.com/u/17499590?v=4&s=117" width="117">](https://github.com/pgrzesik) | [<img alt="mikestaub" src="https://avatars.githubusercontent.com/u/1254558?v=4&s=117" width="117">](https://github.com/mikestaub) | [<img alt="Bilal-S" src="https://avatars.githubusercontent.com/u/668901?v=4&s=117" width="117">](https://github.com/Bilal-S) | [<img alt="qswinson" src="https://avatars.githubusercontent.com/u/1020598?v=4&s=117" width="117">](https://github.com/qswinson) | [<img alt="juanjoDiaz" src="https://avatars.githubusercontent.com/u/3322485?v=4&s=117" width="117">](https://github.com/juanjoDiaz) |
|
|
871
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: |
|
|
872
|
+
| [pgrzesik](https://github.com/pgrzesik) | [mikestaub](https://github.com/mikestaub) | [Bilal-S](https://github.com/Bilal-S) | [qswinson](https://github.com/qswinson) | [juanjoDiaz](https://github.com/juanjoDiaz) |
|
|
873
873
|
|
|
874
|
-
| [<img alt="
|
|
875
|
-
|
|
|
876
|
-
| [
|
|
874
|
+
| [<img alt="zoellner" src="https://avatars.githubusercontent.com/u/2665319?v=4&s=117" width="117">](https://github.com/zoellner) | [<img alt="frsechet" src="https://avatars.githubusercontent.com/u/7351940?v=4&s=117" width="117">](https://github.com/frsechet) | [<img alt="johncmckim" src="https://avatars.githubusercontent.com/u/1297227?v=4&s=117" width="117">](https://github.com/johncmckim) | [<img alt="dl748" src="https://avatars.githubusercontent.com/u/4815868?v=4&s=117" width="117">](https://github.com/dl748) | [<img alt="ThisIsNoZaku" src="https://avatars.githubusercontent.com/u/4680766?v=4&s=117" width="117">](https://github.com/ThisIsNoZaku) |
|
|
875
|
+
| :-----------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: |
|
|
876
|
+
| [zoellner](https://github.com/zoellner) | [frsechet](https://github.com/frsechet) | [johncmckim](https://github.com/johncmckim) | [dl748](https://github.com/dl748) | [ThisIsNoZaku](https://github.com/ThisIsNoZaku) |
|
|
877
877
|
|
|
878
|
-
| [<img alt="
|
|
879
|
-
| :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
880
|
-
|
|
|
878
|
+
| [<img alt="darthtrevino" src="https://avatars.githubusercontent.com/u/113544?v=4&s=117" width="117">](https://github.com/darthtrevino) | [<img alt="NicolasSeiler" src="https://avatars.githubusercontent.com/u/31805224?v=4&s=117" width="117">](https://github.com/NicolasSeiler) | [<img alt="miltador" src="https://avatars.githubusercontent.com/u/17062283?v=4&s=117" width="117">](https://github.com/miltador) | [<img alt="moroine" src="https://avatars.githubusercontent.com/u/4658821?v=4&s=117" width="117">](https://github.com/moroine) | [<img alt="gertjvr" src="https://avatars.githubusercontent.com/u/1691062?v=4&s=117" width="117">](https://github.com/gertjvr) |
|
|
879
|
+
| :------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: |
|
|
880
|
+
| [darthtrevino](https://github.com/darthtrevino) | [NicolasSeiler](https://github.com/NicolasSeiler) | [miltador](https://github.com/miltador) | [moroine](https://github.com/moroine) | [gertjvr](https://github.com/gertjvr) |
|
|
881
881
|
|
|
882
|
-
| [<img alt="
|
|
883
|
-
|
|
|
884
|
-
|
|
|
882
|
+
| [<img alt="bytekast" src="https://avatars.githubusercontent.com/u/241901?v=4&s=117" width="117">](https://github.com/bytekast) | [<img alt="jormaechea" src="https://avatars.githubusercontent.com/u/5612500?v=4&s=117" width="117">](https://github.com/jormaechea) | [<img alt="thomaschaaf" src="https://avatars.githubusercontent.com/u/893393?v=4&s=117" width="117">](https://github.com/thomaschaaf) | [<img alt="DorianMazur" src="https://avatars.githubusercontent.com/u/46839236?v=4&s=117" width="117">](https://github.com/DorianMazur) | [<img alt="dortega3000" src="https://avatars.githubusercontent.com/u/6676525?v=4&s=117" width="117">](https://github.com/dortega3000) |
|
|
883
|
+
| :----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |
|
|
884
|
+
| [bytekast](https://github.com/bytekast) | [jormaechea](https://github.com/jormaechea) | [thomaschaaf](https://github.com/thomaschaaf) | [DorianMazur](https://github.com/DorianMazur) | [dortega3000](https://github.com/dortega3000) |
|
|
885
885
|
|
|
886
|
-
| [<img alt="
|
|
887
|
-
|
|
|
888
|
-
| [
|
|
886
|
+
| [<img alt="tom-marsh" src="https://avatars.githubusercontent.com/u/18220186?v=4&s=117" width="117">](https://github.com/tom-marsh) | [<img alt="rwynn" src="https://avatars.githubusercontent.com/u/260672?v=4&s=117" width="117">](https://github.com/rwynn) | [<img alt="robbtraister" src="https://avatars.githubusercontent.com/u/5815296?v=4&s=117" width="117">](https://github.com/robbtraister) | [<img alt="joubertredrat" src="https://avatars.githubusercontent.com/u/1520407?v=4&s=117" width="117">](https://github.com/joubertredrat) | [<img alt="jack-seek" src="https://avatars.githubusercontent.com/u/19676584?v=4&s=117" width="117">](https://github.com/jack-seek) |
|
|
887
|
+
| :--------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |
|
|
888
|
+
| [tom-marsh](https://github.com/tom-marsh) | [rwynn](https://github.com/rwynn) | [robbtraister](https://github.com/robbtraister) | [joubertredrat](https://github.com/joubertredrat) | [jack-seek](https://github.com/jack-seek) |
|
|
889
889
|
|
|
890
|
-
| [<img alt="
|
|
891
|
-
|
|
|
892
|
-
| [
|
|
890
|
+
| [<img alt="perkyguy" src="https://avatars.githubusercontent.com/u/4624648?v=4&s=117" width="117">](https://github.com/perkyguy) | [<img alt="ansraliant" src="https://avatars.githubusercontent.com/u/7121475?v=4&s=117" width="117">](https://github.com/ansraliant) | [<img alt="hueniverse" src="https://avatars.githubusercontent.com/u/56631?v=4&s=117" width="117">](https://github.com/hueniverse) | [<img alt="james-relyea" src="https://avatars.githubusercontent.com/u/1944491?v=4&s=117" width="117">](https://github.com/james-relyea) | [<img alt="sulaysumaria" src="https://avatars.githubusercontent.com/u/60602365?v=4&s=117" width="117">](https://github.com/sulaysumaria) |
|
|
891
|
+
| :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------: |
|
|
892
|
+
| [perkyguy](https://github.com/perkyguy) | [ansraliant](https://github.com/ansraliant) | [hueniverse](https://github.com/hueniverse) | [james-relyea](https://github.com/james-relyea) | [sulaysumaria](https://github.com/sulaysumaria) |
|
|
893
893
|
|
|
894
|
-
| [<img alt="
|
|
895
|
-
|
|
|
896
|
-
|
|
|
894
|
+
| [<img alt="ondrowan" src="https://avatars.githubusercontent.com/u/423776?v=4&s=117" width="117">](https://github.com/ondrowan) | [<img alt="franciscocpg" src="https://avatars.githubusercontent.com/u/3680556?v=4&s=117" width="117">](https://github.com/franciscocpg) | [<img alt="AyushG3112" src="https://avatars.githubusercontent.com/u/21307931?v=4&s=117" width="117">](https://github.com/AyushG3112) | [<img alt="AlexHayton" src="https://avatars.githubusercontent.com/u/63102?v=4&s=117" width="117">](https://github.com/AlexHayton) | [<img alt="Andorbal" src="https://avatars.githubusercontent.com/u/579839?v=4&s=117" width="117">](https://github.com/Andorbal) |
|
|
895
|
+
| :----------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: |
|
|
896
|
+
| [ondrowan](https://github.com/ondrowan) | [franciscocpg](https://github.com/franciscocpg) | [AyushG3112](https://github.com/AyushG3112) | [AlexHayton](https://github.com/AlexHayton) | [Andorbal](https://github.com/Andorbal) |
|
|
897
897
|
|
|
898
|
-
| [<img alt="
|
|
899
|
-
|
|
|
900
|
-
| [
|
|
898
|
+
| [<img alt="andreipopovici" src="https://avatars.githubusercontent.com/u/1143417?v=4&s=117" width="117">](https://github.com/andreipopovici) | [<img alt="awwong1" src="https://avatars.githubusercontent.com/u/2760111?v=4&s=117" width="117">](https://github.com/awwong1) | [<img alt="emmoistner" src="https://avatars.githubusercontent.com/u/5419727?v=4&s=117" width="117">](https://github.com/emmoistner) | [<img alt="coyoteecd" src="https://avatars.githubusercontent.com/u/47973420?v=4&s=117" width="117">](https://github.com/coyoteecd) | [<img alt="OrKoN" src="https://avatars.githubusercontent.com/u/399150?v=4&s=117" width="117">](https://github.com/OrKoN) |
|
|
899
|
+
| :-----------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: |
|
|
900
|
+
| [andreipopovici](https://github.com/andreipopovici) | [awwong1](https://github.com/awwong1) | [emmoistner](https://github.com/emmoistner) | [coyoteecd](https://github.com/coyoteecd) | [OrKoN](https://github.com/OrKoN) |
|
|
901
901
|
|
|
902
|
-
| [<img alt="
|
|
903
|
-
|
|
|
904
|
-
|
|
|
902
|
+
| [<img alt="trevor-leach" src="https://avatars.githubusercontent.com/u/39206334?v=4&s=117" width="117">](https://github.com/trevor-leach) | [<img alt="bebbi" src="https://avatars.githubusercontent.com/u/2752391?v=4&s=117" width="117">](https://github.com/bebbi) | [<img alt="paulhbarker" src="https://avatars.githubusercontent.com/u/7366567?v=4&s=117" width="117">](https://github.com/paulhbarker) | [<img alt="njriordan" src="https://avatars.githubusercontent.com/u/11200170?v=4&s=117" width="117">](https://github.com/njriordan) | [<img alt="adieuadieu" src="https://avatars.githubusercontent.com/u/438848?v=4&s=117" width="117">](https://github.com/adieuadieu) |
|
|
903
|
+
| :--------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |
|
|
904
|
+
| [trevor-leach](https://github.com/trevor-leach) | [bebbi](https://github.com/bebbi) | [paulhbarker](https://github.com/paulhbarker) | [njriordan](https://github.com/njriordan) | [adieuadieu](https://github.com/adieuadieu) |
|
|
905
905
|
|
|
906
|
-
| [<img alt="
|
|
907
|
-
|
|
|
908
|
-
|
|
|
906
|
+
| [<img alt="encounter" src="https://avatars.githubusercontent.com/u/549122?v=4&s=117" width="117">](https://github.com/encounter) | [<img alt="leemhenson" src="https://avatars.githubusercontent.com/u/515?v=4&s=117" width="117">](https://github.com/leemhenson) | [<img alt="c24w" src="https://avatars.githubusercontent.com/u/710406?v=4&s=117" width="117">](https://github.com/c24w) | [<img alt="Bob-Thomas" src="https://avatars.githubusercontent.com/u/2785213?v=4&s=117" width="117">](https://github.com/Bob-Thomas) | [<img alt="ALOHACREPES345" src="https://avatars.githubusercontent.com/u/51868219?v=4&s=117" width="117">](https://github.com/ALOHACREPES345) |
|
|
907
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
908
|
+
| [encounter](https://github.com/encounter) | [leemhenson](https://github.com/leemhenson) | [c24w](https://github.com/c24w) | [Bob-Thomas](https://github.com/Bob-Thomas) | [ALOHACREPES345](https://github.com/ALOHACREPES345) |
|
|
909
909
|
|
|
910
|
-
| [<img alt="
|
|
911
|
-
|
|
|
912
|
-
|
|
|
910
|
+
| [<img alt="djcrabhat" src="https://avatars.githubusercontent.com/u/803042?v=4&s=117" width="117">](https://github.com/djcrabhat) | [<img alt="marccampbell" src="https://avatars.githubusercontent.com/u/173451?v=4&s=117" width="117">](https://github.com/marccampbell) | [<img alt="matt-peck" src="https://avatars.githubusercontent.com/u/18297252?v=4&s=117" width="117">](https://github.com/matt-peck) | [<img alt="purefan" src="https://avatars.githubusercontent.com/u/315880?v=4&s=117" width="117">](https://github.com/purefan) | [<img alt="mzmiric5" src="https://avatars.githubusercontent.com/u/1480072?v=4&s=117" width="117">](https://github.com/mzmiric5) |
|
|
911
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: |
|
|
912
|
+
| [djcrabhat](https://github.com/djcrabhat) | [marccampbell](https://github.com/marccampbell) | [matt-peck](https://github.com/matt-peck) | [purefan](https://github.com/purefan) | [mzmiric5](https://github.com/mzmiric5) |
|
|
913
913
|
|
|
914
|
-
| [<img alt="
|
|
915
|
-
|
|
|
916
|
-
| [
|
|
914
|
+
| [<img alt="pmuens" src="https://avatars.githubusercontent.com/u/1606004?v=4&s=117" width="117">](https://github.com/pmuens) | [<img alt="pierreis" src="https://avatars.githubusercontent.com/u/203973?v=4&s=117" width="117">](https://github.com/pierreis) | [<img alt="raySavignone" src="https://avatars.githubusercontent.com/u/10362370?v=4&s=117" width="117">](https://github.com/raySavignone) | [<img alt="Rawne" src="https://avatars.githubusercontent.com/u/1477918?v=4&s=117" width="117">](https://github.com/Rawne) | [<img alt="selcukcihan" src="https://avatars.githubusercontent.com/u/7043904?v=4&s=117" width="117">](https://github.com/selcukcihan) |
|
|
915
|
+
| :-------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |
|
|
916
|
+
| [pmuens](https://github.com/pmuens) | [pierreis](https://github.com/pierreis) | [raySavignone](https://github.com/raySavignone) | [Rawne](https://github.com/Rawne) | [selcukcihan](https://github.com/selcukcihan) |
|
|
917
917
|
|
|
918
|
-
| [<img alt="
|
|
919
|
-
|
|
|
920
|
-
| [
|
|
918
|
+
| [<img alt="shalvah" src="https://avatars.githubusercontent.com/u/14361073?v=4&s=117" width="117">](https://github.com/shalvah) | [<img alt="footballencarta" src="https://avatars.githubusercontent.com/u/1312258?v=4&s=117" width="117">](https://github.com/footballencarta) | [<img alt="francisu" src="https://avatars.githubusercontent.com/u/944949?v=4&s=117" width="117">](https://github.com/francisu) | [<img alt="patrickheeney" src="https://avatars.githubusercontent.com/u/1407228?v=4&s=117" width="117">](https://github.com/patrickheeney) | [<img alt="re1ro" src="https://avatars.githubusercontent.com/u/470292?v=4&s=117" width="117">](https://github.com/re1ro) |
|
|
919
|
+
| :----------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: |
|
|
920
|
+
| [shalvah](https://github.com/shalvah) | [footballencarta](https://github.com/footballencarta) | [francisu](https://github.com/francisu) | [patrickheeney](https://github.com/patrickheeney) | [re1ro](https://github.com/re1ro) |
|
|
921
921
|
|
|
922
|
-
| [<img alt="
|
|
923
|
-
| :--------------------------------------------------------------------------------------------------------------------------: |
|
|
924
|
-
|
|
|
922
|
+
| [<img alt="andidev" src="https://avatars.githubusercontent.com/u/571389?v=4&s=117" width="117">](https://github.com/andidev) | [<img alt="arnas" src="https://avatars.githubusercontent.com/u/13507001?v=4&s=117" width="117">](https://github.com/arnas) | [<img alt="clschnei" src="https://avatars.githubusercontent.com/u/1232625?v=4&s=117" width="117">](https://github.com/clschnei) | [<img alt="d10-cc" src="https://avatars.githubusercontent.com/u/94011455?v=4&s=117" width="117">](https://github.com/d10-cc) | [<img alt="ablythe" src="https://avatars.githubusercontent.com/u/6164745?v=4&s=117" width="117">](https://github.com/ablythe) |
|
|
923
|
+
| :--------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: |
|
|
924
|
+
| [andidev](https://github.com/andidev) | [arnas](https://github.com/arnas) | [clschnei](https://github.com/clschnei) | [d10-cc](https://github.com/d10-cc) | [ablythe](https://github.com/ablythe) |
|
|
925
925
|
|
|
926
|
-
| [<img alt="
|
|
927
|
-
|
|
|
928
|
-
| [
|
|
926
|
+
| [<img alt="pettyalex" src="https://avatars.githubusercontent.com/u/3219141?v=4&s=117" width="117">](https://github.com/pettyalex) | [<img alt="domdomegg" src="https://avatars.githubusercontent.com/u/4953590?v=4&s=117" width="117">](https://github.com/domdomegg) | [<img alt="apalumbo" src="https://avatars.githubusercontent.com/u/1729784?v=4&s=117" width="117">](https://github.com/apalumbo) | [<img alt="rion18" src="https://avatars.githubusercontent.com/u/5338637?v=4&s=117" width="117">](https://github.com/rion18) | [<img alt="anishkny" src="https://avatars.githubusercontent.com/u/357499?v=4&s=117" width="117">](https://github.com/anishkny) |
|
|
927
|
+
| :-------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: |
|
|
928
|
+
| [pettyalex](https://github.com/pettyalex) | [domdomegg](https://github.com/domdomegg) | [apalumbo](https://github.com/apalumbo) | [rion18](https://github.com/rion18) | [anishkny](https://github.com/anishkny) |
|
|
929
929
|
|
|
930
|
-
| [<img alt="
|
|
931
|
-
|
|
|
932
|
-
| [
|
|
930
|
+
| [<img alt="cameroncooper" src="https://avatars.githubusercontent.com/u/898689?v=4&s=117" width="117">](https://github.com/cameroncooper) | [<img alt="cmuto09" src="https://avatars.githubusercontent.com/u/4679612?v=4&s=117" width="117">](https://github.com/cmuto09) | [<img alt="dschep" src="https://avatars.githubusercontent.com/u/667763?v=4&s=117" width="117">](https://github.com/dschep) | [<img alt="dimadk24" src="https://avatars.githubusercontent.com/u/25607790?v=4&s=117" width="117">](https://github.com/dimadk24) | [<img alt="dwbelliston" src="https://avatars.githubusercontent.com/u/11450118?v=4&s=117" width="117">](https://github.com/dwbelliston) |
|
|
931
|
+
| :--------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
932
|
+
| [cameroncooper](https://github.com/cameroncooper) | [cmuto09](https://github.com/cmuto09) | [dschep](https://github.com/dschep) | [dimadk24](https://github.com/dimadk24) | [dwbelliston](https://github.com/dwbelliston) |
|
|
933
933
|
|
|
934
|
-
| [<img alt="
|
|
935
|
-
|
|
|
936
|
-
| [
|
|
934
|
+
| [<img alt="efrain17" src="https://avatars.githubusercontent.com/u/21026552?v=4&s=117" width="117">](https://github.com/efrain17) | [<img alt="eabadjiev" src="https://avatars.githubusercontent.com/u/934059?v=4&s=117" width="117">](https://github.com/eabadjiev) | [<img alt="tqfipe" src="https://avatars.githubusercontent.com/u/19840740?v=4&s=117" width="117">](https://github.com/tqfipe) | [<img alt="garunski" src="https://avatars.githubusercontent.com/u/1002770?v=4&s=117" width="117">](https://github.com/garunski) | [<img alt="jeroenvollenbrock" src="https://avatars.githubusercontent.com/u/4551130?v=4&s=117" width="117">](https://github.com/jeroenvollenbrock) |
|
|
935
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
936
|
+
| [efrain17](https://github.com/efrain17) | [eabadjiev](https://github.com/eabadjiev) | [tqfipe](https://github.com/tqfipe) | [garunski](https://github.com/garunski) | [jeroenvollenbrock](https://github.com/jeroenvollenbrock) |
|
|
937
937
|
|
|
938
|
-
| [<img alt="
|
|
939
|
-
|
|
|
940
|
-
| [
|
|
938
|
+
| [<img alt="joewestcott" src="https://avatars.githubusercontent.com/u/11187741?v=4&s=117" width="117">](https://github.com/joewestcott) | [<img alt="LoganArnett" src="https://avatars.githubusercontent.com/u/8780547?v=4&s=117" width="117">](https://github.com/LoganArnett) | [<img alt="perrin4869" src="https://avatars.githubusercontent.com/u/5774716?v=4&s=117" width="117">](https://github.com/perrin4869) | [<img alt="njyjn" src="https://avatars.githubusercontent.com/u/10694375?v=4&s=117" width="117">](https://github.com/njyjn) | [<img alt="DocLM" src="https://avatars.githubusercontent.com/u/2318483?v=4&s=117" width="117">](https://github.com/DocLM) |
|
|
939
|
+
| :------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: |
|
|
940
|
+
| [joewestcott](https://github.com/joewestcott) | [LoganArnett](https://github.com/LoganArnett) | [perrin4869](https://github.com/perrin4869) | [njyjn](https://github.com/njyjn) | [DocLM](https://github.com/DocLM) |
|
|
941
941
|
|
|
942
|
-
| [<img alt="
|
|
943
|
-
|
|
|
944
|
-
|
|
|
942
|
+
| [<img alt="Trott" src="https://avatars.githubusercontent.com/u/718899?v=4&s=117" width="117">](https://github.com/Trott) | [<img alt="rfranco" src="https://avatars.githubusercontent.com/u/399203?v=4&s=117" width="117">](https://github.com/rfranco) | [<img alt="uh-zz" src="https://avatars.githubusercontent.com/u/47747828?v=4&s=117" width="117">](https://github.com/uh-zz) | [<img alt="Raph22" src="https://avatars.githubusercontent.com/u/18127594?v=4&s=117" width="117">](https://github.com/Raph22) | [<img alt="randytarampi" src="https://avatars.githubusercontent.com/u/592216?v=4&s=117" width="117">](https://github.com/randytarampi) |
|
|
943
|
+
| :----------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
944
|
+
| [Trott](https://github.com/Trott) | [rfranco](https://github.com/rfranco) | [uh-zz](https://github.com/uh-zz) | [Raph22](https://github.com/Raph22) | [randytarampi](https://github.com/randytarampi) |
|
|
945
945
|
|
|
946
|
-
| [<img alt="
|
|
947
|
-
|
|
|
948
|
-
| [
|
|
946
|
+
| [<img alt="PsychicCat" src="https://avatars.githubusercontent.com/u/4073856?v=4&s=117" width="117">](https://github.com/PsychicCat) | [<img alt="petetnt" src="https://avatars.githubusercontent.com/u/7641760?v=4&s=117" width="117">](https://github.com/petetnt) | [<img alt="thepont" src="https://avatars.githubusercontent.com/u/2901992?v=4&s=117" width="117">](https://github.com/thepont) | [<img alt="RichiCoder1" src="https://avatars.githubusercontent.com/u/2391878?v=4&s=117" width="117">](https://github.com/RichiCoder1) | [<img alt="rishi8094" src="https://avatars.githubusercontent.com/u/20362222?v=4&s=117" width="117">](https://github.com/rishi8094) |
|
|
947
|
+
| :---------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |
|
|
948
|
+
| [PsychicCat](https://github.com/PsychicCat) | [petetnt](https://github.com/petetnt) | [thepont](https://github.com/thepont) | [RichiCoder1](https://github.com/RichiCoder1) | [rishi8094](https://github.com/rishi8094) |
|
|
949
949
|
|
|
950
|
-
| [<img alt="
|
|
951
|
-
|
|
|
952
|
-
|
|
|
950
|
+
| [<img alt="rloomans" src="https://avatars.githubusercontent.com/u/92133?v=4&s=117" width="117">](https://github.com/rloomans) | [<img alt="roberttaylor426" src="https://avatars.githubusercontent.com/u/535032?v=4&s=117" width="117">](https://github.com/roberttaylor426) | [<img alt="wwsno" src="https://avatars.githubusercontent.com/u/6328924?v=4&s=117" width="117">](https://github.com/wwsno) | [<img alt="gribnoysup" src="https://avatars.githubusercontent.com/u/5036933?v=4&s=117" width="117">](https://github.com/gribnoysup) | [<img alt="sergiodurand" src="https://avatars.githubusercontent.com/u/19421918?v=4&s=117" width="117">](https://github.com/sergiodurand) |
|
|
951
|
+
| :---------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------: |
|
|
952
|
+
| [rloomans](https://github.com/rloomans) | [roberttaylor426](https://github.com/roberttaylor426) | [wwsno](https://github.com/wwsno) | [gribnoysup](https://github.com/gribnoysup) | [sergiodurand](https://github.com/sergiodurand) |
|
|
953
953
|
|
|
954
|
-
| [<img alt="
|
|
955
|
-
|
|
|
956
|
-
|
|
|
954
|
+
| [<img alt="sethetter" src="https://avatars.githubusercontent.com/u/655500?v=4&s=117" width="117">](https://github.com/sethetter) | [<img alt="shineli-not-used-anymore" src="https://avatars.githubusercontent.com/u/1043331?v=4&s=117" width="117">](https://github.com/shineli-not-used-anymore) | [<img alt="stesie" src="https://avatars.githubusercontent.com/u/113068?v=4&s=117" width="117">](https://github.com/stesie) | [<img alt="jeromemacias" src="https://avatars.githubusercontent.com/u/582446?v=4&s=117" width="117">](https://github.com/jeromemacias) | [<img alt="kdybicz" src="https://avatars.githubusercontent.com/u/13134892?v=4&s=117" width="117">](https://github.com/kdybicz) |
|
|
955
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: |
|
|
956
|
+
| [sethetter](https://github.com/sethetter) | [shineli-not-used-anymore](https://github.com/shineli-not-used-anymore) | [stesie](https://github.com/stesie) | [jeromemacias](https://github.com/jeromemacias) | [kdybicz](https://github.com/kdybicz) |
|
|
957
957
|
|
|
958
|
-
| [<img alt="
|
|
959
|
-
|
|
|
960
|
-
| [
|
|
958
|
+
| [<img alt="kenleytomlin" src="https://avatars.githubusercontent.com/u/3004590?v=4&s=117" width="117">](https://github.com/kenleytomlin) | [<img alt="kevinhankens" src="https://avatars.githubusercontent.com/u/679364?v=4&s=117" width="117">](https://github.com/kevinhankens) | [<img alt="kerueter" src="https://avatars.githubusercontent.com/u/16644743?v=4&s=117" width="117">](https://github.com/kerueter) | [<img alt="kohanian" src="https://avatars.githubusercontent.com/u/8570821?v=4&s=117" width="117">](https://github.com/kohanian) | [<img alt="kyusungpark" src="https://avatars.githubusercontent.com/u/58890841?v=4&s=117" width="117">](https://github.com/kyusungpark) |
|
|
959
|
+
| :-------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
960
|
+
| [kenleytomlin](https://github.com/kenleytomlin) | [kevinhankens](https://github.com/kevinhankens) | [kerueter](https://github.com/kerueter) | [kohanian](https://github.com/kohanian) | [kyusungpark](https://github.com/kyusungpark) |
|
|
961
961
|
|
|
962
|
-
| [<img alt="
|
|
963
|
-
|
|
|
964
|
-
|
|
|
962
|
+
| [<img alt="lalifraco-devspark" src="https://avatars.githubusercontent.com/u/13339324?v=4&s=117" width="117">](https://github.com/lalifraco-devspark) | [<img alt="DynamicSTOP" src="https://avatars.githubusercontent.com/u/9434504?v=4&s=117" width="117">](https://github.com/DynamicSTOP) | [<img alt="brazilianbytes" src="https://avatars.githubusercontent.com/u/1900570?v=4&s=117" width="117">](https://github.com/brazilianbytes) | [<img alt="Marcel-G" src="https://avatars.githubusercontent.com/u/2770666?v=4&s=117" width="117">](https://github.com/Marcel-G) | [<img alt="neverendingqs" src="https://avatars.githubusercontent.com/u/8854618?v=4&s=117" width="117">](https://github.com/neverendingqs) |
|
|
963
|
+
| :--------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: |
|
|
964
|
+
| [lalifraco-devspark](https://github.com/lalifraco-devspark) | [DynamicSTOP](https://github.com/DynamicSTOP) | [brazilianbytes](https://github.com/brazilianbytes) | [Marcel-G](https://github.com/Marcel-G) | [neverendingqs](https://github.com/neverendingqs) |
|
|
965
965
|
|
|
966
|
-
| [<img alt="
|
|
967
|
-
|
|
|
968
|
-
| [
|
|
966
|
+
| [<img alt="msjonker" src="https://avatars.githubusercontent.com/u/781683?v=4&s=117" width="117">](https://github.com/msjonker) | [<img alt="Takeno" src="https://avatars.githubusercontent.com/u/1499063?v=4&s=117" width="117">](https://github.com/Takeno) | [<img alt="kelchm" src="https://avatars.githubusercontent.com/u/172301?v=4&s=117" width="117">](https://github.com/kelchm) | [<img alt="mjmac" src="https://avatars.githubusercontent.com/u/83737?v=4&s=117" width="117">](https://github.com/mjmac) | [<img alt="mohokh67" src="https://avatars.githubusercontent.com/u/10816168?v=4&s=117" width="117">](https://github.com/mohokh67) |
|
|
967
|
+
| :----------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: |
|
|
968
|
+
| [msjonker](https://github.com/msjonker) | [Takeno](https://github.com/Takeno) | [kelchm](https://github.com/kelchm) | [mjmac](https://github.com/mjmac) | [mohokh67](https://github.com/mohokh67) |
|
|
969
969
|
|
|
970
|
-
| [<img alt="
|
|
971
|
-
|
|
|
972
|
-
|
|
|
970
|
+
| [<img alt="AlexHladin" src="https://avatars.githubusercontent.com/u/7945837?v=4&s=117" width="117">](https://github.com/AlexHladin) | [<img alt="ojongerius" src="https://avatars.githubusercontent.com/u/1726055?v=4&s=117" width="117">](https://github.com/ojongerius) | [<img alt="parasgera" src="https://avatars.githubusercontent.com/u/4932306?v=4&s=117" width="117">](https://github.com/parasgera) | [<img alt="furipon308" src="https://avatars.githubusercontent.com/u/12597185?v=4&s=117" width="117">](https://github.com/furipon308) | [<img alt="hsz" src="https://avatars.githubusercontent.com/u/108333?v=4&s=117" width="117">](https://github.com/hsz) |
|
|
971
|
+
| :---------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------: |
|
|
972
|
+
| [AlexHladin](https://github.com/AlexHladin) | [ojongerius](https://github.com/ojongerius) | [parasgera](https://github.com/parasgera) | [furipon308](https://github.com/furipon308) | [hsz](https://github.com/hsz) |
|
|
973
973
|
|
|
974
|
-
| [<img alt="
|
|
975
|
-
|
|
|
976
|
-
| [
|
|
974
|
+
| [<img alt="jeffhall4" src="https://avatars.githubusercontent.com/u/14976795?v=4&s=117" width="117">](https://github.com/jeffhall4) | [<img alt="jgilbert01" src="https://avatars.githubusercontent.com/u/1082126?v=4&s=117" width="117">](https://github.com/jgilbert01) | [<img alt="polaris340" src="https://avatars.githubusercontent.com/u/2861192?v=4&s=117" width="117">](https://github.com/polaris340) | [<img alt="khanguyen88" src="https://avatars.githubusercontent.com/u/26890183?v=4&s=117" width="117">](https://github.com/khanguyen88) | [<img alt="kobanyan" src="https://avatars.githubusercontent.com/u/14950314?v=4&s=117" width="117">](https://github.com/kobanyan) |
|
|
975
|
+
| :--------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: |
|
|
976
|
+
| [jeffhall4](https://github.com/jeffhall4) | [jgilbert01](https://github.com/jgilbert01) | [polaris340](https://github.com/polaris340) | [khanguyen88](https://github.com/khanguyen88) | [kobanyan](https://github.com/kobanyan) |
|
|
977
977
|
|
|
978
|
-
| [<img alt="
|
|
979
|
-
|
|
|
980
|
-
| [
|
|
978
|
+
| [<img alt="leruitga-ss" src="https://avatars.githubusercontent.com/u/39830392?v=4&s=117" width="117">](https://github.com/leruitga-ss) | [<img alt="livingmine" src="https://avatars.githubusercontent.com/u/7286614?v=4&s=117" width="117">](https://github.com/livingmine) | [<img alt="lteacher" src="https://avatars.githubusercontent.com/u/6103860?v=4&s=117" width="117">](https://github.com/lteacher) | [<img alt="martinmicunda" src="https://avatars.githubusercontent.com/u/1643606?v=4&s=117" width="117">](https://github.com/martinmicunda) | [<img alt="nick-w-nick" src="https://avatars.githubusercontent.com/u/43578531?v=4&s=117" width="117">](https://github.com/nick-w-nick) |
|
|
979
|
+
| :------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
980
|
+
| [leruitga-ss](https://github.com/leruitga-ss) | [livingmine](https://github.com/livingmine) | [lteacher](https://github.com/lteacher) | [martinmicunda](https://github.com/martinmicunda) | [nick-w-nick](https://github.com/nick-w-nick) |
|
|
981
981
|
|
|
982
|
-
| [<img alt="
|
|
983
|
-
|
|
|
984
|
-
|
|
|
982
|
+
| [<img alt="nori3tsu" src="https://avatars.githubusercontent.com/u/379587?v=4&s=117" width="117">](https://github.com/nori3tsu) | [<img alt="ppasmanik" src="https://avatars.githubusercontent.com/u/3534835?v=4&s=117" width="117">](https://github.com/ppasmanik) | [<img alt="ryanzyy" src="https://avatars.githubusercontent.com/u/2299226?v=4&s=117" width="117">](https://github.com/ryanzyy) | [<img alt="adikari" src="https://avatars.githubusercontent.com/u/1757714?v=4&s=117" width="117">](https://github.com/adikari) | [<img alt="tom-stclair" src="https://avatars.githubusercontent.com/u/96192789?v=4&s=117" width="117">](https://github.com/tom-stclair) |
|
|
983
|
+
| :----------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
984
|
+
| [nori3tsu](https://github.com/nori3tsu) | [ppasmanik](https://github.com/ppasmanik) | [ryanzyy](https://github.com/ryanzyy) | [adikari](https://github.com/adikari) | [tom-stclair](https://github.com/tom-stclair) |
|
|
985
985
|
|
|
986
|
-
| [<img alt="
|
|
987
|
-
| :------------------------------------------------------------------------------------------------------------------------: |
|
|
988
|
-
|
|
|
986
|
+
| [<img alt="tveal" src="https://avatars.githubusercontent.com/u/42526035?v=4&s=117" width="117">](https://github.com/tveal) | [<img alt="constb" src="https://avatars.githubusercontent.com/u/1006766?v=4&s=117" width="117">](https://github.com/constb) | [<img alt="stevemao" src="https://avatars.githubusercontent.com/u/6316590?v=4&s=117" width="117">](https://github.com/stevemao) | [<img alt="trsrm" src="https://avatars.githubusercontent.com/u/1160872?v=4&s=117" width="117">](https://github.com/trsrm) | [<img alt="ittus" src="https://avatars.githubusercontent.com/u/5120965?v=4&s=117" width="117">](https://github.com/ittus) |
|
|
987
|
+
| :------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: |
|
|
988
|
+
| [tveal](https://github.com/tveal) | [constb](https://github.com/constb) | [stevemao](https://github.com/stevemao) | [trsrm](https://github.com/trsrm) | [ittus](https://github.com/ittus) |
|
|
989
|
+
|
|
990
|
+
| [<img alt="Ankcorn" src="https://avatars.githubusercontent.com/u/7361428?v=4&s=117" width="117">](https://github.com/Ankcorn) | [<img alt="expoe-codebuild" src="https://avatars.githubusercontent.com/u/38527465?v=4&s=117" width="117">](https://github.com/expoe-codebuild) | [<img alt="tiagogoncalves89" src="https://avatars.githubusercontent.com/u/55122?v=4&s=117" width="117">](https://github.com/tiagogoncalves89) | [<img alt="tuanmh" src="https://avatars.githubusercontent.com/u/3193353?v=4&s=117" width="117">](https://github.com/tuanmh) | [<img alt="Gregoirevda" src="https://avatars.githubusercontent.com/u/12223738?v=4&s=117" width="117">](https://github.com/Gregoirevda) |
|
|
991
|
+
| :---------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
992
|
+
| [Ankcorn](https://github.com/Ankcorn) | [expoe-codebuild](https://github.com/expoe-codebuild) | [tiagogoncalves89](https://github.com/tiagogoncalves89) | [tuanmh](https://github.com/tuanmh) | [Gregoirevda](https://github.com/Gregoirevda) |
|
|
993
|
+
|
|
994
|
+
| [<img alt="vivganes" src="https://avatars.githubusercontent.com/u/2035886?v=4&s=117" width="117">](https://github.com/vivganes) | [<img alt="gcphost" src="https://avatars.githubusercontent.com/u/1173636?v=4&s=117" width="117">](https://github.com/gcphost) | [<img alt="YaroslavApatiev" src="https://avatars.githubusercontent.com/u/24372409?v=4&s=117" width="117">](https://github.com/YaroslavApatiev) | [<img alt="zacacollier" src="https://avatars.githubusercontent.com/u/18710669?v=4&s=117" width="117">](https://github.com/zacacollier) | [<img alt="akinboboye" src="https://avatars.githubusercontent.com/u/60622084?v=4&s=117" width="117">](https://github.com/akinboboye) |
|
|
995
|
+
| :-----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: |
|
|
996
|
+
| [vivganes](https://github.com/vivganes) | [gcphost](https://github.com/gcphost) | [YaroslavApatiev](https://github.com/YaroslavApatiev) | [zacacollier](https://github.com/zacacollier) | [akinboboye](https://github.com/akinboboye) |
|
|
997
|
+
|
|
998
|
+
| [<img alt="allenhartwig" src="https://avatars.githubusercontent.com/u/1261521?v=4&s=117" width="117">](https://github.com/allenhartwig) | [<img alt="ctbaird" src="https://avatars.githubusercontent.com/u/37962844?v=4&s=117" width="117">](https://github.com/ctbaird) | [<img alt="demetriusnunes" src="https://avatars.githubusercontent.com/u/4699?v=4&s=117" width="117">](https://github.com/demetriusnunes) | [<img alt="dependabot[bot]" src="https://avatars.githubusercontent.com/in/29110?v=4&s=117" width="117">](https://github.com/apps/dependabot) | [<img alt="drace-rgare" src="https://avatars.githubusercontent.com/u/96196419?v=4&s=117" width="117">](https://github.com/drace-rgare) |
|
|
999
|
+
| :-------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
1000
|
+
| [allenhartwig](https://github.com/allenhartwig) | [ctbaird](https://github.com/ctbaird) | [demetriusnunes](https://github.com/demetriusnunes) | [dependabot[bot]](https://github.com/apps/dependabot) | [drace-rgare](https://github.com/drace-rgare) |
|
|
1001
|
+
|
|
1002
|
+
| [<img alt="ericctsf" src="https://avatars.githubusercontent.com/u/42775388?v=4&s=117" width="117">](https://github.com/ericctsf) | [<img alt="BorjaMacedo" src="https://avatars.githubusercontent.com/u/16381759?v=4&s=117" width="117">](https://github.com/BorjaMacedo) | [<img alt="BrandonE" src="https://avatars.githubusercontent.com/u/542245?v=4&s=117" width="117">](https://github.com/BrandonE) | [<img alt="guerrerocarlos" src="https://avatars.githubusercontent.com/u/82532?v=4&s=117" width="117">](https://github.com/guerrerocarlos) | [<img alt="chrismcleod" src="https://avatars.githubusercontent.com/u/1134683?v=4&s=117" width="117">](https://github.com/chrismcleod) |
|
|
1003
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |
|
|
1004
|
+
| [ericctsf](https://github.com/ericctsf) | [BorjaMacedo](https://github.com/BorjaMacedo) | [BrandonE](https://github.com/BrandonE) | [guerrerocarlos](https://github.com/guerrerocarlos) | [chrismcleod](https://github.com/chrismcleod) |
|
|
1005
|
+
|
|
1006
|
+
| [<img alt="icarus-sullivan" src="https://avatars.githubusercontent.com/u/17626168?v=4&s=117" width="117">](https://github.com/icarus-sullivan) | [<img alt="cnuss" src="https://avatars.githubusercontent.com/u/819991?v=4&s=117" width="117">](https://github.com/cnuss) | [<img alt="christophgysin" src="https://avatars.githubusercontent.com/u/527924?v=4&s=117" width="117">](https://github.com/christophgysin) | [<img alt="cdubz" src="https://avatars.githubusercontent.com/u/10456740?v=4&s=117" width="117">](https://github.com/cdubz) | [<img alt="danmactough" src="https://avatars.githubusercontent.com/u/357481?v=4&s=117" width="117">](https://github.com/danmactough) |
|
|
1007
|
+
| :--------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: |
|
|
1008
|
+
| [icarus-sullivan](https://github.com/icarus-sullivan) | [cnuss](https://github.com/cnuss) | [christophgysin](https://github.com/christophgysin) | [cdubz](https://github.com/cdubz) | [danmactough](https://github.com/danmactough) |
|
|
1009
|
+
|
|
1010
|
+
| [<img alt="GeneralistDev" src="https://avatars.githubusercontent.com/u/1705096?v=4&s=117" width="117">](https://github.com/GeneralistDev) | [<img alt="designfrontier" src="https://avatars.githubusercontent.com/u/422540?v=4&s=117" width="117">](https://github.com/designfrontier) | [<img alt="daniel0707" src="https://avatars.githubusercontent.com/u/22343156?v=4&s=117" width="117">](https://github.com/daniel0707) | [<img alt="dnicolson" src="https://avatars.githubusercontent.com/u/2276355?v=4&s=117" width="117">](https://github.com/dnicolson) | [<img alt="dbunker" src="https://avatars.githubusercontent.com/u/751580?v=4&s=117" width="117">](https://github.com/dbunker) |
|
|
1011
|
+
| :---------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: |
|
|
1012
|
+
| [GeneralistDev](https://github.com/GeneralistDev) | [designfrontier](https://github.com/designfrontier) | [daniel0707](https://github.com/daniel0707) | [dnicolson](https://github.com/dnicolson) | [dbunker](https://github.com/dbunker) |
|
|
1013
|
+
|
|
1014
|
+
| [<img alt="dobrynin" src="https://avatars.githubusercontent.com/u/12061016?v=4&s=117" width="117">](https://github.com/dobrynin) | [<img alt="DavideSegullo" src="https://avatars.githubusercontent.com/u/17269969?v=4&s=117" width="117">](https://github.com/DavideSegullo) | [<img alt="domaslasauskas" src="https://avatars.githubusercontent.com/u/2464675?v=4&s=117" width="117">](https://github.com/domaslasauskas) | [<img alt="enolan" src="https://avatars.githubusercontent.com/u/61517?v=4&s=117" width="117">](https://github.com/enolan) | [<img alt="EduardMcfly" src="https://avatars.githubusercontent.com/u/16842163?v=4&s=117" width="117">](https://github.com/EduardMcfly) |
|
|
1015
|
+
| :------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
|
|
1016
|
+
| [dobrynin](https://github.com/dobrynin) | [DavideSegullo](https://github.com/DavideSegullo) | [domaslasauskas](https://github.com/domaslasauskas) | [enolan](https://github.com/enolan) | [EduardMcfly](https://github.com/EduardMcfly) |
|
|
1017
|
+
|
|
1018
|
+
| [<img alt="thejuan" src="https://avatars.githubusercontent.com/u/329807?v=4&s=117" width="117">](https://github.com/thejuan) | [<img alt="adam-nielsen" src="https://avatars.githubusercontent.com/u/278772?v=4&s=117" width="117">](https://github.com/adam-nielsen) | [<img alt="againer" src="https://avatars.githubusercontent.com/u/509709?v=4&s=117" width="117">](https://github.com/againer) | [<img alt="AlbertXingZhang" src="https://avatars.githubusercontent.com/u/12808025?v=4&s=117" width="117">](https://github.com/AlbertXingZhang) | [<img alt="aldenquimby" src="https://avatars.githubusercontent.com/u/2145098?v=4&s=117" width="117">](https://github.com/aldenquimby) |
|
|
1019
|
+
| :--------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: |
|
|
1020
|
+
| [thejuan](https://github.com/thejuan) | [adam-nielsen](https://github.com/adam-nielsen) | [againer](https://github.com/againer) | [AlbertXingZhang](https://github.com/AlbertXingZhang) | [aldenquimby](https://github.com/aldenquimby) |
|
|
1021
|
+
|
|
1022
|
+
| [<img alt="alebianco-doxee" src="https://avatars.githubusercontent.com/u/56639478?v=4&s=117" width="117">](https://github.com/alebianco-doxee) | [<img alt="koterpillar" src="https://avatars.githubusercontent.com/u/140276?v=4&s=117" width="117">](https://github.com/koterpillar) | [<img alt="aliclark" src="https://avatars.githubusercontent.com/u/85300?v=4&s=117" width="117">](https://github.com/aliclark) | [<img alt="andersem" src="https://avatars.githubusercontent.com/u/509817?v=4&s=117" width="117">](https://github.com/andersem) | [<img alt="triptec" src="https://avatars.githubusercontent.com/u/240159?v=4&s=117" width="117">](https://github.com/triptec) |
|
|
1023
|
+
| :--------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: |
|
|
1024
|
+
| [alebianco-doxee](https://github.com/alebianco-doxee) | [koterpillar](https://github.com/koterpillar) | [aliclark](https://github.com/aliclark) | [andersem](https://github.com/andersem) | [triptec](https://github.com/triptec) |
|
|
1025
|
+
|
|
1026
|
+
| [<img alt="m0ppers" src="https://avatars.githubusercontent.com/u/819421?v=4&s=117" width="117">](https://github.com/m0ppers) | [<img alt="cspotcode" src="https://avatars.githubusercontent.com/u/376504?v=4&s=117" width="117">](https://github.com/cspotcode) | [<img alt="AndrewCEmil" src="https://avatars.githubusercontent.com/u/2167475?v=4&s=117" width="117">](https://github.com/AndrewCEmil) | [<img alt="mapsi" src="https://avatars.githubusercontent.com/u/516735?v=4&s=117" width="117">](https://github.com/mapsi) | [<img alt="aliatsis" src="https://avatars.githubusercontent.com/u/4140524?v=4&s=117" width="117">](https://github.com/aliatsis) |
|
|
1027
|
+
| :--------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: |
|
|
1028
|
+
| [m0ppers](https://github.com/m0ppers) | [cspotcode](https://github.com/cspotcode) | [AndrewCEmil](https://github.com/AndrewCEmil) | [mapsi](https://github.com/mapsi) | [aliatsis](https://github.com/aliatsis) |
|
|
1029
|
+
|
|
1030
|
+
| [<img alt="akaila" src="https://avatars.githubusercontent.com/u/484181?v=4&s=117" width="117">](https://github.com/akaila) | [<img alt="ac360" src="https://avatars.githubusercontent.com/u/2752551?v=4&s=117" width="117">](https://github.com/ac360) | [<img alt="austin-payne" src="https://avatars.githubusercontent.com/u/29075091?v=4&s=117" width="117">](https://github.com/austin-payne) | [<img alt="BenjaminBergerM" src="https://avatars.githubusercontent.com/u/50329833?v=4&s=117" width="117">](https://github.com/BenjaminBergerM) | [<img alt="iansu" src="https://avatars.githubusercontent.com/u/433725?v=4&s=117" width="117">](https://github.com/iansu) |
|
|
1031
|
+
| :------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: |
|
|
1032
|
+
| [akaila](https://github.com/akaila) | [ac360](https://github.com/ac360) | [austin-payne](https://github.com/austin-payne) | [BenjaminBergerM](https://github.com/BenjaminBergerM) | [iansu](https://github.com/iansu) |
|
|
1033
|
+
|
|
1034
|
+
| [<img alt="gdinn" src="https://avatars.githubusercontent.com/u/19908659?v=4&s=117" width="117">](https://github.com/gdinn) | [<img alt="MEGApixel23" src="https://avatars.githubusercontent.com/u/4102786?v=4&s=117" width="117">](https://github.com/MEGApixel23) | [<img alt="idmontie" src="https://avatars.githubusercontent.com/u/412382?v=4&s=117" width="117">](https://github.com/idmontie) | [<img alt="ihendriks" src="https://avatars.githubusercontent.com/u/7311659?v=4&s=117" width="117">](https://github.com/ihendriks) | [<img alt="jacintoArias" src="https://avatars.githubusercontent.com/u/7511199?v=4&s=117" width="117">](https://github.com/jacintoArias) |
|
|
1035
|
+
| :------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: |
|
|
1036
|
+
| [gdinn](https://github.com/gdinn) | [MEGApixel23](https://github.com/MEGApixel23) | [idmontie](https://github.com/idmontie) | [ihendriks](https://github.com/ihendriks) | [jacintoArias](https://github.com/jacintoArias) |
|
|
1037
|
+
|
|
1038
|
+
| [<img alt="JacekDuszenko" src="https://avatars.githubusercontent.com/u/24210015?v=4&s=117" width="117">](https://github.com/JacekDuszenko) | [<img alt="jgrigg" src="https://avatars.githubusercontent.com/u/12800024?v=4&s=117" width="117">](https://github.com/jgrigg) | [<img alt="janicduplessis" src="https://avatars.githubusercontent.com/u/2677334?v=4&s=117" width="117">](https://github.com/janicduplessis) | [<img alt="jsnajdr" src="https://avatars.githubusercontent.com/u/664258?v=4&s=117" width="117">](https://github.com/jsnajdr) | [<img alt="horyd" src="https://avatars.githubusercontent.com/u/916414?v=4&s=117" width="117">](https://github.com/horyd) |
|
|
1039
|
+
| :----------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: |
|
|
1040
|
+
| [JacekDuszenko](https://github.com/JacekDuszenko) | [jgrigg](https://github.com/jgrigg) | [janicduplessis](https://github.com/janicduplessis) | [jsnajdr](https://github.com/jsnajdr) | [horyd](https://github.com/horyd) |
|
|
1041
|
+
|
|
1042
|
+
| [<img alt="jasonfungsing" src="https://avatars.githubusercontent.com/u/1302364?v=4&s=117" width="117">](https://github.com/jasonfungsing) | [<img alt="jaydp17" src="https://avatars.githubusercontent.com/u/1743425?v=4&s=117" width="117">](https://github.com/jaydp17) | [<img alt="jeremygiberson" src="https://avatars.githubusercontent.com/u/487411?v=4&s=117" width="117">](https://github.com/jeremygiberson) | [<img alt="josephwarrick" src="https://avatars.githubusercontent.com/u/5392984?v=4&s=117" width="117">](https://github.com/josephwarrick) | [<img alt="jlsjonas" src="https://avatars.githubusercontent.com/u/932193?v=4&s=117" width="117">](https://github.com/jlsjonas) |
|
|
1043
|
+
| :---------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------: |
|
|
1044
|
+
| [jasonfungsing](https://github.com/jasonfungsing) | [jaydp17](https://github.com/jaydp17) | [jeremygiberson](https://github.com/jeremygiberson) | [josephwarrick](https://github.com/josephwarrick) | [jlsjonas](https://github.com/jlsjonas) |
|
|
1045
|
+
|
|
1046
|
+
| [<img alt="jonathonadams" src="https://avatars.githubusercontent.com/u/24870903?v=4&s=117" width="117">](https://github.com/jonathonadams) | [<img alt="joostfarla" src="https://avatars.githubusercontent.com/u/851863?v=4&s=117" width="117">](https://github.com/joostfarla) | [<img alt="TheTeaCat" src="https://avatars.githubusercontent.com/u/20339741?v=4&s=117" width="117">](https://github.com/TheTeaCat) | [<img alt="eeroniemi" src="https://avatars.githubusercontent.com/u/1384231?v=4&s=117" width="117">](https://github.com/eeroniemi) | [<img alt="minibikini" src="https://avatars.githubusercontent.com/u/439309?v=4&s=117" width="117">](https://github.com/minibikini) |
|
|
1047
|
+
| :----------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |
|
|
1048
|
+
| [jonathonadams](https://github.com/jonathonadams) | [joostfarla](https://github.com/joostfarla) | [TheTeaCat](https://github.com/TheTeaCat) | [eeroniemi](https://github.com/eeroniemi) | [minibikini](https://github.com/minibikini) |
|
|
1049
|
+
|
|
1050
|
+
| [<img alt="em0ney" src="https://avatars.githubusercontent.com/u/5679658?v=4&s=117" width="117">](https://github.com/em0ney) | [<img alt="webdeveric" src="https://avatars.githubusercontent.com/u/1823514?v=4&s=117" width="117">](https://github.com/webdeveric) | [<img alt="fernyettheplant" src="https://avatars.githubusercontent.com/u/3887243?v=4&s=117" width="117">](https://github.com/fernyettheplant) | [<img alt="fernandomoraes" src="https://avatars.githubusercontent.com/u/2366763?v=4&s=117" width="117">](https://github.com/fernandomoraes) | [<img alt="panva" src="https://avatars.githubusercontent.com/u/241506?v=4&s=117" width="117">](https://github.com/panva) |
|
|
1051
|
+
| :-------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: |
|
|
1052
|
+
| [em0ney](https://github.com/em0ney) | [webdeveric](https://github.com/webdeveric) | [fernyettheplant](https://github.com/fernyettheplant) | [fernandomoraes](https://github.com/fernandomoraes) | [panva](https://github.com/panva) |
|
|
1053
|
+
|
|
1054
|
+
| [<img alt="Edweis" src="https://avatars.githubusercontent.com/u/18052624?v=4&s=117" width="117">](https://github.com/Edweis) | [<img alt="frodeaa" src="https://avatars.githubusercontent.com/u/45172?v=4&s=117" width="117">](https://github.com/frodeaa) | [<img alt="gbroques" src="https://avatars.githubusercontent.com/u/12969835?v=4&s=117" width="117">](https://github.com/gbroques) | [<img alt="ganey" src="https://avatars.githubusercontent.com/u/1401832?v=4&s=117" width="117">](https://github.com/ganey) | [<img alt="geoffmanningcleartrace" src="https://avatars.githubusercontent.com/u/101125585?v=4&s=117" width="117">](https://github.com/geoffmanningcleartrace) |
|
|
1055
|
+
| :--------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
1056
|
+
| [Edweis](https://github.com/Edweis) | [frodeaa](https://github.com/frodeaa) | [gbroques](https://github.com/gbroques) | [ganey](https://github.com/ganey) | [geoffmanningcleartrace](https://github.com/geoffmanningcleartrace) |
|
|
1057
|
+
|
|
1058
|
+
| [<img alt="grakic-glopal" src="https://avatars.githubusercontent.com/u/118749735?v=4&s=117" width="117">](https://github.com/grakic-glopal) | [<img alt="guillaume" src="https://avatars.githubusercontent.com/u/368?v=4&s=117" width="117">](https://github.com/guillaume) | [<img alt="mebibou" src="https://avatars.githubusercontent.com/u/305342?v=4&s=117" width="117">](https://github.com/mebibou) | [<img alt="balassy" src="https://avatars.githubusercontent.com/u/1872777?v=4&s=117" width="117">](https://github.com/balassy) | [<img alt="bayoudhi" src="https://avatars.githubusercontent.com/u/3085156?v=4&s=117" width="117">](https://github.com/bayoudhi) |
|
|
1059
|
+
| :-----------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------: |
|
|
1060
|
+
| [grakic-glopal](https://github.com/grakic-glopal) | [guillaume](https://github.com/guillaume) | [mebibou](https://github.com/mebibou) | [balassy](https://github.com/balassy) | [bayoudhi](https://github.com/bayoudhi) |
|
|
1061
|
+
|
|
1062
|
+
| [<img alt="enapupe" src="https://avatars.githubusercontent.com/u/291082?v=4&s=117" width="117">](https://github.com/enapupe) | [<img alt="aardvarkk" src="https://avatars.githubusercontent.com/u/1251092?v=4&s=117" width="117">](https://github.com/aardvarkk) |
|
|
1063
|
+
| :--------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: |
|
|
1064
|
+
| [enapupe](https://github.com/enapupe) | [aardvarkk](https://github.com/aardvarkk) |
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dedicatedTo": "Blue, a great migrating bird.",
|
|
3
3
|
"name": "serverless-offline",
|
|
4
|
-
"version": "13.
|
|
4
|
+
"version": "13.5.0",
|
|
5
5
|
"description": "Emulate AWS λ and API Gateway locally when developing your Serverless project",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"exports": {
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"test:cov": "NODE_OPTIONS='--experimental-loader @istanbuljs/esm-loader-hook' nyc --reporter=html npm test",
|
|
23
23
|
"test:node": "TEST=node mocha --require ./tests/mochaHooks.cjs",
|
|
24
24
|
"test:unit": "TEST=unit mocha --require ./tests/mochaHooks.cjs",
|
|
25
|
-
"test:e2e": "TEST=e2e mocha --require ./tests/mochaHooks.cjs"
|
|
25
|
+
"test:e2e": "TEST=e2e mocha --require ./tests/mochaHooks.cjs",
|
|
26
|
+
"test:docker": "TEST=docker mocha --require ./tests/mochaHooks.cjs"
|
|
26
27
|
},
|
|
27
28
|
"repository": {
|
|
28
29
|
"type": "git",
|
|
@@ -96,7 +97,6 @@
|
|
|
96
97
|
"luxon": "^3.4.4",
|
|
97
98
|
"node-schedule": "^2.1.1",
|
|
98
99
|
"p-memoize": "^7.1.1",
|
|
99
|
-
"p-retry": "^6.2.0",
|
|
100
100
|
"velocityjs": "^2.0.6",
|
|
101
101
|
"ws": "^8.16.0"
|
|
102
102
|
},
|
package/src/config/constants.js
CHANGED
|
@@ -6,6 +6,8 @@ export const CUSTOM_OPTION = "serverless-offline"
|
|
|
6
6
|
|
|
7
7
|
export const DEFAULT_LAMBDA_RUNTIME = "nodejs14.x"
|
|
8
8
|
|
|
9
|
+
export const DEFAULT_LAMBDA_ARCHITECTURE = "arm64"
|
|
10
|
+
|
|
9
11
|
// https://docs.aws.amazon.com/lambda/latest/dg/limits.html
|
|
10
12
|
export const DEFAULT_LAMBDA_MEMORY_SIZE = 1024
|
|
11
13
|
// default function timeout in seconds
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable sort-keys */
|
|
1
2
|
// native runtime support for AWS
|
|
2
3
|
// https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
|
|
3
4
|
|
|
@@ -6,6 +7,32 @@
|
|
|
6
7
|
// 'dotnet6',
|
|
7
8
|
// ])
|
|
8
9
|
|
|
10
|
+
const X86_64 = "x86_64"
|
|
11
|
+
const ARM64 = "arm64"
|
|
12
|
+
|
|
13
|
+
export const supportedRuntimesArchitecture = {
|
|
14
|
+
"nodejs14.x": [ARM64, X86_64],
|
|
15
|
+
"nodejs16.x": [ARM64, X86_64],
|
|
16
|
+
"nodejs18.x": [ARM64, X86_64],
|
|
17
|
+
"nodejs20.x": [ARM64, X86_64],
|
|
18
|
+
"python3.7": [X86_64],
|
|
19
|
+
"python3.8": [ARM64, X86_64],
|
|
20
|
+
"python3.9": [ARM64, X86_64],
|
|
21
|
+
"python3.10": [ARM64, X86_64],
|
|
22
|
+
"python3.11": [ARM64, X86_64],
|
|
23
|
+
"ruby2.7": [ARM64, X86_64],
|
|
24
|
+
"ruby3.2": [ARM64, X86_64],
|
|
25
|
+
java8: [X86_64],
|
|
26
|
+
"java8.al2": [ARM64, X86_64],
|
|
27
|
+
java11: [ARM64, X86_64],
|
|
28
|
+
java17: [ARM64, X86_64],
|
|
29
|
+
"go1.x": [X86_64],
|
|
30
|
+
"dotnetcore3.1": [ARM64, X86_64],
|
|
31
|
+
provided: [X86_64],
|
|
32
|
+
dotnet6: [ARM64, X86_64],
|
|
33
|
+
"provided.al2": [ARM64, X86_64],
|
|
34
|
+
}
|
|
35
|
+
|
|
9
36
|
// GO
|
|
10
37
|
export const supportedGo = new Set(["go1.x"])
|
|
11
38
|
|
|
@@ -35,8 +62,6 @@ export const supportedPython = new Set([
|
|
|
35
62
|
// RUBY
|
|
36
63
|
export const supportedRuby = new Set(["ruby2.7", "ruby3.2"])
|
|
37
64
|
|
|
38
|
-
// deprecated runtimes
|
|
39
|
-
// https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html
|
|
40
65
|
export const supportedRuntimes = new Set([
|
|
41
66
|
// ...supportedDotnetcore,
|
|
42
67
|
...supportedGo,
|
|
@@ -47,10 +72,6 @@ export const supportedRuntimes = new Set([
|
|
|
47
72
|
...supportedRuby,
|
|
48
73
|
])
|
|
49
74
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"nodejs18.x",
|
|
54
|
-
"nodejs20.x",
|
|
55
|
-
"python3.9",
|
|
56
|
-
])
|
|
75
|
+
// deprecated runtimes
|
|
76
|
+
// https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html
|
|
77
|
+
export const unsupportedDockerRuntimes = new Set([])
|
|
@@ -439,6 +439,7 @@ export default class HttpServer {
|
|
|
439
439
|
// payload processing
|
|
440
440
|
const encoding = detectEncoding(request)
|
|
441
441
|
|
|
442
|
+
request.raw.req.payload = request.payload
|
|
442
443
|
request.payload = request.payload && request.payload.toString(encoding)
|
|
443
444
|
request.rawPayload = request.payload
|
|
444
445
|
|
|
@@ -4,6 +4,7 @@ import { env } from "node:process"
|
|
|
4
4
|
import { log } from "@serverless/utils/log.js"
|
|
5
5
|
import { decodeJwt } from "jose"
|
|
6
6
|
import {
|
|
7
|
+
detectEncoding,
|
|
7
8
|
formatToClfTime,
|
|
8
9
|
nullIfEmpty,
|
|
9
10
|
parseHeaders,
|
|
@@ -63,6 +64,7 @@ export default class LambdaProxyIntegrationEvent {
|
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
let body = this.#request.payload
|
|
67
|
+
let isBase64Encoded = false
|
|
66
68
|
|
|
67
69
|
const { rawHeaders, url } = this.#request.raw.req
|
|
68
70
|
|
|
@@ -80,6 +82,15 @@ export default class LambdaProxyIntegrationEvent {
|
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
if (body) {
|
|
85
|
+
if (
|
|
86
|
+
this.#request.raw.req.payload &&
|
|
87
|
+
detectEncoding(this.#request) === "binary"
|
|
88
|
+
) {
|
|
89
|
+
body = Buffer.from(this.#request.raw.req.payload).toString("base64")
|
|
90
|
+
headers["Content-Length"] = String(Buffer.byteLength(body, "base64"))
|
|
91
|
+
isBase64Encoded = true
|
|
92
|
+
}
|
|
93
|
+
|
|
83
94
|
if (typeof body !== "string") {
|
|
84
95
|
// this.#request.payload is NOT the same as the rawPayload
|
|
85
96
|
body = this.#request.rawPayload
|
|
@@ -155,7 +166,7 @@ export default class LambdaProxyIntegrationEvent {
|
|
|
155
166
|
body,
|
|
156
167
|
headers,
|
|
157
168
|
httpMethod,
|
|
158
|
-
isBase64Encoded
|
|
169
|
+
isBase64Encoded,
|
|
159
170
|
multiValueHeaders: parseMultiValueHeaders(
|
|
160
171
|
// NOTE FIXME request.raw.req.rawHeaders can only be null for testing (hapi shot inject())
|
|
161
172
|
rawHeaders || [],
|
|
@@ -3,6 +3,7 @@ import { env } from "node:process"
|
|
|
3
3
|
import { log } from "@serverless/utils/log.js"
|
|
4
4
|
import { decodeJwt } from "jose"
|
|
5
5
|
import {
|
|
6
|
+
detectEncoding,
|
|
6
7
|
formatToClfTime,
|
|
7
8
|
lowerCaseKeys,
|
|
8
9
|
nullIfEmpty,
|
|
@@ -55,6 +56,7 @@ export default class LambdaProxyIntegrationEventV2 {
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
let body = this.#request.payload
|
|
59
|
+
let isBase64Encoded = false
|
|
58
60
|
|
|
59
61
|
const { rawHeaders } = this.#request.raw.req
|
|
60
62
|
|
|
@@ -72,6 +74,15 @@ export default class LambdaProxyIntegrationEventV2 {
|
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
if (body) {
|
|
77
|
+
if (
|
|
78
|
+
this.#request.raw.req.payload &&
|
|
79
|
+
detectEncoding(this.#request) === "binary"
|
|
80
|
+
) {
|
|
81
|
+
body = Buffer.from(this.#request.raw.req.payload).toString("base64")
|
|
82
|
+
headers["content-length"] = String(Buffer.byteLength(body, "base64"))
|
|
83
|
+
isBase64Encoded = true
|
|
84
|
+
}
|
|
85
|
+
|
|
75
86
|
if (typeof body !== "string") {
|
|
76
87
|
// this.#request.payload is NOT the same as the rawPayload
|
|
77
88
|
body = this.#request.rawPayload
|
|
@@ -145,7 +156,7 @@ export default class LambdaProxyIntegrationEventV2 {
|
|
|
145
156
|
body,
|
|
146
157
|
cookies,
|
|
147
158
|
headers,
|
|
148
|
-
isBase64Encoded
|
|
159
|
+
isBase64Encoded,
|
|
149
160
|
pathParameters: nullIfEmpty(pathParams),
|
|
150
161
|
queryStringParameters: this.#request.url.search
|
|
151
162
|
? parseQueryStringParametersForPayloadV2(this.#request.url.searchParams)
|
|
@@ -10,6 +10,7 @@ import jszip from "jszip"
|
|
|
10
10
|
import HandlerRunner from "./handler-runner/index.js"
|
|
11
11
|
import LambdaContext from "./LambdaContext.js"
|
|
12
12
|
import {
|
|
13
|
+
DEFAULT_LAMBDA_ARCHITECTURE,
|
|
13
14
|
DEFAULT_LAMBDA_MEMORY_SIZE,
|
|
14
15
|
DEFAULT_LAMBDA_RUNTIME,
|
|
15
16
|
DEFAULT_LAMBDA_TIMEOUT,
|
|
@@ -57,6 +58,8 @@ export default class LambdaFunction {
|
|
|
57
58
|
|
|
58
59
|
#runtime = null
|
|
59
60
|
|
|
61
|
+
#architecture = null
|
|
62
|
+
|
|
60
63
|
#status = "IDLE" // can be 'BUSY' or 'IDLE'
|
|
61
64
|
|
|
62
65
|
#timeout = null
|
|
@@ -91,6 +94,10 @@ export default class LambdaFunction {
|
|
|
91
94
|
|
|
92
95
|
this.#runtime =
|
|
93
96
|
functionDefinition.runtime ?? provider.runtime ?? DEFAULT_LAMBDA_RUNTIME
|
|
97
|
+
this.#architecture =
|
|
98
|
+
functionDefinition.architecture ??
|
|
99
|
+
provider.architecture ??
|
|
100
|
+
DEFAULT_LAMBDA_ARCHITECTURE
|
|
94
101
|
|
|
95
102
|
this.#timeout =
|
|
96
103
|
(functionDefinition.timeout ??
|
|
@@ -136,6 +143,7 @@ export default class LambdaFunction {
|
|
|
136
143
|
|
|
137
144
|
// TEMP
|
|
138
145
|
const funOptions = {
|
|
146
|
+
architecture: this.#architecture,
|
|
139
147
|
codeDir: this.#codeDir,
|
|
140
148
|
functionKey,
|
|
141
149
|
functionName: name,
|
|
@@ -32,7 +32,7 @@ export default class HandlerRunner {
|
|
|
32
32
|
if (useDocker) {
|
|
33
33
|
if (unsupportedDockerRuntimes.has(runtime)) {
|
|
34
34
|
log.warning(
|
|
35
|
-
`"${runtime}" runtime is not supported with docker. See https://github.com/
|
|
35
|
+
`"${runtime}" runtime is not supported with docker. See https://github.com/aws/aws-lambda-base-images`,
|
|
36
36
|
)
|
|
37
37
|
throw new Error("Unsupported runtime")
|
|
38
38
|
}
|
|
@@ -9,8 +9,8 @@ import { execa } from "execa"
|
|
|
9
9
|
import { ensureDir, pathExists } from "fs-extra"
|
|
10
10
|
import isWsl from "is-wsl"
|
|
11
11
|
import jszip from "jszip"
|
|
12
|
-
import pRetry from "p-retry"
|
|
13
12
|
import DockerImage from "./DockerImage.js"
|
|
13
|
+
import Runtime from "./DockerRuntime.js"
|
|
14
14
|
|
|
15
15
|
const { stringify } = JSON
|
|
16
16
|
const { floor, log: mathLog } = Math
|
|
@@ -24,8 +24,6 @@ export default class DockerContainer {
|
|
|
24
24
|
|
|
25
25
|
#env = null
|
|
26
26
|
|
|
27
|
-
#functionKey = null
|
|
28
|
-
|
|
29
27
|
#handler = null
|
|
30
28
|
|
|
31
29
|
#image = null
|
|
@@ -42,13 +40,15 @@ export default class DockerContainer {
|
|
|
42
40
|
|
|
43
41
|
#runtime = null
|
|
44
42
|
|
|
43
|
+
#architecture = null
|
|
44
|
+
|
|
45
45
|
#servicePath = null
|
|
46
46
|
|
|
47
47
|
constructor(
|
|
48
48
|
env,
|
|
49
|
-
functionKey,
|
|
50
49
|
handler,
|
|
51
50
|
runtime,
|
|
51
|
+
architecture,
|
|
52
52
|
layers,
|
|
53
53
|
provider,
|
|
54
54
|
servicePath,
|
|
@@ -56,23 +56,24 @@ export default class DockerContainer {
|
|
|
56
56
|
) {
|
|
57
57
|
this.#dockerOptions = dockerOptions
|
|
58
58
|
this.#env = env
|
|
59
|
-
this.#functionKey = functionKey
|
|
60
59
|
this.#handler = handler
|
|
61
|
-
this.#imageNameTag = this.#baseImage(runtime)
|
|
60
|
+
this.#imageNameTag = this.#baseImage(runtime, architecture)
|
|
62
61
|
this.#image = new DockerImage(this.#imageNameTag)
|
|
63
62
|
this.#layers = layers
|
|
64
63
|
this.#provider = provider
|
|
65
64
|
this.#runtime = runtime
|
|
65
|
+
this.#architecture = architecture
|
|
66
66
|
this.#servicePath = servicePath
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
#baseImage(runtime) {
|
|
70
|
-
|
|
69
|
+
#baseImage(runtime, architecture) {
|
|
70
|
+
const runtimeImageTag = new Runtime().getImageNameTag(runtime, architecture)
|
|
71
|
+
// # Gets the ECR image format like `python:3.7` or `nodejs:16-x86_64`
|
|
72
|
+
return `public.ecr.aws/lambda/${runtimeImageTag}`
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
async start(codeDir) {
|
|
74
76
|
await this.#image.pull()
|
|
75
|
-
|
|
76
77
|
log.debug("Run Docker container...")
|
|
77
78
|
|
|
78
79
|
let permissions = "ro"
|
|
@@ -85,19 +86,17 @@ export default class DockerContainer {
|
|
|
85
86
|
"-v",
|
|
86
87
|
`${codeDir}:/var/task:${permissions},delegated`,
|
|
87
88
|
"-p",
|
|
88
|
-
|
|
89
|
+
8080,
|
|
89
90
|
"-e",
|
|
90
91
|
"DOCKER_LAMBDA_STAY_OPEN=1", // API mode
|
|
91
92
|
"-e",
|
|
92
93
|
"DOCKER_LAMBDA_WATCH=1", // Watch mode
|
|
93
94
|
]
|
|
94
|
-
|
|
95
95
|
if (this.#layers.length > 0) {
|
|
96
96
|
log.verbose(`Found layers, checking provider type`)
|
|
97
97
|
|
|
98
98
|
if (this.#provider.name.toLowerCase() === "aws") {
|
|
99
99
|
let layerDir = this.#dockerOptions.layersDir
|
|
100
|
-
|
|
101
100
|
if (!layerDir) {
|
|
102
101
|
layerDir = join(this.#servicePath, ".serverless-offline", "layers")
|
|
103
102
|
}
|
|
@@ -135,12 +134,22 @@ export default class DockerContainer {
|
|
|
135
134
|
this.#dockerOptions.hostServicePath,
|
|
136
135
|
)
|
|
137
136
|
}
|
|
138
|
-
dockerArgs.push("-v", `${layerDir}:/
|
|
137
|
+
dockerArgs.push("-v", `${layerDir}:/var/runtime:ro,delegated`)
|
|
139
138
|
} else {
|
|
140
139
|
log.warning(
|
|
141
140
|
`Provider ${this.#provider.name} is Unsupported. Layers are only supported on aws.`,
|
|
142
141
|
)
|
|
143
142
|
}
|
|
143
|
+
} else {
|
|
144
|
+
log.debug("Looking for bootstrap file")
|
|
145
|
+
const bootstrapDir = join(this.#servicePath, "bootstrap")
|
|
146
|
+
if (await pathExists(bootstrapDir)) {
|
|
147
|
+
log.debug(`Found bootstrap file at ${bootstrapDir}`)
|
|
148
|
+
dockerArgs.push(
|
|
149
|
+
"-v",
|
|
150
|
+
`${bootstrapDir}:/var/runtime/bootstrap:ro,delegated`,
|
|
151
|
+
)
|
|
152
|
+
}
|
|
144
153
|
}
|
|
145
154
|
|
|
146
155
|
entries(this.#env).forEach(([key, value]) => {
|
|
@@ -176,7 +185,7 @@ export default class DockerContainer {
|
|
|
176
185
|
const str = String(data)
|
|
177
186
|
log.error(str)
|
|
178
187
|
|
|
179
|
-
if (str.includes("
|
|
188
|
+
if (str.includes("(cwd=/var/task, handler=)")) {
|
|
180
189
|
resolve()
|
|
181
190
|
}
|
|
182
191
|
})
|
|
@@ -195,12 +204,12 @@ export default class DockerContainer {
|
|
|
195
204
|
// NOTE: `docker port` may output multiple lines.
|
|
196
205
|
//
|
|
197
206
|
// e.g.:
|
|
198
|
-
//
|
|
199
|
-
//
|
|
207
|
+
// 8080/tcp -> 0.0.0.0:49153
|
|
208
|
+
// 8080/tcp -> :::49153
|
|
200
209
|
//
|
|
201
210
|
// Parse each line until it finds the mapped port.
|
|
202
211
|
for (const line of dockerPortOutput.split("\n")) {
|
|
203
|
-
const result = line.match(/^
|
|
212
|
+
const result = line.match(/^8080\/tcp -> (.*):(\d+)$/)
|
|
204
213
|
if (result && result.length > 2) {
|
|
205
214
|
;[, , containerPort] = result
|
|
206
215
|
break
|
|
@@ -212,15 +221,6 @@ export default class DockerContainer {
|
|
|
212
221
|
|
|
213
222
|
this.#containerId = containerId
|
|
214
223
|
this.#port = containerPort
|
|
215
|
-
|
|
216
|
-
await pRetry(() => this.#ping(), {
|
|
217
|
-
// default,
|
|
218
|
-
factor: 2,
|
|
219
|
-
// milliseconds
|
|
220
|
-
minTimeout: 10,
|
|
221
|
-
// default
|
|
222
|
-
retries: 10,
|
|
223
|
-
})
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
async #downloadLayer(layerArn, layerDir) {
|
|
@@ -344,19 +344,8 @@ export default class DockerContainer {
|
|
|
344
344
|
return gateway.split("/")[0]
|
|
345
345
|
}
|
|
346
346
|
|
|
347
|
-
async #ping() {
|
|
348
|
-
const url = `http://${this.#dockerOptions.host}:${this.#port}/2018-06-01/ping`
|
|
349
|
-
const res = await fetch(url)
|
|
350
|
-
|
|
351
|
-
if (!res.ok) {
|
|
352
|
-
throw new Error(`Failed to fetch from ${url} with ${res.statusText}`)
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
return res.text()
|
|
356
|
-
}
|
|
357
|
-
|
|
358
347
|
async request(event) {
|
|
359
|
-
const url = `http://${this.#dockerOptions.host}:${this.#port}/2015-03-31/functions
|
|
348
|
+
const url = `http://${this.#dockerOptions.host}:${this.#port}/2015-03-31/functions/function/invocations`
|
|
360
349
|
|
|
361
350
|
const res = await fetch(url, {
|
|
362
351
|
body: stringify(event),
|
|
@@ -17,11 +17,7 @@ export default class DockerImage {
|
|
|
17
17
|
log.debug(`Downloading base Docker image... (${imageNameTag})`)
|
|
18
18
|
|
|
19
19
|
try {
|
|
20
|
-
await execa("docker", [
|
|
21
|
-
"pull",
|
|
22
|
-
"--disable-content-trust=false",
|
|
23
|
-
imageNameTag,
|
|
24
|
-
])
|
|
20
|
+
await execa("docker", ["pull", imageNameTag])
|
|
25
21
|
} catch (err) {
|
|
26
22
|
log.error(err.stderr)
|
|
27
23
|
|
|
@@ -9,9 +9,9 @@ export default class DockerRunner {
|
|
|
9
9
|
constructor(funOptions, env, dockerOptions) {
|
|
10
10
|
const {
|
|
11
11
|
codeDir,
|
|
12
|
-
functionKey,
|
|
13
12
|
handler,
|
|
14
13
|
runtime,
|
|
14
|
+
architecture,
|
|
15
15
|
layers,
|
|
16
16
|
provider,
|
|
17
17
|
servicePath,
|
|
@@ -31,9 +31,9 @@ export default class DockerRunner {
|
|
|
31
31
|
|
|
32
32
|
this.#container = new DockerContainer(
|
|
33
33
|
env,
|
|
34
|
-
functionKey,
|
|
35
34
|
handler,
|
|
36
35
|
runtime,
|
|
36
|
+
architecture,
|
|
37
37
|
layers,
|
|
38
38
|
provider,
|
|
39
39
|
servicePath,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { supportedRuntimesArchitecture } from "../../../config/supportedRuntimes.js"
|
|
2
|
+
|
|
3
|
+
export default class Runtime {
|
|
4
|
+
getImageNameTag(runtime, architecture) {
|
|
5
|
+
let runtimeImageTag = ""
|
|
6
|
+
|
|
7
|
+
if (runtime === this.provided) {
|
|
8
|
+
runtimeImageTag = "provided:alami"
|
|
9
|
+
} else if (runtime.startsWith("provided")) {
|
|
10
|
+
runtimeImageTag = runtime.replace(".", ":")
|
|
11
|
+
} else if (runtime.startsWith("dotnet")) {
|
|
12
|
+
runtimeImageTag = runtime.replace("dotnet", "dotnet:")
|
|
13
|
+
} else {
|
|
14
|
+
const match = /^([a-z]+)(\d[\d.a-z]*)$/.exec(runtime)
|
|
15
|
+
runtimeImageTag = match ? `${match[1]}:${match[2]}` : runtime
|
|
16
|
+
runtimeImageTag = runtimeImageTag.replace(".x", "")
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (this.hasRuntimeMultiArchImage(runtime)) {
|
|
20
|
+
runtimeImageTag = `${runtimeImageTag}-${architecture}`
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return runtimeImageTag
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
hasRuntimeMultiArchImage(runtime) {
|
|
27
|
+
return (
|
|
28
|
+
(supportedRuntimesArchitecture[runtime] &&
|
|
29
|
+
supportedRuntimesArchitecture[runtime].length > 1) ||
|
|
30
|
+
false
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
}
|