Mocha with ts-register was failing with an error for Keyman Developer
Server.
```
Error: Debug Failure. False expression: Non-string value passed to
`ts.resolveTypeReferenceDirective`, likely by a wrapping package working
with an outdated `resolveTypeReferenceDirectives` signature. This is
probably not a problem in TS itself.
```
The `^4.5.4` version reference for typescript was too lax, and so npm
gave us typescript 4.8.3, which was the latest version in use in the
repo in this branch (in kmc-model). This is also why the build only
failed on this branch -- on master branch, the latest version referenced
was still 4.5.4.
Changing to `~4.5.4` ensures that it stayed on the 4.5.x series, and
mocha then ran version 4.5.5 of tsc.
This is something we should resolve when we move the entire repo to tsc
4.8+. Currently we are still on 4.5.
Note: it may be sensible to review all versioning for typescript,
because the minor version changes are causing functionality breaks,
which kinda violates the spirit of semver ("MINOR version when you add
functionality in a backwards compatible manner"). We can be more
restrictive by updating all package.json references to typescript to
`~4.5.4` instead of the current `^4.5.4` in use throughout. If/when we
do this, we will need to check our ts-node references also.
|
||
|---|---|---|
| .. | ||
| common/delphi | ||
| ext | ||
| images | ||
| inst | ||
| kmanalyze | ||
| kmc | ||
| kmc-keyboard | ||
| kmc-model | ||
| kmc-model-info | ||
| kmc-package | ||
| kmcmpdll | ||
| kmcomp | ||
| kmconvert | ||
| kmdecomp | ||
| samples | ||
| server | ||
| setup | ||
| test/auto | ||
| tike | ||
| tools | ||
| .gitignore | ||
| Defines.mak | ||
| developer.groupproj | ||
| developer.sln | ||
| Header.mak | ||
| history.md | ||
| Makefile | ||
| README.md | ||
| Target.mak | ||
Keyman Developer
This is the current home for Keyman Developer.
Cross-dependencies
We do not have 100% clean separation between Keyman Developer and Keyman for Windows. Shared units are intended to live in common, however the following projects will need to be updated in the future.
- buildpkg in Windows depends on various compiler units in multiple folders.
- kmbrowserhost in Windows is included as part of Keyman Developer.
Folders
src/common
Units shared among Keyman Developer projects, Delphi
src/ext
3rd party code and components, mostly Delphi
src/inst - keymandeveloper.msi
Building and signing of the installation archive keymandeveloper.msi.
src/inst/node
Contains a minimal distribution of node.js intended just for running kmc. If more dependencies are required, then the developer will be expected to install node.js themselves; this gets users going without requiring a large installer or a full node.js install.
src/kmanalyze - kmanalyze.exe
A keyboard source analysis and automated regression test tool. Testing for logical errors of a keyboard.
src/kmcmpdll - kmcmpdll.dll & kmcmpdll.x64.dll
This is the main source code for the keyboard compiler, packaged as a dynamic linked library for Windows. The consumers will call 'CompileKeyboardFile'.
src/kmcmpdll/kcframe - kcframe.exe & kcframe.x64.exe
Located under kmcmpdll folder this is used for debugging in Visual Studio. A command line program compiler for a keyboard file 'kmn' into a binary format 'kmx'. Has hardcoded default arguments.
src/kmcomp - kmcomp.exe & kmcomp.x64.exe
The main command line compiler for a keyboard. It compiles keyboards (.kmn), packages (.kps), and projects (.kpj).
src/kmconvert - kmconvert.exe & kmconvert.x64.exe
KMConvert converts keyboard layouts between different formats. KMConvert will generate a full Keyman template project from the imported layout or data, in a new folder named with the ID of the keyboard. It will not overwrite an existing folder. Also used to generate new projects from templates.
src/kmdecomp - kmdecomp.exe
Unsupported utility decompiles a Keyman .kmx keyboard. It will produce a .kmn source file and optionally a .ico or .bmp image. see kmdecomp/kmdecomp.md for details.
src/kmc
node-based next generation compiler, hosts kmc, kmlmi, kmlmc, kmlmp
src/kmc-keyboard - LDML Keyboard Compiler
Next Generation keyboard compiler package - LDML keyboards only at present. Command line access through kmc.
src/kmc-model - Lexical Model Compiler
The Lexical Model Compiler, kmlmc, runs on nodeJS on all supported desktop platforms. Command line access through kmc/kmlmc.
src/kmc-package - Package Compiler
The package compiler is broadly compatible with the kmcomp .kps package compiler. However at this stage it is only tested with lexical models, and use with keyboards (either .js or .kmx) is not tested or supported. It is likely in the future that the kmcomp .kps compiler will be deprecated in favour of this one. Command line access through kmc/kmlmp.
src/kmc-model-info - Model Info Compiler
Merges .model_info files for use on the Keyman Cloud lexical model repository at https://github.com/keymanapp/lexical-models. Command line access through kmc/kmlmi.
src/samples
Contains sample keyboards and sample developer projects. See readme.txt for details.
src/server
Keyman Developer Server. Node-based, cross platform host app for Keyman Developer. Used currently for web-based test and deployment. In future, will be the foundation for a web-based Keyman Developer project.
src/setup - setup.exe
Installation program for Keyman Developer for Windows. Bundles with keymandeveloper.msi to generate single deployable installer executable.
src/tike - "Tavultesoft Integrated Keyboard Editor"
This is the designer side of the Developer. Used for designing, developing, testing and packing keyboards for distribution.
src/tools
Various build-time tools for Keyman Developer.