Commit graph

1112 commits

Author SHA1 Message Date
Marc Durdin
0502d6ccbd
Merge pull request #7342 from keymanapp/chore/epic-ldml/merge-master-to-feature-ldml
chore: merge master into feature-ldml 🙀
2022-09-24 10:12:00 +10:00
Steven R. Loomis
03012248a2 chore(windows): remove crc32 from tike 2022-09-23 11:48:47 -05:00
Steven R. Loomis
700db810e0 fix(core): fix for incorrect earlier fix 2022-09-22 17:26:39 -05:00
Steven R. Loomis
de3225a4f5 Merge remote-tracking branch 'origin/feature-ldml' into chore/core/7276-checksums-epic-ldml 2022-09-22 17:13:27 -05:00
Marc Durdin
33fd8cffba chore(developer): ts v4.8.3 upgrade breaks mocha 10.0.0 with ts-node
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.
2022-09-23 05:25:24 +10:00
Marc Durdin
6f949ad63f chore(developer): fixup dependency type changes
* xml2js, `emptyTag` property: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59259
* semver `parse` `includePrerelease` property: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/61586#discussion_r939877412
* commander use needed to be declared for hextobin
2022-09-22 11:46:44 +10:00
Steven R. Loomis
93a9509302 chore(core): delete crc32.cpp and crc32.pas from some places 2022-09-21 18:13:19 -05:00
Marc Durdin
cae408edc5 chore: merge feature-ldml into branch 2022-09-21 14:56:45 +10:00
Marc Durdin
55f302d929
Merge pull request #7322 from keymanapp/chore/merge-master-to-feature-ldml
chore: merge master into feature-ldml 🙀
2022-09-20 13:42:40 +10:00
Marc Durdin
d1de02d43e chore(developer): Merge branch 'master' into chore/developer/server-node-gyp-dependency 2022-09-20 10:19:11 +10:00
Marc Durdin
9f290cac21 chore(developer): Merge branch 'master' into chore/developer/server-update-multer-dependency 2022-09-20 10:16:46 +10:00
Marc Durdin
aab9d1aad5 chore(developer): Merge branch 'master' into chore/developer/server-node-gyp-dependency 2022-09-20 10:14:16 +10:00
Steven R. Loomis
66281da0e0
Update developer/src/kmcmpdll/Compiler.cpp
Co-authored-by: Marc Durdin <marc@durdin.net>
2022-09-19 14:59:46 -05:00
Marc Durdin
93a1fc88b9 chore(developer): remove crc generation from kmc-keyboard 2022-09-19 15:30:38 +10:00
Marc Durdin
a59a6c334a chore: update node-windows-trayicon to update node-gyp to 9.1.0 2022-09-19 15:07:24 +10:00
Marc Durdin
3d61d18371 chore(developer): update multer dependency for server
Removes Keyman Developer Server's transitive dependency on dicer by
updating multer to `1.4.5-lts.1`, which updates its dependency on
busboy.

See
https://github.com/expressjs/multer/pull/1097#issuecomment-1141286771
for reasoning behind use of  `-lts.1` rather than a full release
version.

At some point in the future, multer will publish a full release with
this fix, at which point we can move back to a full release version.
2022-09-19 12:36:51 +10:00
Marc Durdin
ee47e49568 chore(developer): fixup build path for kmc 2022-09-19 08:42:27 +10:00
Marc Durdin
e840f04ccf chore(common): make scripts executable and add pre-commit test 2022-09-19 06:39:13 +10:00
Marc Durdin
5a9495c548 chore(developer): fixup tests for kmlmc, kmlmp 2022-09-19 06:37:30 +10:00
Marc Durdin
4e396224d0 chore(developer): fixup external refs to kmc 2022-09-19 06:36:56 +10:00
Marc Durdin
003f23d7b4 feat(developer): fixup and prepare build scripts and docs for kmc 2022-09-19 06:36:06 +10:00
Marc Durdin
2d55546e55 refactor(developer): command-line wrappers for kmc 2022-09-19 06:33:51 +10:00
Marc Durdin
9c623ed872 refactor(developer): split kmlmc into kmc-model, kmc-model-info, kmc-package 2022-09-19 06:30:50 +10:00
Marc Durdin
97f4951f50 refactor(developer): move kmc modules to kmc-keyboard 2022-09-19 06:26:32 +10:00
dependabot[bot]
93ec6106e1
chore(deps): bump nanoid and mocha
Bumps [nanoid](https://github.com/ai/nanoid) and [mocha](https://github.com/mochajs/mocha). These dependencies needed to be updated together.

Removes `nanoid`

Updates `mocha` from 8.4.0 to 10.0.0
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mochajs/mocha/compare/v8.4.0...v10.0.0)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
- dependency-name: mocha
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-16 21:06:23 +00:00
Steven R. Loomis
d56f6557fb chore(core): deprecate checksum in 16.0 🙀
- do not generate unless version<16.0
- never check checksum

Fixes: #7220
2022-09-16 14:24:01 -05:00
Steven R. Loomis
efd4c83490 chore(core): ignore checksum in 16.0 🙀
- mark as deprecated

Fixes: #7220
2022-09-16 14:24:01 -05:00
Marc Durdin
3f818af46b
chore: Update developer/src/kmc/test/fixtures/sections/meta/invalid-version-1.0.xml 2022-09-16 09:25:57 +10:00
Marc Durdin
ba88412dfe chore(developer): improve kmc validation and corresponding tests
* Add a bunch of tests for keys
* Add tests for version. (improves meta test coverage to 100%)
* A bit more consistency cleanup also of error message functions.
* Adds a compiler failure (FATAL) if compile fails after validate
  passes.
* Overall test coverage now 93.5% lines. Biggest gap still kmx-builder.
  All compiler units are >90%.
2022-09-14 11:47:14 +10:00
Marc Durdin
110f6ffbbd feat(developer): add kmx metadata to kmxplus compiles
Fixes #7273.

Adds 4 kmx system stores to allow existing configuration tools to load
and process KMXPlus files without modification:

* `TSS_NAME` (first `<name>`)
* `TSS_COMPILEDVERSION` (only if `options.addCompilerVersion == true`)
* `TSS_KEYBOARDVERSION` (from `<version number>`)
* `TSS_TARGETS` (currently always 'desktop', will later include more
  targets)

In order for `TSS_COMPILEDVERSION` to be handled correctly, needed to
plumb in the new `CompilerOptions` interface. This could be a separate
PR, but the changes are not huge, so opted to append the changes here.

Updates related tests and fixtures. Refactored some of the e2e helpers
into helpers/index.ts for use with the metadata-compiler tests.
2022-09-14 09:26:22 +10:00
Marc Durdin
ea902d2f1c
Merge pull request #7225 from keymanapp/fix/developer/7028-touch-layout-desktop-view-has-broken-format
fix(developer): hide key-sizes when in desktop layout in touch layout editor
2022-09-13 11:31:15 +10:00
Marc Durdin
3fd9df5277 chore(core): Merge branch 'feature-ldml' into chore/core/7247-use-builder-for-build-sh 2022-09-13 07:25:10 +10:00
Marc Durdin
3e6d9356c3
Merge pull request #7255 from keymanapp/chore/7222-optional-checksum
chore: make checksum optional 🙀
2022-09-13 06:30:04 +10:00
Marc Durdin
74a6c65710
Merge branch 'feature-ldml' into chore/merge-master-into-feature-ldml 2022-09-12 15:24:19 +10:00
Marc Durdin
bd48ba646b
Merge pull request #7219 from keymanapp/fix/developer/7216-suppress-repeated-warnings-unreachable-code
fix(developer): suppress repeated warnings about unreachable code
2022-09-12 11:18:54 +10:00
Marc Durdin
91d375ac81 chore(core): use builder_ for build.sh
Refactoring of build.sh to use the builder_ functions. The script should
now be a lot cleaner. Usage is available with `core/build.sh --help`

Targets are :x86, :x64, :wasm, :arch (linux/mac).

Supports additional requirements of Linux build (--target-path,
--configure).

By default will attempt to build all available targets.

Actions are: clean, configure, build, test, install, uninstall.

The install and uninstall actions only work for linux and mac targets at
present.
2022-09-12 09:56:32 +10:00
Marc Durdin
89ccc393ab chore: make checksum optional
Fixes #7222.
2022-09-09 17:23:07 +10:00
Marc Durdin
d9512027f9 refactor(developer): kmc - encapsulate strs and elem items for sort
Fixes #7235.

Encapsulates all strings in the in-memory compile so that we can binary
sort them for build. This means that finalization of strs and elem is
no longer needed -- it's part of setup of build_strs and build_elem --
so that is factored away. Renamed alloc_string and alloc_element_string.

It may be worth renaming some of the ELEM_STRING objects / interfaces as
currently they are a little confusing.
2022-09-09 15:17:39 +10:00
Marc Durdin
c82326f595 chore(developer): kmc - use local reference for json schema
Fixes #7221.
2022-09-09 09:29:08 +10:00
Marc Durdin
39c79dfcf5 chore: chmod +x 2022-09-09 09:20:06 +10:00
Marc Durdin
561899a2a0 refactor(developer): rename kmldmlc to kmc
Fixes #7237.

Full clean, configure and build will be required for Core, Developer
after this change.

kmc is much less unwieldy a name than kmldmlc, and becomes our platform
for future compiler integration. Start of implementation for #5283 also.
2022-09-09 09:13:39 +10:00
Marc Durdin
b6c4e21c1d chore(developer): remove name from meta section
Fixes #7214.
2022-09-09 08:57:52 +10:00
Marc Durdin
70cff601d6
Merge pull request #7213 from keymanapp/feat/developer/kmldmlc-test-coverage
feat(developer): add nyc to kmldmlc for test coverage 🙀
2022-09-09 05:22:05 +10:00
Marc Durdin
0def7dd97d
Merge pull request #7212 from keymanapp/feat/developer/kmldmlc-transform-sections
feat(developer): kmldmlc compiler for transforms 🙀
2022-09-09 05:21:54 +10:00
Marc Durdin
5a14f27d07
Merge pull request #7211 from keymanapp/refactor/developer/kmldmlc-split-builder-functions
refactor(developer): split kmxplus builder functions into separate files 🙀
2022-09-09 05:21:44 +10:00
Marc Durdin
ec5a83a3fa
Merge pull request #7204 from keymanapp/feat/core/ldml-transform-table-specs-and-constants
feat(core): ldml keyboard transform elements 🙀
2022-09-07 11:28:42 +10:00
Marc Durdin
89331b62c4
Merge pull request #7203 from keymanapp/chore/developer/add-test-for-messages-and-improve-reporting-on-e2e
chore(developer): add test for compiler messages and cleanup e2e test 🙀
2022-09-07 11:28:35 +10:00
Marc Durdin
6ba737de9f
Merge pull request #7202 from keymanapp/refactor/developer/kmldmlc-cleanup-vkey-constants
refactor(developer): cleanup virtual key constants 🙀
2022-09-07 11:28:29 +10:00
Marc Durdin
f96e3493af fix(developer): hide key-sizes when in desktop layout in touch layout editor
Fixes #7028.

Note that the desktop layout is not currently used by KeymanWeb. The
designer has a number of additional issues, as the .keyman-touch-layout
format is not well suited to describing a fixed hardware layout, but
fixing this is outside the scope of this issue.
2022-09-07 11:13:22 +10:00
Marc Durdin
c98fb89b86 fix(developer): suppress repeated warnings about unreachable code
Fixes #7216.

The warning message 0x209A 'The rule will never be matched because its
key code is never fired.' was being generated multiple times for a
single line because the `JavaScript_Key` function it is generated by is
used for various purposes.

This PR keeps a cache of reported key rules to ensure that the message
is reported only once for a given key rule, and also improves the
reporting to clarify which specific key is unreachable, which makes it
easier to diagnose when using `any(k)` style messages, for example:

```
lao_phonetic.kmn (237): Warning: 209A The rule will never be matched for key 'ñ' because its key code is never fired.
```

This also reduces the warning to a hint, as this should not be a
blocking issue for a keyboard, rather just a place the keyboard author
can tidy up.
2022-09-07 06:02:46 +10:00