diff --git a/eslint.config.mjs b/eslint.config.mjs index 84e32d76f49..52e7a152262 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -420,7 +420,12 @@ export default defineConfig( 'packages/plugins/dev-tools/**', 'packages/plugins/field-colour/**', 'packages/plugins/field-colour-hsv-sliders/**', + 'packages/plugins/field-date/**', + 'packages/plugins/field-dependent-dropdown/**', 'packages/plugins/field-grid-dropdown/**', + 'packages/plugins/field-multilineinput/**', + 'packages/plugins/field-slider/**', + 'packages/plugins/fixed-edges/**', 'packages/plugins/modal/**', 'packages/plugins/theme-modern/**', 'packages/plugins/typed-variable-modal/**', diff --git a/packages/plugins/field-date/package.json b/packages/plugins/field-date/package.json index 54687bea681..bd022234af1 100644 --- a/packages/plugins/field-date/package.json +++ b/packages/plugins/field-date/package.json @@ -11,9 +11,13 @@ "start": "blockly-scripts start", "test": "blockly-scripts test" }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "unpkg": "./dist/index.js", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "unpkg": "./dist/esm/index.js", + "type": "module", + "engines": { + "node": ">=24" + }, "author": "Blockly Team", "keywords": [ "blockly", @@ -41,6 +45,13 @@ "dist", "src" ], + "exports": { + ".": { + "node": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"}, + "import": {"types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js"}, + "require": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"} + } + }, "devDependencies": { "@blockly/dev-scripts": "^13.4.0", "@blockly/dev-tools": "^13.4.0", diff --git a/packages/plugins/field-date/src/field_date.ts b/packages/plugins/field-date/src/field_date.ts index cf9601b30f6..47c4bac8553 100644 --- a/packages/plugins/field-date/src/field_date.ts +++ b/packages/plugins/field-date/src/field_date.ts @@ -8,7 +8,7 @@ * @fileoverview Plugin overview. */ import * as Blockly from 'blockly/core'; -import {getLocaleDateString} from './utils'; +import {getLocaleDateString} from './utils.js'; /** * Class for a date input field. diff --git a/packages/plugins/field-date/src/index.ts b/packages/plugins/field-date/src/index.ts index 480c3fe80de..7b73d409284 100644 --- a/packages/plugins/field-date/src/index.ts +++ b/packages/plugins/field-date/src/index.ts @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -export * from './field_date'; +export * from './field_date.js'; diff --git a/packages/plugins/field-date/test/field_date_test.mocha.js b/packages/plugins/field-date/test/field_date_test.mocha.js index f818c08ce80..204c80b3db9 100644 --- a/packages/plugins/field-date/test/field_date_test.mocha.js +++ b/packages/plugins/field-date/test/field_date_test.mocha.js @@ -6,8 +6,8 @@ import {assert} from 'chai'; import {testHelpers} from '@blockly/dev-tools'; -import {FieldDate} from '../src/index'; -import {getLocaleDateString} from '../src/utils'; +import {FieldDate} from '../src/index.js'; +import {getLocaleDateString} from '../src/utils.js'; const { assertFieldValue, diff --git a/packages/plugins/field-date/test/index.ts b/packages/plugins/field-date/test/index.ts index 050763dab19..f991a61217e 100644 --- a/packages/plugins/field-date/test/index.ts +++ b/packages/plugins/field-date/test/index.ts @@ -10,7 +10,7 @@ import * as Blockly from 'blockly'; import {createPlayground} from '@blockly/dev-tools'; -import '../src/index'; +import '../src/index.js'; /** * An array of blocks that are defined only for the purposes of diff --git a/packages/plugins/field-date/tsconfig.json b/packages/plugins/field-date/tsconfig.json index 99858c525f1..a6e04369c08 100644 --- a/packages/plugins/field-date/tsconfig.json +++ b/packages/plugins/field-date/tsconfig.json @@ -1,14 +1,8 @@ { + "extends": "@blockly/dev-scripts/config/tsconfig.base.json", "compilerOptions": { "rootDir": "./src", - "outDir": "dist", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "module": "es2015", - "moduleResolution": "bundler", - "target": "es6", - "strict": true + "outDir": "dist/esm" }, // NOTE: `test/**/*` is automatically included in `blockly-scripts start`. // Only src matters for production builds. diff --git a/packages/plugins/field-dependent-dropdown/package.json b/packages/plugins/field-dependent-dropdown/package.json index 1852efcc3ee..ae03f10d1e4 100644 --- a/packages/plugins/field-dependent-dropdown/package.json +++ b/packages/plugins/field-dependent-dropdown/package.json @@ -11,9 +11,13 @@ "start": "blockly-scripts start", "test": "blockly-scripts test" }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "unpkg": "./dist/index.js", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "unpkg": "./dist/esm/index.js", + "type": "module", + "engines": { + "node": ">=24" + }, "author": "Blockly Team", "keywords": [ "blockly", @@ -40,6 +44,13 @@ "dist", "src" ], + "exports": { + ".": { + "node": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"}, + "import": {"types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js"}, + "require": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"} + } + }, "devDependencies": { "@blockly/dev-scripts": "^13.4.0", "@blockly/dev-tools": "^13.4.0", diff --git a/packages/plugins/field-dependent-dropdown/src/dependent_dropdown_options_change.ts b/packages/plugins/field-dependent-dropdown/src/dependent_dropdown_options_change.ts index ec8efd5ed39..23d6675e081 100644 --- a/packages/plugins/field-dependent-dropdown/src/dependent_dropdown_options_change.ts +++ b/packages/plugins/field-dependent-dropdown/src/dependent_dropdown_options_change.ts @@ -10,7 +10,7 @@ */ import * as Blockly from 'blockly/core'; -import type {FieldDependentDropdown} from './field_dependent_dropdown'; +import type {FieldDependentDropdown} from './field_dependent_dropdown.js'; /** * A deep equality comparison between the two provided arrays recursively diff --git a/packages/plugins/field-dependent-dropdown/src/field_dependent_dropdown.ts b/packages/plugins/field-dependent-dropdown/src/field_dependent_dropdown.ts index e2348bcd4d6..f451700a27f 100644 --- a/packages/plugins/field-dependent-dropdown/src/field_dependent_dropdown.ts +++ b/packages/plugins/field-dependent-dropdown/src/field_dependent_dropdown.ts @@ -10,7 +10,7 @@ */ import * as Blockly from 'blockly/core'; -import {DependentDropdownOptionsChange} from './dependent_dropdown_options_change'; +import {DependentDropdownOptionsChange} from './dependent_dropdown_options_change.js'; /** The type of the mapping from parent value to child options. */ export interface ChildOptionMapping { diff --git a/packages/plugins/field-dependent-dropdown/src/index.ts b/packages/plugins/field-dependent-dropdown/src/index.ts index e837ff51ff9..5ec13b33f72 100644 --- a/packages/plugins/field-dependent-dropdown/src/index.ts +++ b/packages/plugins/field-dependent-dropdown/src/index.ts @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -export * from './field_dependent_dropdown'; +export * from './field_dependent_dropdown.js'; diff --git a/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown.mocha.js b/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown.mocha.js index 61d32499a69..f0f5e268e58 100644 --- a/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown.mocha.js +++ b/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown.mocha.js @@ -4,12 +4,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -const chai = require('chai'); -const sinon = require('sinon'); -const Blockly = require('blockly'); -require('./field_dependent_dropdown_test_block'); - -const assert = chai.assert; +import {assert} from 'chai'; +import sinon from 'sinon'; +import * as Blockly from 'blockly'; +import './field_dependent_dropdown_test_block.js'; suite('fieldDependentDropdown', function () { setup(function () { diff --git a/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown_test_block.ts b/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown_test_block.ts index 2cf7c180490..64b86788f52 100644 --- a/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown_test_block.ts +++ b/packages/plugins/field-dependent-dropdown/test/field_dependent_dropdown_test_block.ts @@ -1,5 +1,5 @@ import * as Blockly from 'blockly'; -import {ChildOptionMapping, FieldDependentDropdown} from '../src/index'; +import {ChildOptionMapping, FieldDependentDropdown} from '../src/index.js'; Blockly.defineBlocksWithJsonArray([ { diff --git a/packages/plugins/field-dependent-dropdown/test/index.ts b/packages/plugins/field-dependent-dropdown/test/index.ts index c69b2e98ce3..1fdea7127be 100644 --- a/packages/plugins/field-dependent-dropdown/test/index.ts +++ b/packages/plugins/field-dependent-dropdown/test/index.ts @@ -10,7 +10,7 @@ import * as Blockly from 'blockly'; import {createPlayground} from '@blockly/dev-tools'; -import './field_dependent_dropdown_test_block'; +import './field_dependent_dropdown_test_block.js'; const toolbox: Blockly.utils.toolbox.ToolboxDefinition = { kind: 'flyoutToolbox', diff --git a/packages/plugins/field-dependent-dropdown/tsconfig.json b/packages/plugins/field-dependent-dropdown/tsconfig.json index 99858c525f1..a6e04369c08 100644 --- a/packages/plugins/field-dependent-dropdown/tsconfig.json +++ b/packages/plugins/field-dependent-dropdown/tsconfig.json @@ -1,14 +1,8 @@ { + "extends": "@blockly/dev-scripts/config/tsconfig.base.json", "compilerOptions": { "rootDir": "./src", - "outDir": "dist", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "module": "es2015", - "moduleResolution": "bundler", - "target": "es6", - "strict": true + "outDir": "dist/esm" }, // NOTE: `test/**/*` is automatically included in `blockly-scripts start`. // Only src matters for production builds. diff --git a/packages/plugins/field-multilineinput/package.json b/packages/plugins/field-multilineinput/package.json index 1b34e957467..1e54a07bf14 100644 --- a/packages/plugins/field-multilineinput/package.json +++ b/packages/plugins/field-multilineinput/package.json @@ -12,9 +12,13 @@ "start": "blockly-scripts start", "test": "blockly-scripts test" }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "unpkg": "./dist/index.js", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "unpkg": "./dist/esm/index.js", + "type": "module", + "engines": { + "node": ">=24" + }, "author": "Blockly Team", "keywords": [ "blockly", @@ -39,6 +43,13 @@ "dist", "src" ], + "exports": { + ".": { + "node": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"}, + "import": {"types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js"}, + "require": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"} + } + }, "devDependencies": { "@blockly/dev-scripts": "^13.4.0", "@blockly/dev-tools": "^13.4.0", diff --git a/packages/plugins/field-multilineinput/src/blocks/textMultiline.ts b/packages/plugins/field-multilineinput/src/blocks/textMultiline.ts index 831c79ed10b..b553dbed27c 100644 --- a/packages/plugins/field-multilineinput/src/blocks/textMultiline.ts +++ b/packages/plugins/field-multilineinput/src/blocks/textMultiline.ts @@ -13,8 +13,8 @@ import {DartGenerator, Order as DartOrder} from 'blockly/dart'; import {LuaGenerator, Order as LuaOrder} from 'blockly/lua'; import {PhpGenerator, Order as PhpOrder} from 'blockly/php'; import {PythonGenerator, Order as PythonOrder} from 'blockly/python'; -import {registerFieldMultilineInput} from '../field_multilineinput'; -import {Generators} from './generatorsType'; +import {registerFieldMultilineInput} from '../field_multilineinput.js'; +import {Generators} from './generatorsType.js'; /** The name this block is registered under. */ export const BLOCK_NAME = 'text_multiline'; diff --git a/packages/plugins/field-multilineinput/src/index.ts b/packages/plugins/field-multilineinput/src/index.ts index 051fded12e4..b9f6c278af0 100644 --- a/packages/plugins/field-multilineinput/src/index.ts +++ b/packages/plugins/field-multilineinput/src/index.ts @@ -4,12 +4,12 @@ * SPDX-License-Identifier: Apache-2.0 */ -import * as textMultiline from './blocks/textMultiline'; +import * as textMultiline from './blocks/textMultiline.js'; -export * from './field_multilineinput'; +export * from './field_multilineinput.js'; // Re-export all parts of the block definition. -export * as textMultiline from './blocks/textMultiline'; +export * as textMultiline from './blocks/textMultiline.js'; // This package currently exports a single block. More may // be added later. diff --git a/packages/plugins/field-multilineinput/test/block_test.mocha.js b/packages/plugins/field-multilineinput/test/block_test.mocha.js index d60fd2cf156..4b533b129df 100644 --- a/packages/plugins/field-multilineinput/test/block_test.mocha.js +++ b/packages/plugins/field-multilineinput/test/block_test.mocha.js @@ -14,7 +14,7 @@ import {dartGenerator} from 'blockly/dart'; import {phpGenerator} from 'blockly/php'; import {pythonGenerator} from 'blockly/python'; import {luaGenerator} from 'blockly/lua'; -import {installAllBlocks} from '../src/index'; +import {installAllBlocks} from '../src/index.js'; import {assert} from 'chai'; const blockJson = { diff --git a/packages/plugins/field-multilineinput/test/field_multilineinput_test.mocha.js b/packages/plugins/field-multilineinput/test/field_multilineinput_test.mocha.js index cbfcfe5b873..52a0bf0a30c 100644 --- a/packages/plugins/field-multilineinput/test/field_multilineinput_test.mocha.js +++ b/packages/plugins/field-multilineinput/test/field_multilineinput_test.mocha.js @@ -4,14 +4,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -const {testHelpers} = require('@blockly/dev-tools'); -const { +import jsdomGlobal from 'jsdom-global'; +import {assert} from 'chai'; +import sinon from 'sinon'; +import * as Blockly from 'blockly'; +import {testHelpers} from '@blockly/dev-tools'; +import { FieldMultilineInput, registerFieldMultilineInput, -} = require('../src/index'); -const Blockly = require('blockly'); -const {assert} = require('chai'); -const sinon = require('sinon'); +} from '../src/index.js'; const { assertFieldValue, @@ -150,7 +151,7 @@ suite('FieldMultilineInput', function () { }; setup(function () { - this.jsdomCleanup = require('jsdom-global')( + this.jsdomCleanup = jsdomGlobal( '
', ); // See https://github.com/RaspberryPiFoundation/blockly-samples/issues/2528. diff --git a/packages/plugins/field-multilineinput/test/index.ts b/packages/plugins/field-multilineinput/test/index.ts index 7977e561371..c7f093df924 100644 --- a/packages/plugins/field-multilineinput/test/index.ts +++ b/packages/plugins/field-multilineinput/test/index.ts @@ -15,7 +15,7 @@ import {phpGenerator} from 'blockly/php'; import {pythonGenerator} from 'blockly/python'; import {luaGenerator} from 'blockly/lua'; import {createPlayground} from '@blockly/dev-tools'; -import {FieldMultilineInput, textMultiline} from '../src/index'; +import {FieldMultilineInput, textMultiline} from '../src/index.js'; /** * An array of blocks that are defined only for the purposes of diff --git a/packages/plugins/field-multilineinput/tsconfig.json b/packages/plugins/field-multilineinput/tsconfig.json index 99858c525f1..a6e04369c08 100644 --- a/packages/plugins/field-multilineinput/tsconfig.json +++ b/packages/plugins/field-multilineinput/tsconfig.json @@ -1,14 +1,8 @@ { + "extends": "@blockly/dev-scripts/config/tsconfig.base.json", "compilerOptions": { "rootDir": "./src", - "outDir": "dist", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "module": "es2015", - "moduleResolution": "bundler", - "target": "es6", - "strict": true + "outDir": "dist/esm" }, // NOTE: `test/**/*` is automatically included in `blockly-scripts start`. // Only src matters for production builds. diff --git a/packages/plugins/field-slider/package.json b/packages/plugins/field-slider/package.json index 10c7cf641ef..293cb550911 100644 --- a/packages/plugins/field-slider/package.json +++ b/packages/plugins/field-slider/package.json @@ -11,9 +11,13 @@ "start": "blockly-scripts start", "test": "blockly-scripts test" }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "unpkg": "./dist/index.js", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "unpkg": "./dist/esm/index.js", + "type": "module", + "engines": { + "node": ">=24" + }, "author": "Blockly Team", "keywords": [ "blockly", @@ -38,6 +42,13 @@ "dist", "src" ], + "exports": { + ".": { + "node": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"}, + "import": {"types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js"}, + "require": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"} + } + }, "devDependencies": { "@blockly/dev-scripts": "^13.4.0", "@blockly/dev-tools": "^13.4.0", diff --git a/packages/plugins/field-slider/src/index.ts b/packages/plugins/field-slider/src/index.ts index 7057226589a..9933642bf88 100644 --- a/packages/plugins/field-slider/src/index.ts +++ b/packages/plugins/field-slider/src/index.ts @@ -4,4 +4,4 @@ * SPDX-License-Identifier: Apache-2.0 */ -export * from './field_slider'; +export * from './field_slider.js'; diff --git a/packages/plugins/field-slider/test/field_slider_test.mocha.js b/packages/plugins/field-slider/test/field_slider_test.mocha.js index da28519c1a8..acd04e7c7db 100644 --- a/packages/plugins/field-slider/test/field_slider_test.mocha.js +++ b/packages/plugins/field-slider/test/field_slider_test.mocha.js @@ -4,14 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -const {assert} = require('chai'); -const sinon = require('sinon'); -const { +import {assert} from 'chai'; +import sinon from 'sinon'; +import { assertSliderField, assertSliderFieldDefault, -} = require('./field_slider_test_helpers.mocha'); -const {testHelpers} = require('@blockly/dev-tools'); -const {FieldSlider} = require('../src/index'); +} from './field_slider_test_helpers.mocha.js'; +import {testHelpers} from '@blockly/dev-tools'; +import {FieldSlider} from '../src/index.js'; const { assertFieldValue, diff --git a/packages/plugins/field-slider/test/field_slider_test_helpers.mocha.js b/packages/plugins/field-slider/test/field_slider_test_helpers.mocha.js index c3d2116d037..87470c43a61 100644 --- a/packages/plugins/field-slider/test/field_slider_test_helpers.mocha.js +++ b/packages/plugins/field-slider/test/field_slider_test_helpers.mocha.js @@ -4,9 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -const {assert} = require('chai'); -const {assertFieldValue} = require('@blockly/dev-tools').testHelpers; -const {FieldSlider} = require('../src/index'); +import {assert} from 'chai'; +import {testHelpers} from '@blockly/dev-tools'; +import {FieldSlider} from '../src/index.js'; /** * Assert the slider field options. @@ -23,7 +23,7 @@ function assertSliderField( expectedPrecision, expectedValue, ) { - assertFieldValue(sliderField, expectedValue); + testHelpers.assertFieldValue(sliderField, expectedValue); assert.equal(sliderField.getMin(), expectedMin, 'Min'); assert.equal(sliderField.getMax(), expectedMax, 'Max'); assert.equal(sliderField.getPrecision(), expectedPrecision, 'Precision'); @@ -36,7 +36,4 @@ function assertSliderFieldDefault(sliderField) { assertSliderField(sliderField, -Infinity, Infinity, 0, 0); } -module.exports = { - assertSliderField, - assertSliderFieldDefault, -}; +export {assertSliderField, assertSliderFieldDefault}; diff --git a/packages/plugins/field-slider/test/index.ts b/packages/plugins/field-slider/test/index.ts index 0625e56592f..a8911abe699 100644 --- a/packages/plugins/field-slider/test/index.ts +++ b/packages/plugins/field-slider/test/index.ts @@ -11,7 +11,7 @@ import * as Blockly from 'blockly'; import {createPlayground} from '@blockly/dev-tools'; -import '../src/index'; +import '../src/index.js'; /** * An array of blocks that are defined only for the purposes of diff --git a/packages/plugins/field-slider/tsconfig.json b/packages/plugins/field-slider/tsconfig.json index 99858c525f1..a6e04369c08 100644 --- a/packages/plugins/field-slider/tsconfig.json +++ b/packages/plugins/field-slider/tsconfig.json @@ -1,14 +1,8 @@ { + "extends": "@blockly/dev-scripts/config/tsconfig.base.json", "compilerOptions": { "rootDir": "./src", - "outDir": "dist", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "module": "es2015", - "moduleResolution": "bundler", - "target": "es6", - "strict": true + "outDir": "dist/esm" }, // NOTE: `test/**/*` is automatically included in `blockly-scripts start`. // Only src matters for production builds. diff --git a/packages/plugins/fixed-edges/package.json b/packages/plugins/fixed-edges/package.json index 2dca1be49af..d1a170a4df8 100644 --- a/packages/plugins/fixed-edges/package.json +++ b/packages/plugins/fixed-edges/package.json @@ -10,9 +10,13 @@ "predeploy": "blockly-scripts predeploy", "start": "blockly-scripts start" }, - "main": "./dist/index.js", - "module": "./src/index.js", - "unpkg": "./dist/index.js", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "unpkg": "./dist/esm/index.js", + "type": "module", + "engines": { + "node": ">=24" + }, "author": "Blockly Team", "keywords": [ "blockly", @@ -37,6 +41,13 @@ "dist", "src" ], + "exports": { + ".": { + "node": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"}, + "import": {"types": "./dist/esm/index.d.ts", "default": "./dist/esm/index.js"}, + "require": {"types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js"} + } + }, "devDependencies": { "@blockly/dev-scripts": "^13.4.0", "@blockly/dev-tools": "^13.4.0" diff --git a/packages/plugins/fixed-edges/test/index.js b/packages/plugins/fixed-edges/test/index.js index 6e9ecba01ef..efad1e2220e 100644 --- a/packages/plugins/fixed-edges/test/index.js +++ b/packages/plugins/fixed-edges/test/index.js @@ -10,7 +10,7 @@ import * as Blockly from 'blockly'; import {toolboxCategories, createPlayground} from '@blockly/dev-tools'; -import {FixedEdgesMetricsManager} from '../src/index'; +import {FixedEdgesMetricsManager} from '../src/index.js'; /** * Create a workspace.