Commit graph

399 commits

Author SHA1 Message Date
Marc Durdin
57f0dc4597 fix(developer): validate id and modifiers attributes in Layr compiler
Per the spec, the `id` attribute is required for touch layers, and
`modifiers` attribute is required for hardware layers. There is
ambiguity in the spec at present as to whether they should be allowed
for the alternative type.

* Validate that the attributes are present where required.
* Tighten validation of `modifiers` attribute - it cannot be empty or
  missing for hardware; "" != "none".
* Hint if the attribute is present when it probably shouldn't be (to be
  potentially raised to warning or error after spec clarified).
* Fixup all keyboard3 xml files to conform to spec and eliminate hints.
* Add unit tests.
* Removed threshold warning for coverage as kmc-ldml is already > 90%.

Fixes: #12423
2026-08-28 13:21:12 +02:00
Marc Durdin
369911397a fix(developer): validate the number of hardware layers only in Layr compiler
`KeysCompiler` runs before `LayrCompiler` so this verification needs to
defer rather than throw. We can assume that the `LayrCompiler` will
catch it.

Fixes: KEYMAN-DEVELOPER-3XD
Fixes: #16454
Test-bot: skip
2026-08-28 11:49:59 +02:00
Marc Durdin
b535203e36 chore(developer): fix docs, api_extractor params in build.sh's
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Test-bot: skip
Build-bot: skip release:developer
2026-06-29 16:34:39 +02:00
Marc Durdin
d86604902e chore(developer): consolidate api-extractor usage in Developer
* Centralize the api-extractor.json files, update usage
* Support @since
* Tidy up a few warnings relating to API documentation content

Fixes: #14838
Test-bot: skip
2026-06-24 14:45:05 +02:00
Marc Durdin
529a49431e maint(developer): make TestCompilerCallbacks usage more consistent and simplify
Simplify usage of `TestCompilerCallbacks` by making it responsible for
the `beforeEach` and `afterEach` incantations itself. There are a couple
of more complex usages of `TestCompilerCallbacks` which have been
excluded from this change on purpose.

Renamed `testCallbacks` to `callbacks` in the one place where it was
different.

Hoist @types/node and @types/mocha because inconsistent versions of
@types/mocha were causing compiler errors with this change.

Also added a cast to `fs.readFileSync` to `Uint8Array` to eliminate
compiler warnings/errors in test files.

Fixes: #15654
Test-bot: skip
2026-03-03 16:44:06 +01:00
Marc Durdin
df212364a2 maint(resources): add repository record for all published packages
While not documented as such, it appears that the repository record is
required with trusted publishing of npm packages.

Test-bot: skip
Build-bot: skip
2025-10-29 14:35:31 +01:00
Marc Durdin
ba411774f6 maint(resources): move NPM package publishing to GitHub Actions
Due to recent changes in NPM package publishing security requirements,
we have to move from TeamCity build to a GitHub Action to publish our
NPM packages, so we can take advantage of trusted publishing. This
change also consolidates and centralizes the npm publishing into
resources/build/ci/npm-publish.sh, which removes a lot of boilerplate
from each of the build.sh scripts, and ensures consistency.

Packages will be `npm pack`ed on PR and test builds, and published in
release builds.

Ref: https://docs.npmjs.com/trusted-publishers
Ref: https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/
Fixes: #14963
Test-bot: skip
Build-bot: release:developer
2025-10-27 16:31:55 +01:00
Marc Durdin
f3fb3ac87b maint(common): move build-utils-ci.inc.sh to ci/ci-publish.inc.sh
Removes a number of unused functions from the file, renames remaining
functions to match our builder script prefix patterns, removes unused
imports from various build scripts (e.g. Android).

Fixes: #14453
2025-08-05 12:54:56 +10:00
Marc Durdin
acefdf281a maint(common): move typescript script functions into typescript.inc.sh
Fixes: #14448
Build-bot: build
Test-bot: skip
2025-08-03 07:01:57 +10:00
Marc Durdin
2726050601 maint(common): rename and move node-related script functions into node.inc.sh
Consolidates the node-related script functions into node.inc.sh, as part
of cleaning up the build scripts and making them easier to maintain into
the future.

Fixes: #14447
2025-08-02 13:34:29 +10:00
Marc Durdin
f394245636 maint(common): consolidate builder scripts
Clarifies the confusing builder.inc.sh / build-utils.sh distinction by
giving the scripts more appropriate names. Most build scripts should use
builder-full.inc.sh; some helper scripts can use builder-basic.inc.sh.
Documented in resources/build/README.md.

Renames:
* resources/build/builder.inc.sh to resources/build/builder-full.inc.sh
* resources/build/build-utils.sh to resources/build/builder-basic.inc.sh

Other changes:
* Moves Android-specific functions out of builder-basic.inc.sh and into
  android/build.sh.
* Renames functions in builder-basic.inc.sh

More functions may be moved from builder-basic.inc.sh into utils.inc.sh
or other scripts in the future.

Fixes: #14065
Build-bot: build all
Test-bot: skip
2025-08-02 08:11:24 +10:00
Marc Durdin
65158a0526 maint(common): rename shellHelperFunctions.sh to utils.inc.sh
Adds documentation for various functions, removes unused functions (a
couple of simple, very lightly used functions were unDRYed; these could
go back the other way across all shell scripts if necessary). TODO items
noted for follow-up refactoring.

Fixes: #14275
Relates-to: #14269
Build-bot: build all
Test-bot: skip
2025-08-02 06:58:40 +10:00
Steven R. Loomis
0a35181bed chore(developer): rename x: to compileContext:
Fixes: #14117
2025-06-26 15:58:43 -05:00
Steven R. Loomis
28ba904b37 chore(developer): rename ObjectWithMetadata to ObjectWithCompileContext
Fixes: #14117
2025-06-26 15:56:52 -05:00
Steven R. Loomis
ee6958a896 feat(developer): test fixes for line numbers in layr compiler
Fixes #13940
2025-06-13 16:10:15 -05:00
Steven R. Loomis
7a741dc9d0 chore(developer): ldml: additional line numbers
- ajv validation
- more fixes from out of box testing

Fixes: #14099
2025-06-02 16:30:29 -05:00
Steven R. Loomis
25ddb324f2 chore(developer): ldml: bring strs/tran compiler messages in line with design
- fix a case where context wasn't being passed

Fixes: #14099
2025-06-02 13:33:00 -05:00
Steven R. Loomis
3743a92534 chore(developer): ldml: bring strs/tran compiler messages in line with design
- fix some case pertaining to strings and escapes

Fixes: #14099
2025-06-02 13:00:56 -05:00
Steven R. Loomis
41cf045d3f chore(developer): ldml: add a test for complex interpolation in messages
- and fix a case in keys

Fixes: #14099
2025-06-02 12:20:39 -05:00
Steven R. Loomis
dc0023098d chore(developer): ldml: bring layr/keys compiler messages in line with design
Fixes: #14099
2025-06-02 11:15:23 -05:00
Steven R. Loomis
01777fc897 chore(developer): ldml: bring disp compiler messages in line with design
- simplify some messages to use <display display='..'> as the key, so there's not code running in the message function

Fixes: #14099
2025-06-02 10:58:56 -05:00
Steven R. Loomis
4884d7ceb5 chore(developer): ldml: remove dup zapMessageMetadata()
Fixes: #14099
2025-06-02 10:41:19 -05:00
Steven R. Loomis
a5d4177177
Merge branch 'feat/developer/13937-ln-tran-bksp' into chore/developer/14091-err-unparseable-reorder 2025-06-02 10:15:08 -05:00
Steven R. Loomis
35db576dea
Merge branch 'feat/developer/13935-ln-usetcompiler' into feat/developer/13937-ln-tran-bksp 2025-06-02 10:14:53 -05:00
Steven R. Loomis
cf68b2a3bd
Merge branch 'feat/developer/13932-ln-more-strscompiler' into feat/developer/13935-ln-usetcompiler 2025-06-02 10:14:25 -05:00
Steven R. Loomis
536cdc3c45 feat(developer): ldml: fix for test case
Fixes: #13932
2025-06-02 09:27:46 -05:00
Steven R. Loomis
77abdd6469 feat(developer): ldml: update errors for unparseable reorder
- remove the unparseable reorder message - instead, the unicodeset messages will be thrown.

Fixes: #14091
2025-06-02 08:59:50 -05:00
Steven R. Loomis
fab29aad77 feat(developer): ldml: update errors for unparseable reorder
Fixes: #14091
2025-06-02 08:52:00 -05:00
Steven R. Loomis
961a18e0bd Merge remote-tracking branch 'origin/feat/developer/13935-ln-usetcompiler' into feat/developer/13937-ln-tran-bksp 2025-06-02 08:45:04 -05:00
Steven R. Loomis
401015d8ad
Merge branch 'feat/developer/13932-ln-more-strscompiler' into feat/developer/13935-ln-usetcompiler 2025-06-02 08:44:22 -05:00
Steven R. Loomis
706ff1a858
Merge branch 'master' into feat/developer/13932-ln-more-strscompiler 2025-06-02 08:41:41 -05:00
Steven R. Loomis
bc3a8ff36d feat(developer): ldml: tran compiler: all relevant messages in ldml have line numbers!
Fixes: #13937
2025-05-30 15:41:16 -05:00
Steven R. Loomis
814c9b9ef9 feat(developer): ldml: list compiler: add context to linter
Fixes: #13935
2025-05-30 14:47:10 -05:00
Steven R. Loomis
9d0d34bf09 feat(developer): ldml: list compiler: add context to lists. vars, markers, usets...
- update several messages and the substitution tracker to take context

Fixes: #13935
2025-05-30 14:34:40 -05:00
Steven R. Loomis
8662acc46d feat(developer): ldml: list compiler: add context to lists
add contexts to lists and elements and uset

Fixes: #13935
2025-05-30 12:55:57 -05:00
Steven R. Loomis
96f0f783f5 feat(developer): ldml: strscompiler: remaining allocString() calls
This concludes all of the allocString() calls that aren't part of lists, sets, elements etc.

Fixes: #13932
2025-05-30 11:34:57 -05:00
Steven R. Loomis
097c03d2c3 feat(developer): ldml: strscompiler: exclude line numbers from some tests assertions
- remove line number information for some "simpler" uses of the compileKeyboard() test helper

For: #13932
2025-05-30 09:26:39 -05:00
Steven R. Loomis
70ced9847a chore(developer): ldml: unit test for .run() validation
- re-run invalid-illegal.xml through compiler.run()
- ensure it fails

Fixes: #14067
2025-05-29 13:53:23 -05:00
Steven R. Loomis
c3705bf9ef feat(developer): ldml: strscompiler: add context to more allocString call sites
- disp, keys, layr, tran

For: #13932
2025-05-29 09:09:58 -05:00
Steven R. Loomis
633f9551c7 feat(developer): update strs compiler to collect context
- attempt to find an object with a context

For: #13932
2025-05-28 20:17:44 -05:00
Steven R. Loomis
c70464e23f fix(developer): ldml: make sure .run() calls compile() with postValidation
- .run() doesn't call validate() and then compile(), so it needs to call compile() with postValidation=true

Fixes: #14067
2025-05-28 20:15:33 -05:00
Steven R. Loomis
153c03e9f5
Merge branch 'feat/developer/13939-ln-layrcompiler' into feat/developer/13940-ln-locacompiler 2025-05-27 10:54:16 -05:00
Steven R. Loomis
0674fccb05
Merge branch 'feat/developer/13938-ln-dispcompiler' into feat/developer/13939-ln-layrcompiler 2025-05-27 10:54:10 -05:00
Steven R. Loomis
a13cf744fd
Merge branch 'feat/developer/13937-line-numbers-trancompiler' into feat/developer/13938-ln-dispcompiler 2025-05-27 10:53:41 -05:00
Steven R. Loomis
28b919bce8 feat(developer): update tran compiler per code review
For: #13937
2025-05-27 10:46:16 -05:00
Steven R. Loomis
f9305f33f2 feat(developer): add line numbers to loca compiler
Fixes #13940
2025-05-26 13:12:40 -05:00
Steven R. Loomis
b681885eca feat(developer): add more tests to layr compiler
- check for duplicate minDeviceWidth
- check for invalid minDeviceWidth

Fixes #13939
2025-05-26 12:30:59 -05:00
Steven R. Loomis
d2af8cf41a feat(developer): add line numbers to layr compiler
Fixes #13939
2025-05-26 11:34:05 -05:00
Steven R. Loomis
577b439721 feat(developer): add line numbers to disp compiler
Fixes #13938
2025-05-26 10:44:12 -05:00
Steven R. Loomis
00b4de5f53 feat(developer): add line numbers to tran compiler
- move ObjectWithMetadata into symbol utils
- don't validate transforms twice (tran + bksp)

This is for #13937 but does not resolve all items
2025-05-22 17:03:40 -05:00