Commit graph

2252 commits

Author SHA1 Message Date
Marc Durdin
35814bc29f chore(developer): add --for-publishing to kmc
The new --for-publishing flag allows us to enforce additional
requirements for keyboards and lexical models that are to be published
to the keymanapp repositories. This flag will always be switched on in
the repository builds. This flag overrides the 'skipMetadata' option
which is a project-level option.

There is a bit of a delicate balance of requirements here:

1. We want to be able to automatically verify keyboards and package
   licenses if they are in the repository.
2. We do not want to force license checks on privately built keyboards
   and models.
3. We want to provide pathways for users to check locally before
   submitting to the repository.
4. If possible, we want to be able to build the .keyboard_info and
   .model_info files locally, but this should be up to the user for
   local builds.

For now, the only additional check that this flag provides is to verify
that the license is MIT, which was an unchecked requirement for the
repositories in the past.

Future checks can be added for file layout, additional required
metadata files.

Anticipate adding this as a tool to Keyman Developer IDE -- a
'pre-publish' check -- in the future.
2023-10-09 07:45:34 +07:00
Marc Durdin
52291b1ccb chore(developer): remove unused xml2js references 2023-10-09 06:34:32 +07:00
Marc Durdin
0f5e88192c chore(developer): Update kmc-package xml2js dependency
I missed adding this as a dependency for @keymanapp/kmc-package. because
node has a very lenient dependency search, it found xml2js from other
@keymanapp/common-types, so never caused errors locally.
2023-10-09 06:06:34 +07:00
Marc Durdin
f76efc38cc chore(common): stop using xml2js.processors.firstCharLowerCase
Fixes #9713.
2023-10-09 05:43:29 +07:00
Marc Durdin
36a3a27bac fix(developer): non-minimal BCP 47 tags in kps should be a hint
Fixes #9266.

For historical reasons there are many non-minimal BCP 47 tags in package
metadata in the repository (over 2500). Furthermore, earlier versions of
kmcomp did not fail the build on package compilation warnings. This
means it is better to reduce WARN_LanguageTagIsNotMinimal to
HINT_LanguageTagIsNotMinimal, so that we can otherwise respect the
'treat warnings as errors' flag on the keyboard projects.

We may be able to upgrade this to a warning again one day in the future.
2023-10-09 05:19:43 +07:00
Marc Durdin
cc5b8da69b refactor(developer): .keyboard_info examples should use keys as a string
Fixes #9708.

Matches the kmp.json format of keys string in the .keyboard_info schema
and compiler, in order to reduce the number of formats we are working
with. This same format may be used elsewhere in Keyman schemas in the
future for sets of keys, for example, I hope we can use it in regression
tests.
2023-10-08 19:01:14 +07:00
Marc Durdin
400444933c feat(developer): introduce WelcomeFile property to packages
Fixes #9478.

This adds a property WelcomeFile to .kps and kmp.json, which allows us
to move away from the hardcoded welcome.htm filename in the future, and
makes transform from Markdown (#9477) a simpler operation, and just
generally starts the cleanup of the messiness of hard-coded filenames.

The package compiler will fallback to injecting welcome.htm into this
property if (a) welcome.htm is present, and (b) the property does not
already have a value. This doesn't buy us much because we still need to
support welcome.htm for existing legacy packages, but does mean that
our .kmp package metadata will be more consistent for packages compiled
with 17.0+ compilers.
2023-10-08 07:22:57 +07:00
Marc Durdin
928bd2a7cd chore(common): fixup tsconfig for common/web/utils 2023-10-06 14:48:28 +07:00
Marc Durdin
6c944cff65 chore: Merge branch 'epic/package-metadata' into chore/merge-master-into-package-metadata 2023-10-06 11:52:13 +07:00
Marc Durdin
a1d7095c58
Merge pull request #9681 from keymanapp/chore/common/9262-cleanup-final-non-esm
chore(common): cleanup final Typescript non-ESM metadata
2023-10-06 13:37:54 +11:00
Marc Durdin
42c869ac54
Merge pull request #9676 from keymanapp/chore/common/9675-hextobin-to-esm
chore(common): convert hextobin to ES Modules
2023-10-06 13:37:25 +11:00
Marc Durdin
0b4a252b0a
Merge pull request #9673 from keymanapp/chore/developer/9672-server-to-esm
chore(developer): convert Server to ES Modules
2023-10-06 13:37:20 +11:00
Marc Durdin
68740f2aa2
Merge branch 'epic/package-metadata' into feat/common/9640-precompile-schemas 2023-10-06 12:27:31 +11:00
Marc Durdin
a314ba46a6 fix(developer): server node addin paths 2023-10-05 14:42:33 +07:00
Marc Durdin
225877f57a feat(common): precompile json schemas to improve performance
Fixes #9640.

This ended up being somewhat more fragile than originally anticipated.
For the `ajv` cli call to get the right versions, we needed to install
ajv as a dev dependency in the top-level package.json as well as at the
common/web/types level.

Ajv does not do all that well with ESM yet, either, so we use esbuild to
transform the compiled validators before building in typescript.
2023-10-05 13:56:53 +07:00
Marc Durdin
26e4c82026
Merge branch 'chore/common/9679-keyman-version-esm-only' into chore/common/9262-cleanup-final-non-esm 2023-10-04 21:36:59 +11:00
Marc Durdin
383678a002 chore(developer): cleanup hextobin call 2023-10-04 17:34:43 +07:00
Marc Durdin
693aee5c99
Merge branch 'epic/package-metadata' into chore/merge-master-into-package-metadata 2023-10-04 19:34:16 +11:00
Marc Durdin
f832b9ff3d chore(developer): remove temp non-esm module in kmc-model 2023-10-04 15:25:01 +07:00
Marc Durdin
33b6b5abc2 chore: update tsconfig 2023-10-04 15:16:34 +07:00
Marc Durdin
3e51389e17
Merge branch 'chore/common/9679-keyman-version-esm-only' into chore/common/9262-cleanup-final-non-esm 2023-10-04 19:07:37 +11:00
Marc Durdin
75a0977cdb chore(developer): fix server tests 2023-10-04 14:17:59 +07:00
Marc Durdin
d4e4992714 chore(common): cleanup final Typescript non-ESM metadata
Fixes #9262.
2023-10-04 12:55:51 +07:00
Marc Durdin
e7ac526c69 chore(developer): fixup Makefile for server 2023-10-04 11:50:03 +07:00
Marc Durdin
8e23b11dfc chore(developer): convert Server to ES Modules
Fixes #9672.

Also rewrote build.sh as a builder script in order to simplify some of
the build changes.

Makes /web a dependency of Keyman Developer Server, which is a
significant improvement, but we need to consider if we want to use web's
debug build as we did in the past.
2023-10-04 09:38:48 +07:00
Marc Durdin
248297fe5f
Merge branch 'master' into feat/developer/9324-warn-if-kps-includes-non-touch-js 2023-10-04 03:46:40 +02:00
Marc Durdin
5bb24c2910
Merge pull request #9662 from keymanapp/chore/developer/8661-add-c8-to-kmc
chore(developer): switch on code coverage reporting for kmc
2023-10-04 03:45:33 +02:00
Marc Durdin
4367bac8f7
Merge pull request #9658 from keymanapp/feat/developer/9325-hint-if-package-includes-keyboard-source-files
feat(developer): issue hint if package includes keyboard source files
2023-10-04 03:45:26 +02:00
Marc Durdin
abd363dc8b
Merge pull request #9653 from keymanapp/chore/developer/9597-reduce-warnings-to-hint-in-kmc-model
chore(developer): reduce duplicate words warning to hint
2023-10-04 03:45:18 +02:00
Marc Durdin
4562c8b6d7
Merge pull request #9652 from keymanapp/feat/developer/9610-info-when-warnings-fail-build
feat(developer): show an INFO message when warnings have failed a build
2023-10-04 03:45:08 +02:00
Marc Durdin
e0c2778199
Merge pull request #9644 from keymanapp/chore/merge-master-into-package-metadata
chore: merge master into package-metadata 🎺
2023-10-04 03:43:45 +02:00
Marc Durdin
99663ce9f0
Merge pull request #9621 from keymanapp/chore/developer/9620-validate-keyboard_info-and-fix-keys
chore(developer): validate emitted .keyboard_info and fix keys 🎺
2023-10-04 03:42:22 +02:00
Marc Durdin
1fa540c77f
Merge pull request #9612 from keymanapp/chore/developer/9611-normalize-case-on-input-filenames
chore(developer): normalize case on input filenames in kmc 🎺
2023-10-04 03:42:10 +02:00
Steven R. Loomis
01c171ce82
Merge pull request #9615 from keymanapp/feat/developer/9403-scancodes-epic-ldml
feat(developer): ldml scan codes support 🙀
2023-10-03 08:55:19 -05:00
Marc Durdin
c5ee900736
Merge pull request #9661 from keymanapp/chore/developer/9317-test-for-check-filename-conventions-off
chore(developer): add test for `checkFilenameConventions == false` or unset
2023-10-03 15:39:43 +02:00
Marc Durdin
cb3d526310
Merge pull request #9619 from keymanapp/chore/developer/9551-remove-keyboard_info-sources
chore(developer): remove .keyboard_info sources 🎺
2023-10-03 15:38:37 +02:00
Marc Durdin
05e2b196dc
Merge branch 'epic/package-metadata' into feat/windows/create-installer-without-buildpkg 2023-10-03 15:38:17 +02:00
Marc Durdin
f864f57d8b
Merge pull request #9607 from keymanapp/feat/developer/kmc-package-windows-installer
feat(developer): Windows package installer compiler 🎺
2023-10-03 15:35:43 +02:00
Marc Durdin
70dfbce5aa
Merge pull request #9571 from keymanapp/feat/developer/remove-kmcmpdll
feat(developer): remove kmcomp, kmcmpdll 🎺
2023-10-03 15:35:19 +02:00
Marc Durdin
d2856a357c
Merge pull request #9539 from keymanapp/feat/developer/use-kmc-in-tike
feat(developer): use kmc to compile project files 🎺
2023-10-03 15:35:11 +02:00
Marc Durdin
311c7675ee
chore: Update developer/src/tike/project/Keyman.Developer.System.Project.kmnProjectFileAction.pas 2023-10-04 00:34:57 +11:00
Marc Durdin
1b9c6fba51 feat(developer): warn if .kps includes a .js which is not touch-capable
Fixes #9324.

As .js keyboards in packages are only used by the iOS and Android apps,
it's kinda helpful if the keyboard itself includes a touch layout. While
Keyman will fall back to a desktop vk layout if a touch layout is not
present, this is less than ideal -- but that's why this is setup as a
hint and not a warning.
2023-10-03 15:28:22 +07:00
Marc Durdin
c66e8c1e8f chore(developer): switch on code coverage reporting for kmc
Fixes #8661.
2023-10-03 13:56:21 +07:00
Marc Durdin
886c64d1c3 chore(developer): add test for checkFilenameConventions == false or unset
Fixes #9317.
2023-10-03 13:29:34 +07:00
Steven R. Loomis
8200f84418 feat(developer): scancode and forms 🙀
- fix casing of k_oC1
- allow vkey 226 to be doubly defined
- drop LdmlVkeyNames table and test, not needed anymore (was for vkey #7135)

Fixes: #9403
2023-10-02 12:30:36 -05:00
Marc Durdin
a2fa1f918e feat(developer): issue hint if package includes keyboard source files
Fixes #9325.

Also tweaks test for error_package_must_contain_a_model_or_a_keyboard as
the fixture had a .kmn, triggering the new hint, which was unhelpful in
this case.
2023-10-02 15:55:00 +07:00
Marc Durdin
7adc9b5d95 feat(developer): support store(&version) '17.0'
Fixes #9541.

Also adds version 16.0 support to the kmcmplib compiler constants, and
unit tests for both versions. Does not add any support for automatic
version feature detection, because that forces an inverted dependency on
the touch layout compilation phase (done in kmc-kmw), which would be a
significant refactor. This may be something we need to support in the
future.
2023-10-02 15:30:07 +07:00
Marc Durdin
d4fb7cd234 chore(developer): reduce duplicate words warning to hint
Fixes #9597.
2023-10-02 12:48:10 +07:00
Marc Durdin
c168ef01cb feat(developer): show an INFO message when warnings have failed a build
Fixes #9610.

If a build fails when "treat warnings as errors" is on, but there are
only warnings and no error messages, it can be confusing for the
developer. Adds the following `INFO_WarningsHaveFailedBuild` message:

`The build failed because option "treat warnings as errors" is enabled
and there are one or more warnings.`
2023-10-02 12:36:54 +07:00
Marc Durdin
fafedbbd72
chore: Apply suggestions from code review 2023-10-02 14:24:07 +11:00