From 2439ba4e976219faf5f7ef38b92543654b69261e Mon Sep 17 00:00:00 2001 From: "Joshua A. Horton" Date: Tue, 14 Mar 2023 08:41:29 +0700 Subject: [PATCH] fix(developer): updates kmc, web/types module resolution, adds missing type import/exports --- .../keyman-touch-layout-file-reader.ts | 3 +- common/web/types/src/kpj/kpj-file-reader.ts | 3 +- common/web/types/src/kvk/kvks-file-reader.ts | 3 +- common/web/types/src/kvk/visual-keyboard.ts | 4 +-- .../ldml-keyboard/ldml-keyboard-xml-reader.ts | 3 +- common/web/types/src/main.ts | 2 +- .../test-ldml-keyboard-xml-reader.ts | 2 +- .../kmc-model-info/src/model-info-compiler.ts | 3 +- .../src/kmc-model-info/src/model-info-file.ts | 6 ++-- .../src/script-overrides-decorator.ts | 2 +- developer/src/kmc-package/src/kmp-compiler.ts | 8 +++-- .../src/kmc-package/src/kmp-json-file.ts | 22 ++++++------ developer/src/kmc-package/src/kps-file.ts | 36 +++++++++---------- .../kmc-package/test/test-package-compiler.ts | 1 + developer/src/kmc/src/kmlmc.ts | 2 +- developer/src/kmc/src/kmlmi.ts | 2 +- developer/src/kmc/src/kmlmp.ts | 2 +- tsconfig.esm-base.json | 2 +- 18 files changed, 57 insertions(+), 49 deletions(-) diff --git a/common/web/types/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts b/common/web/types/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts index eb54325424..f4c5e757bf 100644 --- a/common/web/types/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts +++ b/common/web/types/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts @@ -1,4 +1,5 @@ -import Ajv from "ajv"; +import { default as AjvModule } from 'ajv'; +const Ajv = AjvModule.default; // The actual expected Ajv type. import { TouchLayoutFile } from "./keyman-touch-layout-file.js"; export class TouchLayoutFileReader { diff --git a/common/web/types/src/kpj/kpj-file-reader.ts b/common/web/types/src/kpj/kpj-file-reader.ts index 121207acb9..f8d27c6a70 100644 --- a/common/web/types/src/kpj/kpj-file-reader.ts +++ b/common/web/types/src/kpj/kpj-file-reader.ts @@ -1,6 +1,7 @@ import * as xml2js from 'xml2js'; import { KPJFile, KPJFileProject } from './kpj-file.js'; -import Ajv from 'ajv'; +import { default as AjvModule } from 'ajv'; +const Ajv = AjvModule.default; // The actual expected Ajv type. import { boxXmlArray } from '../util/util.js'; import { KeymanDeveloperProject, KeymanDeveloperProjectFile10, KeymanDeveloperProjectType } from './keyman-developer-project.js'; diff --git a/common/web/types/src/kvk/kvks-file-reader.ts b/common/web/types/src/kvk/kvks-file-reader.ts index c6a696cf30..1a4c5a8b05 100644 --- a/common/web/types/src/kvk/kvks-file-reader.ts +++ b/common/web/types/src/kvk/kvks-file-reader.ts @@ -1,6 +1,7 @@ import * as xml2js from 'xml2js'; import KVKSourceFile from './kvks-file.js'; -import Ajv from 'ajv'; +import { default as AjvModule } from 'ajv'; +const Ajv = AjvModule.default; // The actual expected Ajv type. import { boxXmlArray } from '../util/util.js'; import { VisualKeyboard, VisualKeyboardHeaderFlags, VisualKeyboardKey, VisualKeyboardKeyFlags, VisualKeyboardLegalShiftStates, VisualKeyboardShiftState } from './visual-keyboard.js'; import { USVirtualKeyCodes } from '../consts/virtual-key-constants.js'; diff --git a/common/web/types/src/kvk/visual-keyboard.ts b/common/web/types/src/kvk/visual-keyboard.ts index 11e9df977d..c1f1d5d7e9 100644 --- a/common/web/types/src/kvk/visual-keyboard.ts +++ b/common/web/types/src/kvk/visual-keyboard.ts @@ -4,14 +4,14 @@ // Corresponds to .kvk / .kvks file data // -import { BUILDER_KVK_SHIFT_STATE, BUILDER_KVK_HEADER_FLAGS, BUILDER_KVK_KEY_FLAGS } from "./kvk-file"; +import { BUILDER_KVK_SHIFT_STATE, BUILDER_KVK_HEADER_FLAGS, BUILDER_KVK_KEY_FLAGS } from "./kvk-file.js"; export class VisualKeyboard { header: VisualKeyboardHeader = {flags: 0, ansiFont:{}, unicodeFont:{}, underlyingLayout: undefined}; keys: VisualKeyboardKey[] = []; }; -export { BUILDER_KVK_HEADER_FLAGS as VisualKeyboardHeaderFlags } from "./kvk-file"; +export { BUILDER_KVK_HEADER_FLAGS as VisualKeyboardHeaderFlags } from "./kvk-file.js"; export class VisualKeyboardHeader { version?: number; // 0x0600 diff --git a/common/web/types/src/ldml-keyboard/ldml-keyboard-xml-reader.ts b/common/web/types/src/ldml-keyboard/ldml-keyboard-xml-reader.ts index 7172edbd70..ac470f8589 100644 --- a/common/web/types/src/ldml-keyboard/ldml-keyboard-xml-reader.ts +++ b/common/web/types/src/ldml-keyboard/ldml-keyboard-xml-reader.ts @@ -1,6 +1,7 @@ import * as xml2js from 'xml2js'; import { LDMLKeyboardXMLSourceFile, LKImport } from './ldml-keyboard-xml.js'; -import Ajv from 'ajv'; +import { default as AjvModule } from 'ajv'; +const Ajv = AjvModule.default; // The actual expected Ajv type. import { boxXmlArray } from '../util/util.js'; import { CompilerCallbacks } from '../util/compiler-interfaces.js'; import { constants } from '@keymanapp/ldml-keyboard-constants'; diff --git a/common/web/types/src/main.ts b/common/web/types/src/main.ts index 72cf77c48e..f3d20402e7 100644 --- a/common/web/types/src/main.ts +++ b/common/web/types/src/main.ts @@ -10,7 +10,7 @@ export { default as KvksFileReader } from './kvk/kvks-file-reader.js'; export { default as KvkFileWriter } from './kvk/kvk-file-writer.js'; export * as LDMLKeyboard from './ldml-keyboard/ldml-keyboard-xml.js'; -export { LDMLKeyboardTestDataXMLSourceFile } from './ldml-keyboard/ldml-keyboard-testdata-xml'; +export { LDMLKeyboardTestDataXMLSourceFile } from './ldml-keyboard/ldml-keyboard-testdata-xml.js'; export { default as LDMLKeyboardXMLSourceFileReader } from './ldml-keyboard/ldml-keyboard-xml-reader.js'; export * as Constants from './consts/virtual-key-constants.js'; diff --git a/common/web/types/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts b/common/web/types/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts index 0fb1567384..ac791dac33 100644 --- a/common/web/types/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts +++ b/common/web/types/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts @@ -1,4 +1,4 @@ -import { LKKey } from './../../src/ldml-keyboard/ldml-keyboard-xml'; +import { LKKey } from './../../src/ldml-keyboard/ldml-keyboard-xml.js'; import 'mocha'; import {assert} from 'chai'; import { CommonTypesMessages } from '../../src/util/common-events.js'; diff --git a/developer/src/kmc-model-info/src/model-info-compiler.ts b/developer/src/kmc-model-info/src/model-info-compiler.ts index 8c9b10db4d..f4480a1d5b 100644 --- a/developer/src/kmc-model-info/src/model-info-compiler.ts +++ b/developer/src/kmc-model-info/src/model-info-compiler.ts @@ -9,7 +9,8 @@ import * as fs from "fs"; import * as path from "path"; import { minKeymanVersion } from "./min-keyman-version.js"; -// import KmpJsonFile from "@keymanapp/kmc-package/kmp-json-file"; +import { ModelInfoFile } from "./model-info-file.js"; +import { type KmpJsonFile } from "@keymanapp/kmc-package"; export class ModelInfoOptions { /** The identifier for the model */ diff --git a/developer/src/kmc-model-info/src/model-info-file.ts b/developer/src/kmc-model-info/src/model-info-file.ts index 2320218bf7..36c17fc5aa 100644 --- a/developer/src/kmc-model-info/src/model-info-file.ts +++ b/developer/src/kmc-model-info/src/model-info-file.ts @@ -1,4 +1,4 @@ -interface ModelInfoFile { +export interface ModelInfoFile { id?: string; name?: string; authorName?: string; @@ -21,12 +21,12 @@ interface ModelInfoFile { related?: ModelInfoFileRelated[]; } -interface ModelInfoFileLink { +export interface ModelInfoFileLink { name: string; url: string; } -interface ModelInfoFileRelated { +export interface ModelInfoFileRelated { deprecates?: string; deprecatedBy?: string; note?: string; diff --git a/developer/src/kmc-model/src/script-overrides-decorator.ts b/developer/src/kmc-model/src/script-overrides-decorator.ts index 59a425620c..4413a34d26 100644 --- a/developer/src/kmc-model/src/script-overrides-decorator.ts +++ b/developer/src/kmc-model/src/script-overrides-decorator.ts @@ -1,4 +1,4 @@ -import { OverrideScriptDefaults } from "./lexical-model"; +import { OverrideScriptDefaults } from "./lexical-model.js"; export function decorateWithScriptOverrides(breaker: WordBreakingFunction, option: OverrideScriptDefaults) { if (option !== 'break-words-at-spaces') { diff --git a/developer/src/kmc-package/src/kmp-compiler.ts b/developer/src/kmc-package/src/kmp-compiler.ts index 3538bb83e7..718403d18b 100644 --- a/developer/src/kmc-package/src/kmp-compiler.ts +++ b/developer/src/kmc-package/src/kmp-compiler.ts @@ -1,12 +1,14 @@ -/// -/// - import * as fs from 'fs'; import * as path from 'path'; import * as xml2js from 'xml2js'; import JSZip from 'jszip'; import KEYMAN_VERSION from "@keymanapp/keyman-version"; +import type { KpsFile, KpsFileContentFile, KpsFileInfo, KpsFileKeyboard, KpsFileLanguage, KpsFileLexicalModel, KpsFileOptions, KpsPackage } from './kps-file.js'; +import type { KmpJsonFile, KmpJsonFileInfo, KmpJsonFileLanguage, KmpJsonFileOptions } from './kmp-json-file.js'; + +export { type KmpJsonFile } from './kmp-json-file.js'; + const FILEVERSION_KMP_JSON = '12.0'; export default class KmpCompiler { diff --git a/developer/src/kmc-package/src/kmp-json-file.ts b/developer/src/kmc-package/src/kmp-json-file.ts index 3eadb3dd1d..97c560d1f6 100644 --- a/developer/src/kmc-package/src/kmp-json-file.ts +++ b/developer/src/kmc-package/src/kmp-json-file.ts @@ -1,4 +1,4 @@ -interface KmpJsonFile { +export interface KmpJsonFile { system: KmpJsonFileSystem; options: KmpJsonFileOptions; info?: KmpJsonFileInfo; @@ -9,12 +9,12 @@ interface KmpJsonFile { strings?: string[]; } -interface KmpJsonFileSystem { +export interface KmpJsonFileSystem { keymanDeveloperVersion: string; fileVersion: string; } -interface KmpJsonFileOptions { +export interface KmpJsonFileOptions { readmeFile?: string; graphicFile?: string; executeProgram?: string; @@ -22,7 +22,7 @@ interface KmpJsonFileOptions { msiOptions?: string; } -interface KmpJsonFileInfo { +export interface KmpJsonFileInfo { website?: KmpJsonFileInfoItem; version?: KmpJsonFileInfoItem; name?: KmpJsonFileInfoItem; @@ -30,29 +30,29 @@ interface KmpJsonFileInfo { author?: KmpJsonFileInfoItem; } -interface KmpJsonFileInfoItem { +export interface KmpJsonFileInfoItem { description: string; url?: string; } -interface KmpJsonFileContentFile { +export interface KmpJsonFileContentFile { name: string; description: string; copyLocation?: number; } -interface KmpJsonFileLexicalModel { +export interface KmpJsonFileLexicalModel { name: string; id: string; languages: KmpJsonFileLanguage[]; } -interface KmpJsonFileLanguage { +export interface KmpJsonFileLanguage { name: string; id: string; } -interface KmpJsonFileKeyboard { +export interface KmpJsonFileKeyboard { name: string; id: string; version: string; @@ -62,13 +62,13 @@ interface KmpJsonFileKeyboard { languages?: KmpJsonFileLanguage[]; } -interface KmpJsonFileStartMenu { +export interface KmpJsonFileStartMenu { folder?: string; addUninstallEntry?: boolean; items?: KmpJsonFileStartMenuItem[]; } -interface KmpJsonFileStartMenuItem { +export interface KmpJsonFileStartMenuItem { name: string; filename: string; arguments?: string; diff --git a/developer/src/kmc-package/src/kps-file.ts b/developer/src/kmc-package/src/kps-file.ts index 850c64c550..8d917e3770 100644 --- a/developer/src/kmc-package/src/kps-file.ts +++ b/developer/src/kmc-package/src/kps-file.ts @@ -13,14 +13,14 @@ // * Strings element is not yet checked to be correct // -interface KpsPackage { +export interface KpsPackage { /** * -- the root element. */ package: KpsFile; } -interface KpsFile { +export interface KpsFile { system: KpsFileSystem; options: KpsFileOptions; info?: KpsFileInfo; @@ -31,12 +31,12 @@ interface KpsFile { strings?: KpsFileStrings; } -interface KpsFileSystem { +export interface KpsFileSystem { keymanDeveloperVersion: string; fileVersion: string; } -interface KpsFileOptions { +export interface KpsFileOptions { followKeyboardVersion?: string; readMeFile?: string; graphicFile?: string; @@ -45,7 +45,7 @@ interface KpsFileOptions { msiOptions?: string; } -interface KpsFileInfo { +export interface KpsFileInfo { name?: KpsFileInfoItem; copyright?: KpsFileInfoItem; author?: KpsFileInfoItem; @@ -53,42 +53,42 @@ interface KpsFileInfo { version?: KpsFileInfoItem; } -interface KpsFileInfoItem { +export interface KpsFileInfoItem { _: string; $: { URL: string }; } -interface KpsFileContentFiles { +export interface KpsFileContentFiles { file: KpsFileContentFile[] | KpsFileContentFile; } -interface KpsFileContentFile { +export interface KpsFileContentFile { name: string; description: string; copyLocation: string; fileType: string; } -interface KpsFileLexicalModel { +export interface KpsFileLexicalModel { name: string; iD: string; languages: KpsFileLanguages; } -interface KpsFileLexicalModels { +export interface KpsFileLexicalModels { lexicalModel: KpsFileLexicalModel[] | KpsFileLexicalModel; } -interface KpsFileLanguages { +export interface KpsFileLanguages { language: KpsFileLanguage[] | KpsFileLanguage; } -interface KpsFileLanguage { +export interface KpsFileLanguage { _: string; $: { ID: string } } -interface KpsFileKeyboard { +export interface KpsFileKeyboard { name: string; iD: string; version: string; @@ -98,17 +98,17 @@ interface KpsFileKeyboard { languages?: KpsFileLanguages; } -interface KpsFileKeyboards { +export interface KpsFileKeyboards { keyboard: KpsFileKeyboard[] | KpsFileKeyboard; } -interface KpsFileStartMenu { +export interface KpsFileStartMenu { folder?: string; addUninstallEntry?: string; items?: KpsFileStartMenuItems; } -interface KpsFileStartMenuItem { +export interface KpsFileStartMenuItem { name: string; filename: string; arguments?: string; @@ -116,11 +116,11 @@ interface KpsFileStartMenuItem { location?: string; } -interface KpsFileStartMenuItems { +export interface KpsFileStartMenuItems { item: KpsFileStartMenuItem[] | KpsFileStartMenuItem; } -interface KpsFileStrings { +export interface KpsFileStrings { //TODO: validate this structure string: string[] | string; } diff --git a/developer/src/kmc-package/test/test-package-compiler.ts b/developer/src/kmc-package/test/test-package-compiler.ts index 99fd9850fa..a2850e7fc2 100644 --- a/developer/src/kmc-package/test/test-package-compiler.ts +++ b/developer/src/kmc-package/test/test-package-compiler.ts @@ -6,6 +6,7 @@ import KmpCompiler from '../src/kmp-compiler.js'; import {makePathToFixture} from './helpers/index.js'; import JSZip from 'jszip'; import KEYMAN_VERSION from "@keymanapp/keyman-version"; +import { type KmpJsonFile } from '../src/kmp-json-file.js'; describe('KmpCompiler', function () { const MODELS : string[] = [ diff --git a/developer/src/kmc/src/kmlmc.ts b/developer/src/kmc/src/kmlmc.ts index ae7263b073..8e17d76e84 100644 --- a/developer/src/kmc/src/kmlmc.ts +++ b/developer/src/kmc/src/kmlmc.ts @@ -6,7 +6,7 @@ import * as fs from 'fs'; import { Command } from 'commander'; import { compileModel } from '@keymanapp/kmc-model'; -import { SysExits } from './util/sysexits'; +import { SysExits } from './util/sysexits.js'; import KEYMAN_VERSION from "@keymanapp/keyman-version"; let inputFilename: string; diff --git a/developer/src/kmc/src/kmlmi.ts b/developer/src/kmc/src/kmlmi.ts index 214d86d405..b3549f4271 100644 --- a/developer/src/kmc/src/kmlmi.ts +++ b/developer/src/kmc/src/kmlmi.ts @@ -8,7 +8,7 @@ import * as path from 'path'; import { Command } from 'commander'; import KmpCompiler from '@keymanapp/kmc-package'; import { ModelInfoOptions as ModelInfoOptions, writeMergedModelMetadataFile } from '@keymanapp/kmc-model-info'; -import { SysExits } from './util/sysexits'; +import { SysExits } from './util/sysexits.js'; import KEYMAN_VERSION from "@keymanapp/keyman-version"; let inputFilename: string; diff --git a/developer/src/kmc/src/kmlmp.ts b/developer/src/kmc/src/kmlmp.ts index d7e5508314..6d51b4f58b 100644 --- a/developer/src/kmc/src/kmlmp.ts +++ b/developer/src/kmc/src/kmlmp.ts @@ -6,7 +6,7 @@ import * as fs from 'fs'; import { Command } from 'commander'; import KmpCompiler from '@keymanapp/kmc-package'; -import { SysExits } from './util/sysexits'; +import { SysExits } from './util/sysexits.js'; import KEYMAN_VERSION from "@keymanapp/keyman-version"; let inputFilename: string; diff --git a/tsconfig.esm-base.json b/tsconfig.esm-base.json index a6f194d83e..d17d505e5c 100644 --- a/tsconfig.esm-base.json +++ b/tsconfig.esm-base.json @@ -4,7 +4,7 @@ "compilerOptions": { "module": "ES2022", "target": "es2022", - "moduleResolution": "Node", + "moduleResolution": "Node16", "forceConsistentCasingInFileNames": true, "sourceMap": true, "alwaysStrict": true,