feat(developer): kmc-kmn tdd framework

This commit is contained in:
Marc Durdin 2023-03-22 11:17:24 +07:00
parent 305445899a
commit dd15de40df
14 changed files with 657 additions and 1 deletions

View file

@ -69,7 +69,7 @@ server: .virtual
cd $(DEVELOPER_ROOT)\src\server
$(MAKE) $(TARGET)
kmc: kmc-keyboard kmc-model kmc-model-info kmc-package
kmc: kmc-keyboard kmc-kmn kmc-model kmc-model-info kmc-package
cd $(DEVELOPER_ROOT)\src\kmc
$(MAKE) $(TARGET)
@ -77,6 +77,10 @@ kmc-keyboard: .virtual
cd $(DEVELOPER_ROOT)\src\kmc-keyboard
$(MAKE) $(TARGET)
kmc-kmn: .virtual
cd $(DEVELOPER_ROOT)\src\kmc-kmn
$(MAKE) $(TARGET)
kmc-model: .virtual
cd $(DEVELOPER_ROOT)\src\kmc-model
$(MAKE) $(TARGET)

View file

@ -0,0 +1,37 @@
#
# Keyman Developer - kmc kmn Compiler Makefile
#
!include ..\Defines.mak
build: .virtual
$(GIT_BASH_FOR_KEYMAN) build.sh build
configure: .virtual
$(GIT_BASH_FOR_KEYMAN) build.sh configure
clean: .virtual
$(GIT_BASH_FOR_KEYMAN) build.sh clean
test: .virtual
$(GIT_BASH_FOR_KEYMAN) build.sh test
# build.sh bundle must be run from shell as it requires a temp folder to be
# passed in. See inst/download.in.mak for instantiation.
publish: .virtual
$(GIT_BASH_FOR_KEYMAN) build.sh publish
signcode:
@rem nothing to do
wrap-symbols:
@rem nothing to do
test-manifest:
@rem nothing to do
install:
@rem nothing to do
!include ..\Target.mak

70
developer/src/kmc-kmn/build.sh Executable file
View file

@ -0,0 +1,70 @@
#!/usr/bin/env bash
#
# Compiles the kmc-kmn keyboard compiler.
#
# Exit on command failure and when using unset variables:
set -eu
## START STANDARD BUILD SCRIPT INCLUDE
# adjust relative paths as necessary
THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
cd "$THIS_SCRIPT_PATH"
. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
builder_describe "Build Keyman kmc kmn to kmx Compiler module" \
"@/common/web/keyman-version" \
"@/common/web/types" \
"@/developer/src/kmcmplib:wasm" \
"configure" \
"build" \
"clean" \
"test" \
"publish publish to npm" \
"--dry-run,-n don't actually publish, just dry run"
builder_describe_outputs \
configure /node_modules \
build /developer/src/kmc-kmn/build/src/main.js
builder_parse "$@"
#-------------------------------------------------------------------------------------------------------------------
if builder_start_action clean; then
rm -rf ./build/ ./tsconfig.tsbuildinfo
builder_finish_action success clean
fi
#-------------------------------------------------------------------------------------------------------------------
if builder_start_action configure; then
verify_npm_setup
builder_finish_action success configure
fi
#-------------------------------------------------------------------------------------------------------------------
if builder_start_action build; then
tsc --build
builder_finish_action success build
fi
#-------------------------------------------------------------------------------------------------------------------
if builder_start_action test; then
npm test
builder_finish_action success test
fi
#-------------------------------------------------------------------------------------------------------------------
if builder_start_action publish; then
. "$KEYMAN_ROOT/resources/build/npm-publish.inc.sh"
npm_publish
builder_finish_action success publish
fi

View file

@ -0,0 +1,55 @@
{
"name": "@keymanapp/kmc-kmn",
"description": "Keyman Developer kmn keyboard compiler",
"keywords": [
"keyboard",
"keyman",
"kmn",
"kmx",
"unicode"
],
"type": "module",
"exports": {
".": "./build/src/main.js"
},
"scripts": {
"build": "tsc -b",
"test": "cd test && tsc -b && cd .. && c8 --reporter=lcov --reporter=text mocha",
"prepublishOnly": "npm run build"
},
"author": "Marc Durdin <marc@keyman.com> (https://github.com/mcdurdin)",
"license": "MIT",
"bugs": {
"url": "https://github.com/keymanapp/keyman/issues"
},
"dependencies": {
"@keymanapp/keyman-version": "*"
},
"devDependencies": {
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.7",
"@types/node": "^10.14.6",
"@types/semver": "^7.3.12",
"@types/sinon": "^10.0.13",
"@types/sinon-chai": "^3.2.9",
"@types/xml2js": "^0.4.5",
"c8": "^7.12.0",
"chai": "^4.3.4",
"chalk": "^2.4.2",
"mocha": "^8.4.0",
"sinon": "^15.0.2",
"sinon-chai": "^3.7.0",
"ts-node": "^9.1.1",
"typescript": "^4.9.5"
},
"mocha": {
"spec": "build/test/**/test-*.js",
"require": [
"source-map-support/register"
]
},
"repository": {
"type": "git",
"url": "git+https://github.com/keymanapp/keyman.git"
}
}

View file

@ -0,0 +1,5 @@
export class Compiler {
public run() {
console.log('TODO: implement WASM hooks');
}
}

View file

@ -0,0 +1,2 @@
export { Compiler } from './compiler/compiler.js';

View file

@ -0,0 +1,7 @@
Keyman kmn Keyboard Compiler Tests
===================================
Test
----
../build.sh test

View file

@ -0,0 +1,28 @@
import 'mocha';
import sinon from 'sinon';
import chai, { expect } from 'chai';
import sinonChai from 'sinon-chai';
import { Compiler } from '../src/main.js';
chai.use(sinonChai);
describe('Compiler class', function() {
let consoleLog: any;
beforeEach(function() {
consoleLog = sinon.spy(console, 'log');
});
afterEach(function() {
consoleLog.restore();
});
it('should start', async function() {
const compiler = new Compiler();
compiler.run();
expect( consoleLog.calledOnce ).to.be.true;
expect( consoleLog.calledWith('TODO: implement WASM hooks') ).to.be.true;
});
});

View file

@ -0,0 +1,26 @@
{
"extends": "../../kmc/tsconfig.kmc-base.json",
"compilerOptions": {
"rootDir": ".",
"rootDirs": ["./", "../src/"],
"outDir": "../build/test",
"baseUrl": ".",
"allowSyntheticDefaultImports": true, // for chai
"paths": {
// "@keymanapp/keyman-version": ["../../../common/web/keyman-version/keyman-version.mts"],
"@keymanapp/common-types": ["../../../../common/web/types/src/main"],
// "@keymanapp/": ["core/include/ldml/ldml-keyboard-constants"],
},
},
"include": [
"**/test-*.ts",
"./helpers/index.ts"
],
"references": [
{ "path": "../../../../common/web/keyman-version/tsconfig.esm.json" },
{ "path": "../../../../common/web/types/" },
{ "path": "../../../../common/tools/hextobin/" },
{ "path": "../" }
]
}

View file

@ -0,0 +1,21 @@
{
"extends": "../../../tsconfig.esm-base.json",
"compilerOptions": {
"outDir": "build/src/",
"rootDir": "src/",
"baseUrl": ".",
"paths": {
// "@keymanapp/keyman-version": ["../../../common/web/keyman-version/keyman-version.mts"],
"@keymanapp/common-types": ["../../../common/web/types/src/main"],
},
},
"include": [
"src/**/*.ts"
],
"references": [
{ "path": "../../../common/web/keyman-version/tsconfig.esm.json" },
{ "path": "../../../common/web/types/" },
]
}

View file

@ -20,6 +20,7 @@ builder_describe "Build Keyman Keyboard Compiler kmc" \
"@/common/web/keyman-version" \
"@/common/web/types" \
"@/developer/src/kmc-keyboard" \
"@/developer/src/kmc-kmn" \
"@/developer/src/kmc-model" \
"@/developer/src/kmc-model-info" \
"@/developer/src/kmc-package" \

397
package-lock.json generated
View file

@ -10,6 +10,7 @@
"resources/build/version",
"core/include/ldml",
"developer/src/kmc-keyboard",
"developer/src/kmc-kmn",
"developer/src/kmc-model",
"developer/src/kmc-model-info",
"developer/src/kmc-package",
@ -837,6 +838,345 @@
"node": ">=0.3.1"
}
},
"developer/src/kmc-kmn": {
"name": "@keymanapp/kmc-kmn",
"license": "MIT",
"dependencies": {
"@keymanapp/keyman-version": "*"
},
"devDependencies": {
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.7",
"@types/node": "^10.14.6",
"@types/semver": "^7.3.12",
"@types/sinon": "^10.0.13",
"@types/sinon-chai": "^3.2.9",
"@types/xml2js": "^0.4.5",
"c8": "^7.12.0",
"chai": "^4.3.4",
"chalk": "^2.4.2",
"mocha": "^8.4.0",
"sinon": "^15.0.2",
"sinon-chai": "^3.7.0",
"ts-node": "^9.1.1",
"typescript": "^4.9.5"
}
},
"developer/src/kmc-kmn/node_modules/@sinonjs/commons": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
"integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"developer/src/kmc-kmn/node_modules/@sinonjs/samsam": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz",
"integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^2.0.0",
"lodash.get": "^4.4.2",
"type-detect": "^4.0.8"
}
},
"developer/src/kmc-kmn/node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
"integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"developer/src/kmc-kmn/node_modules/@types/mocha": {
"version": "5.2.7",
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
"integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==",
"dev": true
},
"developer/src/kmc-kmn/node_modules/@types/node": {
"version": "10.17.60",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==",
"dev": true
},
"developer/src/kmc-kmn/node_modules/ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"dependencies": {
"color-convert": "^1.9.0"
},
"engines": {
"node": ">=4"
}
},
"developer/src/kmc-kmn/node_modules/chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
},
"engines": {
"node": ">=4"
}
},
"developer/src/kmc-kmn/node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"dependencies": {
"color-name": "1.1.3"
}
},
"developer/src/kmc-kmn/node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"developer/src/kmc-kmn/node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
"dev": true
},
"developer/src/kmc-kmn/node_modules/js-yaml": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
"integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
"dev": true,
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"developer/src/kmc-kmn/node_modules/minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"developer/src/kmc-kmn/node_modules/mocha": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
"integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
"dev": true,
"dependencies": {
"@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
"chokidar": "3.5.1",
"debug": "4.3.1",
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
"glob": "7.1.6",
"growl": "1.10.5",
"he": "1.2.0",
"js-yaml": "4.0.0",
"log-symbols": "4.0.0",
"minimatch": "3.0.4",
"ms": "2.1.3",
"nanoid": "3.1.20",
"serialize-javascript": "5.0.1",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
"which": "2.0.2",
"wide-align": "1.1.3",
"workerpool": "6.1.0",
"yargs": "16.2.0",
"yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
},
"bin": {
"_mocha": "bin/_mocha",
"mocha": "bin/mocha"
},
"engines": {
"node": ">= 10.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mochajs"
}
},
"developer/src/kmc-kmn/node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"developer/src/kmc-kmn/node_modules/mocha/node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"developer/src/kmc-kmn/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"developer/src/kmc-kmn/node_modules/nise": {
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz",
"integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^2.0.0",
"@sinonjs/fake-timers": "^10.0.2",
"@sinonjs/text-encoding": "^0.7.1",
"just-extend": "^4.0.2",
"path-to-regexp": "^1.7.0"
}
},
"developer/src/kmc-kmn/node_modules/nise/node_modules/@sinonjs/commons": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
"integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"developer/src/kmc-kmn/node_modules/path-to-regexp": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true,
"dependencies": {
"isarray": "0.0.1"
}
},
"developer/src/kmc-kmn/node_modules/sinon": {
"version": "15.0.2",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-15.0.2.tgz",
"integrity": "sha512-PCVP63XZkg0/LOqQH5rEU4LILuvTFMb5tNxTHfs6VUMNnZz2XrnGSTZbAGITjzwQWbl/Bl/8hi4G3zZWjyBwHg==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^3.0.0",
"@sinonjs/fake-timers": "^10.0.2",
"@sinonjs/samsam": "^7.0.1",
"diff": "^5.1.0",
"nise": "^5.1.4",
"supports-color": "^7.2.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/sinon"
}
},
"developer/src/kmc-kmn/node_modules/sinon/node_modules/diff": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
"integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
"dev": true,
"engines": {
"node": ">=0.3.1"
}
},
"developer/src/kmc-kmn/node_modules/sinon/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"developer/src/kmc-kmn/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"developer/src/kmc-kmn/node_modules/supports-color/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"developer/src/kmc-kmn/node_modules/ts-node": {
"version": "9.1.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
"integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
"dev": true,
"dependencies": {
"arg": "^4.1.0",
"create-require": "^1.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.17",
"yn": "3.1.1"
},
"bin": {
"ts-node": "dist/bin.js",
"ts-node-script": "dist/bin-script.js",
"ts-node-transpile-only": "dist/bin-transpile.js",
"ts-script": "dist/bin-script-deprecated.js"
},
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"typescript": ">=2.7"
}
},
"developer/src/kmc-kmn/node_modules/ts-node/node_modules/diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true,
"engines": {
"node": ">=0.3.1"
}
},
"developer/src/kmc-model": {
"name": "@keymanapp/kmc-model",
"license": "MIT",
@ -1763,6 +2103,10 @@
"resolved": "developer/src/kmc-keyboard",
"link": true
},
"node_modules/@keymanapp/kmc-kmn": {
"resolved": "developer/src/kmc-kmn",
"link": true
},
"node_modules/@keymanapp/kmc-model": {
"resolved": "developer/src/kmc-model",
"link": true
@ -2194,6 +2538,24 @@
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/fake-timers": {
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz",
"integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==",
"dev": true,
"dependencies": {
"@sinonjs/commons": "^2.0.0"
}
},
"node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz",
"integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==",
"dev": true,
"dependencies": {
"type-detect": "4.0.8"
}
},
"node_modules/@sinonjs/formatio": {
"version": "3.2.2",
"dev": true,
@ -2411,6 +2773,31 @@
"@types/node": "*"
}
},
"node_modules/@types/sinon": {
"version": "10.0.13",
"resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz",
"integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==",
"dev": true,
"dependencies": {
"@types/sinonjs__fake-timers": "*"
}
},
"node_modules/@types/sinon-chai": {
"version": "3.2.9",
"resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.9.tgz",
"integrity": "sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ==",
"dev": true,
"dependencies": {
"@types/chai": "*",
"@types/sinon": "*"
}
},
"node_modules/@types/sinonjs__fake-timers": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz",
"integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==",
"dev": true
},
"node_modules/@types/ws": {
"version": "8.5.3",
"dev": true,
@ -6686,6 +7073,16 @@
"supports-color": "^5.5.0"
}
},
"node_modules/sinon-chai": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz",
"integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==",
"dev": true,
"peerDependencies": {
"chai": "^4.0.0",
"sinon": ">=4.0.0"
}
},
"node_modules/sinon/node_modules/diff": {
"version": "3.5.0",
"dev": true,

View file

@ -14,6 +14,7 @@
"resources/build/version",
"core/include/ldml",
"developer/src/kmc-keyboard",
"developer/src/kmc-kmn",
"developer/src/kmc-model",
"developer/src/kmc-model-info",
"developer/src/kmc-package",

View file

@ -12,6 +12,8 @@
{ "path": "./developer/src/kmc-keyboard/test/tsconfig.json" },
{ "path": "./developer/src/kmc-keyboard/tsconfig.json" },
{ "path": "./developer/src/kmc-kmn/test/tsconfig.json" },
{ "path": "./developer/src/kmc-kmn/tsconfig.json" },
{ "path": "./developer/src/kmc-model/test/tsconfig.json" },
{ "path": "./developer/src/kmc-model/tsconfig.json" },
//{ "path": "./developer/src/kmc-model-info/test/tsconfig.json" },