diff --git a/.eslintrc.js b/.eslintrc.js index befaaf2..1bc7735 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,29 +11,5 @@ module.exports = { }, plugins: ['@typescript-eslint'], rules: { - '@typescript-eslint/naming-convention': [ - 'warn', - { - 'selector': 'interface', - 'format': ['PascalCase'], - 'custom': { - 'regex': '^I[A-Z]', - 'match': true - } - } - ], - '@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }], - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-namespace': 'off', - '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/quotes': [ - 'error', - 'single', - { avoidEscape: true, allowTemplateLiterals: false } - ], - curly: ['error', 'all'], - semi: ['warn', 'never'], - eqeqeq: 'warn', - 'prefer-arrow-callback': 'error' } -}; +} diff --git a/package.json b/package.json index 9924055..6bc28c8 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ "@jupyter-widgets/jupyterlab-manager": "^5.0.4" }, "devDependencies": { + "@bokeh/bokehjs": "~3.4.0", "@jupyterlab/builder": "^4", "@typescript-eslint/eslint-plugin": "^7.0.1", "@typescript-eslint/parser": "^7.0.1", diff --git a/src/widgets.ts b/src/widgets.ts index b615056..ceaa02d 100644 --- a/src/widgets.ts +++ b/src/widgets.ts @@ -1,62 +1,46 @@ -import { DOMWidgetModel, DOMWidgetView } from '@jupyter-widgets/base' +import {DOMWidgetModel, DOMWidgetView} from "@jupyter-widgets/base" -//import {Document, DocumentChangedEvent, ModelChangedEvent} from "document" -//import {Receiver, Fragment} from "protocol/receiver" -//import {keys, values} from "core/util/object" +// Use only `import type`, so that all imports are erased at run time +import type {Document, DocJson, Patch, DocumentChangedEvent} from "@bokeh/bokehjs/document" +import type {DocumentChanged} from "@bokeh/bokehjs/document/events" +import type {Receiver, Fragment} from "@bokeh/bokehjs/protocol/receiver" +import type {RenderItem} from "@bokeh/bokehjs/embed/json" +import type {HasProps} from "@bokeh/bokehjs/core/has_props" +import type {Ref} from "@bokeh/bokehjs/core/util/refs" +import type {Serializer} from "@bokeh/bokehjs/core/serialization" +import type {BokehEvent} from "@bokeh/bokehjs/core/bokeh_events" +import type {add_document_standalone} from "@bokeh/bokehjs/embed/standalone" -import { name, version } from './metadata' +import {name, version} from './metadata' -function bk_require(name: string): any { - return (window as any).Bokeh.require(name) +declare const Bokeh: {require(name: string): unknown} + +function bk_require(name: string): T { + return Bokeh.require(name) as T } -type DocsJson = any -type RenderItem = any -type Document = any -type DocumentChangedEvent = any -type Receiver = any -type Fragment = any -type HasProps = any -type Ref = any +declare const Jupyter: {notebook?: unknown} + +declare function require(name: string): unknown -const { keys, values } = Object +const {keys} = Object const version_range = `^${version}` export type RenderBundle = { - docs_json: DocsJson + docs_json: DocJson[] render_items: RenderItem[] div: string } -export interface DocumentChanged { - event: 'jsevent' - kind: string -} - -export interface ModelChanged extends DocumentChanged { - event: 'jsevent' - kind: 'ModelChanged' - id: string - new: unknown - attr: string -} - -export interface MessageSent extends DocumentChanged { - event: 'jsevent' - kind: 'MessageSent' - msg_data: { - event_name: string - event_values: { - model: { id: string } - [other: string]: any - } - } - msg_type: string +/* +declare interface DocumentChanged { + event: "jsevent" } +*/ export class BokehModel extends DOMWidgetModel { - defaults(): any { + defaults(): {[key: string]: unknown} { return { ...super.defaults(), @@ -69,7 +53,7 @@ export class BokehModel extends DOMWidgetModel { _view_module_version: version_range, combine_events: false, - render_bundle: {} + render_bundle: {}, } } @@ -82,26 +66,23 @@ export class BokehView extends DOMWidgetView { private _document: Document | null private _receiver: Receiver private _blocked: boolean - private _msgs: any[] + private _msgs: DocumentChanged[] private _idle: boolean private _combine: boolean - constructor(options?: any) { + constructor(options?: unknown) { super(options) this._document = null this._blocked = false this._idle = true this._combine = true this._msgs = [] - const { Receiver } = bk_require('protocol/receiver') - this._receiver = new Receiver() + const receiver = bk_require<{Receiver: typeof Receiver}>('protocol/receiver') + this._receiver = new receiver.Receiver() this.model.on('change:render_bundle', () => this.render()) - if ( - (window as any).Jupyter != null && - (window as any).Jupyter.notebook != null - ) { + if (Jupyter?.notebook != null) { // Handle classic Jupyter notebook - const events = (window as any).require('base/js/events') + const events = require('base/js/events') events.on('kernel_idle.Kernel', () => this._process_msg()) } else if ((this.model.widget_manager as any).context != null) { // Handle JupyterLab and Voila @@ -117,15 +98,11 @@ export class BokehView extends DOMWidgetView { } }) } else if (this.model.get('combine_events')) { - console.warn( - 'BokehView cannot combine events because Kernel idle status cannot be determined.' - ) + console.warn('BokehView cannot combine events because Kernel idle status cannot be determined.') this._combine = false } } else if (this.model.get('combine_events')) { - console.warn( - 'BokehView cannot combine events because Kernel idle status cannot be determined.' - ) + console.warn('BokehView cannot combine events because Kernel idle status cannot be determined.') this._combine = false } this.listenTo(this.model, 'msg:custom', (content, buffers) => @@ -143,27 +120,25 @@ export class BokehView extends DOMWidgetView { render(): void { const bundle = JSON.parse(this.model.get('render_bundle')) - const { docs_json, render_items, div } = bundle as RenderBundle + const {docs_json, render_items, div} = bundle as RenderBundle this.el.innerHTML = div - const element = this.el.children[0] - const json = values(docs_json)[0] - const { Document } = bk_require('document') - const { add_document_standalone } = bk_require('embed/standalone') - this._document = Document.from_json(json) - for (const item of render_items) { - const roots: { [key: string]: Element } = {} - for (const root_id in item.roots) { - roots[root_id] = element - } - add_document_standalone(this._document, element, roots) + const element = this.el.children[0] as HTMLElement + // assumes docs_json.length == 1 && render_items.length == 1 + const doc_json = docs_json[0] + const render_item = render_items[0] + const document = bk_require<{Document: typeof Document}>('document') + const standalone = bk_require<{add_document_standalone: typeof add_document_standalone}>('embed/standalone') + this._document = document.Document.from_json(doc_json) + const roots: {[key: string]: HTMLElement} = {} + for (const root_id in render_item.roots) { + roots[root_id] = element } - this._document.on_change((event: any) => this._change_event(event)) + standalone.add_document_standalone(this._document, element, roots) + this._document.on_change((event) => this._change_event(event)) } - _combine_events( - new_msg: ModelChanged | MessageSent - ): (ModelChanged | MessageSent)[] { - const new_msgs = [] + _combine_events(new_msg: DocumentChanged): DocumentChanged[] { + const new_msgs: DocumentChanged[] = [] for (const msg of this._msgs) { if (new_msg.kind != msg.kind) { new_msgs.push(msg) @@ -172,11 +147,13 @@ export class BokehView extends DOMWidgetView { new_msgs.push(msg) } } else if (msg.kind == 'MessageSent' && new_msg.kind == 'MessageSent') { + // assert msg.msg_type == "bokeh_event" + const data = msg.msg_data as BokehEvent + const new_data = new_msg.msg_data as BokehEvent if ( - msg.msg_data.event_values.model == null || - msg.msg_data.event_values.model.id != - new_msg.msg_data.event_values.model.id || - msg.msg_data.event_name != new_msg.msg_data.event_name + data.event_values.model == null || + data.event_values.model.id != new_data.event_values.model.id || + data.event_name != new_data.event_name ) { new_msgs.push(msg) } @@ -186,7 +163,7 @@ export class BokehView extends DOMWidgetView { return new_msgs } - _send(msg: ModelChanged | MessageSent): void { + _send(msg: DocumentChanged): void { if (!this._idle && this._combine && this.model.get('combine_events')) { // Queue event and drop previous events on same model attribute this._msgs = this._combine_events(msg) @@ -200,21 +177,18 @@ export class BokehView extends DOMWidgetView { if (this._blocked) { return } - const { Serializer } = bk_require('core/serialization') + const serialization = bk_require<{Serializer: typeof Serializer}>("core/serialization") const references: Map = new Map() for (const model of event.document._all_models.values()) { references.set(model, model.ref()) } - const serializer = new Serializer({references}) - const event_rep = serializer.encode(event) - event_rep.event = 'jsevent' + const serializer = new serialization.Serializer({references}) + const event_rep = serializer.encode(event) as DocumentChanged & {event: "jsevent"} + event_rep.event = "jsevent" this._send(event_rep) } - protected _consume_patch( - content: { msg: 'patch'; payload?: Fragment }, - buffers: DataView[] - ): void { + protected _consume_patch(content: {msg: 'patch'; payload?: Fragment}, buffers: DataView[]): void { if (this._document == null) { return } @@ -225,7 +199,7 @@ export class BokehView extends DOMWidgetView { if (comm_msg != null && keys(comm_msg.content).length > 0) { this._blocked = true try { - this._document.apply_json_patch(comm_msg.content, comm_msg.buffers) + this._document.apply_json_patch(comm_msg.content as Patch, comm_msg.buffers) } finally { this._blocked = false } diff --git a/tsconfig.json b/tsconfig.json index 83d0219..41e3241 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,7 +19,12 @@ "strict": true, "strictNullChecks": false, "target": "es2017", - "types": [] + "types": [], + "paths": { + "@bokeh/bokehjs/*": [ + "./node_modules/@bokeh/bokehjs/build/js/lib/*" + ] + } }, "include": ["src/*"] } diff --git a/yarn.lock b/yarn.lock index 5b6e6d1..fa6c99f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,10 +12,45 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.9.2": + version: 7.24.4 + resolution: "@babel/runtime@npm:7.24.4" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: 2f27d4c0ffac7ae7999ac0385e1106f2a06992a8bdcbf3da06adcac7413863cd08c198c2e4e970041bbea849e17f02e1df18875539b6afba76c781b6b59a07c3 + languageName: node + linkType: hard + +"@bokeh/bokehjs@npm:~3.4.0": + version: 3.4.1 + resolution: "@bokeh/bokehjs@npm:3.4.1" + dependencies: + "@bokeh/numbro": ^1.6.2 + "@bokeh/slickgrid": ~2.4.4103 + "@types/geojson": ^7946.0.13 + "@types/google.maps": ^3.54.10 + "@types/proj4": ^2.5.5 + "@types/sprintf-js": ^1.1.4 + choices.js: ^10.2.0 + flatbush: ^4.2.0 + flatpickr: ^4.6.13 + mathjax-full: ^3.2.2 + nouislider: ^15.7.1 + proj4: ^2.9.2 + regl: ^2.1.0 + sprintf-js: ^1.1.3 + timezone: ^1.0.23 + tslib: ^2.6.2 + underscore.template: ^0.1.7 + checksum: bc09e19b9af6ce57f1e93ad99fbc66ede6028d249c0c01cec23414607a9305ff2b8c642c9e0e51458e1916b45acfad9a0a004bb034a6862be59b6791bf4c0071 + languageName: node + linkType: hard + "@bokeh/jupyter_bokeh@workspace:.": version: 0.0.0-use.local resolution: "@bokeh/jupyter_bokeh@workspace:." dependencies: + "@bokeh/bokehjs": ~3.4.0 "@jupyter-widgets/base": ^2 || ^3 || ^4 || ^5 || ^6 "@jupyterlab/application": ^4 "@jupyterlab/apputils": ^4 @@ -42,6 +77,25 @@ __metadata: languageName: unknown linkType: soft +"@bokeh/numbro@npm:^1.6.2": + version: 1.6.2 + resolution: "@bokeh/numbro@npm:1.6.2" + checksum: b517c8e2cef053ecca5419ef95ac5e1a64ec9881ce141628af4bc92e1cd114016342319a8bd20c25f44d6ce9e94a85b18f945088a57fdf04b177f15fb45507a2 + languageName: node + linkType: hard + +"@bokeh/slickgrid@npm:~2.4.4103": + version: 2.4.4103 + resolution: "@bokeh/slickgrid@npm:2.4.4103" + dependencies: + "@types/slickgrid": ^2.1.30 + jquery: ">=3.4.0" + jquery-ui: ">=1.8.0" + tslib: ^1.10.0 + checksum: fa54c084b6096bd7080fe8ea4afcae4d446216f6b65b902dcd96b8e2a25e60dd8843571db805a73cf8636c276ef153616f0f51df3f8f884bd04f3840bfd80d28 + languageName: node + linkType: hard + "@codemirror/autocomplete@npm:^6.0.0, @codemirror/autocomplete@npm:^6.3.2, @codemirror/autocomplete@npm:^6.5.1, @codemirror/autocomplete@npm:^6.7.1": version: 6.13.0 resolution: "@codemirror/autocomplete@npm:6.13.0" @@ -1550,6 +1604,20 @@ __metadata: languageName: node linkType: hard +"@types/geojson@npm:^7946.0.13": + version: 7946.0.14 + resolution: "@types/geojson@npm:7946.0.14" + checksum: ae511bee6488ae3bd5a3a3347aedb0371e997b14225b8983679284e22fa4ebd88627c6e3ff8b08bf4cc35068cb29310c89427311ffc9322c255615821a922e71 + languageName: node + linkType: hard + +"@types/google.maps@npm:^3.54.10": + version: 3.55.7 + resolution: "@types/google.maps@npm:3.55.7" + checksum: 0b34b39ccafed6af238fe0a0ff6a023ce95f370e77471f889317a1d34cf31439e63e1722d83655911670b4ab7887f4f389862aed604dbbd70b7b36d2aa2bc753 + languageName: node + linkType: hard + "@types/jquery@npm:*": version: 3.5.29 resolution: "@types/jquery@npm:3.5.29" @@ -1582,6 +1650,13 @@ __metadata: languageName: node linkType: hard +"@types/proj4@npm:^2.5.5": + version: 2.5.5 + resolution: "@types/proj4@npm:2.5.5" + checksum: 06a1898ffff6d7b4a0da04249b431b129ae31c1a75decfdcbdde6b6d7a7cf9560f8506e89f441b6ebe287e66ef5d0fd3e7ca33f9eb30c1427f8b9989bd3dc578 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.11 resolution: "@types/prop-types@npm:15.7.11" @@ -1621,6 +1696,15 @@ __metadata: languageName: node linkType: hard +"@types/slickgrid@npm:^2.1.30": + version: 2.1.40 + resolution: "@types/slickgrid@npm:2.1.40" + dependencies: + "@types/jquery": "*" + checksum: 09e1808a2989cfbbcbebb882158c7517cc09bbd18f5e80a89163bf6d75be34b3cf2d86d31187fca8b3f4686735594d961a07a626f1034cf1b366eb28616552fd + languageName: node + linkType: hard + "@types/source-list-map@npm:*": version: 0.1.6 resolution: "@types/source-list-map@npm:0.1.6" @@ -1628,6 +1712,13 @@ __metadata: languageName: node linkType: hard +"@types/sprintf-js@npm:^1.1.4": + version: 1.1.4 + resolution: "@types/sprintf-js@npm:1.1.4" + checksum: ce20dc3e3c570828d9dc31ace655ed842d6aaa68df23d04e9110a48c10d452379f954db02f12404216c3af9947b052fd1af522833305e6b2d94efdf15174279e + languageName: node + linkType: hard + "@types/underscore@npm:*": version: 1.11.15 resolution: "@types/underscore@npm:1.11.15" @@ -2293,6 +2384,17 @@ __metadata: languageName: node linkType: hard +"choices.js@npm:^10.2.0": + version: 10.2.0 + resolution: "choices.js@npm:10.2.0" + dependencies: + deepmerge: ^4.2.2 + fuse.js: ^6.6.2 + redux: ^4.2.0 + checksum: 07f79ac85688191529fa1fbf0f8623f9e27084715fc56a12ca4076bbf8440b3e39bf6117b9e9bf95b6dce9162cfe5e7b9d25e0db6302ccb48b30ff654dda411c + languageName: node + linkType: hard + "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" @@ -2350,6 +2452,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:9.2.0": + version: 9.2.0 + resolution: "commander@npm:9.2.0" + checksum: 7c82e4cd969712aa6d7c055b8351807a7230f9f31ef7ec7881e11a1147511de85adf5d6ccfd200240a118eecf693b220caf6865b8efbcea558a70d35aa9ed711 + languageName: node + linkType: hard + "commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" @@ -2872,6 +2981,13 @@ __metadata: languageName: node linkType: hard +"esm@npm:^3.2.25": + version: 3.2.25 + resolution: "esm@npm:3.2.25" + checksum: 978aabe2de83541c105605a6d60a26ed8e627ef6bb0a7605fe15a95bbdea6b8348bd045255cb22219c054dd09a81a94823df00843d9e97f42419c92015ce3a64 + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -3051,6 +3167,29 @@ __metadata: languageName: node linkType: hard +"flatbush@npm:^4.2.0": + version: 4.4.0 + resolution: "flatbush@npm:4.4.0" + dependencies: + flatqueue: ^2.0.3 + checksum: fdda717a188d876dd309a9009d5f85ac08c72ac505da0389e545ed28987469fef038e46f2d4434db2d9f109dbd93d4b74ad855d85419d11c616e49a723585036 + languageName: node + linkType: hard + +"flatpickr@npm:^4.6.13": + version: 4.6.13 + resolution: "flatpickr@npm:4.6.13" + checksum: 2cca1b8dc974e7673b51174ee3f0679ae3a6b79525a0c53bf49b87455ef358354e64acfd60b312e44cef208aab9750a1a48df32a0914046a53de6d9403742304 + languageName: node + linkType: hard + +"flatqueue@npm:^2.0.3": + version: 2.0.3 + resolution: "flatqueue@npm:2.0.3" + checksum: 8b56dee4211cf295459f67ceb84dd68b97ab5c91ea427cca5624a3e6dab4f1222d28843a0738d79ba7e2a10e918bb3d570fd221acc5dbd2c66d89e8eddde899d + languageName: node + linkType: hard + "flatted@npm:^3.2.9": version: 3.3.1 resolution: "flatted@npm:3.3.1" @@ -3118,6 +3257,13 @@ __metadata: languageName: node linkType: hard +"fuse.js@npm:^6.6.2": + version: 6.6.2 + resolution: "fuse.js@npm:6.6.2" + checksum: 17ae758ce205276ebd88bd9c9f088a100be0b4896abac9f6b09847151269d1690f41d7f98ff5813d4a58973162dbd99d0072ce807020fee6f9de60170f6b08eb + languageName: node + linkType: hard + "get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" @@ -3656,7 +3802,16 @@ __metadata: languageName: node linkType: hard -"jquery@npm:^3.1.1": +"jquery-ui@npm:>=1.8.0": + version: 1.13.2 + resolution: "jquery-ui@npm:1.13.2" + dependencies: + jquery: ">=1.8.0 <4.0.0" + checksum: 0d04a4b86e703d6ff71bcc37335f99be137b03fa24fa22f00f61f5aac132e7143b7d6dd9973ad4f72366e102826e417bc3d88c1640f7dd824961a7131bd3966a + languageName: node + linkType: hard + +"jquery@npm:>=1.8.0 <4.0.0, jquery@npm:>=3.4.0, jquery@npm:^3.1.1": version: 3.7.1 resolution: "jquery@npm:3.7.1" checksum: 4370b8139d6ae82867eb6f7f21d1edccf1d1bdf41c0840920ea80d366c2cd5dbe1ceebb110ee9772aa839b04400faa1572c5c560b507c688ed7b61cea26c0e27 @@ -3943,6 +4098,18 @@ __metadata: languageName: node linkType: hard +"mathjax-full@npm:^3.2.2": + version: 3.2.2 + resolution: "mathjax-full@npm:3.2.2" + dependencies: + esm: ^3.2.25 + mhchemparser: ^4.1.0 + mj-context-menu: ^0.6.1 + speech-rule-engine: ^4.0.6 + checksum: 6fbccb9338e1fbf686202d924666d79ac9eb658157c1c8102ba018672188978c4cacfb1b6f65adf7d2d51dc79535ff3e32ba86b15e66d3011dda2ab99562d90d + languageName: node + linkType: hard + "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" @@ -3964,6 +4131,20 @@ __metadata: languageName: node linkType: hard +"mgrs@npm:1.0.0": + version: 1.0.0 + resolution: "mgrs@npm:1.0.0" + checksum: 98b9fa3caff9986868344567996f8dcc833f939c2e140507a00e2ce9a96ef7eaeb81933a749222a2b7bcbc1a4bb6ada6120dda3a5b6af6d72ae332d8990956b9 + languageName: node + linkType: hard + +"mhchemparser@npm:^4.1.0": + version: 4.2.1 + resolution: "mhchemparser@npm:4.2.1" + checksum: 6dd7e3926befc74d26cf7b44b9e5ff7295e142bffc48a60bd225d5a30d525354afb70d23fc4fdb8f46178099ab98a66a57a6131dcb0f410264cfd2b9ad4af4b7 + languageName: node + linkType: hard + "micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" @@ -4059,6 +4240,13 @@ __metadata: languageName: node linkType: hard +"mj-context-menu@npm:^0.6.1": + version: 0.6.1 + resolution: "mj-context-menu@npm:0.6.1" + checksum: 7a036026538662cac9619b760fade98681618c3ddf417cb36eddb7c28a937baf257c56fd0b6318738419e738ba01a00bcb3790b324885fd6edbae03fb0a2c986 + languageName: node + linkType: hard + "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -4115,6 +4303,13 @@ __metadata: languageName: node linkType: hard +"nouislider@npm:^15.7.1": + version: 15.7.1 + resolution: "nouislider@npm:15.7.1" + checksum: a68f59f8c199135753271bf42f29b6019e5d1614a90cb102aad63c88b20785c394e5395d75f9b720407d6eaaf18ad75d347103ca038a2d8048aee7a21ca265ee + languageName: node + linkType: hard + "npm-run-all@npm:^4.1.5": version: 4.1.5 resolution: "npm-run-all@npm:4.1.5" @@ -4461,6 +4656,16 @@ __metadata: languageName: node linkType: hard +"proj4@npm:^2.9.2": + version: 2.11.0 + resolution: "proj4@npm:2.11.0" + dependencies: + mgrs: 1.0.0 + wkt-parser: ^1.3.3 + checksum: 1f6c78962cd3584af06ec47bd80ce7fe9e4ee41f6c8c2c60b7b592687e36eb97ed13e77adad7ca1d36296a3c2993982247610a8bd9121ec0d9803db871915eaa + languageName: node + linkType: hard + "prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" @@ -4566,6 +4771,22 @@ __metadata: languageName: node linkType: hard +"redux@npm:^4.2.0": + version: 4.2.1 + resolution: "redux@npm:4.2.1" + dependencies: + "@babel/runtime": ^7.9.2 + checksum: f63b9060c3a1d930ae775252bb6e579b42415aee7a23c4114e21a0b4ba7ec12f0ec76936c00f546893f06e139819f0e2855e0d55ebfce34ca9c026241a6950dd + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38 + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.5.2": version: 1.5.2 resolution: "regexp.prototype.flags@npm:1.5.2" @@ -4578,6 +4799,13 @@ __metadata: languageName: node linkType: hard +"regl@npm:^2.1.0": + version: 2.1.0 + resolution: "regl@npm:2.1.0" + checksum: dd890b7f50f0cc803f53212870343f910c135343d99b1e3de8cf6167bfde8beaa968aab59a41ea88c6dd58a192be07cbb9ae64989efea329457467f5c491cfbe + languageName: node + linkType: hard + "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" @@ -4987,6 +5215,26 @@ __metadata: languageName: node linkType: hard +"speech-rule-engine@npm:^4.0.6": + version: 4.0.7 + resolution: "speech-rule-engine@npm:4.0.7" + dependencies: + commander: 9.2.0 + wicked-good-xpath: 1.3.0 + xmldom-sre: 0.1.31 + bin: + sre: bin/sre + checksum: e5b8a5878be61d0344d5e9e0327e6bdf25a23de8fb66bd1898719d52b5f12f42b7e11a3387b8f293420c5eaab57b3ed9099be0adcc2132177301e81134612f38 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: a3fdac7b49643875b70864a9d9b469d87a40dfeaf5d34d9d0c5b1cda5fd7d065531fcb43c76357d62254c57184a7b151954156563a4d6a747015cfb41021cad0 + languageName: node + linkType: hard + "string.prototype.padend@npm:^3.0.0": version: 3.1.5 resolution: "string.prototype.padend@npm:3.1.5" @@ -5173,6 +5421,13 @@ __metadata: languageName: node linkType: hard +"timezone@npm:^1.0.23": + version: 1.0.23 + resolution: "timezone@npm:1.0.23" + checksum: b235e9eed245fe7756c00f774f570739ddf83735e940dd674dcb8bfe4b4da9b3913a3a59cc8881289a87c93a3bc16cbf1fa83f9a83be265b47a34789f813beba + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -5200,13 +5455,20 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.13.0": +"tslib@npm:^1.10.0, tslib@npm:^1.13.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd languageName: node linkType: hard +"tslib@npm:^2.6.2": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -5317,6 +5579,13 @@ __metadata: languageName: node linkType: hard +"underscore.template@npm:^0.1.7": + version: 0.1.7 + resolution: "underscore.template@npm:0.1.7" + checksum: 9a97b32d125012f43e1ae6a63ad3d04a4be65d3c5c826455a0cb53a0f3e2cd69f416318941a5cf48d4c921152f0d58e78cc794900f71b923ab1758358ad5ed8e + languageName: node + linkType: hard + "underscore@npm:>=1.8.3": version: 1.13.6 resolution: "underscore@npm:1.13.6" @@ -5688,6 +5957,13 @@ __metadata: languageName: node linkType: hard +"wicked-good-xpath@npm:1.3.0": + version: 1.3.0 + resolution: "wicked-good-xpath@npm:1.3.0" + checksum: 1aa84bd57426aa07f95d7eca0b0410e841b8e7a35248c9404fa235eaf6a0932c811a96cbdc763c3df18ab76c7644fd8e807d8f185146154d3fc6baf554dcc7e3 + languageName: node + linkType: hard + "wildcard@npm:^2.0.0": version: 2.0.1 resolution: "wildcard@npm:2.0.1" @@ -5695,6 +5971,13 @@ __metadata: languageName: node linkType: hard +"wkt-parser@npm:^1.3.3": + version: 1.3.3 + resolution: "wkt-parser@npm:1.3.3" + checksum: b001a7e8b83c1af66f4a1bc56d5041858191b13a530af20d80dda80de92ed672bec30c3528893480ad3ef03edf845e8e9962c79c77eae860530c99afd59ff94c + languageName: node + linkType: hard + "worker-loader@npm:^3.0.2": version: 3.0.8 resolution: "worker-loader@npm:3.0.8" @@ -5729,6 +6012,13 @@ __metadata: languageName: node linkType: hard +"xmldom-sre@npm:0.1.31": + version: 0.1.31 + resolution: "xmldom-sre@npm:0.1.31" + checksum: dbd101600a64c1640b06fb2b5c626ce6d909fd40c966fcae84a2b64c708fe466630766173b5760e0275db2a2c542e048b14a2a6568feece2c315f0cd22a2f642 + languageName: node + linkType: hard + "y-protocols@npm:^1.0.5": version: 1.0.6 resolution: "y-protocols@npm:1.0.6"