spiegel-keyman/developer/src
Marc Durdin d7f73f3078 chore: workaround npm/cli#3466 when bundling internal deps
Works around npm/cli#3466 when bundling internal dependencies using the
bundleDependencies package.json property.

This change works in tandem with the npm pack/publish process -- when we
run `developer/src/kmc/build.sh publish` (or `pack`), we end up with
`npm version` stomping on all our package.json files, so the repo is
dirty after this. We need a copy of the top-level package.json before
this stomping happens, in order to get a simple map of the location of
each of our internal dependencies, from the `dependencies` property (it
would be possible to figure this out with a lot more parsing of
our package.json files, but this is simpler).

This means, in future, we should avoid publishing our internal
dependencies such as those under common/ to npm, as they serve no
practical purpose there.
2023-09-01 20:30:43 +08:00
..
common chore: address review comments 2023-07-21 12:39:02 +10:00
ext chore(developer): cross-platform fixups pre-wasm build of kmcmplib 2023-03-08 13:49:06 +07:00
images fix(developer): remove ancient samples 2022-11-01 17:04:38 +11:00
inst chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-kmc-kmw-a17s17 2023-07-21 10:09:33 +07:00
kmanalyze fix(core): fix for incorrect earlier fix 2022-09-22 17:26:39 -05:00
kmc chore: workaround npm/cli#3466 when bundling internal deps 2023-09-01 20:30:43 +08:00
kmc-analyze chore(developer): improve kmc sentry reporting on fatal build errors 2023-08-09 09:34:44 +07:00
kmc-keyboard-info chore(developer): improve kmc sentry reporting on fatal build errors 2023-08-09 09:34:44 +07:00
kmc-kmn chore(developer): improve kmc sentry reporting on fatal build errors 2023-08-09 09:34:44 +07:00
kmc-ldml Merge branch 'master' into feat/core/9119-marker-core-epic-ldml 2023-08-09 11:03:53 -05:00
kmc-model chore(developer): improve kmc sentry reporting on fatal build errors 2023-08-09 09:34:44 +07:00
kmc-model-info chore(developer): improve kmc sentry reporting on fatal build errors 2023-08-09 09:34:44 +07:00
kmc-package chore(developer): improve kmc sentry reporting on fatal build errors 2023-08-09 09:34:44 +07:00
kmcmpdll chore(developer): refactor kmcmplib interfaces 2023-05-30 08:14:23 +07:00
kmcmplib chore: Merge branch 'feature-kmc-kmw' into chore/merge-master-into-feature-kmc-kmw-a17s18 2023-08-04 12:54:10 +07:00
kmcomp chore(developer): remove usekmcmplib flag from kmcomp 2023-05-30 10:57:57 +07:00
kmconvert Merge remote-tracking branch 'origin/master' into chore/core/mergemaster4-epic-ldml 2022-12-15 17:55:13 -06:00
kmdecomp fix(core): fix for incorrect earlier fix 2022-09-22 17:26:39 -05:00
samples fix(windows): lower case filenames for projects 2022-11-28 19:29:48 +07:00
server chore(developer): apply suggestions from code review 2023-06-08 11:57:35 +07:00
setup chore(developer): increase label height in setup 2022-06-29 12:54:22 +10:00
test/auto chore(developer): further kmc-keyboard-info infrastructure 2023-07-26 12:02:09 +07:00
tike chore: Apply suggestions from code review 2023-08-09 18:32:20 +10:00
tools chore(developer): further kmc-keyboard-info infrastructure 2023-07-26 12:02:09 +07:00
.eslintrc.cjs chore(developer): add eslint devDependency for kmc 2023-04-25 13:44:56 +07:00
.gitignore feat(developer): fixup and prepare build scripts and docs for kmc 2022-09-19 06:36:06 +10:00
Defines.mak feat(developer): fixup and prepare build scripts and docs for kmc 2022-09-19 06:36:06 +10:00
developer.groupproj chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00
developer.sln chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00
Header.mak chore(developer): additional moves of developer scripts 2022-05-22 07:59:54 +10:00
history.md chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00
Makefile feat(developer): introduce kmc-keyboard-info 2023-07-24 10:41:12 +07:00
README.md chore: rename kmc-keyboard to kmc-ldml 2023-05-09 14:08:45 +07:00
Target.mak chore(developer): move .mak to src 2022-05-19 09:26:00 +10:00

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-ldml - 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.