diff --git a/.github/labeler.yml b/.github/labeler.yml index 5250e32193..b02e56a2f2 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -21,7 +21,6 @@ common/: - resources/** common/models/: common/models/** -common/models/types/: common/models/types/** common/models/templates/: common/models/templates/** common/models/wordbreakers/: common/models/wordbreakers/** diff --git a/common/models/templates/package.json b/common/models/templates/package.json index 2a25297f93..c976bcdbe3 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -51,7 +51,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/web-utils": "*", "@types/mocha": "^7.0.2", "c8": "^7.12.0", @@ -61,7 +61,7 @@ }, "dependencies": { "@keymanapp/keyman-version": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/models-wordbreakers": "*", "@keymanapp/resources-gosh": "*" } diff --git a/common/models/templates/src/common.ts b/common/models/templates/src/common.ts index 853bc7c18d..2524ac40fb 100644 --- a/common/models/templates/src/common.ts +++ b/common/models/templates/src/common.ts @@ -1,4 +1,5 @@ // Allows the kmwstring bindings to resolve. +import { CasingForm, Context, Outcome, Suggestion, Transform, WithOutcome } from '@keymanapp/common-types'; import { extendString } from "@keymanapp/web-utils"; extendString(); diff --git a/common/models/templates/src/quote-behavior.ts b/common/models/templates/src/quote-behavior.ts index 2ca7bbd04c..cbf1a869f4 100644 --- a/common/models/templates/src/quote-behavior.ts +++ b/common/models/templates/src/quote-behavior.ts @@ -1,3 +1,5 @@ +import { LexicalModelPunctuation } from '@keymanapp/common-types'; + export enum QuoteBehavior { noQuotes = "no-quotes", useQuotes = "use-quotes", @@ -35,4 +37,4 @@ export namespace QuoteBehavior { } } -export default QuoteBehavior; \ No newline at end of file +export default QuoteBehavior; diff --git a/common/models/templates/src/tokenization.ts b/common/models/templates/src/tokenization.ts index 2fb07da357..c5a1ac69cd 100644 --- a/common/models/templates/src/tokenization.ts +++ b/common/models/templates/src/tokenization.ts @@ -1,6 +1,8 @@ // While we _could_ define this within @keymanapp/models-wordbreakers instead, it's probably // better to leave that package as _just_ the wordbreakers. +import { WordBreakingFunction, USVString, Context } from '@keymanapp/common-types'; + export interface Token { text: string, isWhitespace?: boolean @@ -214,4 +216,4 @@ export function getLastPreCaretToken(wordBreaker: WordBreakingFunction, context: // would likely be pretty painful. export function wordbreak(wordBreaker: WordBreakingFunction, context: Context): USVString { return getLastPreCaretToken(wordBreaker, context); -} \ No newline at end of file +} diff --git a/common/models/templates/src/trie-model.ts b/common/models/templates/src/trie-model.ts index bfe41c7aba..527b7a36cb 100644 --- a/common/models/templates/src/trie-model.ts +++ b/common/models/templates/src/trie-model.ts @@ -31,6 +31,7 @@ import { default as defaultWordBreaker } from "@keymanapp/models-wordbreakers"; import { applyTransform, isHighSurrogate, isSentinel, SENTINEL_CODE_UNIT, transformToSuggestion } from "./common.js"; import { getLastPreCaretToken } from "./tokenization.js"; +import { Capabilities, CasingFunction, Configuration, Context, Distribution, LexicalModel, LexicalModelPunctuation, LexiconTraversal, Suggestion, TextWithProbability, Transform, USVString, WithOutcome, WordBreakingFunction } from '@keymanapp/common-types'; extendString(); diff --git a/common/models/templates/tsconfig.json b/common/models/templates/tsconfig.json index 34b528d7cf..93bc2da0df 100644 --- a/common/models/templates/tsconfig.json +++ b/common/models/templates/tsconfig.json @@ -8,7 +8,7 @@ "rootDir": "./src" }, "references": [ - { "path": "../types" }, + { "path": "../../web/types" }, { "path": "../../web/utils" }, { "path": "../../models/wordbreakers" } ], diff --git a/common/models/types/.build-builder b/common/models/types/.build-builder deleted file mode 100644 index 6db097fddb..0000000000 --- a/common/models/types/.build-builder +++ /dev/null @@ -1 +0,0 @@ -The presence of this file tells CI to use the new builder_ style parameters for build.sh. \ No newline at end of file diff --git a/common/models/types/.gitignore b/common/models/types/.gitignore deleted file mode 100644 index e113ad0abd..0000000000 --- a/common/models/types/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Specifically here: -test.js - -node_modules/ -build/ diff --git a/common/models/types/README.md b/common/models/types/README.md deleted file mode 100644 index 3d7dbf7d59..0000000000 --- a/common/models/types/README.md +++ /dev/null @@ -1,68 +0,0 @@ -`@keymanapp/models-types` -========================= - -Declares TypeScript types and interfaces required to define **Lexical -Models**, **Word breaking functions**, and all things in between. - -Install -------- - -> (see below if you are working in the keymanapp/keyman repo!) - - npm install --save-dev @keymanapp/models-types - -Usage ------ - -Say you are creating a **custom lexical model**. Then import this module -in your lexical model file! - -```Typescript -// my-nifty-model.ts - -import "@keymanapp/models-types"; - -export class MyNiftyClass implements LexicalModel { - configure(capabilities: Capabilities): Configuration { - // TODO: implement me! - throw new Error("Method not implemented."); - } - predict(transform: Transform, context: Context): ProbabilityMass[] { - // TODO: implement me! - throw new Error("Method not implemented."); - } - wordbreak(context: Context): string { - // TODO: implement me! - throw new Error("Method not implemented."); - } - punctuation?: LexicalModelPunctuation; -} -``` - -If your are creating a **custom word breaker**, you would do the same: - -```typescript -import "@keymanapp/models-types"; - -export let myShinyWordBreaker: WordBreakingFunction; -myShinyWordBreaker = function (phrase: string): Span[] { - // TODO: implement me! - throw new Error("Function not implemented") -} -``` - -Look at [index.d.ts](./index.d.ts) for documentation on each and every -type! - - -Usage within keymanapp/keyman repo ----------------------------------- - -To use it in other subprojects within keymanapp/keyman, ensure that this package -is linked using `"*"`. Add this dependency to your subproject like so: - -```json - "dependencies": { - "@keymanapp/models-types": "*", - } -``` diff --git a/common/models/types/build.sh b/common/models/types/build.sh deleted file mode 100755 index 25bf4515c4..0000000000 --- a/common/models/types/build.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -# -# Packages the @keymanapp/models-types package. -# -## START STANDARD BUILD SCRIPT INCLUDE -# adjust relative paths as necessary -THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" -. "${THIS_SCRIPT%/*}/../../../resources/build/builder.inc.sh" -## END STANDARD BUILD SCRIPT INCLUDE - -. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh" -. "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" - -builder_describe "Keyman model types package" \ - "clean" \ - "configure" \ - "build" \ - "test" \ - "publish publish to npm" \ - "--npm-publish+ For publish, do a npm publish, not npm pack (only for CI)" \ - "--dry-run,-n don't actually publish, just dry run" - -builder_describe_outputs \ - configure /node_modules \ - build /common/models/types/build/common/models/types/tsconfig.tsbuildinfo - -builder_parse "$@" - -#------------------------------------------------------------------------------------------------------------------- - -builder_run_action clean rm -rf ./build/ -builder_run_action configure verify_npm_setup -builder_run_action build tsc --build -builder_run_action test tsc test.ts -lib es6 -builder_run_action publish builder_publish_npm diff --git a/common/models/types/package.json b/common/models/types/package.json deleted file mode 100644 index a9f68f4ea1..0000000000 --- a/common/models/types/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "@keymanapp/models-types", - "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", - "types": "./index.d.ts", - "scripts": { - "test": "tsc test.ts -lib es6" - }, - "repository": { - "type": "git", - "url": "https://github.com/keymanapp/keyman" - }, - "keywords": [ - "lmlayer", - "keyman", - "predictive", - "text", - "types", - "typing", - "typescript" - ], - "author": "Marc Durdin (https://github.com/mcdurdin)", - "contributors": [ - "Eddie Antonio Santos (https://github.com/eddieantonio)", - "Joshua Horton" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/keymanapp/keyman/issues" - }, - "homepage": "https://github.com/keymanapp/keyman/tree/master/common/models/types#readme", - "devDependencies": { - "typescript": "^5.4.5" - }, - "files": [ - "README.md", - "index.d.ts" - ] -} diff --git a/common/models/types/tsconfig.json b/common/models/types/tsconfig.json deleted file mode 100644 index ddd1c5b196..0000000000 --- a/common/models/types/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../tsconfig.kmw-worker-base.json", - "compilerOptions": { - "declaration": true, - "outDir": "build/", - }, - "include": ["./*.ts"], - "exclude": ["test.ts"] -} diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index f896050ecb..5ac5fd4a28 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -54,7 +54,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/resources-gosh": "*", "@types/mocha": "^7.0.2", "c8": "^7.12.0", diff --git a/common/models/wordbreakers/src/main/ascii.ts b/common/models/wordbreakers/src/main/ascii.ts index 902a6e7058..1b3a91a145 100644 --- a/common/models/wordbreakers/src/main/ascii.ts +++ b/common/models/wordbreakers/src/main/ascii.ts @@ -1,4 +1,4 @@ -/// +import { Span } from '@keymanapp/common-types'; /** * Splits ASCII words. diff --git a/common/models/wordbreakers/src/main/default/index.ts b/common/models/wordbreakers/src/main/default/index.ts index 7771f1c9a6..bebed01cc4 100644 --- a/common/models/wordbreakers/src/main/default/index.ts +++ b/common/models/wordbreakers/src/main/default/index.ts @@ -1,3 +1,4 @@ +import { Span } from '@keymanapp/common-types'; import { WordBreakProperty, propertyMap } from "./data.inc.js"; import { searchForProperty } from "./searchForProperty.js"; @@ -576,4 +577,4 @@ function propertyVal(propName: string, options?: DefaultWordBreakerOptions) { const customIndex = options?.customProperties?.findIndex(matcher) ?? -1; return customIndex != -1 ? -customIndex - 1 : propertyMap.findIndex(matcher); -} \ No newline at end of file +} diff --git a/common/models/wordbreakers/src/main/placeholder.ts b/common/models/wordbreakers/src/main/placeholder.ts index 87832505ed..1d6f55d967 100644 --- a/common/models/wordbreakers/src/main/placeholder.ts +++ b/common/models/wordbreakers/src/main/placeholder.ts @@ -1,3 +1,5 @@ +import { Span } from '@keymanapp/common-types'; + /** * A **VERY** dumb word breaker that simply splits at words. Do not use this * word breaker! diff --git a/common/models/wordbreakers/tools/data-compiler/tsconfig.json b/common/models/wordbreakers/tools/data-compiler/tsconfig.json index 577d1174df..f95b335f8d 100644 --- a/common/models/wordbreakers/tools/data-compiler/tsconfig.json +++ b/common/models/wordbreakers/tools/data-compiler/tsconfig.json @@ -10,7 +10,7 @@ "moduleResolution": "node16" }, "references": [ - { "path": "../../../types" } + { "path": "../../../../web/types" } ], "include": [ "./**/*" diff --git a/common/models/wordbreakers/tsconfig.json b/common/models/wordbreakers/tsconfig.json index 46095418b2..8bee2631fa 100644 --- a/common/models/wordbreakers/tsconfig.json +++ b/common/models/wordbreakers/tsconfig.json @@ -7,13 +7,10 @@ "tsBuildInfoFile": "./build/main/obj/tsconfig.tsbuildinfo", "rootDir": "./src/main" }, - "references": [ - { "path": "../types" } - ], "include": [ "./src/main/**/*" ], "exclude": [ "node_modules" ] -} \ No newline at end of file +} diff --git a/common/web/types/package.json b/common/web/types/package.json index 20f84bc140..1ba487aafd 100644 --- a/common/web/types/package.json +++ b/common/web/types/package.json @@ -8,9 +8,11 @@ "unicode" ], "type": "module", + "types": "./build/src/main.d.ts", "exports": { ".": { "es6-bundling": "./src/main.ts", + "types": "./build/src/main.d.ts", "default": "./build/src/main.js" } }, @@ -68,6 +70,7 @@ "src/kmx/kmx-plus.ts", "src/kmx/kmx-builder.ts", "src/kmx/element-string.ts", + "src/lexical-model-types.ts", "src/kmx/string-list.ts", "src/ldml-keyboard/ldml-keyboard-testdata-xml.ts", "src/ldml-keyboard/unicodeset-parser-api.ts", diff --git a/common/web/types/src/kmx/kmx-plus/element-string.ts b/common/web/types/src/kmx/kmx-plus/element-string.ts index c7597b4f6b..b389107cce 100644 --- a/common/web/types/src/kmx/kmx-plus/element-string.ts +++ b/common/web/types/src/kmx/kmx-plus/element-string.ts @@ -1,7 +1,7 @@ import { constants } from '@keymanapp/ldml-keyboard-constants'; import { DependencySections, StrsItem, UsetItem } from './kmx-plus.js'; import { ElementParser, ElementSegment, ElementType } from '../../ldml-keyboard/pattern-parser.js'; -import { util } from '@keymanapp/common-types'; +import * as util from '../../util/util.js'; import MATCH_HEX_ESCAPE = util.MATCH_HEX_ESCAPE; import unescapeOneQuadString = util.unescapeOneQuadString; diff --git a/common/web/types/src/kmx/kmx-plus/kmx-plus.ts b/common/web/types/src/kmx/kmx-plus/kmx-plus.ts index 1d19cdd4d0..cc8ff772b7 100644 --- a/common/web/types/src/kmx/kmx-plus/kmx-plus.ts +++ b/common/web/types/src/kmx/kmx-plus/kmx-plus.ts @@ -2,8 +2,8 @@ import { constants } from '@keymanapp/ldml-keyboard-constants'; import * as r from 'restructure'; import { ElementString } from './element-string.js'; import { ListItem } from '../../ldml-keyboard/string-list.js'; -import { util } from '@keymanapp/common-types'; -import { KMX } from '@keymanapp/common-types'; +import * as util from '../../util/util.js'; +import * as KMX from '../kmx.js'; import { UnicodeSetParser, UnicodeSet } from '../../ldml-keyboard/unicodeset-parser-api.js'; import { VariableParser } from '../../ldml-keyboard/pattern-parser.js'; import { MarkerParser } from '../../ldml-keyboard/pattern-parser.js'; diff --git a/common/models/types/index.d.ts b/common/web/types/src/lexical-model-types.ts similarity index 96% rename from common/models/types/index.d.ts rename to common/web/types/src/lexical-model-types.ts index 0d6223bc64..7c5cfdf643 100644 --- a/common/models/types/index.d.ts +++ b/common/web/types/src/lexical-model-types.ts @@ -15,14 +15,14 @@ * * See also: https://developer.mozilla.org/en-US/docs/Web/API/USVString */ -declare type USVString = string; +export type USVString = string; -declare type CasingForm = 'lower' | 'initial' | 'upper'; +export type CasingForm = 'lower' | 'initial' | 'upper'; /** * Represents one lexical entry and its probability.. */ -type TextWithProbability = { +export type TextWithProbability = { /** * A lexical entry (word) offered by the model. * @@ -42,7 +42,7 @@ type TextWithProbability = { * Used to facilitate edit-distance calculations by allowing the LMLayer to * efficiently search the model's lexicon in a Trie-like manner. */ -declare interface LexiconTraversal { +export interface LexiconTraversal { /** * Provides an iterable pattern used to search for words with a 'keyed' prefix matching * the current traversal state's prefix when a new character is appended. Iterating @@ -116,7 +116,7 @@ declare interface LexiconTraversal { /** * The model implementation, within the Worker. */ -declare interface LexicalModel { +export interface LexicalModel { /** * Processes `config` messages, configuring the newly-loaded model based on the host * platform's capability restrictions. @@ -263,7 +263,7 @@ declare interface LexicalModel { * first, you delete the specified amount amount from the left * and right, then you insert the provided text. */ -declare interface Transform { +export interface Transform { /** * Facilitates use of unique identifiers for tracking the Transform and * any related data from its original source, as the reference cannot be @@ -298,7 +298,7 @@ declare interface Transform { /** * A concrete suggestion */ -declare interface Suggestion { +export interface Suggestion { /** * Indicates the externally-supplied id of the Transform that prompted * the Suggestion. Automatically handled by the LMLayer; models should @@ -341,11 +341,11 @@ declare interface Suggestion { autoAccept?: boolean } -interface Reversion extends Suggestion { +export interface Reversion extends Suggestion { tag: 'revert'; } -interface Keep extends Suggestion { +export interface Keep extends Suggestion { tag: 'keep'; /** @@ -368,12 +368,12 @@ interface Keep extends Suggestion { * * If left undefined, the consumers will assume this is a prediction. */ -type SuggestionTag = undefined | 'keep' | 'revert' | 'correction' | 'emoji'; +export type SuggestionTag = undefined | 'keep' | 'revert' | 'correction' | 'emoji'; /** * The text and environment surrounding the insertion point (text cursor). */ -declare interface Context { +export interface Context { /** * Up to maxLeftContextCodeUnits code units of Unicode scalar value * (i. e., characters) to the left of the insertion point in the @@ -413,7 +413,7 @@ declare interface Context { * from ambiguous text sequences. Designed for use with fat-finger correction * and similar typing ambiguities. */ -interface ProbabilityMass { +export interface ProbabilityMass { /** * An individual sample from a Distribution over the same type. */ @@ -426,12 +426,12 @@ interface ProbabilityMass { p: number; } -declare type Distribution = ProbabilityMass[]; +export type Distribution = ProbabilityMass[]; /** * A type augmented with an optional probability. */ -type Outcome = T & { +export type Outcome = T & { /** * [optional] probability of this outcome. */ @@ -441,7 +441,7 @@ type Outcome = T & { /** * A type augmented with a probability. */ -type WithOutcome = T & { +export type WithOutcome = T & { /** * Probability of this outcome. */ @@ -458,7 +458,7 @@ type WithOutcome = T & { * prediction, as well as what operations the keyboard is allowed to do on the * underlying buffer. */ -declare interface Capabilities { +export interface Capabilities { /** * The maximum amount of UTF-16 code points that the keyboard will provide to * the left of the cursor, as an integer. @@ -482,7 +482,7 @@ declare interface Capabilities { /** * Configuration of the LMLayer, sent back to the keyboard. */ -declare interface Configuration { +export interface Configuration { /** * How many UTF-16 code units maximum to send as the context to the * left of the cursor ("left" in the Unicode character stream). @@ -538,14 +538,14 @@ declare interface Configuration { * @returns an array of spans from the phrase, in order as they appear in the * phrase, each span which representing a word. */ -declare interface WordBreakingFunction { +export interface WordBreakingFunction { // invariant: span[i].end <= span[i + 1].start // invariant: for all span[i] and span[i + 1], there does not exist a span[k] // where span[i].end <= span[k].start AND span[k].end <= span[i + 1].start (phrase: string): Span[]; } -declare interface CasingFunction { +export interface CasingFunction { (caseToApply: CasingForm, text: string, defaultApplyCasing?: CasingFunction): string; } @@ -553,7 +553,7 @@ declare interface CasingFunction { * A span of text in a phrase. This is usually meant to represent words from a * pharse. */ -declare interface Span { +export interface Span { // invariant: start < end (empty spans not allowed) readonly start: number; // invariant: end > end (empty spans not allowed) @@ -572,7 +572,7 @@ declare interface Span { /** * Options for various punctuation to use in suggestions. */ -interface LexicalModelPunctuation { +export interface LexicalModelPunctuation { /** * The quotes that appear in "keep" suggestions, e.g., keep what the user * typed verbatim. diff --git a/common/web/types/src/main.ts b/common/web/types/src/main.ts index 7e0dc2f7b2..c276f727ed 100644 --- a/common/web/types/src/main.ts +++ b/common/web/types/src/main.ts @@ -29,3 +29,5 @@ export * as KMXPlus from './kmx/kmx-plus/kmx-plus.js'; export { UnicodeSetParser, UnicodeSet } from './ldml-keyboard/unicodeset-parser-api.js'; export { VariableParser, MarkerParser } from './ldml-keyboard/pattern-parser.js'; export { ElementString } from './kmx/kmx-plus/element-string.js'; + +export * from './lexical-model-types.js'; diff --git a/common/models/types/test.ts b/common/web/types/test/lexical-model-types.tests.ts similarity index 54% rename from common/models/types/test.ts rename to common/web/types/test/lexical-model-types.tests.ts index a360741809..8944342ed6 100644 --- a/common/models/types/test.ts +++ b/common/web/types/test/lexical-model-types.tests.ts @@ -1,12 +1,12 @@ -/// - /** * This file "tests" the exports from the main module. - * + * * Since the exports are all types, the "test" here is that the type can be * imported and compiled without any compiler errors. */ +import { USVString, Transform, Suggestion, SuggestionTag, Context, Capabilities, Configuration, Distribution, WordBreakingFunction, Span, LexicalModelPunctuation, ElementString, KMXPlus } from '@keymanapp/common-types'; + export let u: USVString; export let l: Transform export let s: Suggestion; @@ -17,4 +17,9 @@ export let conf: Configuration; export let d: Distribution; export let wbf: WordBreakingFunction; export let sp: Span; -export let lmp: LexicalModelPunctuation; \ No newline at end of file +export let lmp: LexicalModelPunctuation; + + +// try some of the other types - that should still work +export let elemString: ElementString; +export let section: KMXPlus.Section; diff --git a/common/web/types/test/tsconfig.json b/common/web/types/test/tsconfig.json index b034236bd7..9678c49945 100644 --- a/common/web/types/test/tsconfig.json +++ b/common/web/types/test/tsconfig.json @@ -11,11 +11,12 @@ }, "include": [ "**/test-*.ts", + "**/*.tests.ts", "./helpers/*.ts", ], "references": [ { "path": "../../keyman-version" }, { "path": "../../../../core/include/ldml/"}, { "path": "../" }, - ] + ], } diff --git a/developer/docs/api/etc/kmc-model.api.md b/developer/docs/api/etc/kmc-model.api.md index df76354c23..51ea5dffb8 100644 --- a/developer/docs/api/etc/kmc-model.api.md +++ b/developer/docs/api/etc/kmc-model.api.md @@ -4,7 +4,7 @@ ```ts -/// +/// import { CompilerCallbacks } from '@keymanapp/common-types'; import { CompilerEvent } from '@keymanapp/common-types'; diff --git a/developer/src/build.sh b/developer/src/build.sh index b45dea38f5..c85851f1f6 100755 --- a/developer/src/build.sh +++ b/developer/src/build.sh @@ -151,7 +151,6 @@ function do_publish() { ../../common/web/keyman-version/build.sh publish $DRY_RUN $NPM_PUBLISH ../../common/web/types/build.sh publish $DRY_RUN $NPM_PUBLISH - ../../common/models/types/build.sh publish $DRY_RUN $NPM_PUBLISH ../../core/include/ldml/build.sh publish $DRY_RUN $NPM_PUBLISH # end TODO #-------------------------------------------------------- diff --git a/developer/src/kmc-analyze/src/analyzer-messages.ts b/developer/src/kmc-analyze/src/analyzer-messages.ts index 1e4204595e..c895a2f367 100644 --- a/developer/src/kmc-analyze/src/analyzer-messages.ts +++ b/developer/src/kmc-analyze/src/analyzer-messages.ts @@ -1,6 +1,3 @@ -/// -// above is required for now, seemingly https://github.com/microsoft/TypeScript/issues/42873 -// probably addressed in ts 5.5.2 import { CompilerErrorNamespace, CompilerErrorSeverity, CompilerMessageSpec as m, CompilerMessageDef as def, CompilerMessageSpecWithException, KeymanUrls } from "@keymanapp/developer-utils"; const Namespace = CompilerErrorNamespace.Analyzer; diff --git a/developer/src/kmc-model-info/build.sh b/developer/src/kmc-model-info/build.sh index 334bfbd07b..b1ba95c34b 100755 --- a/developer/src/kmc-model-info/build.sh +++ b/developer/src/kmc-model-info/build.sh @@ -9,7 +9,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" builder_describe "Build Keyman kmc Lexical Model model-info Compiler module" \ "@/common/web/types" \ - "@/common/models/types" \ "clean" \ "configure" \ "build" \ diff --git a/developer/src/kmc-model-info/package.json b/developer/src/kmc-model-info/package.json index 23297a07ba..20be72d189 100644 --- a/developer/src/kmc-model-info/package.json +++ b/developer/src/kmc-model-info/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "@keymanapp/common-types": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/developer-utils": "*" }, "devDependencies": { diff --git a/developer/src/kmc-model-info/tsconfig.json b/developer/src/kmc-model-info/tsconfig.json index 24475de019..e4d68f11bf 100644 --- a/developer/src/kmc-model-info/tsconfig.json +++ b/developer/src/kmc-model-info/tsconfig.json @@ -10,7 +10,6 @@ ], "references": [ { "path": "../../../common/web/types" }, - { "path": "../../../common/models/types" }, { "path": "../common/web/utils" }, ] } diff --git a/developer/src/kmc-model/build.sh b/developer/src/kmc-model/build.sh index c549648b45..3380660fd7 100755 --- a/developer/src/kmc-model/build.sh +++ b/developer/src/kmc-model/build.sh @@ -8,8 +8,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" . "$KEYMAN_ROOT/resources/shellHelperFunctions.sh" . "$KEYMAN_ROOT/resources/build/build-utils-ci.inc.sh" -# TODO: "@/common/models/types" \ - builder_describe "Keyman kmc Lexical Model Compiler module" \ "@/common/web/keyman-version" \ "@/developer/src/common/web/test-helpers" \ diff --git a/developer/src/kmc-model/package.json b/developer/src/kmc-model/package.json index da73aabe7b..9f95de51f8 100644 --- a/developer/src/kmc-model/package.json +++ b/developer/src/kmc-model/package.json @@ -32,7 +32,7 @@ "dependencies": { "@keymanapp/common-types": "*", "@keymanapp/keyman-version": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "typescript": "^5.4.5" }, "devDependencies": { diff --git a/developer/src/kmc-model/src/join-word-breaker-decorator.ts b/developer/src/kmc-model/src/join-word-breaker-decorator.ts index 6d0426938a..dec58d583a 100644 --- a/developer/src/kmc-model/src/join-word-breaker-decorator.ts +++ b/developer/src/kmc-model/src/join-word-breaker-decorator.ts @@ -1,4 +1,4 @@ -/// +import { Span, WordBreakingFunction } from '@keymanapp/common-types'; /** * Returns a word breaker that joins spans of an existing word breaker. diff --git a/developer/src/kmc-model/src/lexical-model.ts b/developer/src/kmc-model/src/lexical-model.ts index 32d5bf5775..f0fd95c19e 100644 --- a/developer/src/kmc-model/src/lexical-model.ts +++ b/developer/src/kmc-model/src/lexical-model.ts @@ -3,6 +3,8 @@ * the LMLayer's internal worker code, so we provide those definitions too. */ +import { CasingFunction, LexicalModelPunctuation, WordBreakingFunction } from '@keymanapp/common-types'; + export interface LexicalModelDeclaration { readonly format: 'trie-1.0'|'fst-foma-1.0'|'custom-1.0', //... metadata ... diff --git a/developer/src/kmc-model/src/model-defaults.ts b/developer/src/kmc-model/src/model-defaults.ts index 541cadcb49..4d6c40d3a1 100644 --- a/developer/src/kmc-model/src/model-defaults.ts +++ b/developer/src/kmc-model/src/model-defaults.ts @@ -1,3 +1,5 @@ +import { CasingForm, CasingFunction } from '@keymanapp/common-types'; + /** * Converts wordforms into an indexable form. It does this by * normalizing the letter case of characters INDIVIDUALLY (to disregard @@ -104,4 +106,4 @@ export function defaultApplyCasing(casing: CasingForm, text: string): string { return text.substring(0, headUnitLength).toUpperCase() // head - uppercased .concat(text.substring(headUnitLength)); // tail - lowercased } -} \ No newline at end of file +} diff --git a/developer/src/kmc-model/src/model-definitions.ts b/developer/src/kmc-model/src/model-definitions.ts index d05a8254ce..ccef469c91 100644 --- a/developer/src/kmc-model/src/model-definitions.ts +++ b/developer/src/kmc-model/src/model-definitions.ts @@ -5,6 +5,7 @@ import { defaultApplyCasing, import KEYMAN_VERSION from "@keymanapp/keyman-version"; import { LexicalModelSource, WordformToKeySpec } from "./lexical-model.js"; +import { CasingForm, CasingFunction } from '@keymanapp/common-types'; /** * Processes certain defined model behaviors in such a way that the needed closures @@ -219,4 +220,4 @@ export class ModelDefinitions { } // Because it references the class field, this line must come afterward. -const PSEUDOCLOSURE = ModelDefinitions.COMPILED_NAME; \ No newline at end of file +const PSEUDOCLOSURE = ModelDefinitions.COMPILED_NAME; diff --git a/developer/src/kmc-model/src/script-overrides-decorator.ts b/developer/src/kmc-model/src/script-overrides-decorator.ts index 544f1b0386..ebf08b819e 100644 --- a/developer/src/kmc-model/src/script-overrides-decorator.ts +++ b/developer/src/kmc-model/src/script-overrides-decorator.ts @@ -1,3 +1,4 @@ +import { Span, WordBreakingFunction } from '@keymanapp/common-types'; import { OverrideScriptDefaults } from "./lexical-model.js"; import { ModelCompilerError, ModelCompilerMessages } from "./model-compiler-messages.js"; diff --git a/developer/src/kmc-model/test/helpers/index.ts b/developer/src/kmc-model/test/helpers/index.ts index e7d274f571..d58e0834d1 100644 --- a/developer/src/kmc-model/test/helpers/index.ts +++ b/developer/src/kmc-model/test/helpers/index.ts @@ -1,5 +1,3 @@ -/// - /** * Helpers and utilities for the Mocha tests. */ diff --git a/developer/src/kmc-model/test/test-compile-model-with-pseudoclosure.ts b/developer/src/kmc-model/test/test-compile-model-with-pseudoclosure.ts index 08247e17c1..049776ec20 100644 --- a/developer/src/kmc-model/test/test-compile-model-with-pseudoclosure.ts +++ b/developer/src/kmc-model/test/test-compile-model-with-pseudoclosure.ts @@ -4,6 +4,7 @@ import 'mocha'; import { makePathToFixture, compileModelSourceCode } from './helpers/index.js'; import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers'; +import { CasingForm, CasingFunction } from '@keymanapp/common-types'; describe('LexicalModelCompiler - pseudoclosure compilation + use', function () { const callbacks = new TestCompilerCallbacks(); diff --git a/developer/src/kmc-model/test/test-compile-trie.ts b/developer/src/kmc-model/test/test-compile-trie.ts index a982956837..845022cef5 100644 --- a/developer/src/kmc-model/test/test-compile-trie.ts +++ b/developer/src/kmc-model/test/test-compile-trie.ts @@ -8,6 +8,7 @@ import { createTrieDataStructure } from '../src/build-trie.js'; import { ModelCompilerError } from '../src/model-compiler-messages.js'; import { TestCompilerCallbacks } from '@keymanapp/developer-test-helpers'; import { TrieModel } from '@keymanapp/models-templates'; +import { Span } from '@keymanapp/common-types'; describe('LexicalModelCompiler', function () { const callbacks = new TestCompilerCallbacks(); diff --git a/developer/src/kmc-model/test/test-default-search-term-to-key.ts b/developer/src/kmc-model/test/test-default-search-term-to-key.ts index b777c7c79c..0f8120e6ba 100644 --- a/developer/src/kmc-model/test/test-default-search-term-to-key.ts +++ b/developer/src/kmc-model/test/test-default-search-term-to-key.ts @@ -4,6 +4,7 @@ import {assert} from 'chai'; import { defaultSearchTermToKey, defaultCasedSearchTermToKey, defaultApplyCasing } from '../src/model-defaults.js'; +import { CasingForm, CasingFunction } from '@keymanapp/common-types'; describe('The default searchTermToKey() function', function () { diff --git a/developer/src/kmc-model/test/test-join-word-breaker.ts b/developer/src/kmc-model/test/test-join-word-breaker.ts index b08411cb56..ff220088f5 100644 --- a/developer/src/kmc-model/test/test-join-word-breaker.ts +++ b/developer/src/kmc-model/test/test-join-word-breaker.ts @@ -1,6 +1,7 @@ import { assert } from "chai"; import defaultWordBreaker from '@keymanapp/models-wordbreakers'; import {decorateWithJoin} from '../src/join-word-breaker-decorator.js'; +import { Span } from '@keymanapp/common-types'; describe('The join word breaker decorator', function () { it('should decorate an existing word breaker', function () { diff --git a/developer/src/kmc-model/test/test-model-definitions.ts b/developer/src/kmc-model/test/test-model-definitions.ts index 297bb1a995..ee569a01b1 100644 --- a/developer/src/kmc-model/test/test-model-definitions.ts +++ b/developer/src/kmc-model/test/test-model-definitions.ts @@ -2,6 +2,7 @@ import 'mocha'; import { assert } from 'chai'; import { ModelDefinitions } from '../src/model-definitions.js'; import { LexicalModelSource } from '../src/lexical-model.js'; +import { CasingForm, CasingFunction } from '@keymanapp/common-types'; describe('Model definition pseudoclosures', function () { describe('14.0 defaults', function() { @@ -195,4 +196,4 @@ describe('Model definition pseudoclosures', function () { }); } }); -}); \ No newline at end of file +}); diff --git a/developer/src/kmc-model/test/test-override-script-defaults.ts b/developer/src/kmc-model/test/test-override-script-defaults.ts index a0500320fd..b8afb18900 100644 --- a/developer/src/kmc-model/test/test-override-script-defaults.ts +++ b/developer/src/kmc-model/test/test-override-script-defaults.ts @@ -1,6 +1,7 @@ import { assert } from "chai"; import defaultWordBreaker from '@keymanapp/models-wordbreakers'; import {decorateWithScriptOverrides} from '../src/script-overrides-decorator.js'; +import { Span } from '@keymanapp/common-types'; const THIN_SPACE = "\u2009"; diff --git a/developer/src/kmc-model/tsconfig.json b/developer/src/kmc-model/tsconfig.json index 724ebd74d0..2400856d26 100644 --- a/developer/src/kmc-model/tsconfig.json +++ b/developer/src/kmc-model/tsconfig.json @@ -12,7 +12,6 @@ ], "references": [ { "path": "../../../common/web/keyman-version" }, - { "path": "../../../common/models/types" }, { "path": "../../../common/web/types" }, ] } diff --git a/developer/src/kmc/package.json b/developer/src/kmc/package.json index d6486e1685..4d36bb1e98 100644 --- a/developer/src/kmc/package.json +++ b/developer/src/kmc/package.json @@ -44,7 +44,7 @@ "@keymanapp/kmc-model": "*", "@keymanapp/kmc-model-info": "*", "@keymanapp/kmc-package": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@sentry/node": "^7.57.0", "chalk": "^2.4.2", "commander": "^10.0.0", diff --git a/developer/src/packages.inc.sh b/developer/src/packages.inc.sh index 28f2513f97..0726209973 100644 --- a/developer/src/packages.inc.sh +++ b/developer/src/packages.inc.sh @@ -6,7 +6,6 @@ readonly PACKAGES=( common/web/keyman-version common/web/types - common/models/types core/include/ldml developer/src/common/web/utils developer/src/kmc-analyze diff --git a/docs/npm-packages.md b/docs/npm-packages.md index 36e5d9a6de..494bec0044 100644 --- a/docs/npm-packages.md +++ b/docs/npm-packages.md @@ -19,13 +19,13 @@ Packages are **never** published from a developer's machine. * `@keymanapp/kmc-model` -- located at `developer/src/kmc-model` * `@keymanapp/kmc-model-info` -- located at `developer/src/kmc-model-info` * `@keymanapp/kmc-package` -- located at `developer/src/kmc-package` -* `@keymanapp/models-types` -- located at `common/models/types` ### Deprecated npm packages * `@keymanapp/developer-lexical-model-compiler` -- replaced by `@keymanapp/kmc` * `@keymanapp/lexical-model-compiler` -- replaced by `@keymanapp/kmc` -* `@keymanapp/lexical-model-types` -- replaced by `@keymanapp/models-types` +* `@keymanapp/lexical-model-types` -- replaced by `@keymanapp/common-types` +* `@keymanapp/models-types` -- replaced by `@keymanapp/common-types` * `@keymanapp/lmlayer-cli` -- replaced by `@keymanapp/kmc` * `@keymanapp/models-wordbreakers` -- published accidentally diff --git a/package-lock.json b/package-lock.json index 29f478ef07..aacff14276 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,13 +74,13 @@ "name": "@keymanapp/models-templates", "license": "MIT", "dependencies": { + "@keymanapp/common-types": "*", "@keymanapp/keyman-version": "*", - "@keymanapp/models-types": "*", "@keymanapp/models-wordbreakers": "*", "@keymanapp/resources-gosh": "*" }, "devDependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/web-utils": "*", "@types/mocha": "^7.0.2", "c8": "^7.12.0", @@ -89,18 +89,11 @@ "typescript": "^5.4.5" } }, - "common/models/types": { - "name": "@keymanapp/models-types", - "license": "MIT", - "devDependencies": { - "typescript": "^5.4.5" - } - }, "common/models/wordbreakers": { "name": "@keymanapp/models-wordbreakers", "license": "MIT", "devDependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/resources-gosh": "*", "@types/mocha": "^7.0.2", "c8": "^7.12.0", @@ -521,7 +514,6 @@ "@keymanapp/kmc-model": "*", "@keymanapp/kmc-model-info": "*", "@keymanapp/kmc-package": "*", - "@keymanapp/models-types": "*", "@sentry/node": "^7.57.0", "chalk": "^2.4.2", "commander": "^10.0.0", @@ -1330,7 +1322,6 @@ "dependencies": { "@keymanapp/common-types": "*", "@keymanapp/keyman-version": "*", - "@keymanapp/models-types": "*", "typescript": "^5.4.5" }, "devDependencies": { @@ -1349,8 +1340,7 @@ "license": "MIT", "dependencies": { "@keymanapp/common-types": "*", - "@keymanapp/developer-utils": "*", - "@keymanapp/models-types": "*" + "@keymanapp/developer-utils": "*" }, "devDependencies": { "@types/mocha": "^5.2.7", @@ -2846,10 +2836,6 @@ "resolved": "common/models/templates", "link": true }, - "node_modules/@keymanapp/models-types": { - "resolved": "common/models/types", - "link": true - }, "node_modules/@keymanapp/models-wordbreakers": { "resolved": "common/models/wordbreakers", "link": true @@ -14735,9 +14721,9 @@ "name": "keyman", "license": "MIT", "dependencies": { + "@keymanapp/common-types": "*", "@keymanapp/keyman-version": "*", "@keymanapp/lexical-model-layer": "*", - "@keymanapp/models-types": "*", "@keymanapp/recorder-core": "*", "@keymanapp/web-utils": "*", "core-js": "^3.34.0", @@ -14787,7 +14773,7 @@ "string.prototype.codepointat": "^0.2.1" }, "devDependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/resources-gosh": "*", "mocha": "^10.0.0", "mocha-teamcity-reporter": "^4.0.0", @@ -14808,7 +14794,7 @@ }, "devDependencies": { "@keymanapp/common-test-resources": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/resources-gosh": "*", "c8": "^7.12.0", "combine-source-map": "^0.8.0", @@ -14821,8 +14807,8 @@ "name": "@keymanapp/recorder-core", "license": "MIT", "dependencies": { + "@keymanapp/common-types": "*", "@keymanapp/keyman-version": "*", - "@keymanapp/models-types": "*", "@keymanapp/web-utils": "*" }, "devDependencies": { diff --git a/tsconfig.base.json b/tsconfig.base.json index 7f69376372..26bb7ba554 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -27,7 +27,6 @@ "paths": { "@keymanapp/common-types": ["./common/web/types/src/main"], "@keymanapp/keyman": ["./web" ], - "@keymanapp/models-types": ["./common/models/types"], "@keymanapp/models-templates": ["./common/models/templates"], "@keymanapp/models-wordbreakers": ["./common/models/wordbreakers"], "@keymanapp/web-utils": ["./common/web/utils"], diff --git a/tsconfig.json b/tsconfig.json index fc9c15a34f..641ad10c30 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,6 @@ { "path": "./core/include/ldml/tsconfig.json" }, { "path": "./common/models/templates/tsconfig.json" }, - { "path": "./common/models/types/tsconfig.json" }, { "path": "./common/models/wordbreakers/tsconfig.json" }, { "path": "./common/tools/hextobin/" }, diff --git a/web/package.json b/web/package.json index 5c6684afd3..650aece14d 100644 --- a/web/package.json +++ b/web/package.json @@ -122,7 +122,7 @@ "dependencies": { "@keymanapp/keyman-version": "*", "@keymanapp/lexical-model-layer": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/recorder-core": "*", "@keymanapp/web-utils": "*", "core-js": "^3.34.0", diff --git a/web/src/app/webview/src/configuration.ts b/web/src/app/webview/src/configuration.ts index 62c7b56b06..aa48301cae 100644 --- a/web/src/app/webview/src/configuration.ts +++ b/web/src/app/webview/src/configuration.ts @@ -3,6 +3,7 @@ import { EngineConfiguration, InitOptionSpec, InitOptionDefaults } from "keyman/ import { buildMergedTransform } from '@keymanapp/models-templates'; import { type OnInsertTextFunc } from "./contextManager.js"; +import { Transform } from '@keymanapp/common-types'; export class WebviewConfiguration extends EngineConfiguration { private _embeddingApp: string; diff --git a/web/src/app/webview/src/contextManager.ts b/web/src/app/webview/src/contextManager.ts index b0b90b4d96..ca3be54eca 100644 --- a/web/src/app/webview/src/contextManager.ts +++ b/web/src/app/webview/src/contextManager.ts @@ -3,6 +3,7 @@ import { Mock, OutputTarget, Transcription, findCommonSubstringEndIndex, isEmpty import { KeyboardStub } from 'keyman/engine/keyboard-storage'; import { ContextManagerBase } from 'keyman/engine/main'; import { WebviewConfiguration } from './configuration.js'; +import { Transform } from '@keymanapp/common-types'; export type OnInsertTextFunc = (deleteLeft: number, text: string, deleteRight: number) => void; diff --git a/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts b/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts index 84e7851987..303fa99fc3 100644 --- a/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts +++ b/web/src/engine/interfaces/src/prediction/languageProcessor.interface.ts @@ -1,5 +1,4 @@ -/// - +import { Suggestion, Reversion } from '@keymanapp/common-types'; import { EventEmitter } from "eventemitter3"; import { OutputTarget } from "keyman/engine/keyboard"; diff --git a/web/src/engine/interfaces/src/prediction/predictionContext.ts b/web/src/engine/interfaces/src/prediction/predictionContext.ts index 3ce0e936b4..758ef8f46b 100644 --- a/web/src/engine/interfaces/src/prediction/predictionContext.ts +++ b/web/src/engine/interfaces/src/prediction/predictionContext.ts @@ -1,4 +1,5 @@ import { EventEmitter } from "eventemitter3"; +import { Keep, Reversion, Suggestion } from '@keymanapp/common-types'; import { type LanguageProcessorSpec , ReadySuggestions, type InvalidateSourceEnum, StateChangeHandler } from './languageProcessor.interface.js'; import { type OutputTarget } from "keyman/engine/keyboard"; diff --git a/web/src/engine/js-processor/src/outputTarget.ts b/web/src/engine/js-processor/src/outputTarget.ts index becd887e01..c055e47602 100644 --- a/web/src/engine/js-processor/src/outputTarget.ts +++ b/web/src/engine/js-processor/src/outputTarget.ts @@ -1,5 +1,3 @@ -/// - import { extendString } from "@keymanapp/web-utils"; import { findCommonSubstringEndIndex } from "./stringDivergence.js"; import { Mock } from "./mock.js"; @@ -10,6 +8,7 @@ extendString(); // Defines deadkey management in a manner attachable to each element interface. import { type KeyEvent } from 'keyman/engine/keyboard'; import { Deadkey, DeadkeyTracker } from "./deadkeys.js"; +import { ProbabilityMass, Transform } from '@keymanapp/common-types'; // Also relies on string-extensions provided by the web-utils package. diff --git a/web/src/engine/js-processor/src/ruleBehavior.ts b/web/src/engine/js-processor/src/ruleBehavior.ts index a6b2c9973a..2923450622 100644 --- a/web/src/engine/js-processor/src/ruleBehavior.ts +++ b/web/src/engine/js-processor/src/ruleBehavior.ts @@ -1,10 +1,9 @@ -/// - import KeyboardProcessor from "./keyboardProcessor.js"; import { VariableStoreDictionary } from "keyman/engine/keyboard"; import OutputTarget, { type Transcription } from './outputTarget.js'; import { Mock } from "./mock.js"; import { type VariableStore } from "./systemStores.js"; +import { Suggestion } from '@keymanapp/common-types'; /** * Represents the commands and state changes that result from a matched keyboard rule. diff --git a/web/src/engine/main/src/headless/contextWindow.ts b/web/src/engine/main/src/headless/contextWindow.ts index 9fcd1458b2..fd8385f45e 100644 --- a/web/src/engine/main/src/headless/contextWindow.ts +++ b/web/src/engine/main/src/headless/contextWindow.ts @@ -1,3 +1,4 @@ +import { CasingForm, Configuration, Context } from '@keymanapp/common-types'; import { Mock } from "keyman/engine/js-processor"; export default class ContextWindow implements Context { diff --git a/web/src/engine/main/src/headless/inputProcessor.ts b/web/src/engine/main/src/headless/inputProcessor.ts index 6d8904c563..d08774850f 100644 --- a/web/src/engine/main/src/headless/inputProcessor.ts +++ b/web/src/engine/main/src/headless/inputProcessor.ts @@ -1,7 +1,5 @@ // Defines a 'polyfill' of sorts for NPM's events module -/// - import ContextWindow from "./contextWindow.js"; import { LanguageProcessor } from "./languageProcessor.js"; import type { ModelSpec } from "keyman/engine/interfaces"; @@ -21,6 +19,7 @@ import { } from 'keyman/engine/js-processor'; import { TranscriptionCache } from "./transcriptionCache.js"; +import { Transform } from '@keymanapp/common-types'; export class InputProcessor { public static readonly DEFAULT_OPTIONS: ProcessorInitOptions = { diff --git a/web/src/engine/main/src/headless/languageProcessor.ts b/web/src/engine/main/src/headless/languageProcessor.ts index cd39afc672..ed82943565 100644 --- a/web/src/engine/main/src/headless/languageProcessor.ts +++ b/web/src/engine/main/src/headless/languageProcessor.ts @@ -4,6 +4,7 @@ import { OutputTarget, Transcription, Mock } from "keyman/engine/js-processor"; import { LanguageProcessorEventMap, ModelSpec, StateChangeEnum, ReadySuggestions } from 'keyman/engine/interfaces'; import ContextWindow from "./contextWindow.js"; import { TranscriptionCache } from "./transcriptionCache.js"; +import { Capabilities, Configuration, Reversion, Suggestion } from '@keymanapp/common-types'; /* Is more like the model configuration engine */ export class LanguageProcessor extends EventEmitter { diff --git a/web/src/engine/osk/src/banner/suggestionBanner.ts b/web/src/engine/osk/src/banner/suggestionBanner.ts index 34455fd061..f32cbdacd2 100644 --- a/web/src/engine/osk/src/banner/suggestionBanner.ts +++ b/web/src/engine/osk/src/banner/suggestionBanner.ts @@ -19,6 +19,7 @@ import { ParsedLengthStyle } from '../lengthStyle.js'; import { getFontSizeStyle } from '../fontSizeUtils.js'; import { getTextMetrics } from '../keyboard-layout/getTextMetrics.js'; import { BannerScrollState } from './bannerScrollState.js'; +import { Suggestion } from '@keymanapp/common-types'; const TOUCHED_CLASS: string = 'kmw-suggest-touched'; const BANNER_SCROLLER_CLASS = 'kmw-suggest-banner-scroller'; diff --git a/web/src/engine/predictive-text/types/message.d.ts b/web/src/engine/predictive-text/types/message.d.ts index 36aab25657..c20bcc29e8 100644 --- a/web/src/engine/predictive-text/types/message.d.ts +++ b/web/src/engine/predictive-text/types/message.d.ts @@ -20,7 +20,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/// +import { Configuration, Reversion, Suggestion, USVString } from '@keymanapp/common-types'; /** * Tokens are signed 31-bit integers! diff --git a/web/src/engine/predictive-text/types/package.json b/web/src/engine/predictive-text/types/package.json index 835a95045b..b6c98eba96 100644 --- a/web/src/engine/predictive-text/types/package.json +++ b/web/src/engine/predictive-text/types/package.json @@ -1,6 +1,7 @@ { "name": "@keymanapp/lm-message-types", "description": "Type definitions in used in the lm layer (lexical model/predictive text) component of Keyman.", + "type": "module", "types": "./message.d.ts", "scripts": { "test": "tsc test.ts -lib es6" diff --git a/web/src/engine/predictive-text/worker-main/build.sh b/web/src/engine/predictive-text/worker-main/build.sh index 33e5eaebeb..c9429dab4e 100755 --- a/web/src/engine/predictive-text/worker-main/build.sh +++ b/web/src/engine/predictive-text/worker-main/build.sh @@ -17,11 +17,10 @@ BUNDLE_CMD="node $KEYMAN_ROOT/common/web/es-bundling/build/common-bundle.mjs" ################################ Main script ################################ -# "@../models/types" \ # is just a .d.ts, so there's nothing to actually BUILD. - builder_describe "Builds the lm-layer module" \ "@/common/web/keyman-version" \ "@/common/web/es-bundling" \ + "@/common/web/types" \ "@/web/src/engine/predictive-text/worker-thread" \ "clean" \ "configure" \ diff --git a/web/src/engine/predictive-text/worker-main/package.json b/web/src/engine/predictive-text/worker-main/package.json index 978bcd6dcf..29c0f9c329 100644 --- a/web/src/engine/predictive-text/worker-main/package.json +++ b/web/src/engine/predictive-text/worker-main/package.json @@ -42,7 +42,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/resources-gosh": "*", "mocha": "^10.0.0", "mocha-teamcity-reporter": "^4.0.0", diff --git a/web/src/engine/predictive-text/worker-main/src/lmlayer.ts b/web/src/engine/predictive-text/worker-main/src/lmlayer.ts index d9dfb8e867..9153c0ed64 100644 --- a/web/src/engine/predictive-text/worker-main/src/lmlayer.ts +++ b/web/src/engine/predictive-text/worker-main/src/lmlayer.ts @@ -20,9 +20,10 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +import { Capabilities, Configuration, Context, Distribution, Reversion, Suggestion, Transform, USVString } from '@keymanapp/common-types'; import PromiseStore from "./promise-store.js"; +import { OutgoingMessage } from '@keymanapp/lm-message-types'; -/// /// /** diff --git a/web/src/engine/predictive-text/worker-main/src/promise-store.ts b/web/src/engine/predictive-text/worker-main/src/promise-store.ts index 890ba59239..9548dd1c97 100644 --- a/web/src/engine/predictive-text/worker-main/src/promise-store.ts +++ b/web/src/engine/predictive-text/worker-main/src/promise-store.ts @@ -22,6 +22,8 @@ /// +import { Token } from '@keymanapp/lm-message-types'; + type Resolve = (value?: T | PromiseLike) => void; type Reject = (reason?: any) => void; interface PromiseCallbacks { diff --git a/web/src/engine/predictive-text/worker-main/src/tsconfig.json b/web/src/engine/predictive-text/worker-main/src/tsconfig.json index edf6195b3a..4cd8f538da 100644 --- a/web/src/engine/predictive-text/worker-main/src/tsconfig.json +++ b/web/src/engine/predictive-text/worker-main/src/tsconfig.json @@ -9,7 +9,7 @@ }, "references": [ { "path": "../../../../../../common/web/utils" }, - { "path": "../../../../../../common/models/types"}, + { "path": "../../../../../../common/web/types"}, { "path": "../../types"} ], "include" : [ "./*.ts" ], diff --git a/web/src/engine/predictive-text/worker-main/tsconfig.all.json b/web/src/engine/predictive-text/worker-main/tsconfig.all.json index 722ce0114b..430df16c1b 100644 --- a/web/src/engine/predictive-text/worker-main/tsconfig.all.json +++ b/web/src/engine/predictive-text/worker-main/tsconfig.all.json @@ -14,7 +14,7 @@ "files": [], "references": [ { "path": "../../../../../common/web/utils" }, - { "path": "../../../../../common/models/types"}, + { "path": "../../../../../common/web/types"}, { "path": "../types"}, { "path": "src/node" }, { "path": "src/web" } diff --git a/web/src/engine/predictive-text/worker-thread/package.json b/web/src/engine/predictive-text/worker-thread/package.json index 9ebc26a4eb..6c9bf52da7 100644 --- a/web/src/engine/predictive-text/worker-thread/package.json +++ b/web/src/engine/predictive-text/worker-thread/package.json @@ -26,7 +26,7 @@ "license": "MIT", "devDependencies": { "@keymanapp/common-test-resources": "*", - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/resources-gosh": "*", "c8": "^7.12.0", "combine-source-map": "^0.8.0", diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts index 9dc8b0f676..69472bf02b 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/context-tracker.ts @@ -5,6 +5,7 @@ import { SearchSpace } from './distance-modeler.js'; import TransformUtils from '../transformUtils.js'; import { determineModelTokenizer } from '../model-helpers.js'; import { tokenizeTransform, tokenizeTransformDistribution } from './transform-tokenization.js'; +import { Context, Distribution, LexicalModel, Suggestion, Transform, USVString } from '@keymanapp/common-types'; function textToCharTransforms(text: string, transformId?: number) { let perCharTransforms: Transform[] = []; diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts index e06e9e3059..c102af9eef 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/distance-modeler.ts @@ -3,6 +3,7 @@ import { QueueComparator as Comparator, PriorityQueue } from '@keymanapp/web-uti import { ClassicalDistanceCalculation, EditToken } from './classical-calculation.js'; import { ExecutionTimer, STANDARD_TIME_BETWEEN_DEFERS } from './execution-timer.js'; +import { Distribution, LexicalModel, LexiconTraversal, ProbabilityMass, Transform, USVString } from '@keymanapp/common-types'; type RealizedInput = ProbabilityMass[]; // NOT Distribution - they're masses from separate distributions. diff --git a/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts b/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts index 5dc428c0c3..a5d3c1bf0e 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/correction/transform-tokenization.ts @@ -1,3 +1,4 @@ +import { Context, Distribution, Transform } from '@keymanapp/common-types'; import { applyTransform, type Tokenization } from "@keymanapp/models-templates"; /** diff --git a/web/src/engine/predictive-text/worker-thread/src/main/index.ts b/web/src/engine/predictive-text/worker-thread/src/main/index.ts index 3873dd19ab..3abc9ddcd0 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/index.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/index.ts @@ -40,6 +40,8 @@ import * as wordBreakers from '@keymanapp/models-wordbreakers'; import ModelCompositor from './model-compositor.js'; import { ImportScripts, IncomingMessage, LMLayerWorkerState, LoadMessage, ModelEval, ModelFile, ModelSourceSpec, PostMessage } from './worker-interfaces.js'; +import { Capabilities, LexicalModel } from '@keymanapp/common-types'; +import { OutgoingMessageKind } from '@keymanapp/lm-message-types'; /** * Encapsulates all the state required for the LMLayer's worker thread. diff --git a/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts b/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts index c6b8367b78..2a8f67a547 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/model-compositor.ts @@ -4,6 +4,7 @@ import * as correction from './correction/index.js' import TransformUtils from './transformUtils.js'; import { correctAndEnumerate, dedupeSuggestions, finalizeSuggestions, predictionAutoSelect, processSimilarity, toAnnotatedSuggestion, tupleDisplayOrderSort } from './predict-helpers.js'; import { detectCurrentCasing, determineModelTokenizer, determineModelWordbreaker, determinePunctuationFromModel } from './model-helpers.js'; +import { CasingForm, Context, Distribution, LexicalModel, LexicalModelPunctuation, Reversion, Suggestion, Transform, USVString } from '@keymanapp/common-types'; export class ModelCompositor { private lexicalModel: LexicalModel; diff --git a/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts index 17ad212671..0f0fa02de6 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/model-helpers.ts @@ -1,3 +1,4 @@ +import { CasingForm, Context, LexicalModel, LexicalModelPunctuation } from '@keymanapp/common-types'; import * as models from '@keymanapp/models-templates'; import * as wordBreakers from '@keymanapp/models-wordbreakers'; diff --git a/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts b/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts index 0b1fbf3cfc..254b881883 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/models/dummy-model.ts @@ -1,5 +1,7 @@ /// +import { Capabilities, CasingForm, Configuration, Context, Distribution, LexicalModel, LexicalModelPunctuation, Outcome, Suggestion, Transform, WordBreakingFunction } from '@keymanapp/common-types'; + /* * Copyright (c) 2018 National Research Council Canada (author: Eddie A. Santos) * Copyright (c) 2018 SIL International diff --git a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts index 44bfb29c0b..bd7d19cd89 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts @@ -5,6 +5,7 @@ import { determineModelTokenizer, determineModelWordbreaker, determinePunctuatio import { ContextTracker, TrackedContextState } from './correction/context-tracker.js'; import { ExecutionTimer } from './correction/execution-timer.js'; import ModelCompositor from './model-compositor.js'; +import { ProbabilityMass, Suggestion, LexicalModel, Distribution, Outcome, Keep, SuggestionTag, Reversion, Transform, Context } from '@keymanapp/common-types'; /* * The functions in this file exist to provide unit-testable stateless components for the diff --git a/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts b/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts index f9d8d8a63f..5cbc6f2d0d 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/transformUtils.ts @@ -1,3 +1,5 @@ +import { Transform } from '@keymanapp/common-types'; + export default class TransformUtils { static isWhitespace(transform: Transform): boolean { // Matches a string that is entirely one or more characters with Unicode general property Z* or the following: CR, LF, and Tab. diff --git a/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts b/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts index bcde9b56fd..c57c1c0946 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/worker-interfaces.ts @@ -28,7 +28,9 @@ /// +import { Capabilities, Context, Distribution, LexicalModel, Reversion, Suggestion, Transform } from '@keymanapp/common-types'; import type ModelCompositor from './model-compositor.js'; +import { Token } from '@keymanapp/models-templates'; /** * The signature of self.postMessage(), so that unit tests can mock it. diff --git a/web/src/engine/predictive-text/worker-thread/tsconfig.json b/web/src/engine/predictive-text/worker-thread/tsconfig.json index bfc8498730..9de0fd77aa 100644 --- a/web/src/engine/predictive-text/worker-thread/tsconfig.json +++ b/web/src/engine/predictive-text/worker-thread/tsconfig.json @@ -18,7 +18,7 @@ }, "references": [ // types - { "path": "../../../../../common/models/types" }, + { "path": "../../../../../common/web/types" }, { "path": "../types" }, // modules { "path": "../../../../../common/web/keyman-version" }, diff --git a/web/src/tools/testing/recorder-core/package.json b/web/src/tools/testing/recorder-core/package.json index 426595e567..6bec4354ae 100644 --- a/web/src/tools/testing/recorder-core/package.json +++ b/web/src/tools/testing/recorder-core/package.json @@ -19,7 +19,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/models-types": "*", + "@keymanapp/common-types": "*", "@keymanapp/keyman-version": "*", "@keymanapp/web-utils": "*" },