From b6e084257eefe4f4060d37f21f73cad4a8dc9315 Mon Sep 17 00:00:00 2001 From: Christopher Allen Date: Wed, 21 Jun 2023 22:07:20 +0100 Subject: [PATCH] refactor(blocks): Migrate `blocks/blocks.js` to TypeScript (#7193) * refactor(blocks): Auto-migration of blocks/blocks.js to ts * fix(blocks): Manually migrate & fix types in blocks.ts * fix(build): Update location of blocks/blocks.ts exports object * fix(blocks): Remove lint * chore(blocks): Format --- blocks/blocks.js | 48 -------------------------------- blocks/blocks.ts | 46 ++++++++++++++++++++++++++++++ scripts/gulpfiles/build_tasks.js | 2 +- 3 files changed, 47 insertions(+), 49 deletions(-) delete mode 100644 blocks/blocks.js create mode 100644 blocks/blocks.ts diff --git a/blocks/blocks.js b/blocks/blocks.js deleted file mode 100644 index 5ff127dd9..000000000 --- a/blocks/blocks.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @license - * Copyright 2021 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview All the blocks. (Entry point for blocks_compressed.js.) - * @suppress {extraRequire} - */ -'use strict'; - -goog.module('Blockly.libraryBlocks'); - -const colour = goog.require('Blockly.libraryBlocks.colour'); -const lists = goog.require('Blockly.libraryBlocks.lists'); -const logic = goog.require('Blockly.libraryBlocks.logic'); -const loops = goog.require('Blockly.libraryBlocks.loops'); -const math = goog.require('Blockly.libraryBlocks.math'); -const procedures = goog.require('Blockly.libraryBlocks.procedures'); -const texts = goog.require('Blockly.libraryBlocks.texts'); -const variables = goog.require('Blockly.libraryBlocks.variables'); -const variablesDynamic = goog.require('Blockly.libraryBlocks.variablesDynamic'); -// const {BlockDefinition} = goog.requireType('Blockly.blocks'); -// TODO (6248): Properly import the BlockDefinition type. -/* eslint-disable-next-line no-unused-vars */ -const BlockDefinition = Object; - - -exports.colour = colour; -exports.lists = lists; -exports.logic = logic; -exports.loops = loops; -exports.math = math; -exports.procedures = procedures; -exports.texts = texts; -exports.variables = variables; -exports.variablesDynamic = variablesDynamic; - -/** - * A dictionary of the block definitions provided by all the - * Blockly.libraryBlocks.* modules. - * @type {!Object} - */ -const blocks = Object.assign( - {}, colour.blocks, lists.blocks, logic.blocks, loops.blocks, math.blocks, - procedures.blocks, variables.blocks, variablesDynamic.blocks); -exports.blocks = blocks; diff --git a/blocks/blocks.ts b/blocks/blocks.ts new file mode 100644 index 000000000..a147b360d --- /dev/null +++ b/blocks/blocks.ts @@ -0,0 +1,46 @@ +/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import * as goog from '../closure/goog/goog.js'; +goog.declareModuleId('Blockly.libraryBlocks'); + +import * as colour from './colour.js'; +import * as lists from './lists.js'; +import * as logic from './logic.js'; +import * as loops from './loops.js'; +import * as math from './math.js'; +import * as procedures from './procedures.js'; +import * as texts from './text.js'; +import * as variables from './variables.js'; +import * as variablesDynamic from './variables_dynamic.js'; +import type {BlockDefinition} from '../core/blocks.js'; + +export { + colour, + lists, + loops, + math, + procedures, + texts, + variables, + variablesDynamic, +}; + +/** + * A dictionary of the block definitions provided by all the + * Blockly.libraryBlocks.* modules. + */ +export const blocks: {[key: string]: BlockDefinition} = Object.assign( + {}, + colour.blocks, + lists.blocks, + logic.blocks, + loops.blocks, + math.blocks, + procedures.blocks, + variables.blocks, + variablesDynamic.blocks +); diff --git a/scripts/gulpfiles/build_tasks.js b/scripts/gulpfiles/build_tasks.js index 678925105..8bb38f8e2 100644 --- a/scripts/gulpfiles/build_tasks.js +++ b/scripts/gulpfiles/build_tasks.js @@ -105,7 +105,7 @@ const chunks = [ { name: 'blocks', entry: path.join(TSC_OUTPUT_DIR, 'blocks', 'blocks.js'), - exports: 'module$exports$Blockly$libraryBlocks', + exports: 'module$build$src$blocks$blocks', scriptExport: 'Blockly.libraryBlocks', }, {