diff --git a/HISTORY.md b/HISTORY.md
index efef66921a..0b26dc0ce6 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -1,5 +1,15 @@
# Keyman Version History
+## 16.0.12 alpha 2022-06-14
+
+* chore(web): replace lerna with npm workspaces and ts projects (#6525)
+* fix(common): update increment-version for new tsc, node versions (#6762)
+
+## 16.0.11 alpha 2022-05-27
+
+* chore: A16S2 beta to master (#6670)
+* chore(ios): FV certificate hash (#6674)
+
## 16.0.10 alpha 2022-05-15
* chore: beta to master A16S1 (#6614)
@@ -44,6 +54,43 @@
* chore: move to 16.0 (#6318)
+## 15.0.259 beta 2022-06-10
+
+* fix(android/engine): Disable haptic feedback on hardware keystrokes (#6671)
+* fix(windows): Install TIP crash with inconsistent bcp47tag (#6727)
+* change(web): adjusts minimum distance needed for quick-display of subkeys (#6714)
+* change(web): browser test timeout tweaks (#6718)
+
+## 15.0.258 beta 2022-06-06
+
+* chore: add 14.0 entries to beta HISTORY.md (#6705)
+* chore(web): switch on additional BrowserStack reporting (#6707)
+* fix(web): fixes OSK-interaction issues in Float, Toolbar UI modules (#6689)
+
+## 15.0.257 beta 2022-06-03
+
+* fix(developer): kmcomp package compiler race condition (#6696)
+* fix(developer): install keyboard call should quote kmshell.exe path (#6691)
+
+## 15.0.256 beta 2022-06-01
+
+* chore(android,ios,mac): Update crowdin strings for Spanish (Latin America) (#6650)
+
+## 15.0.255 beta 2022-05-31
+
+* fix(web): osk shrinkage from rounding (#6658)
+
+## 15.0.254 beta 2022-05-30
+
+* fix(ios): missed i18n site (#6667)
+* fix(ios): keyboard height on app load (#6672)
+* feat(ios): adds back and forward navigation buttons for in-app help (#6654)
+* change(ios): modernization of the Keyman app main screen's layout logic (#6666)
+
+## 15.0.253 beta 2022-05-27
+
+* chore(ios): FV certificate hash (#6673)
+
## 15.0.252 beta 2022-05-25
* fix(ios): fixes OSK mispositioning bug in iOS 15 (#6631)
@@ -1500,6 +1547,111 @@
* chore: prepare 15.0 alpha (#4129)
+## 14.0.292 stable 2022-05-24
+
+* fix(windows): sentry debuglogging for DoInstall (#6648)
+
+## 14.0.291 stable 2022-05-07
+
+* fix(windows): don't log before checking nil when installing keyboard (#6506)
+* fix(windows): put correct HK_ALT flag for modifier (#6587)
+
+## 14.0.290 stable 2022-03-31
+
+* chore(oem/fv/android): Update dependencies (#6452)
+
+## 14.0.289 stable 2022-03-30
+
+* chore(linux): Remove versions that are no longer supported (#6388)
+* chore(windows): move crash metadata to extra (#6398)
+* fix(android/engine): Test fileVersion during package install (#6423)
+* fix(mac): invalid keyboard breaks configuration (#6420)
+* chore(android): Update Play publishing plugin to 3.5.0 and other plugins (#6224)
+* fix(web): track load error detail (#6443)
+
+## 14.0.288 stable 2022-03-15
+
+* chore(linux): Update changelogs for 14.0.287 (#6373)
+
+## 14.0.287 stable 2022-03-04
+
+* chore(ios): certificate update (#6210)
+* fix(windows): create Keyman/Diag folder in redirected profile (#6222)
+* fix(web): stop masking error (#6332)
+
+## 14.0.286 stable 2022-01-27
+
+* chore(linux): Update changelogs for 14.0.284 (#6131)
+* chore(linux): Revert workaround for Python bug (#6134)
+* fix: only auto-merge if `auto:` prefix in title (#6148)
+* fix(developer): work around devDependencies bug in npm (#6142)
+* chore(ios): certificate update (#6166)
+* fix(mac): Check for CODE_SETSYSTEMSTORE (#6170)
+
+## 14.0.285 stable 2022-01-20
+
+* fix(linux): Fix lintian errors :cherries: (#6107)
+* fix(linux): Add workaround for Python bug :cherries: (#6125)
+* fix(web): Use regex to determine display layer and functional layers (#6123)
+
+## 14.0.284 stable 2022-01-11
+
+* chore(android,oem/fv/android): Update targetSDKVersion to 30 (#5934)
+* fix(web): popupBaseKey null check (#5948)
+* fix(linux): Add test targets to Makefile (#5975)
+* fix(android/engine): Fix font paths (#5990)
+* chore(linux): Remove lintian warning (#5993)
+* chore(linux): Allow to specify debian revision (#5998)
+* chore(linux): Update changelogs for 14.0.283 :package: (#6007)
+* fix(linux): fix release version number for Sentry reporting :cherries: (#6053)
+* chore(common): Check in crowdin strings for Spanish (Latin America) (#6060)
+* fix(linux): fix release version number for Sentry reporting :cherries: (#6069)
+* chore(android/samples): Add -no-daemon flag to KMSample2 build script (#6083)
+* fix(linux): Fix attribute error :cherries: (#6087)
+
+## 14.0.283 stable 2021-11-17
+
+* chore(windows): fix broken links in help (#5766)
+* chore(linux): copy Keyman for Linux 15 reference to 14 (#5764)
+* fix(linux): Fix debian package script (#5772)
+* chore(common): Enhance cherry-pick labeling (#5773)
+* fix(common): Fix cherry-pick labeling (:cherries:) (#5783)
+* fix(linux): Don't crash displaying keyboard details (#5757)
+* chore(linux): Update changelog files for 14.0.282 (#5793)
+* fix(linux): Don't crash with non-keyboard package file (#5754)
+* chore: sentry.io dsn ️ (#5788)
+* fix(windows): handle edge cases using default language (#5775)
+* fix(ios): move sentry settings responsibility to build agent ️ (#5806)
+* fix(web): remove canvas use for iOS compatibility (#5916)
+
+## 14.0.282 stable 2021-09-27
+
+* fix(mac): add support for M1 processor (#5737)
+* chore(mac): Add help links for installing Keyman and keyboards (#5748)
+* fix: help.keyman.com script file cleanup (#5750)
+
+## 14.0.281 stable 2021-09-17
+
+* fix(common/models): keep/suggestion diacritic sensitivity when de-duping (#5552)
+* feat(ios): adds option for Simulator-compatible testing artifact (#5569)
+* chore(ios,windows): Update crowdin strings for Azerbaijani (#5487)
+* fix(oem/fv/ios): build configuration for 14.0's test-oriented simulator artifact (#5596)
+* fix(linux): Handle corrupt icon file (#5589)
+* fix(linux): Check for valid kmp file (#5590)
+* chore: fixup stable HISTORY.md (#5605)
+* chore(linux): Improve debian package script (#5624)
+* chore(linux): Fix uploading to Sentry (#5625)
+* chore(linux): Update changelog files (#5636)
+* fix(ios): iOS 13 and 14 only - stuck settings toggles (#5611)
+* fix(web): Fix layers for embedded longpress keys (#5651)
+* fix(linux): Use first keyboard language if none given (#5657)
+* fix(android/engine): Fix backspace on Android 5.0 (#5674)
+* chore(common): report-history (#5678)
+* fix(developer): ensure file modified after import from layout (#5677)
+* test(windows): investigate TIP crash (#5679)
+* fix(common/core/web): Remove empty rows in OSK (#5703)
+* fix(windows): fallback to filename if `&name` not set (#5685)
+
## 14.0.280 stable 2021-08-02
* fix(android): displayName for keyboard was not optional (#5492)
diff --git a/VERSION.md b/VERSION.md
index 7b5b463598..c2800216c2 100644
--- a/VERSION.md
+++ b/VERSION.md
@@ -1 +1 @@
-16.0.11
+16.0.13
diff --git a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java
index e53ba8fcb1..31f26c0453 100644
--- a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java
+++ b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java
@@ -148,6 +148,8 @@ public class SystemKeyboard extends InputMethodService implements OnKeyboardEven
SharedPreferences prefs = appContext.getSharedPreferences(appContext.getString(R.string.kma_prefs_name), Context.MODE_PRIVATE);
boolean mayPredict = prefs.getBoolean(KMManager.getLanguagePredictionPreferenceKey(langId), true);
KMManager.setBannerOptions(mayPredict);
+ } else {
+ KMManager.setBannerOptions(false);
}
}
diff --git a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/LanguageSettingsActivity.java b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/LanguageSettingsActivity.java
index d2554fdf08..335de4da3e 100644
--- a/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/LanguageSettingsActivity.java
+++ b/android/KMAPro/kMAPro/src/main/java/com/tavultesoft/kmapro/LanguageSettingsActivity.java
@@ -87,11 +87,14 @@ public final class LanguageSettingsActivity extends AppCompatActivity {
return;
}
- // If the active keyboard is for this language, immediately enact the new pref setting.
- String kbdLgCode = KMManager.getCurrentKeyboardInfo(context).getLanguageID();
- if (kbdLgCode.equals(lgCode)) {
- // Not only registers the model but also applies our modeling preferences.
- KMManager.registerAssociatedLexicalModel(lgCode);
+ Keyboard kbInfo = KMManager.getCurrentKeyboardInfo(context);
+ if(kbInfo != null) {
+ // If the active keyboard is for this language, immediately enact the new pref setting.
+ String kbdLgCode = kbInfo.getLanguageID();
+ if (kbdLgCode.equals(lgCode)) {
+ // Not only registers the model but also applies our modeling preferences.
+ KMManager.registerAssociatedLexicalModel(lgCode);
+ }
}
}
}
diff --git a/android/KMAPro/kMAPro/src/main/res/values-b+es+419/strings.xml b/android/KMAPro/kMAPro/src/main/res/values-b+es+419/strings.xml
index 62baef6d79..9d3640cbff 100644
--- a/android/KMAPro/kMAPro/src/main/res/values-b+es+419/strings.xml
+++ b/android/KMAPro/kMAPro/src/main/res/values-b+es+419/strings.xml
@@ -18,6 +18,10 @@
Instalar actualizaciones
Versión: %1$s
+
+ Keyman requiere Chrome versión 57 o posterior.
+
+ Actualizar Chrome
Comienza a escribir aquí…
@@ -50,13 +54,33 @@
Configuración
- - Installed languages (%1$d)
- - Installed languages (%1$d)
+ - Idiomas instalados (%1$d)
+ - Idiomas instalados (%1$d)
Instalar teclado o diccionario
- Cambiar idioma de interfaz
+ Idioma de interfaz
+
+ Ajustar la altura del teclado
+
+ Leyenda de barra espaciadora
+
+ Teclado
+
+ Idioma
+
+ Idioma + Teclado
+
+ Vacío
+
+ Mostrar nombre del teclado en la barra espaciadora
+
+ Mostrar nombre del idioma en la barra espaciadora
+
+ Idioma y teclado en la barra espaciadora
+
+ No mostrar leyenda en la barra espaciadora
Mostrar siempre el banner
@@ -87,6 +111,12 @@
Se agregó el idioma %1$s a %2$s
Ya están instalados todos los idiomas
+
+ Arrastra el teclado para ajustar la altura
+
+ Rota el dispositivo para ajustar el modo vertical y horizontal
+
+ Restaurar valores predeterminados
Buscar o escribir una dirección web
@@ -121,4 +151,6 @@
El paquete del teclado no tiene idiomas asociados para instalar
Metadatos inválidos/ausentes en el paquete
+
+ El teclado requiere una versión más reciente de Keyman
diff --git a/android/KMEA/app/src/main/assets/android-host.js b/android/KMEA/app/src/main/assets/android-host.js
index 8d1b02fda5..d58be49b4b 100644
--- a/android/KMEA/app/src/main/assets/android-host.js
+++ b/android/KMEA/app/src/main/assets/android-host.js
@@ -146,6 +146,15 @@ function setSpacebarText(mode) {
keyman.correctOSKTextSize();
}
+// #6665: we need to know when the user has pressed a hardware key so we don't
+// generate haptic feedback when text changes are made via insertText. We know
+// that the executeHardware->insertText process is a non-reentrant
+// single-threaded sequence so this global flag tracking whether we are
+// currently executing a hardware keystroke event is safe here. We can't do this
+// on the Java side, because the Java<-->JS interface is asynchronous, and we
+// cannot reliably know when each hardware keystroke has completed processing.
+var executingHardwareKeystroke = false;
+
/**
* Inserts the selected string s
* @param dn Number of pre-caret code points (UTF+8 characters) to delete
@@ -156,7 +165,7 @@ function insertText(dn, s, dr) {
console_debug('insertText(dn='+dn+',s='+s+',dr='+dr+')');
dr = dr || 0; // Sets a default value of zero when dr is undefined
//window.console.log('insertText('+ dn +', ' + s +', ' + dr + ');');
- window.jsInterface.insertText(dn, s, dr);
+ window.jsInterface.insertText(dn, s, dr, executingHardwareKeystroke);
}
function deregisterModel(modelID) {
@@ -345,15 +354,16 @@ function executePopupKey(keyID, keyText) {
function executeHardwareKeystroke(code, shift, lstates, eventModifiers) {
console_debug('executeHardwareKeystroke(code='+code+',shift='+shift+',lstates='+lstates+',eventModifiers='+eventModifiers+')');
- var kmw=window['keyman'];
- //window.console.log('executeHardwareKeystroke:('+code+', ' + shift + ', ' + lstates + ');');
try {
- if (kmw['executeHardwareKeystroke'](code, shift, lstates)) { // false if matched, true if not
+ executingHardwareKeystroke = true;
+ if (window.keyman.executeHardwareKeystroke(code, shift, lstates)) { // false if matched, true if not
// KMW didn't process the key, so have the Android app dispatch the key with the original event modifiers
window.jsInterface.dispatchKey(code, eventModifiers);
}
+ executingHardwareKeystroke = false;
} catch(e) {
window.console.log('executeHardwareKeystroke exception: '+e);
+ executingHardwareKeystroke = false;
}
}
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardJSHandler.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardJSHandler.java
index d2407cfc17..7591590806 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardJSHandler.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMKeyboardJSHandler.java
@@ -82,5 +82,5 @@ public abstract class KMKeyboardJSHandler {
* @param dr Number of post-caret code points to delete.
*/
@JavascriptInterface
- public abstract void insertText(final int dn, final String s, final int dr);
+ public abstract void insertText(final int dn, final String s, final int dr, final boolean executingHardwareKeystroke);
}
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java
index 4a27a6d42d..c260fd1d82 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java
@@ -207,7 +207,8 @@ public final class KMManager {
protected static String currentBanner = KM_BANNER_STATE_BLANK;
- // Special override for when the keyboard may have haptic feedback when typing
+ // Special override for when the keyboard may have haptic feedback when typing.
+ // haptic feedback disabled for hardware keystrokes
private static boolean mayHaveHapticFeedback = false;
// Special override for when keyboard is entering a password text field.
@@ -1999,6 +2000,16 @@ public final class KMManager {
public static Keyboard getCurrentKeyboardInfo(Context context) {
int index = getCurrentKeyboardIndex(context);
+ if(index < 0) {
+ // As of 15.0-beta and 15.0-stable, this only appears to occur when
+ // #6703 would trigger. This logging may help us better identify the
+ // root cause.
+ String key = KMKeyboard.currentKeyboard();
+ // Even if it's null, it's still a notable error. This function shouldn't
+ // be reachable in execution (15.0) at a time this variable would be set to `null`.
+ KMLog.LogError(TAG, "Failed getCurrentKeyboardIndex check for keyboard: " + key);
+ return null;
+ }
return KeyboardController.getInstance().getKeyboardInfo(index);
}
@@ -2707,7 +2718,7 @@ public final class KMManager {
// This annotation is required in Jelly Bean and later:
@JavascriptInterface
- public void insertText(final int dn, final String s, final int dr) {
+ public void insertText(final int dn, final String s, final int dr, final boolean executingHardwareKeystroke) {
if(dr != 0) {
Log.d(TAG, "Right deletions requested but are not presently supported by the in-app keyboard.");
}
@@ -2815,7 +2826,7 @@ public final class KMManager {
// Collapse the selection
textView.setSelection(start + s.length());
textView.endBatchEdit();
- if (mayHaveHapticFeedback) {
+ if (mayHaveHapticFeedback && !executingHardwareKeystroke) {
textView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
}
}
@@ -2869,7 +2880,7 @@ public final class KMManager {
// This annotation is required in Jelly Bean and later:
@JavascriptInterface
- public void insertText(final int dn, final String s, final int dr) {
+ public void insertText(final int dn, final String s, final int dr, final boolean executingHardwareKeystroke) {
// TODO: Unify in-app and system insertText
Handler mainLoop = new Handler(Looper.getMainLooper());
mainLoop.post(new Runnable() {
@@ -2960,7 +2971,7 @@ public final class KMManager {
ic.endBatchEdit();
ViewGroup parent = (ViewGroup) SystemKeyboard.getParent();
- if (parent != null && mayHaveHapticFeedback) {
+ if (parent != null && mayHaveHapticFeedback && !executingHardwareKeystroke) {
parent.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
}
}
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java
index b43e403190..2ce2ca80e2 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/ModelPickerActivity.java
@@ -209,9 +209,12 @@ public final class ModelPickerActivity extends BaseActivity {
if(immediateRegister) {
// Register associated lexical model if it matches the active keyboard's language code;
// it's safe since we're on the same thread. Needs to be called AFTER deinstalling the old one.
- String kbdLgCode = KMManager.getCurrentKeyboardInfo(context).getLanguageID();
- if(BCP47.languageEquals(kbdLgCode, languageID)) {
- KMManager.registerAssociatedLexicalModel(languageID);
+ com.tavultesoft.kmea.data.Keyboard kbInfo = KMManager.getCurrentKeyboardInfo(context);
+ if(kbInfo != null) {
+ String kbdLgCode = kbInfo.getLanguageID();
+ if(BCP47.languageEquals(kbdLgCode, languageID)) {
+ KMManager.registerAssociatedLexicalModel(languageID);
+ }
}
}
diff --git a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/KeyboardController.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/KeyboardController.java
index 3b824d0077..749cd07c1d 100644
--- a/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/KeyboardController.java
+++ b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/data/KeyboardController.java
@@ -207,7 +207,7 @@ public class KeyboardController {
}
}
- Log.w(TAG, "getKeyboardIndex failed for key " + key);
+ KMLog.LogError(TAG, "getKeyboardIndex failed for key " + key);
return index;
}
diff --git a/android/KMEA/app/src/main/res/values-b+es+419/strings.xml b/android/KMEA/app/src/main/res/values-b+es+419/strings.xml
index 0646fb97bb..43c20d23a4 100644
--- a/android/KMEA/app/src/main/res/values-b+es+419/strings.xml
+++ b/android/KMEA/app/src/main/res/values-b+es+419/strings.xml
@@ -8,6 +8,11 @@
- Teclados
+
+ - Otro método de entrada
+ - Otros métodos de entrada
+
+
Agregar teclado nuevo
Idiomas instalados
@@ -21,9 +26,13 @@
Cancelar
Cerrar
-
+
Cerrar Keyman
+ Adelante
+
+ Siguiente método de entrada
+
Descargar
Instalar
@@ -35,6 +44,8 @@
Aceptar
Actualizar
+
+ No hay conexión a Internet
¡No se puede conectar con el servidor Keyman!
@@ -69,8 +80,11 @@
Se necesita la librería FileProvider para ver el archivo de ayuda: %1$s
Error fatal del teclado con %1$s:%2$s para el idioma %3$s. Cargando teclado predeterminado.
+
+ Error en el teclado %1$s:%2$s para el idioma %3$s.
Buscando diccionario asociado para descargar
+ No se pudo conectar al servidor de Keyman para buscar un diccionario asociado para descargar
¿Quieres descargar la última versión de este diccionario?
@@ -113,16 +127,25 @@
Desinstalar diccionario
¿Quieres eliminar este diccionario?
+
+ Diccionario borrado
Teclado %1$s instalado
+
+ Teclado borrado
Habilitar correcciones
Habilitar predicciones
Diccionario
+
+ - Diccionario
+ - Diccionarios
+
Buscar diccionario disponible
+ Buscar diccionarios en línea
Diccionario: %1$s
diff --git a/common/predictive-text/unit_tests/in_browser/CI.conf.js b/common/predictive-text/unit_tests/in_browser/CI.conf.js
index fead9c0740..f25bd38520 100644
--- a/common/predictive-text/unit_tests/in_browser/CI.conf.js
+++ b/common/predictive-text/unit_tests/in_browser/CI.conf.js
@@ -133,18 +133,18 @@ module.exports = function(config) {
var specifics = {
// BrowserStack configuration options
browserStack: {
- video: false,
- browserDisconnectTimeout: 3e5,
- retryLimit: 1, // 0 is ignored.
+ video: true,
+ browserDisconnectTimeout: 6e4, // 1 minute (60s => 60,000ms)
+ retryLimit: 3, // 0 is ignored.
startTunnel: true,
},
// Attempts to avoid generating a 'fail' exit code if one of our selected browsers on BrowserStack goes poof.
failOnEmptyTestSuite: false,
- captureTimeout: 6e5, // in milliseconds
- browserNoActivityTimeout: 3e5,
- browserDisconnectTimeout: 3e5,
+ captureTimeout: 1.2e5, // in milliseconds
+ browserNoActivityTimeout: 6e4,
+ browserDisconnectTimeout: 6e4,
browserDisconnectTolerance: 3,
// Avoids generating a 'fail' exit code if one of our selected browsers on BrowserStack goes poof.
@@ -153,7 +153,7 @@ module.exports = function(config) {
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['teamcity'],
+ reporters: ['teamcity', 'BrowserStack'],
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
diff --git a/common/predictive-text/unit_tests/test.sh b/common/predictive-text/unit_tests/test.sh
index ac1d1df9bd..152d98d725 100755
--- a/common/predictive-text/unit_tests/test.sh
+++ b/common/predictive-text/unit_tests/test.sh
@@ -39,14 +39,14 @@ test-headless ( ) {
test-browsers ( ) {
_FLAGS=$FLAGS
if (( CI_REPORTING )); then
- _FLAGS="$_FLAGS -CI -reporter teamcity"
+ _FLAGS="$_FLAGS -CI -reporter teamcity,BrowserStack"
fi
$SCRIPT_ROOT/in_browser/browser-test.sh $os_id $_FLAGS
}
# Defaults
-get_builder_OS # return: os_id="linux"|"mac"|"win"
+get_builder_OS # return: os_id="linux"|"mac"|"win"
FLAGS="--require ./unit_tests/helpers"
CI_REPORTING=0
diff --git a/common/web/input-processor/test.sh b/common/web/input-processor/test.sh
index ce84f45227..a1ffde7e63 100755
--- a/common/web/input-processor/test.sh
+++ b/common/web/input-processor/test.sh
@@ -31,6 +31,7 @@ display_usage ( ) {
FLAGS=
CI_REPORTING=0
FETCH_DEPS=true
+CHAINING_FLAGS=-skip-package-install
# Parse args
while [[ $# -gt 0 ]] ; do
@@ -42,6 +43,7 @@ while [[ $# -gt 0 ]] ; do
;;
-CI)
CI_REPORTING=1
+ CHAINING_FLAGS="$CHAINING_FLAGS -CI"
;;
-skip-package-install|-S)
FETCH_DEPS=false
@@ -50,6 +52,10 @@ while [[ $# -gt 0 ]] ; do
shift # past argument
done
+if (( CI_REPORTING )); then
+ FLAGS="$FLAGS --reporter mocha-teamcity-reporter"
+fi
+
if [ $FETCH_DEPS = true ]; then
verify_npm_setup
fi
@@ -61,25 +67,21 @@ pushd "$KEYMAN_ROOT/developer/js/"
popd
test-headless ( ) {
- if (( CI_REPORTING )); then
- FLAGS="$FLAGS --reporter mocha-teamcity-reporter"
- fi
-
npm run mocha -- --recursive $FLAGS ./tests/cases/
}
if [ $FETCH_DEPS = true ]; then
- # First, run tests on the keyboard processor.
- pushd "$KEYMAN_ROOT/common/web/keyboard-processor"
- ./test.sh -skip-package-install || fail "Tests failed by dependencies; aborting integration tests."
- popd
-
# Next, build the lm-worker in its proper, wrapped form
pushd "$KEYMAN_ROOT/common/web/lm-worker"
./build.sh
popd
fi
+# First, run tests on the keyboard processor.
+pushd "$KEYMAN_ROOT/common/web/keyboard-processor"
+./test.sh $CHAINING_FLAGS || fail "Tests failed by dependencies; aborting integration tests."
+popd
+
# Build the leaf-style, bundled version of input-processor for use in testing.
npm run tsc -- -b src/tsconfig.bundled.json || fail "Failed to compile the core/web/input-processor module."
diff --git a/core/tests/unit/kmx/028 - smp.kmn b/core/tests/unit/kmx/028 - smp.kmn
index 772193d88d..5bfbbe4bd2 100644
--- a/core/tests/unit/kmx/028 - smp.kmn
+++ b/core/tests/unit/kmx/028 - smp.kmn
@@ -4,7 +4,6 @@ c expected: \U0001F601yx
c context:
store(&version) '10.0'
-store(&name) '028smp'
begin Unicode > use(Main)
diff --git a/core/tests/unit/kmx/meson.build b/core/tests/unit/kmx/meson.build
index 0f650ac2db..1907bfb223 100644
--- a/core/tests/unit/kmx/meson.build
+++ b/core/tests/unit/kmx/meson.build
@@ -87,7 +87,7 @@ tests = [
]
if build_machine.system() == 'windows'
- kmcomp = find_program('kmcomp.exe', required: false)
+ kmcomp = find_program(join_paths(meson.source_root(),'..','..','..','windows','bin','developer','kmcomp.exe'), 'kmcomp.exe', required: false)
kmcomp_cmd = [kmcomp]
copy_cmd = [find_program('cmd.exe', required: true), '/c', 'copy']
cat_cmd = [find_program('cmd.exe', required: true), '/c', 'type']
diff --git a/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/KeymanWebViewController.swift b/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/KeymanWebViewController.swift
index f9d182b5b6..934f988e34 100644
--- a/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/KeymanWebViewController.swift
+++ b/ios/engine/KMEI/KeymanEngine/Classes/Keyboard/KeymanWebViewController.swift
@@ -55,10 +55,10 @@ class KeymanWebViewController: UIViewController {
private var subKeys: [UIButton] = []
private var subKeyAnchor = CGRect.zero
-
+
/// Stores the keyboard view's current size.
private var kbSize: CGSize = CGSize.zero
-
+
/// Stores the current image for use by the Banner
/// when predictive text is not active
private var bannerImgPath: String = ""
@@ -72,14 +72,14 @@ class KeymanWebViewController: UIViewController {
init(storage: Storage) {
self.storage = storage
super.init(nibName: nil, bundle: nil)
-
+
_ = view
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
-
+
@objc func fixLayout() {
view.setNeedsLayout()
view.layoutIfNeeded()
@@ -97,7 +97,7 @@ class KeymanWebViewController: UIViewController {
keyboardSize = view.bounds.size
}
-
+
open override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
@@ -123,14 +123,14 @@ class KeymanWebViewController: UIViewController {
config.preferences = prefs
config.suppressesIncrementalRendering = false
config.userContentController = self.userContentController
-
+
webView = KeymanWebView(frame: CGRect(origin: .zero, size: keyboardSize), configuration: config)
webView!.isOpaque = false
webView!.translatesAutoresizingMaskIntoConstraints = false
webView!.backgroundColor = UIColor.clear
webView!.navigationDelegate = self
webView!.scrollView.isScrollEnabled = false
-
+
view = webView
// Set UILongPressGestureRecognizer to show sub keys
@@ -151,7 +151,7 @@ class KeymanWebViewController: UIViewController {
super.viewWillAppear(animated)
self.userContentController.add(self, name: keymanWebViewName)
}
-
+
// Very useful for immediately adjusting the WebView's properties upon loading.
override func viewDidAppear(_ animated: Bool) {
fixLayout()
@@ -160,7 +160,7 @@ class KeymanWebViewController: UIViewController {
// keyboard's width will be set at this stage, but not in viewWillAppear.
keyboardSize = view.bounds.size
}
-
+
override func viewWillDisappear(_ animated: Bool) {
self.userContentController.removeScriptMessageHandler(forName: keymanWebViewName)
}
@@ -191,7 +191,7 @@ extension KeymanWebViewController {
let start = jsonString.index(jsonString.startIndex, offsetBy: 2)
let end = jsonString.index(jsonString.endIndex, offsetBy: -2)
let escapedText = jsonString[start.. CGRect {
return CGRect(x: x - (w/2), y: y, width: w, height: h)
}
-
+
public func beep(_ keymanWeb: KeymanWebViewController) {
let vibrationSupport = Manager.shared.vibrationSupportLevel
let kSystemSoundID_MediumVibrate: SystemSoundID = 1520
@@ -720,10 +720,13 @@ extension KeymanWebViewController: KeymanWebDelegate {
setBannerImage(to: bannerImgPath)
// Reset the keyboard's size.
keyboardSize = kbSize
-
+
fixLayout()
+ // Will trigger Manager's `keyboardLoaded` method.
NotificationCenter.default.post(name: Notifications.keyboardLoaded, object: self, value: newKb!)
+
+ // "Should reload" the keyboard assets. (Not the host page.)
if shouldReload {
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(self.resetKeyboard), object: nil)
perform(#selector(self.resetKeyboard), with: nil, afterDelay: 0.25)
@@ -740,7 +743,7 @@ extension KeymanWebViewController: KeymanWebDelegate {
showBanner(alwaysShow)
}
}
-
+
func insertText(_ view: KeymanWebViewController, numCharsToDelete: Int, newText: String) {
dismissHelpBubble()
Manager.shared.isKeymanHelpOn = false
@@ -944,7 +947,7 @@ extension KeymanWebViewController: UIGestureRecognizerDelegate {
// Detect the text width for subkeys. The 'as Any' silences an inappropriate warning from Swift.
let textSize = subKeyText.size(withAttributes: [NSAttributedString.Key.font: button.titleLabel?.font! as Any])
var displayText = subKeyText
-
+
if textSize.width <= 0 && subKeyText.count > 0 {
// It's probably a diacritic in need of a combining character!
// Also check if the language is RTL!
@@ -1006,7 +1009,7 @@ extension KeymanWebViewController {
var keyboardWidth: CGFloat {
return keyboardSize.width
}
-
+
func initKeyboardSize() {
var width: CGFloat
var height: CGFloat
@@ -1020,13 +1023,13 @@ extension KeymanWebViewController {
keyboardSize = CGSize(width: width, height: height)
}
-
+
var keyboardSize: CGSize {
get {
if kbSize.equalTo(CGSize.zero) {
initKeyboardSize()
}
-
+
return kbSize
}
set(size) {
@@ -1065,14 +1068,14 @@ extension KeymanWebViewController {
setOskWidth(Int(kbSize.width))
setOskHeight(Int(kbSize.height))
}
-
+
func resetKeyboardState() {
dismissSubKeys()
dismissKeyPreview()
dismissKeyboardMenu()
resizeKeyboard()
}
-
+
// Used for a selector; keep @objc!
@objc func resetKeyboard() {
let keyboard = Manager.shared.currentKeyboard
diff --git a/ios/engine/KMEI/KeymanEngine/es-419.lproj/Localizable.strings b/ios/engine/KMEI/KeymanEngine/es-419.lproj/Localizable.strings
index 9407c7fd13..e94c1e7da6 100644
--- a/ios/engine/KMEI/KeymanEngine/es-419.lproj/Localizable.strings
+++ b/ios/engine/KMEI/KeymanEngine/es-419.lproj/Localizable.strings
@@ -49,6 +49,12 @@
/* Confirmation text to display before uninstalling a lexical model */
"command-uninstall-lexical-model-confirm" = "¿Quieres desinstalar este diccionario?";
+/* Text for error when a keyboard cannot load properly */
+"error-loading-keyboard" = "No se puede cargar el teclado solicitado";
+
+/* Text for error when a lexical model cannot load properly */
+"error-loading-lexical-model" = "No se puede cargar el diccionario solicitado";
+
/* Text for error when an installed file is unexpectedly missing */
"error-missing-file" = "No se pudo encontrar un archivo requerido.";
@@ -112,12 +118,21 @@
/* Error opening a Keyman package - package is not valid */
"kmp-error-invalid" = "El archivo del paquete está corrupto.";
+/* Error opening a Keyman package - it does not exist / the specified location is wrong */
+"kmp-error-missing" = "El paquete especificado no existe.";
+
/* Error installing a Keyman package - expected resource (keyboard or dictionary) is missing */
"kmp-error-missing-resource" = "Este paquete no contiene el teclado o el diccionario solicitado.";
+/* Error installing a Keyman package with a version of Keyman that does not support it */
+"kmp-error-unsupported-keyman-version" = "Este paquete requiere una versión más reciente de Keyman.";
+
/* Error opening a Keyman package - cannot parse contents */
"kmp-error-no-metadata" = "Este paquete no fue compilado correctamente - contenidos desconocidos.";
+/* Error opening a Keyman package - package's contents are for desktop platforms only */
+"kmp-error-unsupported" = "Este paquete no incluye soporte para su dispositivo.";
+
/* Error opening a Keyman package - package contains unexpected resource (keyboard or dictionary) type */
"kmp-error-wrong-type" = "Este paquete no contiene el tipo de recurso esperado.";
@@ -181,6 +196,36 @@
/* Title for the main Settings menu */
"menu-settings-title" = "Configuración de Keyman";
+/* Secondary text showing current setting for spacebar caption - blank */
+"menu-settings-spacebar-hint-blank" = "No mostrar leyenda en la barra espaciadora";
+
+/* Secondary text showing current setting for spacebar caption - keyboard */
+"menu-settings-spacebar-hint-keyboard" = "Mostrar nombre del teclado en la barra espaciadora";
+
+/* Secondary text showing current setting for spacebar caption - language */
+"menu-settings-spacebar-hint-language" = "Mostrar nombre del idioma en la barra espaciadora";
+
+/* Secondary text showing current setting for spacebar caption - language + keyboard */
+"menu-settings-spacebar-hint-languageKeyboard" = "Mostrar nombre de idioma y teclado en la barra espaciadora";
+
+/* Label for the "Spacebar Caption" item on the main settings screen */
+"menu-settings-spacebar-text" = "Leyenda de Barra Espaciadora";
+
+/* Title for the "Spacebar Caption" settings screen */
+"menu-settings-spacebar-title" = "Leyenda de Barra Espaciadora";
+
+/* Text showing name of spacebar caption - blank */
+"menu-settings-spacebar-item-blank" = "Vacío";
+
+/* Text showing name of spacebar caption - keyboard */
+"menu-settings-spacebar-item-keyboard" = "Teclado";
+
+/* Text showing name of spacebar caption - language */
+"menu-settings-spacebar-item-language" = "Idioma";
+
+/* Text showing name of spacebar caption - language + keyboard */
+"menu-settings-spacebar-item-languageKeyboard" = "Idioma y teclado";
+
/* Short text for notification: download failure for keyboard */
"notification-download-failure-keyboard" = "Error al descargar el teclado";
diff --git a/ios/help/about/welcome.md b/ios/help/about/welcome.md
index 0835b4ca28..deeb156a54 100644
--- a/ios/help/about/welcome.md
+++ b/ios/help/about/welcome.md
@@ -2,10 +2,10 @@
title: Welcome to Keyman
---
-Thank you for installing Keyman for iPhone and iPad. Whether you're a new or returning user,
+Thank you for installing Keyman for iPhone and iPad. Whether you're a new or returning user,
we believe you will appreciate the significant enhancements in this latest version of Keyman for iPhone and iPad.
## What is Keyman for iPhone and iPad?
Keyman for iPhone and iPad lets you type in over 600 languages on Apple iPhones and iPads.
-[Click here](../start) to get started
+[Click here](../start/) to get started
diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController.swift b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController.swift
index 7a87ac8e0a..38d59ed778 100644
--- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController.swift
+++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController.swift
@@ -13,14 +13,21 @@ import Reachability
class InfoViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView!
+ @IBOutlet var backButton: UIBarButtonItem!
+ @IBOutlet var forwardButton: UIBarButtonItem!
+
private var networkReachable: Reachability?
- convenience init() {
+ private var exitClosure: (() -> Void)? = nil;
+
+ convenience init(exitClosure: @escaping () -> Void) {
if UIDevice.current.userInterfaceIdiom == .phone {
self.init(nibName: "InfoViewController_iPhone", bundle: nil)
} else {
self.init(nibName: "InfoViewController_iPad", bundle: nil)
}
+
+ self.exitClosure = exitClosure
}
override func viewDidLoad() {
@@ -42,6 +49,39 @@ class InfoViewController: UIViewController, UIWebViewDelegate {
reloadKeymanHelp()
}
+ private func updateButtons() {
+ backButton.isEnabled = webView.canGoBack
+ forwardButton.isEnabled = webView.canGoForward
+ }
+
+ func webViewDidStartLoad(_ webView: UIWebView) {
+ UIApplication.shared.isNetworkActivityIndicatorVisible = true
+ updateButtons()
+ }
+
+ func webViewDidFinishLoad(_ webView: UIWebView) {
+ UIApplication.shared.isNetworkActivityIndicatorVisible = false
+ updateButtons()
+ }
+
+ func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
+ UIApplication.shared.isNetworkActivityIndicatorVisible = false
+ updateButtons()
+ log.debug(error)
+ }
+
+ @IBAction func back(_ sender: Any) {
+ webView.goBack()
+ }
+
+ @IBAction func forward(_ sender: Any) {
+ webView.goForward()
+ }
+
+ @objc func close(_ sender: Any?) {
+ self.exitClosure?()
+ }
+
func reloadKeymanHelp() {
loadFromLocal()
}
diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib
index ffa6b56155..d20993ca3d 100644
--- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib
+++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib
@@ -1,39 +1,71 @@
-
-
+
+
+
-
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib
index 33a0a33c6d..d9f93d1102 100644
--- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib
+++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib
@@ -1,40 +1,83 @@
-
-
+
+
+
-
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib b/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib
index 83c898ce60..0f692fa951 100644
--- a/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib
+++ b/ios/keyman/Keyman/Keyman/Classes/KMWebBrowser/WebBrowserViewController.xib
@@ -1,9 +1,9 @@
-
-
+
+
-
+
diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift
index 03c926b862..7224a51deb 100644
--- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift
+++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift
@@ -126,6 +126,72 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
fatalError("init(coder:) has not been implemented")
}
+ private func constructAndAddHostedViews() {
+ self.constructAndAddMainTextView()
+ self.constructAndAddInfoView()
+ self.constructAndAddTextSizeController()
+ resizeViews(withKeyboardVisible: textView.isFirstResponder)
+ }
+
+ private func constructAndAddMainTextView() {
+ // Setup Keyman TextView
+ textSize = 16.0
+ textView = TextView(frame: view.frame)
+ textView.translatesAutoresizingMaskIntoConstraints = false
+ textView.setKeymanDelegate(self)
+ textView.viewController = self
+ textView.backgroundColor = UIColor(named: "InputBackground")!
+ textView.isScrollEnabled = true
+ textView.isUserInteractionEnabled = true
+ textView.font = textView.font?.withSize(textSize)
+ view?.addSubview(textView!)
+
+ textView.topAnchor.constraint (equalTo: view.safeAreaLayoutGuide.topAnchor ).isActive = true
+ textView.leftAnchor.constraint (equalTo: view.safeAreaLayoutGuide.leftAnchor ).isActive = true
+ textView.rightAnchor.constraint (equalTo: view.safeAreaLayoutGuide.rightAnchor ).isActive = true
+ textView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
+
+ if UIDevice.current.userInterfaceIdiom != .phone {
+ textSize *= 2
+ textView.font = textView?.font?.withSize(textSize)
+ }
+ }
+
+ private func constructAndAddInfoView() {
+ // Setup Info View
+ infoView = InfoViewController {
+ self.infoButtonClick(nil)
+ }
+
+ infoView.view?.translatesAutoresizingMaskIntoConstraints = false
+ infoView.view?.isHidden = true
+ infoView.view?.backgroundColor = UIColor(named: "InputBackground")!
+ view?.addSubview(infoView!.view)
+
+ // Don't forget to add the child view's controller, too!
+ // Its safe area layout guide won't work correctly without this!
+ self.addChild(infoView)
+
+ infoView.view?.topAnchor.constraint (equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
+ infoView.view?.leftAnchor.constraint (equalTo: view.leftAnchor ).isActive = true
+ infoView.view?.rightAnchor.constraint (equalTo: view.rightAnchor ).isActive = true
+ infoView.view?.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
+ }
+
+ private func constructAndAddTextSizeController() {
+ // Setup Text Size Controller
+ textSizeController = UISlider()
+ textSizeController.frame = CGRect.zero
+ textSizeController.minimumValue = 0.0
+ textSizeController.maximumValue = Float(maxTextSize - minTextSize)
+ textSizeController.value = Float(textSize - minTextSize)
+ let textSizeUp = #imageLiteral(resourceName: "textsize_up.png").resize(to: CGSize(width: 20, height: 20))
+ textSizeController.maximumValueImage = textSizeUp
+ let textSizeDown = #imageLiteral(resourceName: "textsize_up.png").resize(to: CGSize(width: 15, height: 15))
+ textSizeController.minimumValueImage = textSizeDown
+ textSizeController.addTarget(self, action: #selector(self.sliderValueChanged), for: .valueChanged)
+ }
+
override func viewDidLoad() {
super.viewDidLoad()
@@ -180,41 +246,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
navbarBackground.setOrientation(UIApplication.shared.statusBarOrientation)
}
- // Setup Keyman TextView
- textSize = 16.0
- textView = TextView(frame: view.frame)
- textView.setKeymanDelegate(self)
- textView.viewController = self
- textView.backgroundColor = UIColor(named: "InputBackground")!
- textView.isScrollEnabled = true
- textView.isUserInteractionEnabled = true
- textView.font = textView.font?.withSize(textSize)
- view?.addSubview(textView!)
-
- // Setup Info View
- infoView = InfoViewController()
- if UIDevice.current.userInterfaceIdiom != .phone {
- textSize *= 2
- textView.font = textView?.font?.withSize(textSize)
- }
-
- infoView.view?.isHidden = true
- infoView.view?.backgroundColor = UIColor(named: "InputBackground")!
- view?.addSubview(infoView!.view)
-
- resizeViews(withKeyboardVisible: textView.isFirstResponder)
-
- // Setup Text Size Controller
- textSizeController = UISlider()
- textSizeController.frame = CGRect.zero
- textSizeController.minimumValue = 0.0
- textSizeController.maximumValue = Float(maxTextSize - minTextSize)
- textSizeController.value = Float(textSize - minTextSize)
- let textSizeUp = #imageLiteral(resourceName: "textsize_up.png").resize(to: CGSize(width: 20, height: 20))
- textSizeController.maximumValueImage = textSizeUp
- let textSizeDown = #imageLiteral(resourceName: "textsize_up.png").resize(to: CGSize(width: 15, height: 15))
- textSizeController.minimumValueImage = textSizeDown
- textSizeController.addTarget(self, action: #selector(self.sliderValueChanged), for: .valueChanged)
+ self.constructAndAddHostedViews()
setNavBarButtons()
loadSavedUserText()
@@ -368,17 +400,23 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
}
private func resizeViews(withKeyboardVisible keyboardVisible: Bool) {
- // Resize textView and infoView
- let mainScreen: CGRect = UIScreen.main.bounds
- let margin: CGFloat = 2.0
- let barHeights: CGFloat = AppDelegate.statusBarHeight() + navBarHeight()
- let kbHeight: CGFloat = keyboardVisible ? textView.inputView?.frame.height ?? 0 : 0
- let width: CGFloat = mainScreen.size.width
- let height: CGFloat = mainScreen.size.height - barHeights - kbHeight
+ guard let window = UIApplication.shared.windows.first else {
+ return
+ }
- textView.frame = CGRect(x: margin, y: barHeights + margin,
- width: width - 2 * margin, height: height - 2 * margin)
- infoView?.view?.frame = CGRect(x: 0, y: barHeights, width: width, height: height + kbHeight)
+ // As the keyboard isn't naturally part of the safe area, we must
+ // adjust the safe area's size when it appears.
+ let kbHeight: CGFloat = keyboardVisible ? textView.inputView?.frame.height ?? 0 : 0
+
+ let bottomPadding = window.safeAreaInsets.bottom
+
+ var kbdSafeArea = UIEdgeInsets()
+ if keyboardVisible {
+ // The keyboard also contains the safe area when visible, and we only want
+ // to add the _additional_ height.
+ kbdSafeArea.bottom += kbHeight - bottomPadding
+ }
+ self.additionalSafeAreaInsets = kbdSafeArea
}
private func navBarWidth() -> CGFloat {
@@ -409,7 +447,13 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
private func keyboardLoaded() {
didKeyboardLoad = true
dismissActivityIndicator()
- textView.becomeFirstResponder()
+
+ // Defer display of the keyboard until the current "message" on the main dispatch
+ // queue is complete. There are still ongoing calculations - including within the
+ // keyboard's WebView itself! (This function's call is actually triggered _by_ it!)
+ DispatchQueue.main.async {
+ self.textView.becomeFirstResponder()
+ }
if shouldShowGetStarted {
perform(#selector(self.showGetStartedView), with: nil, afterDelay: 1.0)
}
@@ -464,11 +508,10 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
navigationItem.titleView = nil
navigationItem.rightBarButtonItem = nil
setNavBarButtons()
- if wasKeyboardVisible {
- perform(#selector(self.displayKeyboard), with: nil, afterDelay: 0.75)
- }
if shouldShowGetStarted {
perform(#selector(self.showGetStartedView), with: nil, afterDelay: 0.75)
+ } else if wasKeyboardVisible {
+ perform(#selector(self.displayKeyboard), with: nil, afterDelay: 0.75)
}
} else {
_ = dismissDropDownMenu()
@@ -480,7 +523,8 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
let vAdjPort: CGFloat = UIScreen.main.scale == 2.0 ? -3.6 : -2.6
let vAdjLscpe: CGFloat = -1.6
- let infoDoneButton = UIBarButtonItem(title: "Done", style: .plain, target: self,
+ let doneString = NSLocalizedString("command-done", bundle: Bundle(for: Manager.self), comment: "")
+ let infoDoneButton = UIBarButtonItem(title: doneString, style: .plain, target: self,
action: #selector(self.infoButtonClick))
infoDoneButton.setBackgroundVerticalPositionAdjustment(vAdjPort, for: UIBarMetrics.default)
infoDoneButton.setBackgroundVerticalPositionAdjustment(vAdjLscpe, for: UIBarMetrics.compact)
@@ -596,7 +640,8 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg
let doneButton = UIButton(type: .roundedRect)
doneButton.addTarget(self, action: #selector(self.dismissTextSizeVC), for: .touchUpInside)
- doneButton.setTitle("Done", for: .normal)
+ let doneString = NSLocalizedString("command-done", bundle: Bundle(for: Manager.self), comment: "")
+ doneButton.setTitle(doneString, for: .normal)
doneButton.titleLabel?.font = doneButton.titleLabel?.font?.withSize(21.0)
doneButton.setTitleColor(UIColor(red: 0.0, green: 0.5, blue: 1.0, alpha: 1.0), for: .normal)
doneButton.layer.cornerRadius = 4.0
diff --git a/mac/Keyman4MacIM/Keyman4MacIM.xcodeproj/project.pbxproj b/mac/Keyman4MacIM/Keyman4MacIM.xcodeproj/project.pbxproj
index 5096b0cbce..1d8ba043e8 100644
--- a/mac/Keyman4MacIM/Keyman4MacIM.xcodeproj/project.pbxproj
+++ b/mac/Keyman4MacIM/Keyman4MacIM.xcodeproj/project.pbxproj
@@ -160,6 +160,12 @@
29B5BC0628169A6500B86A17 /* ff */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ff; path = ff.lproj/KMKeyboardHelpWindowController.strings; sourceTree = ""; };
29B5BC0728169A6600B86A17 /* ff */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ff; path = ff.lproj/MainMenu.strings; sourceTree = ""; };
29B5BC0828169A8600B86A17 /* ff */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ff; path = ff.lproj/Localizable.strings; sourceTree = ""; };
+ 29B70A23283CB6680086B580 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/KMAboutWindowController.strings"; sourceTree = ""; };
+ 29B70A24283CB6690086B580 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/preferences.strings"; sourceTree = ""; };
+ 29B70A25283CB66A0086B580 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/KMInfoWindowController.strings"; sourceTree = ""; };
+ 29B70A26283CB66B0086B580 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/KMKeyboardHelpWindowController.strings"; sourceTree = ""; };
+ 29B70A27283CB66C0086B580 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/MainMenu.strings"; sourceTree = ""; };
+ 29B70A28283CB6900086B580 /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/Localizable.strings"; sourceTree = ""; };
29BFA761282936D4009FCCC3 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/KMAboutWindowController.strings; sourceTree = ""; };
29BFA762282936D5009FCCC3 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/preferences.strings; sourceTree = ""; };
29BFA763282936D5009FCCC3 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/KMInfoWindowController.strings; sourceTree = ""; };
@@ -692,7 +698,8 @@
"pt-PT",
ff,
it,
- pl
+ pl,
+ "es-419",
);
mainGroup = 989C9BFF1A7876DE00A20425;
productRefGroup = 989C9C091A7876DE00A20425 /* Products */;
@@ -930,7 +937,8 @@
29C1E1742800227500759EDE /* pt-PT */,
29B5BC0328169A6300B86A17 /* ff */,
29BFA761282936D4009FCCC3 /* it */,
- 29BFA76D282948BD009FCCC3 /* pl */
+ 29BFA76D282948BD009FCCC3 /* pl */,
+ 29B70A23283CB6680086B580 /* es-419 */,
);
name = KMAboutWindowController.xib;
sourceTree = "";
@@ -946,7 +954,8 @@
29C1E1752800227600759EDE /* pt-PT */,
29B5BC0428169A6400B86A17 /* ff */,
29BFA762282936D5009FCCC3 /* it */,
- 29BFA76E282948BE009FCCC3 /* pl */
+ 29BFA76E282948BE009FCCC3 /* pl */,
+ 29B70A24283CB6690086B580 /* es-419 */,
);
name = preferences.xib;
path = Keyman4MacIM/KMConfiguration;
@@ -962,7 +971,8 @@
29C1E179280025A900759EDE /* pt-PT */,
29B5BC0828169A8600B86A17 /* ff */,
29BFA76628293760009FCCC3 /* it */,
- 29BFA7722829490A009FCCC3 /* pl */
+ 29BFA7722829490A009FCCC3 /* pl */,
+ 29B70A28283CB6900086B580 /* es-419 */,
);
name = Localizable.strings;
sourceTree = "";
@@ -978,7 +988,8 @@
29C1E1762800227700759EDE /* pt-PT */,
29B5BC0528169A6400B86A17 /* ff */,
29BFA763282936D5009FCCC3 /* it */,
- 29BFA76F282948BE009FCCC3 /* pl */
+ 29BFA76F282948BE009FCCC3 /* pl */,
+ 29B70A25283CB66A0086B580 /* es-419 */,
);
name = KMInfoWindowController.xib;
path = Keyman4MacIM/KMInfoWindow;
@@ -995,7 +1006,8 @@
29C1E1772800227700759EDE /* pt-PT */,
29B5BC0628169A6500B86A17 /* ff */,
29BFA764282936D6009FCCC3 /* it */,
- 29BFA770282948BF009FCCC3 /* pl */
+ 29BFA770282948BF009FCCC3 /* pl */,
+ 29B70A26283CB66B0086B580 /* es-419 */,
);
name = KMKeyboardHelpWindowController.xib;
path = Keyman4MacIM/KMKeyboardHelpWindow;
@@ -1012,7 +1024,8 @@
29C1E1782800227800759EDE /* pt-PT */,
29B5BC0728169A6600B86A17 /* ff */,
29BFA765282936D7009FCCC3 /* it */,
- 29BFA771282948C0009FCCC3 /* pl */
+ 29BFA771282948C0009FCCC3 /* pl */,
+ 29B70A27283CB66C0086B580 /* es-419 */,
);
name = MainMenu.xib;
sourceTree = "";
diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/es-419.lproj/KMAboutWindowController.strings b/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/es-419.lproj/KMAboutWindowController.strings
new file mode 100644
index 0000000000..43acd7fc59
--- /dev/null
+++ b/mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/es-419.lproj/KMAboutWindowController.strings
@@ -0,0 +1,8 @@
+/* button text to close the About window */
+"Kab-Up-fYH.title" = "Cerrar";
+
+/* text of link to the license agreement */
+"hYC-Bx-aoP.title" = "Acuerdo de Licencia";
+
+/* button text to open Configuration window */
+"vkh-b5-vO7.title" = "Configuración...";
diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/es-419.lproj/preferences.strings b/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/es-419.lproj/preferences.strings
new file mode 100644
index 0000000000..d835bfd432
--- /dev/null
+++ b/mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/es-419.lproj/preferences.strings
@@ -0,0 +1,38 @@
+/* Checkbox text to always show on-screen keyboard */
+"4UX-80-0Vo.title" = "Mostrar siempre el teclado en pantalla";
+
+/* Checkbox text to enable verbose Console logging */
+"7J6-zy-R20.title" = "Usar registro detallado";
+
+/* Support button text */
+"93O-x6-RLF.label" = "Soporte";
+
+/* Download Keyboard button text */
+"CTw-kf-WNS.title" = "Descargar teclado...";
+
+/* Keyman Configuration window title */
+"F0z-JX-Cv5.title" = "Configuración de Keyman";
+
+/* button text to go back to previous page */
+"JOK-JV-n8w.title" = "Atrás";
+
+/* Keyboards button text */
+"MPN-9N-wWc.label" = "Teclados";
+
+/* text to explain verbose Console logging option */
+"MrI-GM-7d6.title" = "Cuando la opción de registro detallado está activada, Keyman registrará acciones que podrían ayudar a Keyman Support diagnosticar un problema. La aplicación de consola puede ser usada para ver un registro de mensajes de Keyman. En la aplicación de consola, puede filtrar para mostrar todos los mensajes del proceso \"Keyman\". Este registro puede ser exportado y enviado al soporte de Keyman si es necesario.";
+
+/* button text to move forward to the next page */
+"eXr-8V-h1g.title" = "Siguiente";
+
+/* button text to return to the home help page */
+"fXS-aC-CMH.title" = "Inicio";
+
+/* Options button text */
+"frd-No-seV.label" = "Opciones";
+
+/* Installed Keyboard column heading */
+"jex-Nd-Qzg.headerCell.title" = "Teclado instalado";
+
+/* Verbose logging tooltip text */
+"uWx-3J-U0D.ibShadowedToolTip" = "Active esta opción si tiene problemas con un teclado específico o con Keyman en general.";
diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/es-419.lproj/KMInfoWindowController.strings b/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/es-419.lproj/KMInfoWindowController.strings
new file mode 100644
index 0000000000..73e939c51e
--- /dev/null
+++ b/mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/es-419.lproj/KMInfoWindowController.strings
@@ -0,0 +1,8 @@
+/* Package Information window title */
+"F0z-JX-Cv5.title" = "Información del paquete";
+
+/* button text to show Details */
+"Fvy-XJ-s38.label" = "Detalles";
+
+/* button text to show Read Me */
+"waA-IW-Qyn.label" = "Léame";
diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/es-419.lproj/KMKeyboardHelpWindowController.strings b/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/es-419.lproj/KMKeyboardHelpWindowController.strings
new file mode 100644
index 0000000000..2fae22c80f
--- /dev/null
+++ b/mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/es-419.lproj/KMKeyboardHelpWindowController.strings
@@ -0,0 +1,8 @@
+/* Keyboard Help window title */
+"F0z-JX-Cv5.title" = "Ayuda para teclado";
+
+/* OK button text */
+"Zla-QF-m0K.title" = "Aceptar";
+
+/* Print button text */
+"fYY-Uj-y4S.title" = "Imprimir...";
diff --git a/mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/Localizable.strings b/mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/Localizable.strings
new file mode 100644
index 0000000000..478be9b395
--- /dev/null
+++ b/mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/Localizable.strings
@@ -0,0 +1,68 @@
+/* Message displayed to confirm delete of the Keyman keyboard selected by the user from the keyboard list */
+"message-confirm-delete-keyboard" = "¿Estás seguro de que deseas eliminar el teclado '%@'?";
+
+/* Delete keyboard confirmation info indicating that the delete action cannot be undone */
+"info-cannot-undo-delete-keyboard" = "No puedes deshacer esta acción.";
+
+/* Button text to cancel delete of the specified installed Keyman keyboard */
+"button-cancel-delete-keyboard" = "Cancelar";
+
+/* Button text to confirm delete of the specified installed Keyman keyboard */
+"button-delete-keyboard" = "Eliminar";
+
+/* Message displayed to confirm installation of a keyboard from the specifed .kmp file double-clicked by the user */
+"message-confirm-install-keyboard" = "¿Instalar teclado de Keyman?";
+
+/* Message displayed to confirm installation of a keyboard from the specifed .kmp file double-clicked by the user */
+"info-install-keyboard-filename" = "¿Desea que Keyman instale el teclado desde el archivo '%@'?";
+
+/* Button text to cancel installation of the double-clicked Keyman file */
+"button-cancel-install-keyboard" = "Cancelar";
+
+/* Button text to confirm installation of the double-clicked Keyman file */
+"button-install-keyboard" = "Instalar";
+
+/* Message displayed to inform user that .kmp file could not be read/unzipped */
+"message-keyboard-file-unreadable" = "No se pudo leer el archivo de Keyman '%@'.";
+
+/* Message displayed in Configuration window when keyboard cannot be loaded */
+"message-error-loading-keyboard" = "(error al cargar el teclado)";
+
+/* Message displayed in Configuration window when keyboard metadata cannot be loaded */
+"message-error-unknown-metadata" = "desconocido";
+
+/* Button text to acknowledge that .kmp file could not be read */
+"button-keyboard-file-unreadable" = "Aceptar";
+
+/* label text to identify Keyman version */
+"version-label-text" = "Versión: %@";
+
+/* Status text for keyboard downloading */
+"message-keyboard-downloading" = "Descargando...";
+
+/* Status text for keyboard download complete */
+"message-keyboard-download-complete" = "Descarga finalizada.";
+
+/* Button text to cancel downloading keyboard */
+"button-cancel-downloading" = "Cancelar";
+
+/* Button text keyboard download complete */
+"button-download-complete" = "Hecho";
+
+/* keyboards label in the Package Information window */
+"keyboards-label" = "Teclados:";
+
+/* fonts label in the Package Information window */
+"fonts-label" = "Fuentes:";
+
+/* package version label in the Package Information window */
+"package-version-label" = "Versión del paquete:";
+
+/* author label in the Package Information window */
+"author-label" = "Autor:";
+
+/* website label in the Package Information window */
+"website-label" = "Página web:";
+
+/* copyright label in the Package Information window */
+"copyright-label" = "Derechos de autor:";
diff --git a/mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/MainMenu.strings b/mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/MainMenu.strings
new file mode 100644
index 0000000000..83f4c3018e
--- /dev/null
+++ b/mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/MainMenu.strings
@@ -0,0 +1,14 @@
+/* Configuration window menu text */
+"P1b-lE-yFw.title" = "Configuración...";
+
+/* Keyboards menu text */
+"bQa-j9-nHe.title" = "Teclados";
+
+/* Keyboards menu text */
+"goP-aK-3WB.title" = "Teclados";
+
+/* About menu text */
+"kb2-ww-RS3.title" = "Acerca de";
+
+/* On-Screen Keyboard menu text */
+"s96-JI-YDh.title" = "Teclado en pantalla";
diff --git a/package-lock.json b/package-lock.json
index f8b1e82e63..34321a57d1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,6 +7,7 @@
"name": "root",
"workspaces": [
"resources/gosh",
+ "resources/build/version",
"developer/js",
"developer/server",
"common/models/*",
@@ -799,6 +800,40 @@
"integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
"dev": true
},
+ "node_modules/@actions/core": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.8.2.tgz",
+ "integrity": "sha512-FXcBL7nyik8K5ODeCKlxi+vts7torOkoDAKfeh61EAkAy1HAvwn9uVzZBY0f15YcQTcZZ2/iSGBFHEuioZWfDA==",
+ "dependencies": {
+ "@actions/http-client": "^2.0.1"
+ }
+ },
+ "node_modules/@actions/github": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.2.0.tgz",
+ "integrity": "sha512-9UAZqn8ywdR70n3GwVle4N8ALosQs4z50N7XMXrSTUVOmVpaBC5kE3TRTT7qQdi3OaQV24mjGuJZsHUmhD+ZXw==",
+ "dependencies": {
+ "@actions/http-client": "^1.0.3",
+ "@octokit/graphql": "^4.3.1",
+ "@octokit/rest": "^16.43.1"
+ }
+ },
+ "node_modules/@actions/github/node_modules/@actions/http-client": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz",
+ "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==",
+ "dependencies": {
+ "tunnel": "0.0.6"
+ }
+ },
+ "node_modules/@actions/http-client": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
+ "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
+ "dependencies": {
+ "tunnel": "^0.0.6"
+ }
+ },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -829,6 +864,10 @@
"node": ">=12"
}
},
+ "node_modules/@keymanapp/auto-history-action": {
+ "resolved": "resources/build/version",
+ "link": true
+ },
"node_modules/@keymanapp/developer-server": {
"resolved": "developer/server",
"link": true
@@ -893,6 +932,175 @@
"resolved": "common/web/utils",
"link": true
},
+ "node_modules/@octokit/auth-token": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
+ "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "dependencies": {
+ "@octokit/types": "^6.0.3"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "peer": true,
+ "dependencies": {
+ "@octokit/auth-token": "^2.4.4",
+ "@octokit/graphql": "^4.5.8",
+ "@octokit/request": "^5.6.3",
+ "@octokit/request-error": "^2.0.5",
+ "@octokit/types": "^6.0.3",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
+ "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
+ "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "dependencies": {
+ "@octokit/request": "^5.6.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz",
+ "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA=="
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz",
+ "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==",
+ "dependencies": {
+ "@octokit/types": "^2.0.1"
+ }
+ },
+ "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+ "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+ "dependencies": {
+ "@types/node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/plugin-request-log": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
+ "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
+ "peerDependencies": {
+ "@octokit/core": ">=3"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz",
+ "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==",
+ "dependencies": {
+ "@octokit/types": "^2.0.1",
+ "deprecation": "^2.3.1"
+ }
+ },
+ "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+ "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+ "dependencies": {
+ "@types/node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
+ "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
+ "dependencies": {
+ "@octokit/endpoint": "^6.0.1",
+ "@octokit/request-error": "^2.1.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
+ "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
+ "dependencies": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/@octokit/rest": {
+ "version": "16.43.2",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz",
+ "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==",
+ "dependencies": {
+ "@octokit/auth-token": "^2.4.0",
+ "@octokit/plugin-paginate-rest": "^1.1.1",
+ "@octokit/plugin-request-log": "^1.0.0",
+ "@octokit/plugin-rest-endpoint-methods": "2.4.0",
+ "@octokit/request": "^5.2.0",
+ "@octokit/request-error": "^1.0.2",
+ "atob-lite": "^2.0.0",
+ "before-after-hook": "^2.0.0",
+ "btoa-lite": "^1.0.0",
+ "deprecation": "^2.0.0",
+ "lodash.get": "^4.4.2",
+ "lodash.set": "^4.3.2",
+ "lodash.uniq": "^4.5.0",
+ "octokit-pagination-methods": "^1.1.0",
+ "once": "^1.4.0",
+ "universal-user-agent": "^4.0.0"
+ }
+ },
+ "node_modules/@octokit/rest/node_modules/@octokit/request-error": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
+ "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
+ "dependencies": {
+ "@octokit/types": "^2.0.0",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/@octokit/rest/node_modules/@octokit/types": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+ "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+ "dependencies": {
+ "@types/node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/rest/node_modules/universal-user-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz",
+ "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==",
+ "dependencies": {
+ "os-name": "^3.1.0"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "6.34.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz",
+ "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==",
+ "dependencies": {
+ "@octokit/openapi-types": "^11.2.0"
+ }
+ },
"node_modules/@sentry/browser": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.30.0.tgz",
@@ -1301,6 +1509,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/semver": {
+ "version": "7.3.9",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz",
+ "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==",
+ "dev": true
+ },
"node_modules/@types/serve-static": {
"version": "1.13.10",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz",
@@ -1344,6 +1558,16 @@
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "node_modules/@zeit/ncc": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.21.1.tgz",
+ "integrity": "sha512-M9WzgquSOt2nsjRkYM9LRylBLmmlwNCwYbm3Up3PDEshfvdmIfqpFNSK8EJvR18NwZjGHE5z2avlDtYQx2JQnw==",
+ "deprecated": "@zeit/ncc is no longer maintained. Please use @vercel/ncc instead.",
+ "dev": true,
+ "bin": {
+ "ncc": "dist/ncc/cli.js"
+ }
+ },
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -1532,6 +1756,11 @@
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"optional": true
},
+ "node_modules/atob-lite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
+ "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw=="
+ },
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -1571,6 +1800,11 @@
"tweetnacl": "^0.14.3"
}
},
+ "node_modules/before-after-hook": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
+ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -1727,6 +1961,11 @@
"node": ">= 4.5.0"
}
},
+ "node_modules/btoa-lite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+ "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA=="
+ },
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
@@ -1810,7 +2049,6 @@
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -2220,7 +2458,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -2301,6 +2538,11 @@
"node": ">= 0.6"
}
},
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
+ },
"node_modules/destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
@@ -2408,8 +2650,7 @@
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/encodeurl": {
"version": "1.0.2",
@@ -2585,6 +2826,95 @@
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dependencies": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execa/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
"node_modules/express": {
"version": "4.17.3",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
@@ -2920,7 +3250,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
@@ -3278,12 +3607,28 @@
"node": ">=0.12.0"
}
},
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-running": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz",
"integrity": "sha1-MKc/9cw4VOT8JUkICen1q/jeCeA=",
"dev": true
},
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -3333,8 +3678,7 @@
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "devOptional": true
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"node_modules/isstream": {
"version": "0.1.2",
@@ -3782,6 +4126,21 @@
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
},
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ },
+ "node_modules/lodash.set": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+ "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg=="
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+ },
"node_modules/log-symbols": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
@@ -3850,11 +4209,22 @@
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz",
"integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==",
- "optional": true,
+ "devOptional": true,
"engines": {
"node": ">=12"
}
},
+ "node_modules/macos-release": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz",
+ "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/make-error": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -4369,6 +4739,11 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
"integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw=="
},
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
"node_modules/nise": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz",
@@ -4422,7 +4797,6 @@
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "dev": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -4547,6 +4921,25 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -4594,6 +4987,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/octokit-pagination-methods": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
+ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ=="
+ },
"node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -4629,6 +5027,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/os-name": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
+ "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
+ "dependencies": {
+ "macos-release": "^2.2.0",
+ "windows-release": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/p-cancelable": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
@@ -4637,6 +5047,14 @@
"node": ">=8"
}
},
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -4671,7 +5089,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -4694,7 +5111,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -4992,7 +5408,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -5000,8 +5415,7 @@
"node_modules/require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"node_modules/requirejs": {
"version": "2.3.6",
@@ -5089,7 +5503,7 @@
"version": "7.3.6",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz",
"integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==",
- "optional": true,
+ "devOptional": true,
"dependencies": {
"lru-cache": "^7.4.0"
},
@@ -5178,8 +5592,7 @@
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "devOptional": true
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"node_modules/set-immediate-shim": {
"version": "1.0.1",
@@ -5219,8 +5632,7 @@
"node_modules/signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "devOptional": true
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"node_modules/sinon": {
"version": "7.5.0",
@@ -5491,6 +5903,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -5631,8 +6051,7 @@
"node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
- "dev": true
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"node_modules/ts-node": {
"version": "9.1.1",
@@ -5717,6 +6136,14 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -5798,6 +6225,11 @@
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
"dev": true
},
+ "node_modules/universal-user-agent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
+ },
"node_modules/universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
@@ -5900,14 +6332,12 @@
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
- "dev": true
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
- "dev": true,
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
@@ -5931,8 +6361,7 @@
"node_modules/which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"node_modules/wide-align": {
"version": "1.1.3",
@@ -5943,6 +6372,20 @@
"string-width": "^1.0.2 || 2"
}
},
+ "node_modules/windows-release": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz",
+ "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==",
+ "dependencies": {
+ "execa": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/workerpool": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
@@ -6235,6 +6678,214 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "resources/build/version": {
+ "license": "MIT",
+ "dependencies": {
+ "@actions/core": "^1.2.6",
+ "@actions/github": "^2.1.0",
+ "typescript": "^4.5.4",
+ "yargs": "^15.1.0"
+ },
+ "devDependencies": {
+ "@types/node": "^13.7.0",
+ "@types/semver": "^7.1.0",
+ "@zeit/ncc": "^0.21.0",
+ "semver": "^7.1.2",
+ "ts-node": "^8.6.2"
+ },
+ "engines": {
+ "node": "16"
+ }
+ },
+ "resources/build/version/node_modules/@types/node": {
+ "version": "13.13.52",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz",
+ "integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==",
+ "dev": true
+ },
+ "resources/build/version/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "resources/build/version/node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "resources/build/version/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "resources/build/version/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/ts-node": {
+ "version": "8.10.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
+ "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
+ "dev": true,
+ "dependencies": {
+ "arg": "^4.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.7"
+ }
+ },
+ "resources/build/version/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "resources/build/version/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "resources/build/version/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"resources/gosh": {
"name": "@keymanapp/resources-gosh",
"license": "MIT",
@@ -6285,6 +6936,42 @@
}
},
"dependencies": {
+ "@actions/core": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.8.2.tgz",
+ "integrity": "sha512-FXcBL7nyik8K5ODeCKlxi+vts7torOkoDAKfeh61EAkAy1HAvwn9uVzZBY0f15YcQTcZZ2/iSGBFHEuioZWfDA==",
+ "requires": {
+ "@actions/http-client": "^2.0.1"
+ }
+ },
+ "@actions/github": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.2.0.tgz",
+ "integrity": "sha512-9UAZqn8ywdR70n3GwVle4N8ALosQs4z50N7XMXrSTUVOmVpaBC5kE3TRTT7qQdi3OaQV24mjGuJZsHUmhD+ZXw==",
+ "requires": {
+ "@actions/http-client": "^1.0.3",
+ "@octokit/graphql": "^4.3.1",
+ "@octokit/rest": "^16.43.1"
+ },
+ "dependencies": {
+ "@actions/http-client": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz",
+ "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==",
+ "requires": {
+ "tunnel": "0.0.6"
+ }
+ }
+ }
+ },
+ "@actions/http-client": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
+ "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
+ "requires": {
+ "tunnel": "^0.0.6"
+ }
+ },
"@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -6306,6 +6993,160 @@
"@cspotcode/source-map-consumer": "0.8.0"
}
},
+ "@keymanapp/auto-history-action": {
+ "version": "file:resources/build/version",
+ "requires": {
+ "@actions/core": "^1.2.6",
+ "@actions/github": "^2.1.0",
+ "@types/node": "^13.7.0",
+ "@types/semver": "^7.1.0",
+ "@zeit/ncc": "^0.21.0",
+ "semver": "^7.1.2",
+ "ts-node": "^8.6.2",
+ "typescript": "^4.5.4",
+ "yargs": "^15.1.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "13.13.52",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz",
+ "integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "ts-node": {
+ "version": "8.10.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
+ "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
+ "dev": true,
+ "requires": {
+ "arg": "^4.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
"@keymanapp/developer-server": {
"version": "file:developer/server",
"requires": {
@@ -6845,6 +7686,179 @@
}
}
},
+ "@octokit/auth-token": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
+ "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
+ "requires": {
+ "@octokit/types": "^6.0.3"
+ }
+ },
+ "@octokit/core": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
+ "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
+ "peer": true,
+ "requires": {
+ "@octokit/auth-token": "^2.4.4",
+ "@octokit/graphql": "^4.5.8",
+ "@octokit/request": "^5.6.3",
+ "@octokit/request-error": "^2.0.5",
+ "@octokit/types": "^6.0.3",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/endpoint": {
+ "version": "6.0.12",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
+ "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/graphql": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
+ "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
+ "requires": {
+ "@octokit/request": "^5.6.0",
+ "@octokit/types": "^6.0.3",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/openapi-types": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz",
+ "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA=="
+ },
+ "@octokit/plugin-paginate-rest": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz",
+ "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==",
+ "requires": {
+ "@octokit/types": "^2.0.1"
+ },
+ "dependencies": {
+ "@octokit/types": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+ "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+ "requires": {
+ "@types/node": ">= 8"
+ }
+ }
+ }
+ },
+ "@octokit/plugin-request-log": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
+ "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
+ "requires": {}
+ },
+ "@octokit/plugin-rest-endpoint-methods": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz",
+ "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==",
+ "requires": {
+ "@octokit/types": "^2.0.1",
+ "deprecation": "^2.3.1"
+ },
+ "dependencies": {
+ "@octokit/types": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+ "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+ "requires": {
+ "@types/node": ">= 8"
+ }
+ }
+ }
+ },
+ "@octokit/request": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
+ "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
+ "requires": {
+ "@octokit/endpoint": "^6.0.1",
+ "@octokit/request-error": "^2.1.0",
+ "@octokit/types": "^6.16.1",
+ "is-plain-object": "^5.0.0",
+ "node-fetch": "^2.6.7",
+ "universal-user-agent": "^6.0.0"
+ }
+ },
+ "@octokit/request-error": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
+ "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
+ "requires": {
+ "@octokit/types": "^6.0.3",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "@octokit/rest": {
+ "version": "16.43.2",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz",
+ "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==",
+ "requires": {
+ "@octokit/auth-token": "^2.4.0",
+ "@octokit/plugin-paginate-rest": "^1.1.1",
+ "@octokit/plugin-request-log": "^1.0.0",
+ "@octokit/plugin-rest-endpoint-methods": "2.4.0",
+ "@octokit/request": "^5.2.0",
+ "@octokit/request-error": "^1.0.2",
+ "atob-lite": "^2.0.0",
+ "before-after-hook": "^2.0.0",
+ "btoa-lite": "^1.0.0",
+ "deprecation": "^2.0.0",
+ "lodash.get": "^4.4.2",
+ "lodash.set": "^4.3.2",
+ "lodash.uniq": "^4.5.0",
+ "octokit-pagination-methods": "^1.1.0",
+ "once": "^1.4.0",
+ "universal-user-agent": "^4.0.0"
+ },
+ "dependencies": {
+ "@octokit/request-error": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
+ "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
+ "requires": {
+ "@octokit/types": "^2.0.0",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ }
+ },
+ "@octokit/types": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
+ "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
+ "requires": {
+ "@types/node": ">= 8"
+ }
+ },
+ "universal-user-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz",
+ "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==",
+ "requires": {
+ "os-name": "^3.1.0"
+ }
+ }
+ }
+ },
+ "@octokit/types": {
+ "version": "6.34.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz",
+ "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==",
+ "requires": {
+ "@octokit/openapi-types": "^11.2.0"
+ }
+ },
"@sentry/browser": {
"version": "5.30.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.30.0.tgz",
@@ -7200,6 +8214,12 @@
"@types/node": "*"
}
},
+ "@types/semver": {
+ "version": "7.3.9",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz",
+ "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==",
+ "dev": true
+ },
"@types/serve-static": {
"version": "1.13.10",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz",
@@ -7243,6 +8263,12 @@
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
"dev": true
},
+ "@zeit/ncc": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.21.1.tgz",
+ "integrity": "sha512-M9WzgquSOt2nsjRkYM9LRylBLmmlwNCwYbm3Up3PDEshfvdmIfqpFNSK8EJvR18NwZjGHE5z2avlDtYQx2JQnw==",
+ "dev": true
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -7391,6 +8417,11 @@
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"optional": true
},
+ "atob-lite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
+ "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw=="
+ },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -7424,6 +8455,11 @@
"tweetnacl": "^0.14.3"
}
},
+ "before-after-hook": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz",
+ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ=="
+ },
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -7565,6 +8601,11 @@
}
}
},
+ "btoa-lite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+ "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA=="
+ },
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
@@ -7634,8 +8675,7 @@
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"caseless": {
"version": "0.12.0",
@@ -7958,8 +8998,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"decompress-response": {
"version": "6.0.0",
@@ -8012,6 +9051,11 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
+ "deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
+ },
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
@@ -8112,8 +9156,7 @@
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"encodeurl": {
"version": "1.0.2",
@@ -8250,6 +9293,73 @@
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
},
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
"express": {
"version": "4.17.3",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
@@ -8517,8 +9627,7 @@
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-func-name": {
"version": "2.0.0",
@@ -8781,12 +9890,22 @@
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
+ "is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
+ },
"is-running": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz",
"integrity": "sha1-MKc/9cw4VOT8JUkICen1q/jeCeA=",
"dev": true
},
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -8821,8 +9940,7 @@
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "devOptional": true
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"isstream": {
"version": "0.1.2",
@@ -9236,6 +10354,21 @@
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
},
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ },
+ "lodash.set": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+ "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg=="
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+ },
"log-symbols": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
@@ -9289,7 +10422,12 @@
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.8.1.tgz",
"integrity": "sha512-E1v547OCgJvbvevfjgK9sNKIVXO96NnsTsFPBlg4ZxjhsJSODoH9lk8Bm0OxvHNm6Vm5Yqkl/1fErDxhYL8Skg==",
- "optional": true
+ "devOptional": true
+ },
+ "macos-release": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz",
+ "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g=="
},
"make-error": {
"version": "1.3.6",
@@ -9678,6 +10816,11 @@
}
}
},
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+ },
"nise": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz",
@@ -9733,7 +10876,6 @@
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "dev": true,
"requires": {
"whatwg-url": "^5.0.0"
}
@@ -9822,6 +10964,21 @@
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
},
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "requires": {
+ "path-key": "^2.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ }
+ }
+ },
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -9857,6 +11014,11 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
+ "octokit-pagination-methods": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
+ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ=="
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -9883,11 +11045,25 @@
"is-wsl": "^2.2.0"
}
},
+ "os-name": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
+ "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
+ "requires": {
+ "macos-release": "^2.2.0",
+ "windows-release": "^3.1.0"
+ }
+ },
"p-cancelable": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
"integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg=="
},
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="
+ },
"p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -9909,8 +11085,7 @@
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"pako": {
"version": "1.0.11",
@@ -9926,8 +11101,7 @@
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
},
"path-is-absolute": {
"version": "1.0.1",
@@ -10156,14 +11330,12 @@
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"requirejs": {
"version": "2.3.6",
@@ -10224,7 +11396,7 @@
"version": "7.3.6",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.6.tgz",
"integrity": "sha512-HZWqcgwLsjaX1HBD31msI/rXktuIhS+lWvdE4kN9z+8IVT4Itc7vqU2WvYsyD6/sjYCt4dEKH/m1M3dwI9CC5w==",
- "optional": true,
+ "devOptional": true,
"requires": {
"lru-cache": "^7.4.0"
}
@@ -10299,8 +11471,7 @@
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "devOptional": true
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"set-immediate-shim": {
"version": "1.0.1",
@@ -10331,8 +11502,7 @@
"signal-exit": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "devOptional": true
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"sinon": {
"version": "7.5.0",
@@ -10548,6 +11718,11 @@
"ansi-regex": "^2.0.0"
}
},
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q=="
+ },
"strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -10656,8 +11831,7 @@
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
- "dev": true
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"ts-node": {
"version": "9.1.1",
@@ -10716,6 +11890,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
+ "tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -10768,6 +11947,11 @@
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
"dev": true
},
+ "universal-user-agent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
+ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
+ },
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
@@ -10848,14 +12032,12 @@
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
- "dev": true
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
- "dev": true,
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
@@ -10873,8 +12055,7 @@
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"wide-align": {
"version": "1.1.3",
@@ -10885,6 +12066,14 @@
"string-width": "^1.0.2 || 2"
}
},
+ "windows-release": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz",
+ "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==",
+ "requires": {
+ "execa": "^1.0.0"
+ }
+ },
"workerpool": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
diff --git a/package.json b/package.json
index 0a64512f42..29fdae2f8a 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"scripts": {},
"workspaces": [
"resources/gosh",
+ "resources/build/version",
"developer/js",
"developer/server",
"common/models/*",
diff --git a/resources/build/increment-version.sh b/resources/build/increment-version.sh
index c2de089f44..69d1532a27 100755
--- a/resources/build/increment-version.sh
+++ b/resources/build/increment-version.sh
@@ -31,10 +31,12 @@ gitbranch=`git branch --show-current`
FORCE=0
HISTORY_FORCE=
-if [[ "$1" == "-f" ]]; then
- FORCE=1
- HISTORY_FORCE=--force
- shift
+if [[ $# -gt 0 ]]; then
+ if [[ "$1" == "-f" ]]; then
+ FORCE=1
+ HISTORY_FORCE=--force
+ shift
+ fi
fi
if [[ $# -gt 0 ]]; then
@@ -75,18 +77,23 @@ fi
# Let's ensure our base is up to date with GitHub to
# avoid transient errors
+echo "increment-version.sh: updating branch $base from GitHub"
git pull origin $base
#
# Run the increment + history refresh
#
-pushd "$KEYMAN_ROOT/resources/build/version" > /dev/null
-npm install
-npm run build:ts
-popd > /dev/null
+echo "increment-version.sh: building resources/build/version"
+pushd "$KEYMAN_ROOT"
+npm ci
-pushd "$KEYMAN_ROOT" > /dev/null
+pushd "$KEYMAN_ROOT/resources/build/version"
+npm run build:ts
+popd
+
+echo "increment-version.sh: running resources/build/version"
+pushd "$KEYMAN_ROOT"
ABORT=0
node resources/build/version/lib/index.js history version -t "$GITHUB_TOKEN" -b "$base" $HISTORY_FORCE || ABORT=$?
@@ -112,6 +119,7 @@ popd > /dev/null
#
if [ "$action" == "commit" ]; then
+ echo "increment-version.sh: committing to repository and tagging release version $VERSION_WITH_TAG"
VERSION_MD="$KEYMAN_ROOT/VERSION.md"
NEWVERSION=`cat $VERSION_MD | tr -d "[:space:]"`
@@ -122,16 +130,6 @@ if [ "$action" == "commit" ]; then
git checkout -b "$branch"
git add VERSION.md HISTORY.md
- # Also updates package versions, committing those changes
- # Uses the 'version' run script defined in the base package.json.
- npm install
-
- npm run version -- "$NEWVERSION"
-
- # Version info will be updated in package.json and all workspace package.json files.
- git add package.json package-lock.json
- npm add **/package.json **/package-lock.json
-
# Now that all version-related changes are ready and git-added, it's time to commit.
git commit -m "$message"
git push --tags origin "$branch"
diff --git a/resources/build/version/package-lock.json b/resources/build/version/package-lock.json
deleted file mode 100644
index e39e25562b..0000000000
--- a/resources/build/version/package-lock.json
+++ /dev/null
@@ -1,667 +0,0 @@
-{
- "name": "@keymanapp/auto-history-action",
- "version": "1.1.3",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@actions/core": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz",
- "integrity": "sha512-ZQYitnqiyBc3D+k7LsgSBmMDVkOVidaagDG7j3fOym77jNunWRuYx7VSHa9GNfFZh+zh61xsCjRj4JxMZlDqTA=="
- },
- "@actions/github": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.1.0.tgz",
- "integrity": "sha512-G4ncMlh4pLLAvNgHUYUtpWQ1zPf/VYqmRH9oshxLabdaOOnp7i1hgSgzr2xne2YUaSND3uqemd3YYTIsm2f/KQ==",
- "requires": {
- "@actions/http-client": "^1.0.3",
- "@octokit/graphql": "^4.3.1",
- "@octokit/rest": "^16.15.0"
- }
- },
- "@actions/http-client": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz",
- "integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==",
- "requires": {
- "tunnel": "0.0.6"
- }
- },
- "@octokit/auth-token": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz",
- "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==",
- "requires": {
- "@octokit/types": "^2.0.0"
- }
- },
- "@octokit/endpoint": {
- "version": "5.5.2",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.2.tgz",
- "integrity": "sha512-ICDcRA0C2vtTZZGud1nXRrBLXZqFayodXAKZfo3dkdcLNqcHsgaz3YSTupbURusYeucSVRjjG+RTcQhx6HPPcg==",
- "requires": {
- "@octokit/types": "^2.0.0",
- "is-plain-object": "^3.0.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "@octokit/graphql": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz",
- "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==",
- "requires": {
- "@octokit/request": "^5.3.0",
- "@octokit/types": "^2.0.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "@octokit/plugin-paginate-rest": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.1.tgz",
- "integrity": "sha512-Kf0bnNoOXK9EQLkc3rtXfPnu/bwiiUJ1nH3l7tmXYwdDJ7tk/Od2auFU9b86xxKZunPkV9SO1oeojT707q1l7A==",
- "requires": {
- "@octokit/types": "^2.0.1"
- }
- },
- "@octokit/plugin-request-log": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz",
- "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw=="
- },
- "@octokit/plugin-rest-endpoint-methods": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.2.0.tgz",
- "integrity": "sha512-/Es7P4roLJls+4JaUUouZ25dqvXdrLJ80vvRoZzzR0EBCTlaU2ESRjXgH50mUpmR1MKPwJS3Ew5iFj3U3Q8UfQ==",
- "requires": {
- "@octokit/types": "^2.0.1",
- "deprecation": "^2.3.1"
- }
- },
- "@octokit/request": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.1.tgz",
- "integrity": "sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg==",
- "requires": {
- "@octokit/endpoint": "^5.5.0",
- "@octokit/request-error": "^1.0.1",
- "@octokit/types": "^2.0.0",
- "deprecation": "^2.0.0",
- "is-plain-object": "^3.0.0",
- "node-fetch": "^2.3.0",
- "once": "^1.4.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
- "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
- "requires": {
- "@octokit/types": "^2.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/rest": {
- "version": "16.41.1",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.41.1.tgz",
- "integrity": "sha512-C97cb2cwxakAxZ+5oIAhmd9a1lqJ48n9TN3ooRuuifRMVQZGJCIFsb7uQV76YjDsB1agjhhDokAOSKq5F2+HYw==",
- "requires": {
- "@octokit/auth-token": "^2.4.0",
- "@octokit/plugin-paginate-rest": "^1.1.1",
- "@octokit/plugin-request-log": "^1.0.0",
- "@octokit/plugin-rest-endpoint-methods": "2.2.0",
- "@octokit/request": "^5.2.0",
- "@octokit/request-error": "^1.0.2",
- "atob-lite": "^2.0.0",
- "before-after-hook": "^2.0.0",
- "btoa-lite": "^1.0.0",
- "deprecation": "^2.0.0",
- "lodash.get": "^4.4.2",
- "lodash.set": "^4.3.2",
- "lodash.uniq": "^4.5.0",
- "octokit-pagination-methods": "^1.1.0",
- "once": "^1.4.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "@octokit/types": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.1.1.tgz",
- "integrity": "sha512-89LOYH+d/vsbDX785NOfLxTW88GjNd0lWRz1DVPVsZgg9Yett5O+3MOvwo7iHgvUwbFz0mf/yPIjBkUbs4kxoQ==",
- "requires": {
- "@types/node": ">= 8"
- }
- },
- "@types/color-name": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
- "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
- },
- "@types/node": {
- "version": "13.7.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz",
- "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ=="
- },
- "@types/semver": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.1.0.tgz",
- "integrity": "sha512-pOKLaubrAEMUItGNpgwl0HMFPrSAFic8oSVIvfu1UwcgGNmNyK9gyhBHKmBnUTwwVvpZfkzUC0GaMgnL6P86uA==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@zeit/ncc": {
- "version": "0.21.0",
- "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.21.0.tgz",
- "integrity": "sha512-RUMdvVK/w78oo+yBjruZltt0kJXYar2un/1bYQ2LuHG7GmFVm+QjxzEmySwREctaJdEnBvlMdUNWd9hXHxEI3g==",
- "dev": true
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
- "requires": {
- "@types/color-name": "^1.1.1",
- "color-convert": "^2.0.1"
- }
- },
- "arg": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz",
- "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==",
- "dev": true
- },
- "atob-lite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
- "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY="
- },
- "before-after-hook": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz",
- "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A=="
- },
- "btoa-lite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
- "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc="
- },
- "buffer-from": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
- },
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
- },
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "requires": {
- "once": "^1.4.0"
- }
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "is-plain-object": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
- "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
- "requires": {
- "isobject": "^4.0.0"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "isobject": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
- "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
- },
- "lodash.set": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
- "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
- },
- "lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
- },
- "macos-release": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
- "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA=="
- },
- "make-error": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
- "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
- },
- "node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "octokit-pagination-methods": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
- "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ=="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "os-name": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
- "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
- "requires": {
- "macos-release": "^2.2.0",
- "windows-release": "^3.1.0"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
- },
- "p-limit": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
- "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
- },
- "semver": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz",
- "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==",
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
- "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
- },
- "ts-node": {
- "version": "8.6.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz",
- "integrity": "sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==",
- "dev": true,
- "requires": {
- "arg": "^4.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "source-map-support": "^0.5.6",
- "yn": "3.1.1"
- }
- },
- "tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
- },
- "typescript": {
- "version": "3.7.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz",
- "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw=="
- },
- "universal-user-agent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
- "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
- "requires": {
- "os-name": "^3.1.0"
- }
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
- },
- "windows-release": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz",
- "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==",
- "requires": {
- "execa": "^1.0.0"
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ=="
- },
- "yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- }
- },
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true
- }
- }
-}
diff --git a/resources/build/version/package.json b/resources/build/version/package.json
index 50f35eab14..1a4e8355c8 100644
--- a/resources/build/version/package.json
+++ b/resources/build/version/package.json
@@ -14,7 +14,7 @@
"ts-node": "^8.6.2"
},
"engines": {
- "node": "12"
+ "node": "16"
},
"files": [
"dist",
@@ -23,8 +23,7 @@
"license": "MIT",
"main": "dist/index.js",
"name": "@keymanapp/auto-history-action",
- "private": false,
- "repository": "https://github.com/keymanapp/auto-history-action",
+ "private": true,
"scripts": {
"build": "npm run clean:dist; npm run build:dist",
"build:dist": "ncc build src/index.ts --minify --source-map --v8-cache",
diff --git a/resources/build/version/src/fixupHistory.ts b/resources/build/version/src/fixupHistory.ts
index d9fd84d4ae..9c3ca32b23 100644
--- a/resources/build/version/src/fixupHistory.ts
+++ b/resources/build/version/src/fixupHistory.ts
@@ -195,7 +195,7 @@ export const fixupHistory = async (
try {
pulls = await reportHistory(octokit, base, force, true);
} catch(e) {
- logWarning(e);
+ logWarning(String(e));
return -1;
}
diff --git a/resources/build/version/src/reportHistory.ts b/resources/build/version/src/reportHistory.ts
index f06df7e789..677b641272 100644
--- a/resources/build/version/src/reportHistory.ts
+++ b/resources/build/version/src/reportHistory.ts
@@ -26,7 +26,7 @@ const getPullRequestInformation = async (
}
]
}
- } = response;
+ }: any = response;
return commit_id;
};
@@ -47,7 +47,7 @@ const getAssociatedPRInformation = async (
{ sha: commit_id }
);
- if (response === null || response.repository.commit === null) {
+ if (response === null || (response).repository.commit === null) {
return undefined;
}
@@ -65,7 +65,7 @@ const getAssociatedPRInformation = async (
}
}
}
- } = response;
+ }: any = response;
const node = nodes.find(node => node.state == 'MERGED');
return node ? { title: node.title, number: node.number } : undefined;
diff --git a/web/source/kmwuifloat.ts b/web/source/kmwuifloat.ts
index 1b974bedbe..efa7918f0b 100644
--- a/web/source/kmwuifloat.ts
+++ b/web/source/kmwuifloat.ts
@@ -54,13 +54,15 @@ if(!window['keyman']['ui']['name']) {
*/
ui.toggleOSK = function()
{
- let osk = keymanweb.osk;
- keymanweb['focusLastActiveElement']();
+ keymanweb['activatingUI'](true);
+ let osk = keymanweb['osk'];
if(osk && osk['show'])
{
if(osk['isEnabled']()) osk['hide'](); else osk['show'](true);
}
if(window.event) window.event.returnValue=false;
+ keymanweb['focusLastActiveElement']();
+ keymanweb['activatingUI'](false);
return false;
}
@@ -327,7 +329,7 @@ if(!window['keyman']['ui']['name']) {
ui.addButtonOSK();
});
- let osk = keymanweb.osk;
+ let osk = keymanweb['osk'];
if(!osk) {
return;
}
@@ -393,6 +395,7 @@ if(!window['keyman']['ui']['name']) {
*/
ui.SelectKeyboardChange = function(e)
{
+ keymanweb['activatingUI'](true);
if(ui.KeyboardSelector.value != '-')
{
var i=ui.KeyboardSelector.selectedIndex;
@@ -404,6 +407,7 @@ if(!window['keyman']['ui']['name']) {
//if(osk['show']) osk['show'](osk['isEnabled']()); handled by keyboard change event???
keymanweb['focusLastActiveElement']();
+ keymanweb['activatingUI'](false);
ui.selecting = true;
}
@@ -477,8 +481,9 @@ if(!window['keyman']['ui']['name']) {
else
{
ui.oskButton.style.display = 'block';
- if(keymanweb.osk) {
- ui.oskButtonState(keymanweb.osk['isEnabled']());
+ let osk = keymanweb['osk'];
+ if(osk) {
+ ui.oskButtonState(osk['isEnabled']());
} else {
ui.oskButtonState(false);
}
diff --git a/web/source/kmwuitoolbar.ts b/web/source/kmwuitoolbar.ts
index 41fa618882..47512e52b6 100644
--- a/web/source/kmwuitoolbar.ts
+++ b/web/source/kmwuitoolbar.ts
@@ -253,6 +253,9 @@ if(!window['keyman']['ui']['name']) {
aNode = ui.createNode('a', null, 'kmw_button_a');
aNode.href = '#';
aNode.onclick = ui.showOSK;
+ aNode.onmousedown = function() {
+ keymanweb['activatingUI'](true);
+ };
aNode.title = ui.ToolBar_Text.ShowOSK;
aNode.appendChild(ui.createNode('div', 'kmw_img_osk', 'kmw_img'));
//aNode.appendChild(ui.createNode('div', null, 'kmw_a', 'On Screen Keyboard'));
@@ -667,6 +670,7 @@ if(!window['keyman']['ui']['name']) {
* @return {boolean}
**/
ui.selectKeyboard = function(event,lang,kbd,updateKeyman:boolean) {
+ keymanweb['activatingUI'](true);
if(ui.selectedLanguage) {
var found = ui.findListedKeyboard(ui.selectedLanguage);
if(found != null) {
@@ -694,6 +698,7 @@ if(!window['keyman']['ui']['name']) {
// Always save current state when selecting a keyboard
ui.saveCookie();
ui.enableControls();
+ keymanweb['activatingUI'](false);
return ui.hideKeyboardsPopup(event) || ui.hideKeyboardsForLanguage(event);
}
@@ -751,17 +756,18 @@ if(!window['keyman']['ui']['name']) {
**/
ui.showOSK = function(event)
{
- let osk = keymanweb.osk;
-
+ let osk = keymanweb['osk'];
if(!osk) {
return;
}
+ keymanweb['activatingUI'](true);
//Toggle OSK on or off
if(osk && keymanweb['getActiveKeyboard']() != '')
{
if(osk['isEnabled']()) osk['hide'](); else osk['show'](true);
}
ui.setLastFocus();
+ keymanweb['activatingUI'](false);
return ui.eventCapture(event);
}
@@ -914,7 +920,7 @@ if(!window['keyman']['ui']['name']) {
}
else
{
- let osk = keymanweb.osk;
+ let osk = keymanweb['osk'];
ui.oskButtonNode.className = (osk && osk['isEnabled']()) ? 'kmw_button_selected' : 'kmw_button';
}
}
@@ -1013,7 +1019,7 @@ if(!window['keyman']['ui']['name']) {
ui.registerEvents = function() {
- let osk = keymanweb.osk;
+ let osk = keymanweb['osk'];
if(!osk) {
return;
}
diff --git a/web/source/osk/anchoredOskView.ts b/web/source/osk/anchoredOskView.ts
index 64d61e4d81..3acab69a45 100644
--- a/web/source/osk/anchoredOskView.ts
+++ b/web/source/osk/anchoredOskView.ts
@@ -62,7 +62,7 @@ namespace com.keyman.osk {
protected postKeyboardLoad() {
// Initializes the size of a touch keyboard.
if(this.vkbd && this.device.touchable) {
- let targetOSKHeight = this.vkbd.computedAdjustedOskHeight(this.getDefaultKeyboardHeight());
+ let targetOSKHeight = this.getDefaultKeyboardHeight();
this.setSize(this.getDefaultWidth(), targetOSKHeight + this.banner.height);
}
diff --git a/web/source/osk/floatingOskView.ts b/web/source/osk/floatingOskView.ts
index 42ad70f375..d4d24ef77e 100644
--- a/web/source/osk/floatingOskView.ts
+++ b/web/source/osk/floatingOskView.ts
@@ -555,6 +555,11 @@ namespace com.keyman.osk {
}
}
+ ['show'](bShow: boolean) {
+ super['show'](bShow);
+ this.saveCookie();
+ }
+
/**
* Function userPositioned
* Scope Public
diff --git a/web/source/osk/oskBaseKey.ts b/web/source/osk/oskBaseKey.ts
index 12193258f2..7aa17a98ed 100644
--- a/web/source/osk/oskBaseKey.ts
+++ b/web/source/osk/oskBaseKey.ts
@@ -131,7 +131,7 @@ namespace com.keyman.osk {
if(vkbd.usesFixedHeightScaling) {
// Matches its row's height.
- this.square.style.height = vkbd.layoutHeight.scaledBy(this.row.heightFraction).styleString;
+ this.square.style.height = vkbd.internalHeight.scaledBy(this.row.heightFraction).styleString;
} else {
this.square.style.height = '100%'; // use the full row height
}
diff --git a/web/source/osk/oskLayer.ts b/web/source/osk/oskLayer.ts
index 0e9553baa6..172ee70dd3 100644
--- a/web/source/osk/oskLayer.ts
+++ b/web/source/osk/oskLayer.ts
@@ -14,6 +14,12 @@ namespace com.keyman.osk {
public readonly numKey: OSKBaseKey;
public readonly scrollKey: OSKBaseKey;
+ private _rowHeight: number;
+
+ public get rowHeight(): number {
+ return this._rowHeight;
+ }
+
public get id(): string {
return this.spec.id;
}
@@ -22,7 +28,7 @@ namespace com.keyman.osk {
layout: keyboards.ActiveLayout,
layer: keyboards.ActiveLayer) {
this.spec = layer;
-
+
const gDiv = this.element = document.createElement('div');
const gs=gDiv.style;
gDiv.className='kmw-key-layer';
@@ -38,7 +44,7 @@ namespace com.keyman.osk {
this.nextlayer = gDiv['layer'] = layer['id'];
if(typeof layer['nextlayer'] == 'string') {
// The gDiv['nextLayer'] is no longer referenced in KMW 15.0+, but is
- // maintained for partial back-compat in case any site devs actually
+ // maintained for partial back-compat in case any site devs actually
// relied on its value from prior versions.
//
// We won't pay attention to any mutations to the gDiv copy, though.
@@ -87,23 +93,23 @@ namespace com.keyman.osk {
return null;
}
- public refreshLayout(vkbd: VisualKeyboard, paddedHeight: number, trueHeight: number) {
+ public refreshLayout(vkbd: VisualKeyboard, layerHeight: number) {
// Check the heights of each row, in case different layers have different row counts.
- let nRows = this.rows.length;
- let rowHeight = Math.floor(trueHeight/(nRows == 0 ? 1 : nRows));
+ const nRows = this.rows.length;
+ const rowHeight = this._rowHeight = Math.floor(layerHeight/(nRows == 0 ? 1 : nRows));
if(vkbd.usesFixedHeightScaling) {
- this.element.style.height=(paddedHeight)+'px';
+ this.element.style.height=(layerHeight)+'px';
}
for(let nRow=0; nRow 5) && this.pendingSubkey && this.pendingSubkey instanceof browser.PendingLongpress) {
- this.pendingSubkey.resolve();
+ if(this.pendingSubkey && this.pendingSubkey instanceof browser.PendingLongpress) {
+ // Show popup keys immediately if touch moved up towards key array (KMEW-100, Build 353)
+ if (this.initTouchCoord.y - input.y > this.getLongpressFlickThreshold()) {
+ this.pendingSubkey.resolve();
+ }
}
}
@@ -1635,6 +1652,16 @@ namespace com.keyman.osk {
return false;
}
+ private getLongpressFlickThreshold(): number {
+ const rowHeight = this.currentLayer.rowHeight;
+
+ // If larger than 5 (and it likely is), new threshold = 1/4 the std. key height.
+ const proportionalThreshold = rowHeight / 4;
+
+ // 5 - the longpress-flick triggering threshold before 15.0.
+ return Math.max(proportionalThreshold, 5);
+ }
+
optionKey(e: KeyElement, keyName: string, keyDown: boolean) {
let keyman = com.keyman.singleton;
let oskManager = keyman.osk;
diff --git a/web/unit_tests/CI.conf.js b/web/unit_tests/CI.conf.js
index d43fa251d2..d8ca56cd99 100644
--- a/web/unit_tests/CI.conf.js
+++ b/web/unit_tests/CI.conf.js
@@ -124,18 +124,18 @@ module.exports = function(config) {
var specifics = {
// BrowserStack configuration options
browserStack: {
- video: false,
- browserDisconnectTimeout: 3e5,
- retryLimit: 1, // 0 is ignored.
+ video: true,
+ browserDisconnectTimeout: 6e4, // 1 minute (60s => 60,000ms)
+ retryLimit: 3, // 0 is ignored.
startTunnel: true,
},
// Attempts to avoid generating a 'fail' exit code if one of our selected browsers on BrowserStack goes poof.
failOnEmptyTestSuite: false,
- captureTimeout: 6e5, // in milliseconds
- browserNoActivityTimeout: 3e5,
- browserDisconnectTimeout: 3e5,
+ captureTimeout: 1.2e5, // in milliseconds
+ browserNoActivityTimeout: 6e4,
+ browserDisconnectTimeout: 6e4,
browserDisconnectTolerance: 3,
// Avoids generating a 'fail' exit code if one of our selected browsers on BrowserStack goes poof.
@@ -144,7 +144,7 @@ module.exports = function(config) {
// test results reporter to use
// possible values: 'dots', 'progress'
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['teamcity'],
+ reporters: ['teamcity', 'BrowserStack'],
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
diff --git a/windows/src/desktop/kmshell/install/Keyman.Configuration.System.TIPMaintenance.pas b/windows/src/desktop/kmshell/install/Keyman.Configuration.System.TIPMaintenance.pas
index 542232dde1..5595ba073e 100644
--- a/windows/src/desktop/kmshell/install/Keyman.Configuration.System.TIPMaintenance.pas
+++ b/windows/src/desktop/kmshell/install/Keyman.Configuration.System.TIPMaintenance.pas
@@ -32,13 +32,15 @@ type
class function GetFirstLanguage(Keyboard: IKeymanKeyboardInstalled): string; overload;
class function GetFirstLanguage(Keyboard: IKeymanKeyboardFile): string; overload;
- /// Get the BCP47 tag for the user's default language
+ /// Get the canonicalized BCP47 tag for the user's default language
class function GetUserDefaultLanguage: string; overload; static;
class procedure GetUserDefaultLanguage(var BCP47: string; var LangID: Integer); overload; static;
- /// Get the -default-lang parameter string for kmshell
+ /// Get the canonicalized -default-lang parameter string for kmshell
class function GetUserDefaultLangParameterString: string; static;
private
+ // Get the IKeymanKeyboardLanguageInstalled Object corresponding to the BCBP47Tag or **Add** it if not found for the supplied KeyboardID.
+ // Returns Nil if no Keyboard is found with the supplied KeyboardID.
class function GetKeyboardLanguage(const KeyboardID,
BCP47Tag: string): IKeymanKeyboardLanguageInstalled; static;
end;
@@ -342,7 +344,7 @@ begin
if r.OpenKeyReadOnly('\' + SRegKey_ControlPanelInternationalUserProfile + '\' + key) and
r.ValueExists(v) then
begin
- BCP47 := key;
+ BCP47 := (kmcom as IKeymanBCP47Canonicalization).GetCanonicalTag(key);
LangID := GetLangIDFromValueName;
Break;
end;
@@ -359,7 +361,7 @@ begin
r.ReadMultiString(SRegValue_CPIUP_Languages, tags);
if tags.Count > 0 then
begin
- BCP47 := tags[0].Trim;
+ BCP47 := (kmcom as IKeymanBCP47Canonicalization).GetCanonicalTag(tags[0].Trim);
if r.OpenKeyReadOnly('\' + SRegKey_ControlPanelInternationalUserProfile + '\' + BCP47) then
LangID := GetLangIDFromValueName;
end;
diff --git a/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas b/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas
index f25957eded..ee0faace6e 100644
--- a/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas
+++ b/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas
@@ -305,7 +305,7 @@ begin
if not GetKMShellPath(kmshell) then // I3655
Exit;
- if not TUtilExecute.WaitForProcess(kmshell+' -i "'+nm+'"', ExtractFilePath(nm)) then // I3475
+ if not TUtilExecute.WaitForProcess('"'+kmshell+'" -i "'+nm+'"', ExtractFilePath(nm)) then // I3475
ShowMessage('Failed to install keyboard');
end;
diff --git a/windows/src/global/delphi/general/CompilePackage.pas b/windows/src/global/delphi/general/CompilePackage.pas
index 3fd11676f4..fa366eab5b 100644
--- a/windows/src/global/delphi/general/CompilePackage.pas
+++ b/windows/src/global/delphi/general/CompilePackage.pas
@@ -159,6 +159,7 @@ function TCompilePackage.Compile: Boolean;
var
buf: array[0..260] of Char;
n: Integer;
+ b: Boolean;
f: TSearchRec;
begin
Result := False;
@@ -187,10 +188,15 @@ begin
FTempPath := buf;
GetTempFileName(PChar(FTempPath), 'kmn', 0, buf);
- FTempPath := buf;
- if FileExists(FTempPath) then DeleteFile(FTempPath);
+ FTempPath := buf + '.dir';
+ b := CreateDir(FTempPath);
+ if not b then
+ begin
+ FatalMessage('Unable to create temp folder '+FTempPath);
+ if FileExists(buf) then DeleteFile(buf);
+ Exit;
+ end;
- CreateDir(FTempPath);
try
Result := BuildKMP;
finally
@@ -205,6 +211,7 @@ begin
FindClose(f);
end;
RemoveDirectory(PChar(FTempPath));
+ if FileExists(buf) then DeleteFile(buf);
end;
end;