mirror of
https://github.com/google/blockly.git
synced 2026-01-12 11:27:14 +01:00
* fix(node): Don't use global variables for jsdom injection
Introduce a (hopefully generally applicable) mechanism for
injecting dependencies into modules, specifically in this case
to inject required bits of JSDOM's Window and Document
implementations into core/utils/xml.js when running in
node.js or other environments lacking a DOM.
The injectDependencies function uses an options object to
facilitate optionally injecting multiple named dependencies
at the same time.
Rename the xmlDocument local variable back to document (was
renamed in #5461) so that the name used in this module
corresponds to the usual global variable it replaces.
Change the injection in scripts/package/node/core.js to use
injectDependencies instead of setXmlDocument + global variables;
also eliminate apparently-unnecessary creation of a special
Document instance, using the default one supplied by jsdom
instead.
Fixes #6725.
* deprecate(xml): Deprecate getXmlDocument and setXmlDocument
Mark getXmlDocument and setXmlDocument as @deprecated, with
suitable calls to deprecation.warn().
There are no remaining callers to either function within core -
setXmlDocument was only used by the node.js wrapper, and and
apparently getXmlDocument was never used AFAICT - and we do not
anticipate that either were used by external developers.
* fix: Corrections for comments on PR #6764.
(cherry picked from commit cd57e74d1a)
23 lines
556 B
JavaScript
23 lines
556 B
JavaScript
/**
|
|
* @license
|
|
* Copyright 2019 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @fileoverview Blockly core module for Node. It includes blockly-node.js
|
|
* and adds a helper method for setting the locale.
|
|
*/
|
|
|
|
/* eslint-disable */
|
|
'use strict';
|
|
|
|
|
|
// Override textToDomDocument and provide Node.js alternatives to DOMParser and
|
|
// XMLSerializer.
|
|
if (typeof globalThis.document !== 'object') {
|
|
const {JSDOM} = require('jsdom');
|
|
const {window} = new JSDOM(`<!DOCTYPE html>`);
|
|
Blockly.utils.xml.injectDependencies(window);
|
|
}
|