From d247e475df112f42e37cf75b0f2bdf2118df4d86 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Tue, 24 May 2022 08:37:34 +0700 Subject: [PATCH 01/51] chore(common): Update crowdin strings for Spanish (Latin America) --- .../src/main/res/values-b+es+419/strings.xml | 38 ++++++++++- .../src/main/res/values-b+es+419/strings.xml | 25 ++++++- .../es-419.lproj/Localizable.strings | 45 ++++++++++++ .../KMAboutWindowController.strings | 8 +++ .../es-419.lproj/preferences.strings | 38 +++++++++++ .../KMInfoWindowController.strings | 8 +++ .../KMKeyboardHelpWindowController.strings | 8 +++ .../es-419.lproj/Localizable.strings | 68 +++++++++++++++++++ .../es-419.lproj/MainMenu.strings | 14 ++++ 9 files changed, 248 insertions(+), 4 deletions(-) create mode 100644 mac/Keyman4MacIM/Keyman4MacIM/KMAboutWindow/es-419.lproj/KMAboutWindowController.strings create mode 100644 mac/Keyman4MacIM/Keyman4MacIM/KMConfiguration/es-419.lproj/preferences.strings create mode 100644 mac/Keyman4MacIM/Keyman4MacIM/KMInfoWindow/es-419.lproj/KMInfoWindowController.strings create mode 100644 mac/Keyman4MacIM/Keyman4MacIM/KMKeyboardHelpWindow/es-419.lproj/KMKeyboardHelpWindowController.strings create mode 100644 mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/Localizable.strings create mode 100644 mac/Keyman4MacIM/Keyman4MacIM/es-419.lproj/MainMenu.strings 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/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/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/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"; From bf95a246a5f65cad7e183a734e604f2a057beb36 Mon Sep 17 00:00:00 2001 From: sgschantz Date: Tue, 24 May 2022 14:40:13 +0700 Subject: [PATCH 02/51] added Spanish es-419 localization to Mac project --- .../Keyman4MacIM.xcodeproj/project.pbxproj | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) 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 = ""; From ad7a7fa990915368134a8cd64813f56eb0c0e8a5 Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 25 May 2022 10:47:08 +0700 Subject: [PATCH 03/51] feat(ios): adds simple nav bar to help section --- .../InfoViewController.swift | 42 ++++++++- .../InfoViewController_iPad.xib | 76 +++++++++++----- .../InfoViewController_iPhone.xib | 87 +++++++++++++++---- .../KMWebBrowser/WebBrowserViewController.xib | 6 +- .../MainViewController.swift | 4 +- 5 files changed, 170 insertions(+), 45 deletions(-) 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..923ebe0107 100644 --- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib +++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib @@ -1,39 +1,73 @@ - - + + + - + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + - - - - - + + + + + diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib index 33a0a33c6d..09ecbd7ada 100644 --- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib +++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib @@ -1,40 +1,89 @@ - - + + + - + + + + + + + - + - - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + - + - - - - - + + + + + + + + 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..0c8626ccb4 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -192,7 +192,9 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg view?.addSubview(textView!) // Setup Info View - infoView = InfoViewController() + infoView = InfoViewController { + self.infoButtonClick(nil) + } if UIDevice.current.userInterfaceIdiom != .phone { textSize *= 2 textView.font = textView?.font?.withSize(textSize) From 2f2789b176952c0429af645d7c95b64bd3e3583e Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 25 May 2022 10:47:43 +0700 Subject: [PATCH 04/51] docs(ios): fixes link when in-app --- ios/help/about/welcome.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 2f1237e3523b1fa8bcafb31e9794e8c9897350a7 Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 25 May 2022 15:12:25 +0700 Subject: [PATCH 05/51] fix(web): osk shrinkage from rounding --- web/source/osk/anchoredOskView.ts | 2 +- web/source/osk/visualKeyboard.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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/visualKeyboard.ts b/web/source/osk/visualKeyboard.ts index cc6ea3c416..c328ebc12c 100644 --- a/web/source/osk/visualKeyboard.ts +++ b/web/source/osk/visualKeyboard.ts @@ -366,7 +366,7 @@ namespace com.keyman.osk { * of alternate keystroke sequences. * @param input The input coordinate of the event that led to use of this function * @param keySpec The spec of the key directly triggered by the input event. May be for a subkey. - * @returns + * @returns */ getTouchProbabilities(input: InputEventCoordinate, keySpec?: keyboards.ActiveKey): text.KeyDistribution { let keyman = com.keyman.singleton; @@ -1235,9 +1235,9 @@ namespace com.keyman.osk { let b = this.layerGroup.element as HTMLElement; let gs = this.kbdDiv.style; let bs = b.style; - if (this.usesFixedHeightScaling) { + if (this.usesFixedHeightScaling && this.height) { // Sets the layer group to the correct height. - gs.height = gs.maxHeight = paddedHeight + 'px'; + gs.height = gs.maxHeight = this.height + 'px'; } // The font-scaling applied on the layer group. From a38c01e5bbfe8dabd622541e93c37b8db80fae9d Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 25 May 2022 15:36:53 +0700 Subject: [PATCH 06/51] fix(web): preserves row height rounding --- web/source/osk/oskLayer.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web/source/osk/oskLayer.ts b/web/source/osk/oskLayer.ts index 0e9553baa6..2d6f6ff60f 100644 --- a/web/source/osk/oskLayer.ts +++ b/web/source/osk/oskLayer.ts @@ -22,7 +22,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 +38,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. @@ -90,10 +90,10 @@ namespace com.keyman.osk { public refreshLayout(vkbd: VisualKeyboard, paddedHeight: number, trueHeight: 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)); + let rowHeight = Math.floor(paddedHeight/(nRows == 0 ? 1 : nRows)); if(vkbd.usesFixedHeightScaling) { - this.element.style.height=(paddedHeight)+'px'; + this.element.style.height=(trueHeight)+'px'; } for(let nRow=0; nRow Date: Thu, 26 May 2022 08:57:53 +0700 Subject: [PATCH 07/51] fix(ios): slightly better toolbar layout in safe area --- .../InfoViewController_iPhone.xib | 86 +++++++++---------- .../MainViewController.swift | 18 +++- 2 files changed, 57 insertions(+), 47 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib index 09ecbd7ada..6775c0e703 100644 --- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib +++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib @@ -23,56 +23,52 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + @@ -80,7 +76,7 @@ - + diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 0c8626ccb4..75c3bd5816 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -373,14 +373,28 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg // 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 + // This sort of thing really should be handled by the iOS layout engine, not programatically + // as it has been. The original code was written pre-iOS 11 & safe areas! + // But, in the interest of a quick pre-release fix... + let window = UIApplication.shared.windows.first + let topPadding = window?.safeAreaInsets.top ?? 0 + let bottomPadding = window?.safeAreaInsets.bottom ?? 0 + let barHeights: CGFloat = (topPadding == 0 ? AppDelegate.statusBarHeight() : topPadding) + navBarHeight() + let height: CGFloat = mainScreen.height - barHeights /*- bottomPadding*/ - kbHeight + + // Like really, this REALLY should be done with constraints. 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) + + // Partly because it breaks the InfoView's safe area insets! + // This is programmatic correction for a bug our approach has caused. + var fixedSafeArea = UIEdgeInsets() + fixedSafeArea.bottom += bottomPadding + infoView?.additionalSafeAreaInsets = fixedSafeArea } private func navBarWidth() -> CGFloat { From d29ebae194b9e89c1a9d7ceff5f3f0b08eb6f6ad Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 26 May 2022 10:21:09 +0700 Subject: [PATCH 08/51] fix(ios): broken infoview safe area guide --- .../Classes/MainViewController/MainViewController.swift | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 75c3bd5816..77c5d908c4 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -203,6 +203,9 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg 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) resizeViews(withKeyboardVisible: textView.isFirstResponder) @@ -389,12 +392,6 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg 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) - - // Partly because it breaks the InfoView's safe area insets! - // This is programmatic correction for a bug our approach has caused. - var fixedSafeArea = UIEdgeInsets() - fixedSafeArea.bottom += bottomPadding - infoView?.additionalSafeAreaInsets = fixedSafeArea } private func navBarWidth() -> CGFloat { From 051864916f74c7c03e48c194cb4a8c0e4fea7a95 Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 26 May 2022 10:31:49 +0700 Subject: [PATCH 09/51] fix(ios): removes no-longer-needed toolbar padding --- .../Classes/InfoViewController/InfoViewController_iPad.xib | 2 -- .../Classes/InfoViewController/InfoViewController_iPhone.xib | 4 +--- .../Classes/MainViewController/MainViewController.swift | 3 +-- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib index 923ebe0107..d20993ca3d 100644 --- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib +++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPad.xib @@ -28,7 +28,6 @@ - @@ -46,7 +45,6 @@ - diff --git a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib index 6775c0e703..d9f93d1102 100644 --- a/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib +++ b/ios/keyman/Keyman/Keyman/Classes/InfoViewController/InfoViewController_iPhone.xib @@ -33,7 +33,6 @@ - @@ -51,7 +50,6 @@ - @@ -76,7 +74,7 @@ - + diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 77c5d908c4..606799134b 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -384,9 +384,8 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg // But, in the interest of a quick pre-release fix... let window = UIApplication.shared.windows.first let topPadding = window?.safeAreaInsets.top ?? 0 - let bottomPadding = window?.safeAreaInsets.bottom ?? 0 let barHeights: CGFloat = (topPadding == 0 ? AppDelegate.statusBarHeight() : topPadding) + navBarHeight() - let height: CGFloat = mainScreen.height - barHeights /*- bottomPadding*/ - kbHeight + let height: CGFloat = mainScreen.height - barHeights - kbHeight // Like really, this REALLY should be done with constraints. textView.frame = CGRect(x: margin, y: barHeights + margin, From b802fee7b4992cd36ca2fb1496e93a0fa08862b1 Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 26 May 2022 10:56:55 +0700 Subject: [PATCH 10/51] change(ios): MVC subviews now use constraint-based layout --- .../MainViewController.swift | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 606799134b..92a6f2716d 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -183,6 +183,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg // 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")! @@ -191,6 +192,11 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg 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 + // Setup Info View infoView = InfoViewController { self.infoButtonClick(nil) @@ -200,13 +206,20 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg textView.font = textView?.font?.withSize(textSize) } + 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 + resizeViews(withKeyboardVisible: textView.isFirstResponder) // Setup Text Size Controller @@ -373,24 +386,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 + guard let window = UIApplication.shared.windows.first else { + return + } + + // 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 width: CGFloat = mainScreen.size.width - // This sort of thing really should be handled by the iOS layout engine, not programatically - // as it has been. The original code was written pre-iOS 11 & safe areas! - // But, in the interest of a quick pre-release fix... - let window = UIApplication.shared.windows.first - let topPadding = window?.safeAreaInsets.top ?? 0 - let barHeights: CGFloat = (topPadding == 0 ? AppDelegate.statusBarHeight() : topPadding) + navBarHeight() - let height: CGFloat = mainScreen.height - barHeights - kbHeight + let bottomPadding = window.safeAreaInsets.bottom - // Like really, this REALLY should be done with constraints. - 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) + 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 { From cb3a88902e18e37182f32f1a5c4d34394ac90425 Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 26 May 2022 14:12:02 +0700 Subject: [PATCH 11/51] fix(ios): missed i18n sites --- .../Classes/MainViewController/MainViewController.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 03c926b862..1f691bfc34 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -480,7 +480,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 +597,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 From 7988b59eff311f94cf3346a37360f24d5d77771b Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Fri, 27 May 2022 08:14:09 +0700 Subject: [PATCH 12/51] fix(android/engine): Disable haptic feedback on hardware keystrokes --- .../main/java/com/tavultesoft/kmea/KMManager.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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..b5aed646fd 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,8 +207,10 @@ 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; + private static boolean executingHardwareKeystroke = false; // Special override for when keyboard is entering a password text field. // When mayPredictOverride is true, the option {'mayPredict' = false} is set in the lm-layer @@ -459,6 +461,7 @@ public final class KMManager { public static InputMethodService getInputMethodService() { return IMService; } public static boolean executeHardwareKeystroke(int code, int shift, int lstates, int eventModifiers) { + executingHardwareKeystroke = true; if (SystemKeyboard != null) { return executeHardwareKeystroke(code, shift, KeyboardType.KEYBOARD_TYPE_SYSTEM, lstates, eventModifiers); } else if (InAppKeyboard != null) { @@ -470,6 +473,7 @@ public final class KMManager { public static boolean executeHardwareKeystroke( int code, int shift, KeyboardType keyboard, int lstates, int eventModifiers) { + executingHardwareKeystroke = true; if (keyboard == KeyboardType.KEYBOARD_TYPE_INAPP && InAppKeyboard != null) { InAppKeyboard.executeHardwareKeystroke(code, shift, lstates, eventModifiers); return true; @@ -2815,9 +2819,10 @@ 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); } + executingHardwareKeystroke = false; } }); } @@ -2960,9 +2965,10 @@ 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); } + executingHardwareKeystroke = false; } }); } From 6280164691372da417c3190d1704cc138dff19df Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 27 May 2022 10:03:37 +0700 Subject: [PATCH 13/51] change(ios): slightly defers initial keyboard display --- .../Keyboard/KeymanWebViewController.swift | 75 ++++++++++--------- .../MainViewController.swift | 13 +++- 2 files changed, 48 insertions(+), 40 deletions(-) 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/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 03c926b862..fd8a32fa38 100644 --- a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift +++ b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift @@ -409,7 +409,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 +470,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() From 651f94b9400795b3c48e4c96fc4285277d030831 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 27 May 2022 14:17:54 +1000 Subject: [PATCH 14/51] chore(ios): FV certificate hash --- oem/firstvoices/ios/exportAppStore.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oem/firstvoices/ios/exportAppStore.plist b/oem/firstvoices/ios/exportAppStore.plist index 1712d76b5f..a26d439ba5 100644 --- a/oem/firstvoices/ios/exportAppStore.plist +++ b/oem/firstvoices/ios/exportAppStore.plist @@ -7,9 +7,9 @@ teamID D7TR486TEH signingCertificate - B165C9678B6CB2CA34C397482DF2EF32A28B8CD0 + EFA9DE793B2A25F38270468AE62060CFF55CD634 installerSigningCertificate - B165C9678B6CB2CA34C397482DF2EF32A28B8CD0 + EFA9DE793B2A25F38270468AE62060CFF55CD634 provisioningProfiles com.firstvoices.keyboards From 7407894aa4110fe5c9183f89242c4d4a9d025692 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 27 May 2022 14:17:54 +1000 Subject: [PATCH 15/51] chore(ios): FV certificate hash --- oem/firstvoices/ios/exportAppStore.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oem/firstvoices/ios/exportAppStore.plist b/oem/firstvoices/ios/exportAppStore.plist index 1712d76b5f..a26d439ba5 100644 --- a/oem/firstvoices/ios/exportAppStore.plist +++ b/oem/firstvoices/ios/exportAppStore.plist @@ -7,9 +7,9 @@ teamID D7TR486TEH signingCertificate - B165C9678B6CB2CA34C397482DF2EF32A28B8CD0 + EFA9DE793B2A25F38270468AE62060CFF55CD634 installerSigningCertificate - B165C9678B6CB2CA34C397482DF2EF32A28B8CD0 + EFA9DE793B2A25F38270468AE62060CFF55CD634 provisioningProfiles com.firstvoices.keyboards From f6c41fab1b2f08ad263621413c21a3c8223ae5d5 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 27 May 2022 14:17:54 +1000 Subject: [PATCH 16/51] chore(ios): FV certificate hash --- oem/firstvoices/ios/exportAppStore.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oem/firstvoices/ios/exportAppStore.plist b/oem/firstvoices/ios/exportAppStore.plist index 1712d76b5f..a26d439ba5 100644 --- a/oem/firstvoices/ios/exportAppStore.plist +++ b/oem/firstvoices/ios/exportAppStore.plist @@ -7,9 +7,9 @@ teamID D7TR486TEH signingCertificate - B165C9678B6CB2CA34C397482DF2EF32A28B8CD0 + EFA9DE793B2A25F38270468AE62060CFF55CD634 installerSigningCertificate - B165C9678B6CB2CA34C397482DF2EF32A28B8CD0 + EFA9DE793B2A25F38270468AE62060CFF55CD634 provisioningProfiles com.firstvoices.keyboards From 0acffafdddf4f99fbd786c72831ade0e80d67d9c Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 27 May 2022 11:53:57 +0700 Subject: [PATCH 17/51] fix(web): ensure keyboard-processor tests are run --- common/web/input-processor/test.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/common/web/input-processor/test.sh b/common/web/input-processor/test.sh index 6a749fd6ce..da6b9c75de 100755 --- a/common/web/input-processor/test.sh +++ b/common/web/input-processor/test.sh @@ -69,17 +69,17 @@ test-headless ( ) { } 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 -skip-package-install || 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." From 97f7fbb68d4ffc54691302099a40dd47bc80b6f1 Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 27 May 2022 12:29:21 +0700 Subject: [PATCH 18/51] fix(web): proper teamcity reporting of keyboard-processor tests --- common/web/input-processor/test.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/common/web/input-processor/test.sh b/common/web/input-processor/test.sh index da6b9c75de..42b156dc61 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,10 +67,6 @@ 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/ } @@ -77,7 +79,7 @@ fi # 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." +./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. From 8d40a05664e16c7ec5e2d2c3c28007b7a40e7e35 Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 27 May 2022 13:07:51 +0700 Subject: [PATCH 19/51] fix(web): test reporting style... again --- common/web/input-processor/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/web/input-processor/test.sh b/common/web/input-processor/test.sh index 42b156dc61..7bad515a95 100755 --- a/common/web/input-processor/test.sh +++ b/common/web/input-processor/test.sh @@ -79,7 +79,7 @@ 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." +./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. From a75416e95a4c92513a4cb09c846432f525b6b194 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Fri, 27 May 2022 14:03:16 -0400 Subject: [PATCH 20/51] auto: increment master version to 16.0.12 --- HISTORY.md | 5 +++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 76 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index efef66921a..071ddd38ca 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,10 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index 7b5b463598..e984daccff 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -16.0.11 +16.0.12 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index dcb94baeb5..df7fbb0a77 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index 642cfc030f..b177432bb1 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "16.0.11", + "version": "16.0.12", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^16.0.11", - "@keymanapp/resources-gosh": "^16.0.11", + "@keymanapp/lexical-model-compiler": "^16.0.12", + "@keymanapp/resources-gosh": "^16.0.12", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^16.0.11", - "@keymanapp/lexical-model-layer": "^16.0.11", - "@keymanapp/models-types": "^16.0.11", - "@keymanapp/web-environment": "^16.0.11", - "@keymanapp/web-utils": "^16.0.11", + "@keymanapp/keyboard-processor": "^16.0.12", + "@keymanapp/lexical-model-layer": "^16.0.12", + "@keymanapp/models-types": "^16.0.12", + "@keymanapp/web-environment": "^16.0.12", + "@keymanapp/web-utils": "^16.0.12", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index 13154866e9..06e51896c2 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index a321b1c450..000033842a 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "16.0.11", + "version": "16.0.12", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^16.0.11", + "@keymanapp/resources-gosh": "^16.0.12", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^16.0.11", - "@keymanapp/web-environment": "^16.0.11", - "@keymanapp/web-utils": "^16.0.11", + "@keymanapp/models-types": "^16.0.12", + "@keymanapp/web-environment": "^16.0.12", + "@keymanapp/web-utils": "^16.0.12", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index b1d1384bfc..282e4dbd72 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index 02ea81fb38..00737cafff 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "16.0.11", + "version": "16.0.12", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^16.0.11", - "@keymanapp/models-types": "^16.0.11", - "@keymanapp/web-environment": "^16.0.11", - "@keymanapp/web-utils": "^16.0.11", + "@keymanapp/keyboard-processor": "^16.0.12", + "@keymanapp/models-types": "^16.0.12", + "@keymanapp/web-environment": "^16.0.12", + "@keymanapp/web-utils": "^16.0.12", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index 56a107a192..f28b2cae56 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index da186abd76..821a946a0a 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "16.0.11", + "version": "16.0.12", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^16.0.11", + "@keymanapp/web-environment": "^16.0.12", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index e5a6a00c35..01997ee174 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 240aee0f5d..c8a0337e9a 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "16.0.11", + "version": "16.0.12", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^16.0.11", - "@keymanapp/web-environment": "^16.0.11", + "@keymanapp/resources-gosh": "^16.0.12", + "@keymanapp/web-environment": "^16.0.12", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 92c00f72a1..455ef1d888 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index cd83d32745..5cfb47b4d9 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "16.0.11", + "version": "16.0.12", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^16.0.11", - "@keymanapp/web-utils": "^16.0.11", + "@keymanapp/models-types": "^16.0.12", + "@keymanapp/web-utils": "^16.0.12", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^16.0.11" + "@keymanapp/models-wordbreakers": "^16.0.12" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index b5de3edd75..9d72612941 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index 8b81907c07..716b2d68d2 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "16.0.11", + "version": "16.0.12", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 22753b45ff..f03d2f0740 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index 733b29409d..f11e95eb7d 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "16.0.11", + "version": "16.0.12", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^16.0.11", + "@keymanapp/models-types": "^16.0.12", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index eb22b8df33..8716d821bb 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 88e3e517d5..337e395937 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "16.0.11", + "version": "16.0.12", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^16.0.11", - "@keymanapp/resources-gosh": "^16.0.11", + "@keymanapp/models-types": "^16.0.12", + "@keymanapp/resources-gosh": "^16.0.12", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^16.0.11", - "@keymanapp/models-wordbreakers": "^16.0.11", - "@keymanapp/web-environment": "^16.0.11", - "@keymanapp/web-utils": "^16.0.11", + "@keymanapp/models-templates": "^16.0.12", + "@keymanapp/models-wordbreakers": "^16.0.12", + "@keymanapp/web-environment": "^16.0.12", + "@keymanapp/web-utils": "^16.0.12", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index dfab55941c..53b657ba99 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index e3157d0eb7..1e17ccf0d4 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "16.0.11", + "version": "16.0.12", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^16.0.11", + "@keymanapp/models-types": "^16.0.12", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^16.0.11", - "@keymanapp/models-wordbreakers": "^16.0.11", + "@keymanapp/models-templates": "^16.0.12", + "@keymanapp/models-wordbreakers": "^16.0.12", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index 0fd2de6d47..241a23e4ac 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index 813fdc67e8..cde99e813b 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "16.0.11", + "version": "16.0.12", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index 9c1d73f925..e4b24a0bd3 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "16.0.11" + "version": "16.0.12" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index 6b86b58f65..fe724b00fe 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index 62bd7d7a8c..c2f7bcef07 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "16.0.11", + "version": "16.0.12", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 7f60aeceb2..7fb4d70221 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 7f24c318a9..414e302c3f 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "16.0.11", + "version": "16.0.12", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^16.0.11" + "@keymanapp/resources-gosh": "^16.0.12" } } diff --git a/web/package-lock.json b/web/package-lock.json index a347f9f689..25644c6062 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "16.0.11", + "version": "16.0.12", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index b9edf5e608..77838aac87 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "16.0.11", + "version": "16.0.12", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^16.0.11", - "@keymanapp/web-sentry-manager": "^16.0.11", + "@keymanapp/resources-gosh": "^16.0.12", + "@keymanapp/web-sentry-manager": "^16.0.12", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^16.0.11", - "@keymanapp/keyboard-processor": "^16.0.11", - "@keymanapp/lexical-model-layer": "^16.0.11", - "@keymanapp/models-types": "^16.0.11", - "@keymanapp/recorder-core": "^16.0.11", - "@keymanapp/web-environment": "^16.0.11", - "@keymanapp/web-utils": "^16.0.11", + "@keymanapp/input-processor": "^16.0.12", + "@keymanapp/keyboard-processor": "^16.0.12", + "@keymanapp/lexical-model-layer": "^16.0.12", + "@keymanapp/models-types": "^16.0.12", + "@keymanapp/recorder-core": "^16.0.12", + "@keymanapp/web-environment": "^16.0.12", + "@keymanapp/web-utils": "^16.0.12", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From cd2b32fc4dd9c946bb156a45a45f083c57772d78 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Fri, 27 May 2022 14:05:13 -0400 Subject: [PATCH 21/51] auto: increment beta version to 15.0.254 --- HISTORY.md | 4 ++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 75 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 51e1f47fd9..bc8becf75b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,9 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index 4b6529d8a8..c68641cd97 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.253 \ No newline at end of file +15.0.254 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index ebfb1f74b5..b8b6c60254 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index a8840a1a0e..0b6527d301 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.253", + "version": "15.0.254", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.253", - "@keymanapp/resources-gosh": "^15.0.253", + "@keymanapp/lexical-model-compiler": "^15.0.254", + "@keymanapp/resources-gosh": "^15.0.254", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.253", - "@keymanapp/lexical-model-layer": "^15.0.253", - "@keymanapp/models-types": "^15.0.253", - "@keymanapp/web-environment": "^15.0.253", - "@keymanapp/web-utils": "^15.0.253", + "@keymanapp/keyboard-processor": "^15.0.254", + "@keymanapp/lexical-model-layer": "^15.0.254", + "@keymanapp/models-types": "^15.0.254", + "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/web-utils": "^15.0.254", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index f3254c34be..ce4d6e9ad2 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index 5256603453..aba1e1bf95 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.253", + "version": "15.0.254", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.253", + "@keymanapp/resources-gosh": "^15.0.254", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.253", - "@keymanapp/web-environment": "^15.0.253", - "@keymanapp/web-utils": "^15.0.253", + "@keymanapp/models-types": "^15.0.254", + "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/web-utils": "^15.0.254", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index e5fbbac7ba..95acbe9a86 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index e8071d5820..59ddefb01b 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.253", + "version": "15.0.254", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.253", - "@keymanapp/models-types": "^15.0.253", - "@keymanapp/web-environment": "^15.0.253", - "@keymanapp/web-utils": "^15.0.253", + "@keymanapp/keyboard-processor": "^15.0.254", + "@keymanapp/models-types": "^15.0.254", + "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/web-utils": "^15.0.254", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index 4daa8c1b3c..e8d77d9bfd 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index b776daf282..3303f13f31 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.253", + "version": "15.0.254", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.253", + "@keymanapp/web-environment": "^15.0.254", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index 0048d814be..19702d83aa 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 7bb935cf83..78fdcf34af 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.253", + "version": "15.0.254", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.253", - "@keymanapp/web-environment": "^15.0.253", + "@keymanapp/resources-gosh": "^15.0.254", + "@keymanapp/web-environment": "^15.0.254", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 23dacd44eb..6b091131fd 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index 5fbb8a6942..6efce41df8 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.253", + "version": "15.0.254", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.253", - "@keymanapp/web-utils": "^15.0.253", + "@keymanapp/models-types": "^15.0.254", + "@keymanapp/web-utils": "^15.0.254", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.253" + "@keymanapp/models-wordbreakers": "^15.0.254" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 2f58192a15..2b29aeaf24 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index 0aa0330b8a..d92aecf12f 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.253", + "version": "15.0.254", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 399b8cb2b7..1c3c527656 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index eea1a29b4e..680f08f9ce 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.253", + "version": "15.0.254", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.253", + "@keymanapp/models-types": "^15.0.254", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index e8485c6b4f..47b4eae2e7 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 73d7a97116..41707477f1 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.253", + "version": "15.0.254", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.253", - "@keymanapp/resources-gosh": "^15.0.253", + "@keymanapp/models-types": "^15.0.254", + "@keymanapp/resources-gosh": "^15.0.254", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.253", - "@keymanapp/models-wordbreakers": "^15.0.253", - "@keymanapp/web-environment": "^15.0.253", - "@keymanapp/web-utils": "^15.0.253", + "@keymanapp/models-templates": "^15.0.254", + "@keymanapp/models-wordbreakers": "^15.0.254", + "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/web-utils": "^15.0.254", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index df476cfde7..fea6cf54f0 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 8981446049..265cd88aec 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.253", + "version": "15.0.254", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.253", + "@keymanapp/models-types": "^15.0.254", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.253", - "@keymanapp/models-wordbreakers": "^15.0.253", + "@keymanapp/models-templates": "^15.0.254", + "@keymanapp/models-wordbreakers": "^15.0.254", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index 989d6779d5..023750eae3 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index 5a8b1e4687..64409855a7 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.253", + "version": "15.0.254", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index 21c091c413..5478b309e0 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.253" + "version": "15.0.254" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index 65236d6738..a99d8893a1 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index d3ea90f1dd..add95038e9 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.253", + "version": "15.0.254", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 8ea32af212..06ac8909ac 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 3ba16ffc2f..9ecb2685c4 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.253", + "version": "15.0.254", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.253" + "@keymanapp/resources-gosh": "^15.0.254" } } diff --git a/web/package-lock.json b/web/package-lock.json index 10bc6051fc..e1b28006e9 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.253", + "version": "15.0.254", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index fef3bf297e..ce07bb8829 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.253", + "version": "15.0.254", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.253", - "@keymanapp/web-sentry-manager": "^15.0.253", + "@keymanapp/resources-gosh": "^15.0.254", + "@keymanapp/web-sentry-manager": "^15.0.254", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.253", - "@keymanapp/keyboard-processor": "^15.0.253", - "@keymanapp/lexical-model-layer": "^15.0.253", - "@keymanapp/models-types": "^15.0.253", - "@keymanapp/recorder-core": "^15.0.253", - "@keymanapp/web-environment": "^15.0.253", - "@keymanapp/web-utils": "^15.0.253", + "@keymanapp/input-processor": "^15.0.254", + "@keymanapp/keyboard-processor": "^15.0.254", + "@keymanapp/lexical-model-layer": "^15.0.254", + "@keymanapp/models-types": "^15.0.254", + "@keymanapp/recorder-core": "^15.0.254", + "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/web-utils": "^15.0.254", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From 304c37f810160911f9d553d4d700f3f225426178 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 28 May 2022 18:05:32 +1000 Subject: [PATCH 22/51] chore(web): fix broken dev_resources copy Accidently broke the copy of dev_resources.js to dev_resources.js.map! --- web/source/build_dev_resources.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/source/build_dev_resources.sh b/web/source/build_dev_resources.sh index 4989bfd879..22c227142c 100755 --- a/web/source/build_dev_resources.sh +++ b/web/source/build_dev_resources.sh @@ -25,4 +25,5 @@ if [ $? -ne 0 ]; then fail "Typescript compilation failed for 'dev_resources'." fi -cp ../release/dev_resources/dev_resources.js "$ENGINE_TEST_OUTPUT/dev_resources.js.map" +cp ../release/dev_resources/dev_resources.js "$ENGINE_TEST_OUTPUT/dev_resources.js" +cp ../release/dev_resources/dev_resources.js.map "$ENGINE_TEST_OUTPUT/dev_resources.js.map" From 9f3a6d206ebeb4520cbada37363a29f4c0139892 Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 30 May 2022 08:18:40 +0700 Subject: [PATCH 23/51] change(ios): factorizes MVC view inits --- .../MainViewController.swift | 120 ++++++++++-------- 1 file changed, 67 insertions(+), 53 deletions(-) diff --git a/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift b/ios/keyman/Keyman/Keyman/Classes/MainViewController/MainViewController.swift index 92a6f2716d..204b3c5110 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,59 +246,7 @@ class MainViewController: UIViewController, TextViewDelegate, UIActionSheetDeleg navbarBackground.setOrientation(UIApplication.shared.statusBarOrientation) } - // 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 - - // Setup Info View - infoView = InfoViewController { - self.infoButtonClick(nil) - } - if UIDevice.current.userInterfaceIdiom != .phone { - textSize *= 2 - textView.font = textView?.font?.withSize(textSize) - } - - 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 - - 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() From 2eb0ccfcc36e25f17d5f2a3d080727ac0d07f947 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Mon, 30 May 2022 14:02:44 -0400 Subject: [PATCH 24/51] auto: increment beta version to 15.0.255 --- HISTORY.md | 7 +++++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 78 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index bc8becf75b..a7043c7e8c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,12 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index c68641cd97..f331d15573 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.254 \ No newline at end of file +15.0.255 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index b8b6c60254..70f170ff3c 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index 0b6527d301..cf113c0b46 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.254", + "version": "15.0.255", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.254", - "@keymanapp/resources-gosh": "^15.0.254", + "@keymanapp/lexical-model-compiler": "^15.0.255", + "@keymanapp/resources-gosh": "^15.0.255", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.254", - "@keymanapp/lexical-model-layer": "^15.0.254", - "@keymanapp/models-types": "^15.0.254", - "@keymanapp/web-environment": "^15.0.254", - "@keymanapp/web-utils": "^15.0.254", + "@keymanapp/keyboard-processor": "^15.0.255", + "@keymanapp/lexical-model-layer": "^15.0.255", + "@keymanapp/models-types": "^15.0.255", + "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/web-utils": "^15.0.255", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index ce4d6e9ad2..eead0e3c46 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index aba1e1bf95..cb78154809 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.254", + "version": "15.0.255", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.254", + "@keymanapp/resources-gosh": "^15.0.255", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.254", - "@keymanapp/web-environment": "^15.0.254", - "@keymanapp/web-utils": "^15.0.254", + "@keymanapp/models-types": "^15.0.255", + "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/web-utils": "^15.0.255", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index 95acbe9a86..ef7fac529c 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index 59ddefb01b..14f84b82ed 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.254", + "version": "15.0.255", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.254", - "@keymanapp/models-types": "^15.0.254", - "@keymanapp/web-environment": "^15.0.254", - "@keymanapp/web-utils": "^15.0.254", + "@keymanapp/keyboard-processor": "^15.0.255", + "@keymanapp/models-types": "^15.0.255", + "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/web-utils": "^15.0.255", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index e8d77d9bfd..e7a74058ce 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index 3303f13f31..558a49804b 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.254", + "version": "15.0.255", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/web-environment": "^15.0.255", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index 19702d83aa..6852628b25 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 78fdcf34af..eddf8e749b 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.254", + "version": "15.0.255", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.254", - "@keymanapp/web-environment": "^15.0.254", + "@keymanapp/resources-gosh": "^15.0.255", + "@keymanapp/web-environment": "^15.0.255", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 6b091131fd..9ac234f019 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index 6efce41df8..8aeac96b3d 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.254", + "version": "15.0.255", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.254", - "@keymanapp/web-utils": "^15.0.254", + "@keymanapp/models-types": "^15.0.255", + "@keymanapp/web-utils": "^15.0.255", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.254" + "@keymanapp/models-wordbreakers": "^15.0.255" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 2b29aeaf24..5a600c8533 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index d92aecf12f..086ab784f8 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.254", + "version": "15.0.255", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 1c3c527656..2893da9a90 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index 680f08f9ce..f7094b2642 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.254", + "version": "15.0.255", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.254", + "@keymanapp/models-types": "^15.0.255", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index 47b4eae2e7..fbba81b8d1 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 41707477f1..db0fe59964 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.254", + "version": "15.0.255", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.254", - "@keymanapp/resources-gosh": "^15.0.254", + "@keymanapp/models-types": "^15.0.255", + "@keymanapp/resources-gosh": "^15.0.255", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.254", - "@keymanapp/models-wordbreakers": "^15.0.254", - "@keymanapp/web-environment": "^15.0.254", - "@keymanapp/web-utils": "^15.0.254", + "@keymanapp/models-templates": "^15.0.255", + "@keymanapp/models-wordbreakers": "^15.0.255", + "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/web-utils": "^15.0.255", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index fea6cf54f0..b6f795f4a1 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 265cd88aec..46acc76b54 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.254", + "version": "15.0.255", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.254", + "@keymanapp/models-types": "^15.0.255", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.254", - "@keymanapp/models-wordbreakers": "^15.0.254", + "@keymanapp/models-templates": "^15.0.255", + "@keymanapp/models-wordbreakers": "^15.0.255", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index 023750eae3..db2e47f32c 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index 64409855a7..8863ba1e1d 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.254", + "version": "15.0.255", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index 5478b309e0..c19a82eccd 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.254" + "version": "15.0.255" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index a99d8893a1..dc073fd14e 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index add95038e9..da57f12fcb 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.254", + "version": "15.0.255", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 06ac8909ac..2d5b8cc44d 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 9ecb2685c4..410d1f937a 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.254", + "version": "15.0.255", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.254" + "@keymanapp/resources-gosh": "^15.0.255" } } diff --git a/web/package-lock.json b/web/package-lock.json index e1b28006e9..803a727584 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.254", + "version": "15.0.255", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index ce07bb8829..eedb216125 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.254", + "version": "15.0.255", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.254", - "@keymanapp/web-sentry-manager": "^15.0.254", + "@keymanapp/resources-gosh": "^15.0.255", + "@keymanapp/web-sentry-manager": "^15.0.255", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.254", - "@keymanapp/keyboard-processor": "^15.0.254", - "@keymanapp/lexical-model-layer": "^15.0.254", - "@keymanapp/models-types": "^15.0.254", - "@keymanapp/recorder-core": "^15.0.254", - "@keymanapp/web-environment": "^15.0.254", - "@keymanapp/web-utils": "^15.0.254", + "@keymanapp/input-processor": "^15.0.255", + "@keymanapp/keyboard-processor": "^15.0.255", + "@keymanapp/lexical-model-layer": "^15.0.255", + "@keymanapp/models-types": "^15.0.255", + "@keymanapp/recorder-core": "^15.0.255", + "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/web-utils": "^15.0.255", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From a59fa21d61f9730761b3e18f06f4509336c3500f Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Tue, 31 May 2022 14:02:28 -0400 Subject: [PATCH 25/51] auto: increment beta version to 15.0.256 --- HISTORY.md | 4 ++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 75 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index a7043c7e8c..36440f581e 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,9 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index f331d15573..2fc36d4c29 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.255 \ No newline at end of file +15.0.256 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index 70f170ff3c..d7afcbe3ee 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index cf113c0b46..5dde9a9b33 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.255", + "version": "15.0.256", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.255", - "@keymanapp/resources-gosh": "^15.0.255", + "@keymanapp/lexical-model-compiler": "^15.0.256", + "@keymanapp/resources-gosh": "^15.0.256", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.255", - "@keymanapp/lexical-model-layer": "^15.0.255", - "@keymanapp/models-types": "^15.0.255", - "@keymanapp/web-environment": "^15.0.255", - "@keymanapp/web-utils": "^15.0.255", + "@keymanapp/keyboard-processor": "^15.0.256", + "@keymanapp/lexical-model-layer": "^15.0.256", + "@keymanapp/models-types": "^15.0.256", + "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/web-utils": "^15.0.256", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index eead0e3c46..6995a5d48d 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index cb78154809..18138e49f6 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.255", + "version": "15.0.256", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.255", + "@keymanapp/resources-gosh": "^15.0.256", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.255", - "@keymanapp/web-environment": "^15.0.255", - "@keymanapp/web-utils": "^15.0.255", + "@keymanapp/models-types": "^15.0.256", + "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/web-utils": "^15.0.256", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index ef7fac529c..862c15cece 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index 14f84b82ed..c23daa9e2b 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.255", + "version": "15.0.256", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.255", - "@keymanapp/models-types": "^15.0.255", - "@keymanapp/web-environment": "^15.0.255", - "@keymanapp/web-utils": "^15.0.255", + "@keymanapp/keyboard-processor": "^15.0.256", + "@keymanapp/models-types": "^15.0.256", + "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/web-utils": "^15.0.256", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index e7a74058ce..c500b8fa3a 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index 558a49804b..9d8c1510a4 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.255", + "version": "15.0.256", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/web-environment": "^15.0.256", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index 6852628b25..b260cd14c4 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index eddf8e749b..c336858e3d 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.255", + "version": "15.0.256", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.255", - "@keymanapp/web-environment": "^15.0.255", + "@keymanapp/resources-gosh": "^15.0.256", + "@keymanapp/web-environment": "^15.0.256", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 9ac234f019..38488e539e 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index 8aeac96b3d..4423f6e0a8 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.255", + "version": "15.0.256", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.255", - "@keymanapp/web-utils": "^15.0.255", + "@keymanapp/models-types": "^15.0.256", + "@keymanapp/web-utils": "^15.0.256", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.255" + "@keymanapp/models-wordbreakers": "^15.0.256" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 5a600c8533..22cfd45857 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index 086ab784f8..ed242cec5b 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.255", + "version": "15.0.256", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 2893da9a90..0a045a0c7a 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index f7094b2642..f770a8c903 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.255", + "version": "15.0.256", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.255", + "@keymanapp/models-types": "^15.0.256", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index fbba81b8d1..e9ac745266 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index db0fe59964..50dd923b7e 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.255", + "version": "15.0.256", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.255", - "@keymanapp/resources-gosh": "^15.0.255", + "@keymanapp/models-types": "^15.0.256", + "@keymanapp/resources-gosh": "^15.0.256", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.255", - "@keymanapp/models-wordbreakers": "^15.0.255", - "@keymanapp/web-environment": "^15.0.255", - "@keymanapp/web-utils": "^15.0.255", + "@keymanapp/models-templates": "^15.0.256", + "@keymanapp/models-wordbreakers": "^15.0.256", + "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/web-utils": "^15.0.256", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index b6f795f4a1..50038e3fe0 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 46acc76b54..9095968044 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.255", + "version": "15.0.256", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.255", + "@keymanapp/models-types": "^15.0.256", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.255", - "@keymanapp/models-wordbreakers": "^15.0.255", + "@keymanapp/models-templates": "^15.0.256", + "@keymanapp/models-wordbreakers": "^15.0.256", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index db2e47f32c..958bf85cf8 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index 8863ba1e1d..52078632d9 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.255", + "version": "15.0.256", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index c19a82eccd..00d1c27c94 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.255" + "version": "15.0.256" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index dc073fd14e..fef2c457e2 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index da57f12fcb..c100200e80 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.255", + "version": "15.0.256", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 2d5b8cc44d..50ef1bdc17 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 410d1f937a..6ba9a972d8 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.255", + "version": "15.0.256", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.255" + "@keymanapp/resources-gosh": "^15.0.256" } } diff --git a/web/package-lock.json b/web/package-lock.json index 803a727584..73145310ed 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.255", + "version": "15.0.256", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index eedb216125..789009eb5d 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.255", + "version": "15.0.256", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.255", - "@keymanapp/web-sentry-manager": "^15.0.255", + "@keymanapp/resources-gosh": "^15.0.256", + "@keymanapp/web-sentry-manager": "^15.0.256", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.255", - "@keymanapp/keyboard-processor": "^15.0.255", - "@keymanapp/lexical-model-layer": "^15.0.255", - "@keymanapp/models-types": "^15.0.255", - "@keymanapp/recorder-core": "^15.0.255", - "@keymanapp/web-environment": "^15.0.255", - "@keymanapp/web-utils": "^15.0.255", + "@keymanapp/input-processor": "^15.0.256", + "@keymanapp/keyboard-processor": "^15.0.256", + "@keymanapp/lexical-model-layer": "^15.0.256", + "@keymanapp/models-types": "^15.0.256", + "@keymanapp/recorder-core": "^15.0.256", + "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/web-utils": "^15.0.256", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From fbbba03acc93856d5ecb03b8e1325d3af13811a2 Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 1 Jun 2022 08:40:12 +0700 Subject: [PATCH 26/51] fix(web): prevents overminification of .osk for float, toolbar --- web/source/kmwuifloat.ts | 314 +++++++++++++++++++------------------ web/source/kmwuitoolbar.ts | 9 +- 2 files changed, 165 insertions(+), 158 deletions(-) diff --git a/web/source/kmwuifloat.ts b/web/source/kmwuifloat.ts index abe167c704..4c6fd49f0c 100644 --- a/web/source/kmwuifloat.ts +++ b/web/source/kmwuifloat.ts @@ -8,7 +8,7 @@ // If a UI module has been loaded, we can rely on the publically-published 'name' property // having been set as a way to short-out a UI reload. Its parent object always exists by // this point in the build process. -if(!window['keyman']['ui']['name']) { +if(!window['keyman']['ui']['name']) { /********************************/ /* */ /* Floating User Interface */ @@ -22,7 +22,7 @@ if(!window['keyman']['ui']['name']) { * Instead, use the --output-wrapper command during optimization, which will * add the anonymous function to enclose all code, including those optimized * variables which would otherwise have global scope. - **/ + **/ try { @@ -33,112 +33,113 @@ if(!window['keyman']['ui']['name']) { // Disable UI for touch devices if(util['isTouchDevice']()) throw ''; - + // User interface global and local variables keymanweb['ui'] = {}; var ui=keymanweb['ui']; ui['name'] = 'float'; - - ui.KeyboardSelector = null; - + + ui.KeyboardSelector = null; + ui.outerDiv = null; // replaces DivKeymanWeb ui.innerDiv = null; // replaces Lkdiv - ui.oskButton = null; // toggles OSK on or off + ui.oskButton = null; // toggles OSK on or off ui.kbdIcon = null; // keyboard icon within OSK button ui.selecting = false; // control focus behaviour during selection ui.updateList = true; // control keyboard list updating ui.updateTimer = null; // prevent unnecessary list refreshing ui.floatRight = false; // align left by default - ui.initialized = false; // initialization flag + ui.initialized = false; // initialization flag /** * Display or hide the OSK from the OSK icon link - */ + */ ui.toggleOSK = function() { - let osk = keymanweb.osk; + // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. + let osk = keymanweb['osk']; keymanweb['focusLastActiveElement'](); - if(osk && osk['show']) + if(osk && osk['show']) { if(osk['isEnabled']()) osk['hide'](); else osk['show'](true); } if(window.event) window.event.returnValue=false; return false; } - + /** * Function Initialize - * Scope Private + * Scope Private * Description UI Initialization **/ ui['initialize'] = ui.Initialize = function() - { + { // Must always initialize after keymanWeb itself, otherwise options are undefined if(!keymanweb['initialized']) { window.setTimeout(ui.Initialize,50); return; } - + if(ui.initialized || util['isTouchDevice']()) return; - + var imgPath=util['getOption']('resources')+"ui/float/"; - + ui.outerDiv = util['createElement']('DIV'); // Container for UI (visible when KeymanWeb is active) ui.innerDiv = util['createElement']('DIV'); // inner div for UI - ui.kbdIcon = util['createElement']('IMG'); + ui.kbdIcon = util['createElement']('IMG'); ui.outerDiv.innerHTML = "" + "KeymanWeb"; /* I2081 */ - var s=ui.outerDiv.style; + var s=ui.outerDiv.style; s.backgroundColor='white'; s.border='solid 1px black'; s.position='absolute'; s.height='18px'; - s.font='bold 8pt sans-serif'; s.display='none'; s.textAlign='left';s.overflow='hidden'; - + s.font='bold 8pt sans-serif'; s.display='none'; s.textAlign='left';s.overflow='hidden'; + util['attachDOMEvent'](ui.outerDiv,'mousedown',ui._SelectorMouseDown); util['attachDOMEvent'](ui.outerDiv,'mouseover',ui._SelectorMouseOver); util['attachDOMEvent'](ui.outerDiv,'mouseout',ui._SelectorMouseOut); - + // Register keymanweb events - ui.registerEvents(); + ui.registerEvents(); ui.kbdIcon.src = imgPath+'kbdicon.gif'; ui.kbdIcon.title = 'Display visual keyboard'; // Set initial OSK button style (off by default) ui.oskButtonState(false); - - var Lhdiv = util['createElement']('DIV'); + + var Lhdiv = util['createElement']('DIV'); ui.oskButton = Lhdiv; - Lhdiv.onclick = ui.toggleOSK; + Lhdiv.onclick = ui.toggleOSK; Lhdiv.appendChild(ui.kbdIcon); ui.innerDiv.appendChild(Lhdiv); ui.outerDiv.appendChild(ui.innerDiv); document.body.appendChild(ui.outerDiv); ui.KeyboardSelector = util['createElement']('SELECT'); // ControlSelector - KeymanWeb keyboard selector - + s=ui.KeyboardSelector.style; s.font='8pt sans-serif'; s.backgroundColor='#f3e5de'; s.border='solid 1px #7B9EBD'; s.height='16px';s.margin='1px 2px 0px 2px'; s.left='20px'; s.top='0px'; s.position='absolute'; s.maxWidth='150px'; util['attachDOMEvent'](ui.KeyboardSelector,'change',ui.SelectKeyboardChange); util['attachDOMEvent'](ui.KeyboardSelector,'blur',ui.SelectBlur); - - ui.innerDiv.appendChild(ui.KeyboardSelector); //this may need to be moved up.... + + ui.innerDiv.appendChild(ui.KeyboardSelector); //this may need to be moved up.... // Check required interface alignment and default keyboard var opt=util['getOption']('ui'),dfltKeyboard='(System keyboard)'; if(opt && typeof(opt) == 'object') { - if(typeof(opt['position']) == 'string' && opt['position'] == 'right') + if(typeof(opt['position']) == 'string' && opt['position'] == 'right') ui.floatRight = true; - if(typeof(opt['default']) == 'string') - dfltKeyboard = opt['default']; + if(typeof(opt['default']) == 'string') + dfltKeyboard = opt['default']; } var Lopt = util['createElement']('OPTION'); Lopt.value = '-'; Lopt.innerHTML = dfltKeyboard; - ui.KeyboardSelector.appendChild(Lopt); + ui.KeyboardSelector.appendChild(Lopt); Lopt = null; // This must be set before updating the keyboard list to prevent recursion! @@ -146,18 +147,18 @@ if(!window['keyman']['ui']['name']) { // Update the keyboard list if required ui.updateKeyboardList(); - + //may also want to initialize style sheet here ?? } ui._UnloadUserInterface = function() { - ui.KeyboardSelector = ui.innerDiv = ui.outerDiv = ui.kbdIcon = null; + ui.KeyboardSelector = ui.innerDiv = ui.outerDiv = ui.kbdIcon = null; }; /** * UI removal - resource cleanup - */ + */ keymanweb['addEventListener']('unloaduserinterface', ui._UnloadUserInterface); - + ui.shutdown = function() { var root = ui.outerDiv; @@ -171,53 +172,53 @@ if(!window['keyman']['ui']['name']) { window.removeEventListener('resize', ui._Resize, false); } } - + /** * Update list of keyboards shown by UI - */ + */ ui.updateKeyboardList = function() { // Do nothing unless list requires updating - if(ui.updateList) - { + if(ui.updateList) + { if(!ui.initialized) ui.Initialize(); - + // Remove current list (except for default element) var i,opts=ui.KeyboardSelector.getElementsByTagName('OPTION'); for(i=opts.length; i>1; i--) { ui.KeyboardSelector.removeChild(opts[i-1]); - } - - // Loop over installed keyboards and add to selection list - var Ln,Lopt,Lkbds=keymanweb['getKeyboards'](); - - for(Ln=0; Ln 1) ui.updateMenu(sk[0],sk[1]); }); - + /** * Keyboard change event handler - * + * * Update menu selection and control OSK display appropriately */ - keymanweb['addEventListener']('keyboardchange', + keymanweb['addEventListener']('keyboardchange', function(p) { - // Update the keyboard selector whenever a keyboard is loaded - ui.updateMenu(p['internalName'],p['languageCode']); - - // (Conditionally) display the OSK button, and set the style - ui.addButtonOSK(); + // Update the keyboard selector whenever a keyboard is loaded + ui.updateMenu(p['internalName'],p['languageCode']); + + // (Conditionally) display the OSK button, and set the style + ui.addButtonOSK(); }); - - let osk = keymanweb.osk; + + // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. + let osk = keymanweb['osk']; if(!osk) { return; } /** * Show OSK event handler: show or hide the OSK button (never display if a CJK keyboard) - */ + */ osk['addEventListener']('show', function(oskPosition) - { - ui.addButtonOSK(); - return oskPosition; - }); + { + ui.addButtonOSK(); + return oskPosition; + }); /** * Hide OSK event handler - */ - + */ + osk['addEventListener']('hide', function(hiddenByUser) { if(ui.initialized) ui.oskButtonState(false); - }); + }); } - + /** * Function _SelectorMouseDown - * Scope Private + * Scope Private * @param {Object} e event * Description Set KMW UI activation state on mouse click - */ + */ ui._SelectorMouseDown = function(e) - { + { if(keymanweb['activatingUI']) keymanweb['activatingUI'](1); } @@ -370,7 +372,7 @@ if(!window['keyman']['ui']['name']) { * Scope Private * @param {Object} e event * Description Set KMW UI activation state on mouse over - */ + */ ui._SelectorMouseOver = function(e) { if(keymanweb['activatingUI']) keymanweb['activatingUI'](1); @@ -381,7 +383,7 @@ if(!window['keyman']['ui']['name']) { * Scope Private * @param {Object} e event * Description Clear KMW UI activation state on mouse out - */ + */ ui._SelectorMouseOut = function(e) { if(keymanweb['activatingUI']) keymanweb['activatingUI'](0); @@ -392,9 +394,9 @@ if(!window['keyman']['ui']['name']) { * Scope Private * @param {Object} e event * Description Change active keyboard in response to user selection event - */ + */ ui.SelectKeyboardChange = function(e) - { + { if(ui.KeyboardSelector.value != '-') { var i=ui.KeyboardSelector.selectedIndex; @@ -402,8 +404,8 @@ if(!window['keyman']['ui']['name']) { keymanweb['setActiveKeyboard'](t[0],t[1]); } else - keymanweb['setActiveKeyboard'](''); - + keymanweb['setActiveKeyboard'](''); + //if(osk['show']) osk['show'](osk['isEnabled']()); handled by keyboard change event??? keymanweb['focusLastActiveElement'](); ui.selecting = true; @@ -414,50 +416,50 @@ if(!window['keyman']['ui']['name']) { * Scope Private * @param {Object} e event * Description Ensure OSK is hidden when moving focus after reselecting a keyboard - */ + */ ui.SelectBlur = function(e) { if(!ui.selecting) keymanweb['focusLastActiveElement'](); - ui.selecting = false; + ui.selecting = false; } - + /** * Function ShowInterface * Scope Private * @param {number=} Px x-position for KMW window * @param {number=} Py y-position for KMW window * Description Display KMW window at specified position - */ + */ ui.ShowInterface = function(Px, Py) { if(!ui.initialized) return; - - var Ls = ui.outerDiv.style; + + var Ls = ui.outerDiv.style; if(Px && Py) { Ls.left = Px + 'px'; Ls.top = Py + 'px'; } Ls.display = 'block'; - + ui.kbdIcon.style.left = ui.KeyboardSelector.offsetWidth + 24 + 'px'; - + // (Conditionally) display the OSK button ui.addButtonOSK(); - + // Set the language selection to the currently active keyboard, if listed ui.updateMenu(keymanweb['getActiveKeyboard'](),keymanweb['getActiveLanguage']()); } - + /** * Function HideInterface * Scope Private - * Description Completely hide KMW window - */ + * Description Completely hide KMW window + */ ui.HideInterface = function() { if(!ui.initialized) return; - + ui.outerDiv.style.display = 'none'; } @@ -466,29 +468,31 @@ if(!window['keyman']['ui']['name']) { * Function addButtonOSK * Scope Private * Description Display the OSK button unless a CJK keyboard (or English) - */ + */ ui.addButtonOSK = function() { if(ui.oskButton != null) { - if(keymanweb['isCJK']() || (ui.KeyboardSelector.selectedIndex==0)) + if(keymanweb['isCJK']() || (ui.KeyboardSelector.selectedIndex==0)) { ui.oskButton.style.display = 'none'; - ui.outerDiv.style.width = ui.KeyboardSelector.offsetWidth+30+'px'; - } - else + ui.outerDiv.style.width = ui.KeyboardSelector.offsetWidth+30+'px'; + } + else { ui.oskButton.style.display = 'block'; - if(keymanweb.osk) { - ui.oskButtonState(keymanweb.osk['isEnabled']()); + // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. + let osk = keymanweb['osk']; + if(osk) { + ui.oskButtonState(osk['isEnabled']()); } else { ui.oskButtonState(false); } ui.outerDiv.style.width = ui.KeyboardSelector.offsetWidth+56+'px'; - } + } } } - //TODO: had to expose properties of params - what does that do? (focus event doesn't normally include these properties?) + //TODO: had to expose properties of params - what does that do? (focus event doesn't normally include these properties?) keymanweb['addEventListener']('controlfocused', function(params) { @@ -501,32 +505,32 @@ if(!window['keyman']['ui']['name']) { if(ui.floatRight) // I1296 ui.ShowInterface(util['getAbsoluteX'](params.target) + params.target.offsetWidth + 1, util['getAbsoluteY'](params.target) + 1); else - ui.ShowInterface(util['getAbsoluteX'](params.target), util['getAbsoluteY'](params.target) + ui.ShowInterface(util['getAbsoluteX'](params.target), util['getAbsoluteY'](params.target) - parseInt(util['getStyleValue'](ui.outerDiv,'height'),10) - 2); } return true; - }); + }); keymanweb['addEventListener']('controlblurred', function(params) - { + { if(!params['event']) return true; // I2404 - Manage IE events in IFRAMEs - + if(!params['isActivating']) ui.HideInterface(); return true; }); - + /** * Function _Resize - * Scope Private + * Scope Private * @param {Object} e event object - * @return {boolean} - * Description Display KMW OSK at specified position (returns nothing) - */ + * @return {boolean} + * Description Display KMW OSK at specified position (returns nothing) + */ ui._Resize = function(e) { - if(ui.outerDiv.style.display =='block') + if(ui.outerDiv.style.display =='block') { var elem = keymanweb['getLastActiveElement'](); if(ui.floatRight) // I1296 @@ -535,17 +539,17 @@ if(!window['keyman']['ui']['name']) { ui.ShowInterface(util['getAbsoluteX'](elem) + 1, util['getAbsoluteY'](elem) + elem.offsetHeight + 1); } return true; - } - + } + if(window.addEventListener) window.addEventListener('resize', ui._Resize, false); // Initialize after KMW is fully initialized, if UI already loaded keymanweb['addEventListener']('loaduserinterface',ui.Initialize); - + // but also call initialization when script loaded, which is after KMW initialization for asynchronous script loading ui.Initialize(); - + } catch(err){} // Do not wrap in an anonymous function - let the closure compiler do that, but diff --git a/web/source/kmwuitoolbar.ts b/web/source/kmwuitoolbar.ts index 41fa618882..b0c1a481cf 100644 --- a/web/source/kmwuitoolbar.ts +++ b/web/source/kmwuitoolbar.ts @@ -751,7 +751,8 @@ if(!window['keyman']['ui']['name']) { **/ ui.showOSK = function(event) { - let osk = keymanweb.osk; + // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. + let osk = keymanweb['osk']; if(!osk) { return; @@ -914,7 +915,8 @@ if(!window['keyman']['ui']['name']) { } else { - let osk = keymanweb.osk; + // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. + let osk = keymanweb['osk']; ui.oskButtonNode.className = (osk && osk['isEnabled']()) ? 'kmw_button_selected' : 'kmw_button'; } } @@ -1013,7 +1015,8 @@ if(!window['keyman']['ui']['name']) { ui.registerEvents = function() { - let osk = keymanweb.osk; + // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. + let osk = keymanweb['osk']; if(!osk) { return; } From a83b4010f782cf9cbdce12cb42cb4ac022a592de Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 1 Jun 2022 09:47:18 +0700 Subject: [PATCH 27/51] fix(web): toolbar did not note ui activation --- web/source/kmwuitoolbar.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/web/source/kmwuitoolbar.ts b/web/source/kmwuitoolbar.ts index b0c1a481cf..e13e0c3db0 100644 --- a/web/source/kmwuitoolbar.ts +++ b/web/source/kmwuitoolbar.ts @@ -253,6 +253,7 @@ 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')); @@ -505,7 +506,7 @@ if(!window['keyman']['ui']['name']) { var p1=ui.ToolBar_Text['SelectKeyboardPre']+kbd['Name'],p2=ui.ToolBar_Text['SelectKeyboardSuf']; if(p1.toLowerCase().indexOf(p2.toLowerCase()) < 0) p1=p1+' '+ p2; aNode.title = p1; - aNode.onclick = function(event) { return ui.selectLanguage(event, lang) }; + aNode.onclick = function(event) { return ui.selectLanguage(event, lang) }; // FINDME aNode.appendChild(ui.createNode('div', 'kmw_img_kbd', 'kmw_img')); ui.lgText=ui.truncate(lang.name,28); @@ -667,6 +668,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 +696,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,6 +754,7 @@ if(!window['keyman']['ui']['name']) { **/ ui.showOSK = function(event) { + keymanweb['activatingUI'](true); // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; @@ -763,6 +767,7 @@ if(!window['keyman']['ui']['name']) { if(osk['isEnabled']()) osk['hide'](); else osk['show'](true); } ui.setLastFocus(); + keymanweb['activatingUI'](false); return ui.eventCapture(event); } From 8ce04b095101d998e7ace990ca92c7c5d3b23648 Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 1 Jun 2022 10:16:53 +0700 Subject: [PATCH 28/51] fix(web): fixes float ui osk-display issues --- web/source/kmwuifloat.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/source/kmwuifloat.ts b/web/source/kmwuifloat.ts index 4c6fd49f0c..f0e3d6d2da 100644 --- a/web/source/kmwuifloat.ts +++ b/web/source/kmwuifloat.ts @@ -56,14 +56,16 @@ if(!window['keyman']['ui']['name']) { */ ui.toggleOSK = function() { + keymanweb['activatingUI'](true); // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; - keymanweb['focusLastActiveElement'](); 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; } @@ -397,6 +399,7 @@ if(!window['keyman']['ui']['name']) { */ ui.SelectKeyboardChange = function(e) { + keymanweb['activatingUI'](true); if(ui.KeyboardSelector.value != '-') { var i=ui.KeyboardSelector.selectedIndex; @@ -408,6 +411,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; } From 92d1c10209904a3c1e854699cd790e4e6ab20857 Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 1 Jun 2022 12:24:22 +0700 Subject: [PATCH 29/51] fix(web): osk display-state setting tracking --- web/source/osk/floatingOskView.ts | 5 +++++ 1 file changed, 5 insertions(+) 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 From 8fe7234e1df5de721ecd29dbcbbc105d5d4af927 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 1 Jun 2022 15:33:44 +1000 Subject: [PATCH 30/51] fix(developer): install keyboard call should quote kmshell.exe path --- windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; From ad60fe8c9284d286f4a36cd28f9b3d23510c84ca Mon Sep 17 00:00:00 2001 From: jahorton Date: Wed, 1 Jun 2022 13:08:20 +0700 Subject: [PATCH 31/51] chore(web): addresses PR review comments --- web/source/kmwuifloat.ts | 3 --- web/source/kmwuitoolbar.ts | 9 +++++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/web/source/kmwuifloat.ts b/web/source/kmwuifloat.ts index f0e3d6d2da..bb54d1a64d 100644 --- a/web/source/kmwuifloat.ts +++ b/web/source/kmwuifloat.ts @@ -57,7 +57,6 @@ if(!window['keyman']['ui']['name']) { ui.toggleOSK = function() { keymanweb['activatingUI'](true); - // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; if(osk && osk['show']) { @@ -332,7 +331,6 @@ if(!window['keyman']['ui']['name']) { ui.addButtonOSK(); }); - // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; if(!osk) { return; @@ -485,7 +483,6 @@ if(!window['keyman']['ui']['name']) { else { ui.oskButton.style.display = 'block'; - // As the Float UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; if(osk) { ui.oskButtonState(osk['isEnabled']()); diff --git a/web/source/kmwuitoolbar.ts b/web/source/kmwuitoolbar.ts index e13e0c3db0..d4e18379b4 100644 --- a/web/source/kmwuitoolbar.ts +++ b/web/source/kmwuitoolbar.ts @@ -253,7 +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.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')); @@ -506,7 +508,7 @@ if(!window['keyman']['ui']['name']) { var p1=ui.ToolBar_Text['SelectKeyboardPre']+kbd['Name'],p2=ui.ToolBar_Text['SelectKeyboardSuf']; if(p1.toLowerCase().indexOf(p2.toLowerCase()) < 0) p1=p1+' '+ p2; aNode.title = p1; - aNode.onclick = function(event) { return ui.selectLanguage(event, lang) }; // FINDME + aNode.onclick = function(event) { return ui.selectLanguage(event, lang) }; aNode.appendChild(ui.createNode('div', 'kmw_img_kbd', 'kmw_img')); ui.lgText=ui.truncate(lang.name,28); @@ -759,6 +761,7 @@ if(!window['keyman']['ui']['name']) { let osk = keymanweb['osk']; if(!osk) { + keymanweb['activatingUI'](false); return; } //Toggle OSK on or off @@ -920,7 +923,6 @@ if(!window['keyman']['ui']['name']) { } else { - // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; ui.oskButtonNode.className = (osk && osk['isEnabled']()) ? 'kmw_button_selected' : 'kmw_button'; } @@ -1020,7 +1022,6 @@ if(!window['keyman']['ui']['name']) { ui.registerEvents = function() { - // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; if(!osk) { return; From 99add57dda43557ec8ebcce9494cec30ee6f2604 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Wed, 1 Jun 2022 14:02:17 -0400 Subject: [PATCH 32/51] auto: increment beta version to 15.0.257 --- HISTORY.md | 4 ++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 75 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 36440f581e..0adca55de8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,9 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index 2fc36d4c29..ef1107d5e5 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.256 \ No newline at end of file +15.0.257 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index d7afcbe3ee..8c1866600a 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index 5dde9a9b33..d58465be68 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.256", + "version": "15.0.257", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.256", - "@keymanapp/resources-gosh": "^15.0.256", + "@keymanapp/lexical-model-compiler": "^15.0.257", + "@keymanapp/resources-gosh": "^15.0.257", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.256", - "@keymanapp/lexical-model-layer": "^15.0.256", - "@keymanapp/models-types": "^15.0.256", - "@keymanapp/web-environment": "^15.0.256", - "@keymanapp/web-utils": "^15.0.256", + "@keymanapp/keyboard-processor": "^15.0.257", + "@keymanapp/lexical-model-layer": "^15.0.257", + "@keymanapp/models-types": "^15.0.257", + "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/web-utils": "^15.0.257", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index 6995a5d48d..a62d862296 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index 18138e49f6..b99bd9a7c9 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.256", + "version": "15.0.257", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.256", + "@keymanapp/resources-gosh": "^15.0.257", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.256", - "@keymanapp/web-environment": "^15.0.256", - "@keymanapp/web-utils": "^15.0.256", + "@keymanapp/models-types": "^15.0.257", + "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/web-utils": "^15.0.257", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index 862c15cece..f09f42ff09 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index c23daa9e2b..8a959f36b0 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.256", + "version": "15.0.257", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.256", - "@keymanapp/models-types": "^15.0.256", - "@keymanapp/web-environment": "^15.0.256", - "@keymanapp/web-utils": "^15.0.256", + "@keymanapp/keyboard-processor": "^15.0.257", + "@keymanapp/models-types": "^15.0.257", + "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/web-utils": "^15.0.257", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index c500b8fa3a..0c746eaf09 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index 9d8c1510a4..e148dcebfa 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.256", + "version": "15.0.257", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/web-environment": "^15.0.257", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index b260cd14c4..abd1033ba0 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index c336858e3d..65a9fe93b3 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.256", + "version": "15.0.257", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.256", - "@keymanapp/web-environment": "^15.0.256", + "@keymanapp/resources-gosh": "^15.0.257", + "@keymanapp/web-environment": "^15.0.257", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 38488e539e..a2d047b295 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index 4423f6e0a8..c2c847553c 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.256", + "version": "15.0.257", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.256", - "@keymanapp/web-utils": "^15.0.256", + "@keymanapp/models-types": "^15.0.257", + "@keymanapp/web-utils": "^15.0.257", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.256" + "@keymanapp/models-wordbreakers": "^15.0.257" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 22cfd45857..2e984966d5 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index ed242cec5b..fa27c85014 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.256", + "version": "15.0.257", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 0a045a0c7a..b7b40fb849 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index f770a8c903..5d9179027a 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.256", + "version": "15.0.257", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.256", + "@keymanapp/models-types": "^15.0.257", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index e9ac745266..accd942026 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 50dd923b7e..683b1fe47f 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.256", + "version": "15.0.257", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.256", - "@keymanapp/resources-gosh": "^15.0.256", + "@keymanapp/models-types": "^15.0.257", + "@keymanapp/resources-gosh": "^15.0.257", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.256", - "@keymanapp/models-wordbreakers": "^15.0.256", - "@keymanapp/web-environment": "^15.0.256", - "@keymanapp/web-utils": "^15.0.256", + "@keymanapp/models-templates": "^15.0.257", + "@keymanapp/models-wordbreakers": "^15.0.257", + "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/web-utils": "^15.0.257", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index 50038e3fe0..0125f65963 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 9095968044..1ae207a90b 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.256", + "version": "15.0.257", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.256", + "@keymanapp/models-types": "^15.0.257", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.256", - "@keymanapp/models-wordbreakers": "^15.0.256", + "@keymanapp/models-templates": "^15.0.257", + "@keymanapp/models-wordbreakers": "^15.0.257", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index 958bf85cf8..a94f9841a5 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index 52078632d9..cb7e1f413e 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.256", + "version": "15.0.257", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index 00d1c27c94..e3ff26d9a1 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.256" + "version": "15.0.257" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index fef2c457e2..070f56d68d 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index c100200e80..cb09204ecf 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.256", + "version": "15.0.257", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 50ef1bdc17..bc74a1c44c 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 6ba9a972d8..3c9dd4bf7d 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.256", + "version": "15.0.257", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.256" + "@keymanapp/resources-gosh": "^15.0.257" } } diff --git a/web/package-lock.json b/web/package-lock.json index 73145310ed..1c36319834 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.256", + "version": "15.0.257", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index 789009eb5d..fb380150b4 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.256", + "version": "15.0.257", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.256", - "@keymanapp/web-sentry-manager": "^15.0.256", + "@keymanapp/resources-gosh": "^15.0.257", + "@keymanapp/web-sentry-manager": "^15.0.257", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.256", - "@keymanapp/keyboard-processor": "^15.0.256", - "@keymanapp/lexical-model-layer": "^15.0.256", - "@keymanapp/models-types": "^15.0.256", - "@keymanapp/recorder-core": "^15.0.256", - "@keymanapp/web-environment": "^15.0.256", - "@keymanapp/web-utils": "^15.0.256", + "@keymanapp/input-processor": "^15.0.257", + "@keymanapp/keyboard-processor": "^15.0.257", + "@keymanapp/lexical-model-layer": "^15.0.257", + "@keymanapp/models-types": "^15.0.257", + "@keymanapp/recorder-core": "^15.0.257", + "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/web-utils": "^15.0.257", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From 48a4d8c2ec10b69ba8b56c240c36e286b5ecd807 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 2 Jun 2022 14:37:01 +1000 Subject: [PATCH 33/51] fix(developer): kmcomp package compiler race condition Fixes a race condition when compiling multiple packages, where the temp path may be re-used before the compiler has finished with it. To take advantage of this fix, I wanted to make sure I was using the right kmcomp.exe when building unit tests for Keyman Core. This uncovered a couple of other things: * Updates Keyman Core build infrastructure to use the current kmcomp.exe rather than a system-installed one. * Corrects a bug that was identified by the 15.0 version of kmcomp in one unit test (duplicate `&NAME` stores -- the meson test script prepends a `&NAME` store to each source file during build). @keymanapp-test-bot skip --- common/core/desktop/tests/unit/kmx/028 - smp.kmn | 1 - common/core/desktop/tests/unit/kmx/meson.build | 2 +- .../src/global/delphi/general/CompilePackage.pas | 13 ++++++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/common/core/desktop/tests/unit/kmx/028 - smp.kmn b/common/core/desktop/tests/unit/kmx/028 - smp.kmn index 772193d88d..5bfbbe4bd2 100644 --- a/common/core/desktop/tests/unit/kmx/028 - smp.kmn +++ b/common/core/desktop/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/common/core/desktop/tests/unit/kmx/meson.build b/common/core/desktop/tests/unit/kmx/meson.build index bc3ac94e7c..5c6073cac5 100644 --- a/common/core/desktop/tests/unit/kmx/meson.build +++ b/common/core/desktop/tests/unit/kmx/meson.build @@ -77,7 +77,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/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; From d1576e671744eea846781c0b40309cd43ba4ae10 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Fri, 3 Jun 2022 14:02:30 -0400 Subject: [PATCH 34/51] auto: increment beta version to 15.0.258 --- HISTORY.md | 5 +++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 76 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 0adca55de8..282e40fed2 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,10 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index ef1107d5e5..e9f0baa089 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.257 \ No newline at end of file +15.0.258 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index 8c1866600a..c5bbef8d04 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index d58465be68..ae227fb832 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.257", + "version": "15.0.258", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.257", - "@keymanapp/resources-gosh": "^15.0.257", + "@keymanapp/lexical-model-compiler": "^15.0.258", + "@keymanapp/resources-gosh": "^15.0.258", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.257", - "@keymanapp/lexical-model-layer": "^15.0.257", - "@keymanapp/models-types": "^15.0.257", - "@keymanapp/web-environment": "^15.0.257", - "@keymanapp/web-utils": "^15.0.257", + "@keymanapp/keyboard-processor": "^15.0.258", + "@keymanapp/lexical-model-layer": "^15.0.258", + "@keymanapp/models-types": "^15.0.258", + "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/web-utils": "^15.0.258", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index a62d862296..f4ed42cbf4 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index b99bd9a7c9..30f9304531 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.257", + "version": "15.0.258", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.257", + "@keymanapp/resources-gosh": "^15.0.258", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.257", - "@keymanapp/web-environment": "^15.0.257", - "@keymanapp/web-utils": "^15.0.257", + "@keymanapp/models-types": "^15.0.258", + "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/web-utils": "^15.0.258", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index f09f42ff09..d9a5e2ab22 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index 8a959f36b0..114782a493 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.257", + "version": "15.0.258", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.257", - "@keymanapp/models-types": "^15.0.257", - "@keymanapp/web-environment": "^15.0.257", - "@keymanapp/web-utils": "^15.0.257", + "@keymanapp/keyboard-processor": "^15.0.258", + "@keymanapp/models-types": "^15.0.258", + "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/web-utils": "^15.0.258", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index 0c746eaf09..95dd5abc21 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index e148dcebfa..af7454563e 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.257", + "version": "15.0.258", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/web-environment": "^15.0.258", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index abd1033ba0..ca008711d0 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 65a9fe93b3..f607579255 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.257", + "version": "15.0.258", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.257", - "@keymanapp/web-environment": "^15.0.257", + "@keymanapp/resources-gosh": "^15.0.258", + "@keymanapp/web-environment": "^15.0.258", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index a2d047b295..60c013f888 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index c2c847553c..a6495c8dac 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.257", + "version": "15.0.258", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.257", - "@keymanapp/web-utils": "^15.0.257", + "@keymanapp/models-types": "^15.0.258", + "@keymanapp/web-utils": "^15.0.258", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.257" + "@keymanapp/models-wordbreakers": "^15.0.258" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 2e984966d5..0bcaff5a64 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index fa27c85014..2c0b6cdeff 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.257", + "version": "15.0.258", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index b7b40fb849..f51dffa2e2 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index 5d9179027a..cf7dad585a 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.257", + "version": "15.0.258", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.257", + "@keymanapp/models-types": "^15.0.258", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index accd942026..b9036168be 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 683b1fe47f..74d6f380fe 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.257", + "version": "15.0.258", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.257", - "@keymanapp/resources-gosh": "^15.0.257", + "@keymanapp/models-types": "^15.0.258", + "@keymanapp/resources-gosh": "^15.0.258", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.257", - "@keymanapp/models-wordbreakers": "^15.0.257", - "@keymanapp/web-environment": "^15.0.257", - "@keymanapp/web-utils": "^15.0.257", + "@keymanapp/models-templates": "^15.0.258", + "@keymanapp/models-wordbreakers": "^15.0.258", + "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/web-utils": "^15.0.258", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index 0125f65963..5a00b49c10 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 1ae207a90b..0a8b4a7e32 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.257", + "version": "15.0.258", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.257", + "@keymanapp/models-types": "^15.0.258", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.257", - "@keymanapp/models-wordbreakers": "^15.0.257", + "@keymanapp/models-templates": "^15.0.258", + "@keymanapp/models-wordbreakers": "^15.0.258", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index a94f9841a5..7c640b5f31 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index cb7e1f413e..82f3b37c68 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.257", + "version": "15.0.258", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index e3ff26d9a1..2217ab24e7 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.257" + "version": "15.0.258" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index 070f56d68d..278d4ff3c9 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index cb09204ecf..a81d62c913 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.257", + "version": "15.0.258", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index bc74a1c44c..a6d25b4225 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 3c9dd4bf7d..99220b9af2 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.257", + "version": "15.0.258", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.257" + "@keymanapp/resources-gosh": "^15.0.258" } } diff --git a/web/package-lock.json b/web/package-lock.json index 1c36319834..e5f5661ba3 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.257", + "version": "15.0.258", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index fb380150b4..19d247ef83 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.257", + "version": "15.0.258", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.257", - "@keymanapp/web-sentry-manager": "^15.0.257", + "@keymanapp/resources-gosh": "^15.0.258", + "@keymanapp/web-sentry-manager": "^15.0.258", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.257", - "@keymanapp/keyboard-processor": "^15.0.257", - "@keymanapp/lexical-model-layer": "^15.0.257", - "@keymanapp/models-types": "^15.0.257", - "@keymanapp/recorder-core": "^15.0.257", - "@keymanapp/web-environment": "^15.0.257", - "@keymanapp/web-utils": "^15.0.257", + "@keymanapp/input-processor": "^15.0.258", + "@keymanapp/keyboard-processor": "^15.0.258", + "@keymanapp/lexical-model-layer": "^15.0.258", + "@keymanapp/models-types": "^15.0.258", + "@keymanapp/recorder-core": "^15.0.258", + "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/web-utils": "^15.0.258", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From b69872d58967237c20ef7de4eb312b917acbe73f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 4 Jun 2022 08:44:24 +1000 Subject: [PATCH 35/51] fix(android): move hardware keystroke flag to JS module --- .../KMEA/app/src/main/assets/android-host.js | 18 ++++++++++++++---- .../tavultesoft/kmea/KMKeyboardJSHandler.java | 2 +- .../java/com/tavultesoft/kmea/KMManager.java | 9 ++------- 3 files changed, 17 insertions(+), 12 deletions(-) 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 b5aed646fd..70e8d93a4b 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 @@ -210,7 +210,6 @@ public final class KMManager { // Special override for when the keyboard may have haptic feedback when typing. // haptic feedback disabled for hardware keystrokes private static boolean mayHaveHapticFeedback = false; - private static boolean executingHardwareKeystroke = false; // Special override for when keyboard is entering a password text field. // When mayPredictOverride is true, the option {'mayPredict' = false} is set in the lm-layer @@ -461,7 +460,6 @@ public final class KMManager { public static InputMethodService getInputMethodService() { return IMService; } public static boolean executeHardwareKeystroke(int code, int shift, int lstates, int eventModifiers) { - executingHardwareKeystroke = true; if (SystemKeyboard != null) { return executeHardwareKeystroke(code, shift, KeyboardType.KEYBOARD_TYPE_SYSTEM, lstates, eventModifiers); } else if (InAppKeyboard != null) { @@ -473,7 +471,6 @@ public final class KMManager { public static boolean executeHardwareKeystroke( int code, int shift, KeyboardType keyboard, int lstates, int eventModifiers) { - executingHardwareKeystroke = true; if (keyboard == KeyboardType.KEYBOARD_TYPE_INAPP && InAppKeyboard != null) { InAppKeyboard.executeHardwareKeystroke(code, shift, lstates, eventModifiers); return true; @@ -2711,7 +2708,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."); } @@ -2822,7 +2819,6 @@ public final class KMManager { if (mayHaveHapticFeedback && !executingHardwareKeystroke) { textView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); } - executingHardwareKeystroke = false; } }); } @@ -2874,7 +2870,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() { @@ -2968,7 +2964,6 @@ public final class KMManager { if (parent != null && mayHaveHapticFeedback && !executingHardwareKeystroke) { parent.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); } - executingHardwareKeystroke = false; } }); } From 958fbd3e40c4bd424f00e0c76d2b2e5a248c2a0f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 5 Jun 2022 06:46:33 +1000 Subject: [PATCH 36/51] fix(android): check index validity in getCurrentKeyboardInfo This fixes crash reported as #6703. This issue was first reported in 14.0.282-stable. I have done a careful review of changes in 14.0.282 (and 14.0.281) but have been unable to find any changes that could have bearing on this. The basic issue is that there appears to be some circumstances where `KMManager` thinks that it has a keyboard loaded (ref `SystemKeyboardLoaded` variable), but `KMKeyboard.currentKeyboard` is still `null`. The crash has been reported for only a very small set of users, 119 at time of fix, but average reports per user is over 100. As is usual with this type of thing, a small fraction of those users are reporting the majority of crashes. I have not found any real commonality across the error reports -- they are geographically dispersed, across multiple device types and Android versions. Note that this addresses the error at hand but as I am unable to reproduce the issue, does not necessarily address the root problem, so there may still be other issues reported even after this is fixed. A longer-term refactor would eliminate `SystemKeyboardLoaded` because from what I can tell, we should always be able to determine that from the state of `KMKeyboard.currentKeyboard`. However, the state entanglement is a lot deeper than just those two variables, with cross references to keyboard indexes between `KMManager` and `KMKeyboard` which need to be resolved (`KMKeyboard` should *never* refer to `KMManager`). --- .../java/com/keyman/android/SystemKeyboard.java | 2 ++ .../kmapro/LanguageSettingsActivity.java | 13 ++++++++----- .../main/java/com/tavultesoft/kmea/KMManager.java | 3 +++ .../com/tavultesoft/kmea/ModelPickerActivity.java | 9 ++++++--- 4 files changed, 19 insertions(+), 8 deletions(-) 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/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java b/android/KMEA/app/src/main/java/com/tavultesoft/kmea/KMManager.java index 4a27a6d42d..cb96fbb856 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 @@ -1999,6 +1999,9 @@ public final class KMManager { public static Keyboard getCurrentKeyboardInfo(Context context) { int index = getCurrentKeyboardIndex(context); + if(index < 0) { + return null; + } return KeyboardController.getInstance().getKeyboardInfo(index); } 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); + } } } From 949f2cf403c4185805c5c0a3b8f908f49df9c037 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 5 Jun 2022 07:11:31 +1000 Subject: [PATCH 37/51] chore: add 14.0 entries to beta HISTORY.md --- HISTORY.md | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/HISTORY.md b/HISTORY.md index 282e40fed2..09c0ffbaba 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1477,6 +1477,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) From f521b6ce1962bba748ea02830ec3b7e3e237fdb7 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 5 Jun 2022 07:53:20 +1000 Subject: [PATCH 38/51] chore(web): switch on additional BrowserStack reporting Per support case with BrowserStack, am turning on deeper reporting for BrowserStack-based testing in karma. --- common/predictive-text/unit_tests/in_browser/CI.conf.js | 6 +++--- web/unit_tests/CI.conf.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) 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 7a407a0a2d..0f6477f501 100644 --- a/common/predictive-text/unit_tests/in_browser/CI.conf.js +++ b/common/predictive-text/unit_tests/in_browser/CI.conf.js @@ -74,7 +74,7 @@ module.exports = function(config) { var CURRENT_WIN_LAUNCHERS = { // Currently, Firefox launcher is unstable; see https://github.com/karma-runner/karma-firefox-launcher/issues/93 - // (in particular "not maintained" commentary). + // (in particular "not maintained" commentary). //bs_firefox_win: { // os: 'Windows', // os_version: '10', @@ -133,7 +133,7 @@ module.exports = function(config) { var specifics = { // BrowserStack configuration options browserStack: { - video: false, + video: true, browserDisconnectTimeout: 3e5, retryLimit: 1, // 0 is ignored. startTunnel: true, @@ -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/web/unit_tests/CI.conf.js b/web/unit_tests/CI.conf.js index d43fa251d2..68fecc960f 100644 --- a/web/unit_tests/CI.conf.js +++ b/web/unit_tests/CI.conf.js @@ -124,7 +124,7 @@ module.exports = function(config) { var specifics = { // BrowserStack configuration options browserStack: { - video: false, + video: true, browserDisconnectTimeout: 3e5, retryLimit: 1, // 0 is ignored. startTunnel: true, @@ -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 From 6340a59d8e19d8bb603fa0eda70a971e6a1ec34c Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 5 Jun 2022 08:33:42 +1000 Subject: [PATCH 39/51] chore(web): add BrowserStack to command-line --- common/predictive-text/unit_tests/test.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From b8a1beb2b9730224b23f6255225cec679c4d259f Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Mon, 6 Jun 2022 08:06:20 +0700 Subject: [PATCH 40/51] chore(web): commits PR suggestion Co-authored-by: Marc Durdin --- web/source/kmwuitoolbar.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/web/source/kmwuitoolbar.ts b/web/source/kmwuitoolbar.ts index d4e18379b4..47512e52b6 100644 --- a/web/source/kmwuitoolbar.ts +++ b/web/source/kmwuitoolbar.ts @@ -756,14 +756,11 @@ if(!window['keyman']['ui']['name']) { **/ ui.showOSK = function(event) { - keymanweb['activatingUI'](true); - // As the Toolbar UI uses more advanced minification, we must preserve the 'osk' field name. let osk = keymanweb['osk']; - if(!osk) { - keymanweb['activatingUI'](false); return; } + keymanweb['activatingUI'](true); //Toggle OSK on or off if(osk && keymanweb['getActiveKeyboard']() != '') { From 15ae34a0c8fa290a4360324e3600a539a55b0f38 Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 6 Jun 2022 08:58:56 +0700 Subject: [PATCH 41/51] change(web): increases min dist for a longpress-flick timer shortcut --- web/source/osk/oskLayer.ts | 12 +++++++++--- web/source/osk/visualKeyboard.ts | 18 +++++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/web/source/osk/oskLayer.ts b/web/source/osk/oskLayer.ts index 2d6f6ff60f..33133e10ab 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; } @@ -89,8 +95,8 @@ namespace com.keyman.osk { public refreshLayout(vkbd: VisualKeyboard, paddedHeight: number, trueHeight: number) { // Check the heights of each row, in case different layers have different row counts. - let nRows = this.rows.length; - let rowHeight = Math.floor(paddedHeight/(nRows == 0 ? 1 : nRows)); + const nRows = this.rows.length; + const rowHeight = this._rowHeight = Math.floor(paddedHeight/(nRows == 0 ? 1 : nRows)); if(vkbd.usesFixedHeightScaling) { this.element.style.height=(trueHeight)+'px'; @@ -98,7 +104,7 @@ namespace com.keyman.osk { 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 +1637,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; From 6e9ebb433ae295095da214c2aa965161ce447460 Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 6 Jun 2022 12:42:26 +0700 Subject: [PATCH 42/51] change(web): browser test timeout tweaks --- .../predictive-text/unit_tests/in_browser/CI.conf.js | 12 ++++++------ web/unit_tests/CI.conf.js | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) 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 7a407a0a2d..bac9ef5400 100644 --- a/common/predictive-text/unit_tests/in_browser/CI.conf.js +++ b/common/predictive-text/unit_tests/in_browser/CI.conf.js @@ -74,7 +74,7 @@ module.exports = function(config) { var CURRENT_WIN_LAUNCHERS = { // Currently, Firefox launcher is unstable; see https://github.com/karma-runner/karma-firefox-launcher/issues/93 - // (in particular "not maintained" commentary). + // (in particular "not maintained" commentary). //bs_firefox_win: { // os: 'Windows', // os_version: '10', @@ -134,17 +134,17 @@ module.exports = function(config) { // BrowserStack configuration options browserStack: { video: false, - browserDisconnectTimeout: 3e5, - retryLimit: 1, // 0 is ignored. + 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. diff --git a/web/unit_tests/CI.conf.js b/web/unit_tests/CI.conf.js index d43fa251d2..e25ac43b66 100644 --- a/web/unit_tests/CI.conf.js +++ b/web/unit_tests/CI.conf.js @@ -125,17 +125,17 @@ module.exports = function(config) { // BrowserStack configuration options browserStack: { video: false, - browserDisconnectTimeout: 3e5, - retryLimit: 1, // 0 is ignored. + 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. From f9537ee2a2d41e6a416c72fa70178688dbb8ec7e Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Mon, 6 Jun 2022 14:02:30 -0400 Subject: [PATCH 43/51] auto: increment beta version to 15.0.259 --- HISTORY.md | 6 ++++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 77 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 09c0ffbaba..25eb0b29e7 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,11 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index e9f0baa089..3174968ebc 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.258 \ No newline at end of file +15.0.259 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index c5bbef8d04..fe461e811e 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index ae227fb832..b41c865c33 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.258", + "version": "15.0.259", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.258", - "@keymanapp/resources-gosh": "^15.0.258", + "@keymanapp/lexical-model-compiler": "^15.0.259", + "@keymanapp/resources-gosh": "^15.0.259", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.258", - "@keymanapp/lexical-model-layer": "^15.0.258", - "@keymanapp/models-types": "^15.0.258", - "@keymanapp/web-environment": "^15.0.258", - "@keymanapp/web-utils": "^15.0.258", + "@keymanapp/keyboard-processor": "^15.0.259", + "@keymanapp/lexical-model-layer": "^15.0.259", + "@keymanapp/models-types": "^15.0.259", + "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/web-utils": "^15.0.259", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index f4ed42cbf4..53df1ff4ed 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index 30f9304531..0d0266e5b3 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.258", + "version": "15.0.259", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.258", + "@keymanapp/resources-gosh": "^15.0.259", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.258", - "@keymanapp/web-environment": "^15.0.258", - "@keymanapp/web-utils": "^15.0.258", + "@keymanapp/models-types": "^15.0.259", + "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/web-utils": "^15.0.259", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index d9a5e2ab22..b31be0147c 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index 114782a493..af1d34d363 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.258", + "version": "15.0.259", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.258", - "@keymanapp/models-types": "^15.0.258", - "@keymanapp/web-environment": "^15.0.258", - "@keymanapp/web-utils": "^15.0.258", + "@keymanapp/keyboard-processor": "^15.0.259", + "@keymanapp/models-types": "^15.0.259", + "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/web-utils": "^15.0.259", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index 95dd5abc21..a7b5a7f2f1 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index af7454563e..88caddf68b 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.258", + "version": "15.0.259", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/web-environment": "^15.0.259", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index ca008711d0..caa45029ab 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index f607579255..413decc47a 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.258", + "version": "15.0.259", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.258", - "@keymanapp/web-environment": "^15.0.258", + "@keymanapp/resources-gosh": "^15.0.259", + "@keymanapp/web-environment": "^15.0.259", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 60c013f888..4d8f664841 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index a6495c8dac..0660b57687 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.258", + "version": "15.0.259", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.258", - "@keymanapp/web-utils": "^15.0.258", + "@keymanapp/models-types": "^15.0.259", + "@keymanapp/web-utils": "^15.0.259", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.258" + "@keymanapp/models-wordbreakers": "^15.0.259" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 0bcaff5a64..9015b3e56b 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index 2c0b6cdeff..0fe7782ae2 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.258", + "version": "15.0.259", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index f51dffa2e2..ea2487a68f 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index cf7dad585a..1d0dd2fbdb 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.258", + "version": "15.0.259", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.258", + "@keymanapp/models-types": "^15.0.259", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index b9036168be..19c5d31b7f 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 74d6f380fe..a71ad2c283 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.258", + "version": "15.0.259", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.258", - "@keymanapp/resources-gosh": "^15.0.258", + "@keymanapp/models-types": "^15.0.259", + "@keymanapp/resources-gosh": "^15.0.259", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.258", - "@keymanapp/models-wordbreakers": "^15.0.258", - "@keymanapp/web-environment": "^15.0.258", - "@keymanapp/web-utils": "^15.0.258", + "@keymanapp/models-templates": "^15.0.259", + "@keymanapp/models-wordbreakers": "^15.0.259", + "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/web-utils": "^15.0.259", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index 5a00b49c10..cd165635d6 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 0a8b4a7e32..1770b18490 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.258", + "version": "15.0.259", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.258", + "@keymanapp/models-types": "^15.0.259", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.258", - "@keymanapp/models-wordbreakers": "^15.0.258", + "@keymanapp/models-templates": "^15.0.259", + "@keymanapp/models-wordbreakers": "^15.0.259", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index 7c640b5f31..10b1404ed3 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index 82f3b37c68..b482b720e3 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.258", + "version": "15.0.259", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index 2217ab24e7..d049ca8cf5 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.258" + "version": "15.0.259" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index 278d4ff3c9..2e792e7823 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index a81d62c913..7ffb8d1033 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.258", + "version": "15.0.259", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index a6d25b4225..13fb978e86 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 99220b9af2..9b551f4878 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.258", + "version": "15.0.259", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.258" + "@keymanapp/resources-gosh": "^15.0.259" } } diff --git a/web/package-lock.json b/web/package-lock.json index e5f5661ba3..6d65809a37 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.258", + "version": "15.0.259", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index 19d247ef83..5b80a4fc4c 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.258", + "version": "15.0.259", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.258", - "@keymanapp/web-sentry-manager": "^15.0.258", + "@keymanapp/resources-gosh": "^15.0.259", + "@keymanapp/web-sentry-manager": "^15.0.259", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.258", - "@keymanapp/keyboard-processor": "^15.0.258", - "@keymanapp/lexical-model-layer": "^15.0.258", - "@keymanapp/models-types": "^15.0.258", - "@keymanapp/recorder-core": "^15.0.258", - "@keymanapp/web-environment": "^15.0.258", - "@keymanapp/web-utils": "^15.0.258", + "@keymanapp/input-processor": "^15.0.259", + "@keymanapp/keyboard-processor": "^15.0.259", + "@keymanapp/lexical-model-layer": "^15.0.259", + "@keymanapp/models-types": "^15.0.259", + "@keymanapp/recorder-core": "^15.0.259", + "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/web-utils": "^15.0.259", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From 9dcffdb9044f5301ec8bc7ed34e53c31b128e0cf Mon Sep 17 00:00:00 2001 From: Ross Date: Wed, 8 Jun 2022 15:35:59 +1000 Subject: [PATCH 44/51] fix(windows): BCP47tag is canonicalized in GetUserDefaultLanguage The BCP47tag is canonicalized in GetUserDefaultLanguage. Comments updated for the function to make developer aware. Comments added to GetKeyboardLanguage to make clear that it can actuall Add/Set a langague in the com object. --- .../Keyman.Configuration.System.TIPMaintenance.pas | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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; From 0a6ffa137aff2f48b1902b4011e6ae644854303d Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Fri, 10 Jun 2022 14:02:55 -0400 Subject: [PATCH 45/51] auto: increment beta version to 15.0.260 --- HISTORY.md | 7 +++++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 16 +++++++-------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- developer/server/package-lock.json | 2 +- developer/server/package.json | 2 +- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 31 files changed, 78 insertions(+), 71 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 25eb0b29e7..f87a25b098 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,12 @@ # Keyman Version History +## 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) diff --git a/VERSION.md b/VERSION.md index 3174968ebc..1256ed9d25 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -15.0.259 \ No newline at end of file +15.0.260 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index fe461e811e..0cac9732da 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index b41c865c33..c8d862994c 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "15.0.259", + "version": "15.0.260", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/lexical-model-compiler": "^15.0.259", - "@keymanapp/resources-gosh": "^15.0.259", + "@keymanapp/lexical-model-compiler": "^15.0.260", + "@keymanapp/resources-gosh": "^15.0.260", "@types/node": "^11.9.4", "chai": "^4.3.4", "mocha": "^8.4.0", @@ -34,11 +34,11 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.259", - "@keymanapp/lexical-model-layer": "^15.0.259", - "@keymanapp/models-types": "^15.0.259", - "@keymanapp/web-environment": "^15.0.259", - "@keymanapp/web-utils": "^15.0.259", + "@keymanapp/keyboard-processor": "^15.0.260", + "@keymanapp/lexical-model-layer": "^15.0.260", + "@keymanapp/models-types": "^15.0.260", + "@keymanapp/web-environment": "^15.0.260", + "@keymanapp/web-utils": "^15.0.260", "eventemitter3": "^4.0.0" } } diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index 53df1ff4ed..1fd8a0c897 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index 0d0266e5b3..989b7f87e6 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "15.0.259", + "version": "15.0.260", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.259", + "@keymanapp/resources-gosh": "^15.0.260", "chai": "^4.3.4", "mocha": "^8.4.0", "mocha-teamcity-reporter": "^4.0.0", @@ -32,9 +32,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^15.0.259", - "@keymanapp/web-environment": "^15.0.259", - "@keymanapp/web-utils": "^15.0.259", + "@keymanapp/models-types": "^15.0.260", + "@keymanapp/web-environment": "^15.0.260", + "@keymanapp/web-utils": "^15.0.260", "@types/node": "^11.9.4" } } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index b31be0147c..43f5d1d8e9 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index af1d34d363..edc940f17a 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "15.0.259", + "version": "15.0.260", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^15.0.259", - "@keymanapp/models-types": "^15.0.259", - "@keymanapp/web-environment": "^15.0.259", - "@keymanapp/web-utils": "^15.0.259", + "@keymanapp/keyboard-processor": "^15.0.260", + "@keymanapp/models-types": "^15.0.260", + "@keymanapp/web-environment": "^15.0.260", + "@keymanapp/web-utils": "^15.0.260", "@types/node": "^11.9.4" }, "devDependencies": { diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index a7b5a7f2f1..f827b91701 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index 88caddf68b..2a8a5c0d83 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "15.0.259", + "version": "15.0.260", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/web-environment": "^15.0.260", "@sentry/browser": "^5.27.4" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index caa45029ab..4c175ffbe2 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 413decc47a..db22149dad 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "15.0.259", + "version": "15.0.260", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.259", - "@keymanapp/web-environment": "^15.0.259", + "@keymanapp/resources-gosh": "^15.0.260", + "@keymanapp/web-environment": "^15.0.260", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 4d8f664841..b8b4275ccf 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index 0660b57687..d14e35e198 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "15.0.259", + "version": "15.0.260", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.259", - "@keymanapp/web-utils": "^15.0.259", + "@keymanapp/models-types": "^15.0.260", + "@keymanapp/web-utils": "^15.0.260", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^15.0.259" + "@keymanapp/models-wordbreakers": "^15.0.260" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 9015b3e56b..6f04ea0b38 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index 0fe7782ae2..6a64628d44 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "15.0.259", + "version": "15.0.260", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index ea2487a68f..aa9bb0aab5 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index 1d0dd2fbdb..8a90b65cf7 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "15.0.259", + "version": "15.0.260", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^15.0.259", + "@keymanapp/models-types": "^15.0.260", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.3.4", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index 19c5d31b7f..1f13c01427 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index a71ad2c283..a30f87306d 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "15.0.259", + "version": "15.0.260", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^15.0.259", - "@keymanapp/resources-gosh": "^15.0.259", + "@keymanapp/models-types": "^15.0.260", + "@keymanapp/resources-gosh": "^15.0.260", "@types/node": "^10.17.21", "chai": "^4.3.4", "karma": "^6.3.4", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^15.0.259", - "@keymanapp/models-wordbreakers": "^15.0.259", - "@keymanapp/web-environment": "^15.0.259", - "@keymanapp/web-utils": "^15.0.259", + "@keymanapp/models-templates": "^15.0.260", + "@keymanapp/models-wordbreakers": "^15.0.260", + "@keymanapp/web-environment": "^15.0.260", + "@keymanapp/web-utils": "^15.0.260", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index cd165635d6..b9312a3d64 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/js/package.json b/developer/js/package.json index 1770b18490..2460886a96 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "15.0.259", + "version": "15.0.260", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^15.0.259", + "@keymanapp/models-types": "^15.0.260", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^15.0.259", - "@keymanapp/models-wordbreakers": "^15.0.259", + "@keymanapp/models-templates": "^15.0.260", + "@keymanapp/models-wordbreakers": "^15.0.260", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/developer/server/package-lock.json b/developer/server/package-lock.json index 10b1404ed3..92433ca3bf 100644 --- a/developer/server/package-lock.json +++ b/developer/server/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/developer/server/package.json b/developer/server/package.json index b482b720e3..5584a5f9e8 100644 --- a/developer/server/package.json +++ b/developer/server/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/developer-server", - "version": "15.0.259", + "version": "15.0.260", "description": "Keyman Developer backend server", "main": "dist/index.js", "scripts": { diff --git a/lerna.json b/lerna.json index d049ca8cf5..16e396b11a 100644 --- a/lerna.json +++ b/lerna.json @@ -21,5 +21,5 @@ "ts-node", "typescript" ], - "version": "15.0.259" + "version": "15.0.260" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index 2e792e7823..f79048ac4a 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index 7ffb8d1033..752cb1b0dc 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "15.0.259", + "version": "15.0.260", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 13fb978e86..68a97518dc 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 9b551f4878..8a365122f9 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "15.0.259", + "version": "15.0.260", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.259" + "@keymanapp/resources-gosh": "^15.0.260" } } diff --git a/web/package-lock.json b/web/package-lock.json index 6d65809a37..1b0ff6828d 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.259", + "version": "15.0.260", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/web/package.json b/web/package.json index 5b80a4fc4c..30c93ca977 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "15.0.259", + "version": "15.0.260", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^15.0.259", - "@keymanapp/web-sentry-manager": "^15.0.259", + "@keymanapp/resources-gosh": "^15.0.260", + "@keymanapp/web-sentry-manager": "^15.0.260", "@sentry/cli": "^1.52.3", "chai": "^4.3.4", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^15.0.259", - "@keymanapp/keyboard-processor": "^15.0.259", - "@keymanapp/lexical-model-layer": "^15.0.259", - "@keymanapp/models-types": "^15.0.259", - "@keymanapp/recorder-core": "^15.0.259", - "@keymanapp/web-environment": "^15.0.259", - "@keymanapp/web-utils": "^15.0.259", + "@keymanapp/input-processor": "^15.0.260", + "@keymanapp/keyboard-processor": "^15.0.260", + "@keymanapp/lexical-model-layer": "^15.0.260", + "@keymanapp/models-types": "^15.0.260", + "@keymanapp/recorder-core": "^15.0.260", + "@keymanapp/web-environment": "^15.0.260", + "@keymanapp/web-utils": "^15.0.260", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0" From 373851941291e1319c43ff1844941f5f3f3ebbb2 Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 13 Jun 2022 10:50:32 +0700 Subject: [PATCH 46/51] chore(android): adds diagnostic logging to assist a fix for #6703 --- .../app/src/main/java/com/tavultesoft/kmea/KMManager.java | 7 +++++++ .../java/com/tavultesoft/kmea/data/KeyboardController.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) 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 cb96fbb856..5dd543c19a 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 @@ -2000,6 +2000,13 @@ 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); 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; } From a9c5b4ecb70c769f542c9aa181c157c74141b6ae Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 13 Jun 2022 15:54:18 +1000 Subject: [PATCH 47/51] fix(common): update increment-version for new tsc, node versions * Addresses some Typescript-specific breaking changes in destructured types. * Removes npm version calls and package*.json updates -- these are no longer required. * Adds resources/build/version as a workspace to root package.json. * Runs `npm ci` on the repo root for resources/build/version. * Adds additional logging. --- package.json | 1 + resources/build/increment-version.sh | 36 +- resources/build/version/package-lock.json | 667 ------------------- resources/build/version/package.json | 5 +- resources/build/version/src/fixupHistory.ts | 2 +- resources/build/version/src/reportHistory.ts | 6 +- 6 files changed, 24 insertions(+), 693 deletions(-) delete mode 100644 resources/build/version/package-lock.json 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; From 9e1d8c6e9aa7205728ffaa52d749eede0b294f13 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 13 Jun 2022 16:12:43 +1000 Subject: [PATCH 48/51] chore(common): npm install --- package-lock.json | 1305 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1247 insertions(+), 58 deletions(-) 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", From d23b349106905dee4e0a20c64409601187d1eb93 Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 13 Jun 2022 13:30:13 +0700 Subject: [PATCH 49/51] fix(web): row height layout calcs now consider layer-group padding --- web/source/osk/oskBaseKey.ts | 2 +- web/source/osk/oskLayer.ts | 8 ++++---- web/source/osk/oskRow.ts | 6 +++--- web/source/osk/visualKeyboard.ts | 17 ++++++++++++++++- 4 files changed, 24 insertions(+), 9 deletions(-) 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 33133e10ab..172ee70dd3 100644 --- a/web/source/osk/oskLayer.ts +++ b/web/source/osk/oskLayer.ts @@ -93,13 +93,13 @@ 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. const nRows = this.rows.length; - const rowHeight = this._rowHeight = Math.floor(paddedHeight/(nRows == 0 ? 1 : nRows)); + const rowHeight = this._rowHeight = Math.floor(layerHeight/(nRows == 0 ? 1 : nRows)); if(vkbd.usesFixedHeightScaling) { - this.element.style.height=(trueHeight)+'px'; + this.element.style.height=(layerHeight)+'px'; } for(let nRow=0; nRow Date: Tue, 14 Jun 2022 00:43:08 -0400 Subject: [PATCH 50/51] auto: increment master version to 16.0.13 --- HISTORY.md | 5 +++++ VERSION.md | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 071ddd38ca..924e09daa0 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,10 @@ # 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) diff --git a/VERSION.md b/VERSION.md index e984daccff..1b303d11d0 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -16.0.12 \ No newline at end of file +16.0.13 \ No newline at end of file From 3cd5ae2b3334138cafe5f34f8747605f0dd64fa2 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Tue, 14 Jun 2022 12:52:39 +0700 Subject: [PATCH 51/51] chore(web): applies code suggestion Co-authored-by: Marc Durdin --- web/source/osk/visualKeyboard.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/source/osk/visualKeyboard.ts b/web/source/osk/visualKeyboard.ts index 23172facf5..13c80de52e 100644 --- a/web/source/osk/visualKeyboard.ts +++ b/web/source/osk/visualKeyboard.ts @@ -1291,7 +1291,7 @@ namespace com.keyman.osk { private getVerticalLayerGroupPadding(): number { // For touch-based OSK layouts, kmwosk.css may include top & bottom padding on the layer-group element. const computedGroupStyle = getComputedStyle(this.layerGroup.element); - return parseInt(computedGroupStyle.paddingTop) + parseInt(computedGroupStyle.paddingBottom); + return parseInt(computedGroupStyle.paddingTop, 10) + parseInt(computedGroupStyle.paddingBottom, 10); } /*private*/ computedAdjustedOskHeight(allottedHeight: number): number {