diff --git a/package-lock.json b/package-lock.json
index 47a8dcb7f6a..2e1311e92a1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,6 +7,7 @@
"": {
"name": "blockly-repo",
"version": "0.0.0",
+ "hasInstallScript": true,
"license": "Apache-2.0",
"workspaces": [
"packages/*"
@@ -5688,57 +5689,42 @@
}
},
"node_modules/@microsoft/api-documenter": {
- "version": "7.22.4",
- "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.22.4.tgz",
- "integrity": "sha512-d4htEhBd8UkFKff/+/nAi/z7rrspm1DanFmsRHLUp4gKMo/8hYDH/IQBWB4r9X/8X72jCv3I++VVWAfichL1rw==",
+ "version": "7.30.5",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.30.5.tgz",
+ "integrity": "sha512-Ui+QDj54dMGvAfVJ3D4wmIW3sfsvgXohPvlnMqIrZPGM3dVBjqnC3g/8oG4Mue+Kui/JwRom5YpZgTnVjcKNdg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@microsoft/api-extractor-model": "7.26.8",
- "@microsoft/tsdoc": "0.14.2",
- "@rushstack/node-core-library": "3.58.0",
- "@rushstack/ts-command-line": "4.13.2",
- "colors": "~1.2.1",
- "js-yaml": "~3.13.1",
+ "@microsoft/api-extractor-model": "7.33.8",
+ "@microsoft/tsdoc": "~0.16.0",
+ "@rushstack/node-core-library": "5.23.1",
+ "@rushstack/terminal": "0.24.0",
+ "@rushstack/ts-command-line": "5.3.9",
+ "js-yaml": "~4.1.0",
"resolve": "~1.22.1"
},
"bin": {
"api-documenter": "bin/api-documenter"
}
},
- "node_modules/@microsoft/api-documenter/node_modules/js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
"node_modules/@microsoft/api-extractor": {
- "version": "7.58.0",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.58.0.tgz",
- "integrity": "sha512-XcHlDylX5GblbGbs1eBoexjVyvdJMioTPuBCgCorE2rqijzTYxi6eudXyez3xACRxtH9aDtahoL9fYM4XTvQmg==",
+ "version": "7.58.7",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.58.7.tgz",
+ "integrity": "sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@microsoft/api-extractor-model": "7.33.5",
+ "@microsoft/api-extractor-model": "7.33.8",
"@microsoft/tsdoc": "~0.16.0",
"@microsoft/tsdoc-config": "~0.18.1",
- "@rushstack/node-core-library": "5.21.0",
- "@rushstack/rig-package": "0.7.2",
- "@rushstack/terminal": "0.22.4",
- "@rushstack/ts-command-line": "5.3.4",
+ "@rushstack/node-core-library": "5.23.1",
+ "@rushstack/rig-package": "0.7.3",
+ "@rushstack/terminal": "0.24.0",
+ "@rushstack/ts-command-line": "5.3.9",
"diff": "~8.0.2",
- "lodash": "~4.17.23",
"minimatch": "10.2.3",
"resolve": "~1.22.1",
- "semver": "~7.5.4",
+ "semver": "~7.7.4",
"source-map": "~0.6.1",
"typescript": "5.9.3"
},
@@ -5747,177 +5733,15 @@
}
},
"node_modules/@microsoft/api-extractor-model": {
- "version": "7.26.8",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.26.8.tgz",
- "integrity": "sha512-ESj3bBJkiMg/8tS0PW4+2rUgTVwOEfy41idTnFgdbVX+O50bN6S99MV6FIPlCZWCnRDcBfwxRXLdAkOQQ0JqGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@microsoft/tsdoc": "0.14.2",
- "@microsoft/tsdoc-config": "~0.16.1",
- "@rushstack/node-core-library": "3.58.0"
- }
- },
- "node_modules/@microsoft/api-extractor-model/node_modules/@microsoft/tsdoc-config": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
- "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@microsoft/tsdoc": "0.14.2",
- "ajv": "~6.12.6",
- "jju": "~1.4.0",
- "resolve": "~1.19.0"
- }
- },
- "node_modules/@microsoft/api-extractor-model/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@microsoft/api-extractor-model/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@microsoft/api-extractor-model/node_modules/resolve": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
- "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.1.0",
- "path-parse": "^1.0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": {
- "version": "7.33.5",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.5.tgz",
- "integrity": "sha512-Xh4dXuusndVQqVz4nEN9xOp0DyzsKxeD2FFJkSPg4arAjDSKPcy6cAc7CaeBPA7kF2wV1fuDlo2p/bNMpVr8yg==",
+ "version": "7.33.8",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.8.tgz",
+ "integrity": "sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@microsoft/tsdoc": "~0.16.0",
"@microsoft/tsdoc-config": "~0.18.1",
- "@rushstack/node-core-library": "5.21.0"
- }
- },
- "node_modules/@microsoft/api-extractor/node_modules/@microsoft/tsdoc": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz",
- "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": {
- "version": "5.21.0",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.21.0.tgz",
- "integrity": "sha512-LFzN+1lyWROit/P8Md6yxAth7lLYKn37oCKJHirEE2TQB25NDUM7bALf0ar+JAtwFfRCH+D+DGOA7DAzIi2r+g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "~8.18.0",
- "ajv-draft-04": "~1.0.0",
- "ajv-formats": "~3.0.1",
- "fs-extra": "~11.3.0",
- "import-lazy": "~4.0.0",
- "jju": "~1.4.0",
- "resolve": "~1.22.1",
- "semver": "~7.5.4"
- },
- "peerDependencies": {
- "@types/node": "*"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@microsoft/api-extractor/node_modules/@rushstack/ts-command-line": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.4.tgz",
- "integrity": "sha512-MLkVKVEN6/2clKTrjN2B2KqKCuPxRwnNsWY7a+FCAq2EMdkj10cM8YgiBSMeGFfzM0mDMzargpHNnNzaBi9Whg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@rushstack/terminal": "0.22.4",
- "@types/argparse": "1.0.38",
- "argparse": "~1.0.9",
- "string-argv": "~0.3.1"
- }
- },
- "node_modules/@microsoft/api-extractor/node_modules/ajv-formats": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
- "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/@microsoft/api-extractor/node_modules/lodash": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@microsoft/api-extractor/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@microsoft/api-extractor/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
+ "@rushstack/node-core-library": "5.23.1"
}
},
"node_modules/@microsoft/api-extractor/node_modules/source-map": {
@@ -5930,17 +5754,10 @@
"node": ">=0.10.0"
}
},
- "node_modules/@microsoft/api-extractor/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@microsoft/tsdoc": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
- "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz",
+ "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==",
"dev": true,
"license": "MIT"
},
@@ -5957,13 +5774,6 @@
"resolve": "~1.22.2"
}
},
- "node_modules/@microsoft/tsdoc-config/node_modules/@microsoft/tsdoc": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz",
- "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/@noble/hashes": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz",
@@ -6761,19 +6571,20 @@
}
},
"node_modules/@rushstack/node-core-library": {
- "version": "3.58.0",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.58.0.tgz",
- "integrity": "sha512-DHAZ3LTOEq2/EGURznpTJDnB3SNE2CKMDXuviQ6afhru6RykE3QoqXkeyjbpLb5ib5cpIRCPE/wykNe0xmQj3w==",
+ "version": "5.23.1",
+ "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.23.1.tgz",
+ "integrity": "sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "colors": "~1.2.1",
- "fs-extra": "~7.0.1",
+ "ajv": "~8.18.0",
+ "ajv-draft-04": "~1.0.0",
+ "ajv-formats": "~3.0.1",
+ "fs-extra": "~11.3.0",
"import-lazy": "~4.0.0",
"jju": "~1.4.0",
"resolve": "~1.22.1",
- "semver": "~7.3.0",
- "z-schema": "~5.0.2"
+ "semver": "~7.7.4"
},
"peerDependencies": {
"@types/node": "*"
@@ -6784,77 +6595,24 @@
}
}
},
- "node_modules/@rushstack/node-core-library/node_modules/fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/@rushstack/node-core-library/node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "node_modules/@rushstack/node-core-library/node_modules/ajv-formats": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
"dev": true,
"license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@rushstack/node-core-library/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@rushstack/node-core-library/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "license": "ISC",
"dependencies": {
- "lru-cache": "^6.0.0"
+ "ajv": "^8.0.0"
},
- "bin": {
- "semver": "bin/semver.js"
+ "peerDependencies": {
+ "ajv": "^8.0.0"
},
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@rushstack/node-core-library/node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
}
},
- "node_modules/@rushstack/node-core-library/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@rushstack/problem-matcher": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz",
@@ -6871,24 +6629,24 @@
}
},
"node_modules/@rushstack/rig-package": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz",
- "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==",
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.3.tgz",
+ "integrity": "sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "resolve": "~1.22.1",
- "strip-json-comments": "~3.1.1"
+ "jju": "~1.4.0",
+ "resolve": "~1.22.1"
}
},
"node_modules/@rushstack/terminal": {
- "version": "0.22.4",
- "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.4.tgz",
- "integrity": "sha512-fhtLjnXCc/4WleVbVl6aoc7jcWnU6yqjS1S8WoaNREG3ycu/viZ9R/9QM7Y/b4CDvcXoiDyMNIay7JMwBptM3g==",
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.24.0.tgz",
+ "integrity": "sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@rushstack/node-core-library": "5.21.0",
+ "@rushstack/node-core-library": "5.23.1",
"@rushstack/problem-matcher": "0.2.1",
"supports-color": "~8.1.1"
},
@@ -6901,95 +6659,16 @@
}
}
},
- "node_modules/@rushstack/terminal/node_modules/@rushstack/node-core-library": {
- "version": "5.21.0",
- "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.21.0.tgz",
- "integrity": "sha512-LFzN+1lyWROit/P8Md6yxAth7lLYKn37oCKJHirEE2TQB25NDUM7bALf0ar+JAtwFfRCH+D+DGOA7DAzIi2r+g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "~8.18.0",
- "ajv-draft-04": "~1.0.0",
- "ajv-formats": "~3.0.1",
- "fs-extra": "~11.3.0",
- "import-lazy": "~4.0.0",
- "jju": "~1.4.0",
- "resolve": "~1.22.1",
- "semver": "~7.5.4"
- },
- "peerDependencies": {
- "@types/node": "*"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@rushstack/terminal/node_modules/ajv-formats": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
- "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/@rushstack/terminal/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@rushstack/terminal/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@rushstack/terminal/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@rushstack/ts-command-line": {
- "version": "4.13.2",
- "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.2.tgz",
- "integrity": "sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==",
+ "version": "5.3.9",
+ "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.9.tgz",
+ "integrity": "sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@rushstack/terminal": "0.24.0",
"@types/argparse": "1.0.38",
"argparse": "~1.0.9",
- "colors": "~1.2.1",
"string-argv": "~0.3.1"
}
},
@@ -10743,16 +10422,6 @@
"integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"license": "MIT"
},
- "node_modules/colors": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
- "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.1.90"
- }
- },
"node_modules/combine-promises": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz",
@@ -17294,14 +16963,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
- "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.kebabcase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@@ -27411,16 +27072,6 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/validator": {
- "version": "13.15.35",
- "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz",
- "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/value-equal": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
@@ -28783,38 +28434,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/z-schema": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz",
- "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash.get": "^4.4.2",
- "lodash.isequal": "^4.5.0",
- "validator": "^13.7.0"
- },
- "bin": {
- "z-schema": "bin/z-schema"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "optionalDependencies": {
- "commander": "^9.4.1"
- }
- },
- "node_modules/z-schema/node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": "^12.20.0 || >=14"
- }
- },
"node_modules/zip-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
@@ -28900,7 +28519,6 @@
},
"packages/blockly": {
"version": "12.5.1",
- "hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"jsdom": "26.1.0"
@@ -28912,8 +28530,8 @@
"@blockly/theme-modern": "^7.0.1",
"@hyperjump/browser": "^1.1.4",
"@hyperjump/json-schema": "^1.5.0",
- "@microsoft/api-documenter": "7.22.4",
- "@microsoft/api-extractor": "^7.29.5",
+ "@microsoft/api-documenter": "7.30.5",
+ "@microsoft/api-extractor": "7.58.7",
"ajv": "^8.17.1",
"async-done": "^2.0.0",
"chai": "^6.0.1",
diff --git a/package.json b/package.json
index 6f279b21bf4..d55a9016ff8 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"test": "npm run test --ws --if-present",
"lint": "npm run lint --ws --if-present",
"build": "npm run build --ws --if-present",
- "format:check": "npm run format:check --ws --if-present"
+ "format:check": "npm run format:check --ws --if-present",
+ "postinstall": "patch-package"
}
}
diff --git a/packages/blockly/package.json b/packages/blockly/package.json
index d3ff244fdbf..002fdcad5f0 100644
--- a/packages/blockly/package.json
+++ b/packages/blockly/package.json
@@ -34,7 +34,6 @@
"langfiles": "gulp langfiles",
"minify": "gulp minify",
"package": "gulp pack",
- "postinstall": "patch-package",
"prepareDemos": "gulp prepareDemos",
"publish": "npm ci && gulp publish",
"publish:beta": "npm ci && gulp publishBeta",
@@ -105,8 +104,8 @@
"@blockly/theme-modern": "^7.0.1",
"@hyperjump/browser": "^1.1.4",
"@hyperjump/json-schema": "^1.5.0",
- "@microsoft/api-documenter": "7.22.4",
- "@microsoft/api-extractor": "^7.29.5",
+ "@microsoft/api-documenter": "7.30.5",
+ "@microsoft/api-extractor": "7.58.7",
"ajv": "^8.17.1",
"async-done": "^2.0.0",
"chai": "^6.0.1",
diff --git a/packages/blockly/scripts/gulpfiles/docs_tasks.mjs b/packages/blockly/scripts/gulpfiles/docs_tasks.mjs
index 68d29065132..1d739b1d729 100644
--- a/packages/blockly/scripts/gulpfiles/docs_tasks.mjs
+++ b/packages/blockly/scripts/gulpfiles/docs_tasks.mjs
@@ -368,38 +368,39 @@ const buildAlternatePathsMap = function(allFiles) {
}
/**
- * Parse HTML tables from the blockly.md file to extract classes, interfaces, etc.
- * @param {string} fileContent The content of blockly.md
+ * Parse HTML tables from blockly.mdx to extract classes, interfaces, etc.
+ * Each ## section contains an HTML table with markdown links in the first column.
+ * @param {string} fileContent The content of blockly.mdx
* @returns {Object} Object with sections as keys and arrays of {name, path} as values
*/
const parseHtmlTables = function(fileContent) {
const result = {};
-
- // Split by ## headings
+ const linkRegex = /\[([^\]]+)\]\(\/reference\/([^\)]+)\)/g;
+ const tableRegex = /
][\s\S]*?<\/table>/gi;
+
+ // Split by ## headings (skip preamble before the first heading)
const sections = fileContent.split('##');
-
- for (let section of sections) {
- const lines = section.split('\n');
- const sectionName = lines[0].trim();
-
+
+ for (let i = 1; i < sections.length; i++) {
+ const section = sections[i];
+ const sectionName = section.split('\n')[0].trim();
+
if (!sectionName || sectionName === 'blockly package') continue;
-
- // Match links in markdown pipe tables: | [Name](/reference/path) | ...
- const tableRowRegex = /\|\s*\[([^\]]+)\]\(\/reference\/([^\)]+)\)/g;
+
const items = [];
-
- let match;
- while ((match = tableRowRegex.exec(section)) !== null) {
- const name = match[1];
- const href = match[2];
- items.push({ name, path: href });
+ let tableMatch;
+ while ((tableMatch = tableRegex.exec(section)) !== null) {
+ let linkMatch;
+ while ((linkMatch = linkRegex.exec(tableMatch[0])) !== null) {
+ items.push({name: linkMatch[1], path: linkMatch[2]});
+ }
}
-
+
if (items.length > 0) {
result[sectionName] = items;
}
}
-
+
return result;
}
diff --git a/packages/docs/docs/codelabs/context-menu-option/add-a-context-menu-item.mdx b/packages/docs/docs/codelabs/context-menu-option/add-a-context-menu-item.mdx
index cd2625d654b..4f12f6b35e5 100644
--- a/packages/docs/docs/codelabs/context-menu-option/add-a-context-menu-item.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/add-a-context-menu-item.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/add-a-context-menu-item
description: How to add a context menu item to the registry.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/callback.mdx b/packages/docs/docs/codelabs/context-menu-option/callback.mdx
index 6189aca00d1..97687e25a81 100644
--- a/packages/docs/docs/codelabs/context-menu-option/callback.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/callback.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/callback
description: How to add a callback to a context menu item.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/codelab-overview.mdx b/packages/docs/docs/codelabs/context-menu-option/codelab-overview.mdx
index 6261807baca..a4ce8f7fd2a 100644
--- a/packages/docs/docs/codelabs/context-menu-option/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/context-menu-option/codelab-overview
description: Overview of the "Customizing context menus" codelab.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/display-text.mdx b/packages/docs/docs/codelabs/context-menu-option/display-text.mdx
index 98ec7ef9e0a..7d80adfd313 100644
--- a/packages/docs/docs/codelabs/context-menu-option/display-text.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/display-text.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/display-text
description: How to set the display text of a context menu item.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/precondition-blockly-state.mdx b/packages/docs/docs/codelabs/context-menu-option/precondition-blockly-state.mdx
index 75fdc20c8bf..f08bb07bbc5 100644
--- a/packages/docs/docs/codelabs/context-menu-option/precondition-blockly-state.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/precondition-blockly-state.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/precondition-blockly-state
description: How to include a context menu item based on Blockly's state.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/precondition-external-state.mdx b/packages/docs/docs/codelabs/context-menu-option/precondition-external-state.mdx
index 5701d9dfc4b..ba6f998f561 100644
--- a/packages/docs/docs/codelabs/context-menu-option/precondition-external-state.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/precondition-external-state.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/precondition-external-state
description: How to include a context menu item based on an external condition.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/precondition-node-type.mdx b/packages/docs/docs/codelabs/context-menu-option/precondition-node-type.mdx
index 40014af018f..53245713521 100644
--- a/packages/docs/docs/codelabs/context-menu-option/precondition-node-type.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/precondition-node-type.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/precondition-node-type
description: How to include a context menu item based on the node type.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/separators.mdx b/packages/docs/docs/codelabs/context-menu-option/separators.mdx
index c2ac0b69847..8dd3ea959e1 100644
--- a/packages/docs/docs/codelabs/context-menu-option/separators.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/separators.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/separators
description: How to add a separator to a context menu.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/setup.mdx b/packages/docs/docs/codelabs/context-menu-option/setup.mdx
index d3d0d3cefa2..12a5160377a 100644
--- a/packages/docs/docs/codelabs/context-menu-option/setup.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/setup
description: Setting up the "Customizing context menus" codelab.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/summary.mdx b/packages/docs/docs/codelabs/context-menu-option/summary.mdx
index 5ccc32261c3..70f146c4d05 100644
--- a/packages/docs/docs/codelabs/context-menu-option/summary.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/summary.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/context-menu-option/summary
description: Summary of the "Customizing context menus" codelab.
---
diff --git a/packages/docs/docs/codelabs/context-menu-option/weight-and-id.mdx b/packages/docs/docs/codelabs/context-menu-option/weight-and-id.mdx
index 28d3acb1df7..137a65017eb 100644
--- a/packages/docs/docs/codelabs/context-menu-option/weight-and-id.mdx
+++ b/packages/docs/docs/codelabs/context-menu-option/weight-and-id.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/context-menu-option/weight-and-id
description: How to set the weight and ID of a context menu item.
---
diff --git a/packages/docs/docs/codelabs/css/blocks.mdx b/packages/docs/docs/codelabs/css/blocks.mdx
index 30ecc9589ed..b1ec168e699 100644
--- a/packages/docs/docs/codelabs/css/blocks.mdx
+++ b/packages/docs/docs/codelabs/css/blocks.mdx
@@ -1,6 +1,5 @@
---
title: Use CSS in Blockly - Blocks
-slug: /codelabs/css/blocks
description: Styling blocks with CSS
---
diff --git a/packages/docs/docs/codelabs/css/categories.mdx b/packages/docs/docs/codelabs/css/categories.mdx
index 4d5fc7d1526..a23958fbd5d 100644
--- a/packages/docs/docs/codelabs/css/categories.mdx
+++ b/packages/docs/docs/codelabs/css/categories.mdx
@@ -1,6 +1,5 @@
---
title: Use CSS in Blockly - Toolbox Categories
-slug: /codelabs/css/categories
description: Styling toolbox categories with CSS
---
diff --git a/packages/docs/docs/codelabs/css/codelab-overview.mdx b/packages/docs/docs/codelabs/css/codelab-overview.mdx
index 49c5795d47e..e5cc8ae4e33 100644
--- a/packages/docs/docs/codelabs/css/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/css/codelab-overview.mdx
@@ -1,7 +1,6 @@
---
pagination_prev: null
title: Use CSS in Blockly - Codelab Overview
-slug: /codelabs/css/codelab-overview
description: Overview of the CSS in Blockly codelab
---
diff --git a/packages/docs/docs/codelabs/css/components.mdx b/packages/docs/docs/codelabs/css/components.mdx
index 16e8bc92d18..92a35cbf493 100644
--- a/packages/docs/docs/codelabs/css/components.mdx
+++ b/packages/docs/docs/codelabs/css/components.mdx
@@ -1,6 +1,5 @@
---
title: Use CSS in Blockly - Components
-slug: /codelabs/css/components
description: Styling Blockly components with CSS
---
diff --git a/packages/docs/docs/codelabs/css/setup.mdx b/packages/docs/docs/codelabs/css/setup.mdx
index 39b80bf03a7..b20fce6d786 100644
--- a/packages/docs/docs/codelabs/css/setup.mdx
+++ b/packages/docs/docs/codelabs/css/setup.mdx
@@ -1,6 +1,5 @@
---
title: Use CSS in Blockly - Setup
-slug: /codelabs/css/setup
description: Setup for the CSS in Blockly codelab
---
diff --git a/packages/docs/docs/codelabs/css/summary.mdx b/packages/docs/docs/codelabs/css/summary.mdx
index 8732d0e7095..473400a3370 100644
--- a/packages/docs/docs/codelabs/css/summary.mdx
+++ b/packages/docs/docs/codelabs/css/summary.mdx
@@ -1,7 +1,6 @@
---
pagination_next: null
title: Use CSS in Blockly - Summary
-slug: /codelabs/css/summary
description: Summary of the CSS in Blockly codelab
---
diff --git a/packages/docs/docs/codelabs/css/tour.mdx b/packages/docs/docs/codelabs/css/tour.mdx
index a2a6ab8f350..af131db330c 100644
--- a/packages/docs/docs/codelabs/css/tour.mdx
+++ b/packages/docs/docs/codelabs/css/tour.mdx
@@ -1,6 +1,5 @@
---
title: Use CSS in Blockly - A tour of Blockly's elements
-slug: /codelabs/css/tour
description: Explore Blockly's HTML and SVG elements in the CSS codelab
---
diff --git a/packages/docs/docs/codelabs/custom-generator/array-block-generator.mdx b/packages/docs/docs/codelabs/custom-generator/array-block-generator.mdx
index 2ff9f48ac3e..436b91da212 100644
--- a/packages/docs/docs/codelabs/custom-generator/array-block-generator.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/array-block-generator.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/array-block-generator
description: How to write a block code generator that creates an array.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/block-generator-overview.mdx b/packages/docs/docs/codelabs/custom-generator/block-generator-overview.mdx
index edcbca74398..613e60b05ef 100644
--- a/packages/docs/docs/codelabs/custom-generator/block-generator-overview.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/block-generator-overview.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/block-generator-overview
description: Introduction to block generators.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/codelab-overview.mdx b/packages/docs/docs/codelabs/custom-generator/codelab-overview.mdx
index 730e958f0cd..a0b80bc93cc 100644
--- a/packages/docs/docs/codelabs/custom-generator/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/custom-generator/codelab-overview
description: Overview of the "Build a custom generator" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/generating-a-stack.mdx b/packages/docs/docs/codelabs/custom-generator/generating-a-stack.mdx
index 064674ade43..c4878f89659 100644
--- a/packages/docs/docs/codelabs/custom-generator/generating-a-stack.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/generating-a-stack.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/generating-a-stack
description: How to generate code for the blocks in a stack.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/member-block-generator.mdx b/packages/docs/docs/codelabs/custom-generator/member-block-generator.mdx
index 5696af73467..f6c09e25044 100644
--- a/packages/docs/docs/codelabs/custom-generator/member-block-generator.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/member-block-generator.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/member-block-generator
description: How to write a block code generator using field and input values.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/object-block-generator.mdx b/packages/docs/docs/codelabs/custom-generator/object-block-generator.mdx
index a5b684a03d1..4c663445dee 100644
--- a/packages/docs/docs/codelabs/custom-generator/object-block-generator.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/object-block-generator.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/object-block-generator
description: How to write a block code generator that creates an object.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/setup.mdx b/packages/docs/docs/codelabs/custom-generator/setup.mdx
index d7d035687dc..625363a002f 100644
--- a/packages/docs/docs/codelabs/custom-generator/setup.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/setup
description: Setting up the "Build a custom generator" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/summary.mdx b/packages/docs/docs/codelabs/custom-generator/summary.mdx
index 9eb9dbd22e3..4f73963db53 100644
--- a/packages/docs/docs/codelabs/custom-generator/summary.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/summary.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/custom-generator/summary
description: Summary of the "Build a custom generator" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/the-basics.mdx b/packages/docs/docs/codelabs/custom-generator/the-basics.mdx
index 0fea1a5be3f..4c98bda1812 100644
--- a/packages/docs/docs/codelabs/custom-generator/the-basics.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/the-basics.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/the-basics
description: How to define and call a language generator.
---
diff --git a/packages/docs/docs/codelabs/custom-generator/value-block-generators.mdx b/packages/docs/docs/codelabs/custom-generator/value-block-generators.mdx
index 372a29d5cfb..7f74071b1c3 100644
--- a/packages/docs/docs/codelabs/custom-generator/value-block-generators.mdx
+++ b/packages/docs/docs/codelabs/custom-generator/value-block-generators.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-generator/value-block-generators
description: How to write a block code generator for a simple value block.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/change-connection-shapes.mdx b/packages/docs/docs/codelabs/custom-renderer/change-connection-shapes.mdx
index 9144dc60489..ff3065067ec 100644
--- a/packages/docs/docs/codelabs/custom-renderer/change-connection-shapes.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/change-connection-shapes.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/change-connection-shapes
description: How to change connection shapes.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/codelab-overview.mdx b/packages/docs/docs/codelabs/custom-renderer/codelab-overview.mdx
index 6c434633274..f03afd7e304 100644
--- a/packages/docs/docs/codelabs/custom-renderer/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/custom-renderer/codelab-overview
description: Overview of the "Build custom renderers" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/define-and-register-a-custom-renderer.mdx b/packages/docs/docs/codelabs/custom-renderer/define-and-register-a-custom-renderer.mdx
index d8bf1ea390a..4751a607f60 100644
--- a/packages/docs/docs/codelabs/custom-renderer/define-and-register-a-custom-renderer.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/define-and-register-a-custom-renderer.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/define-and-register-a-custom-renderer
description: How to register a custom renderer.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/observe-the-built-in-renderers.mdx b/packages/docs/docs/codelabs/custom-renderer/observe-the-built-in-renderers.mdx
index da9de7df2b4..6fc617432f0 100644
--- a/packages/docs/docs/codelabs/custom-renderer/observe-the-built-in-renderers.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/observe-the-built-in-renderers.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/observe-the-built-in-renderers
description: Introduction to the built-in renderers.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/override-constants.mdx b/packages/docs/docs/codelabs/custom-renderer/override-constants.mdx
index 530beb4e347..1c683abdc46 100644
--- a/packages/docs/docs/codelabs/custom-renderer/override-constants.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/override-constants.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/override-constants
description: How to override the constants in a renderer.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/setup.mdx b/packages/docs/docs/codelabs/custom-renderer/setup.mdx
index 8eb3e157600..6d62959715d 100644
--- a/packages/docs/docs/codelabs/custom-renderer/setup.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/setup
description: Setting up the "Build custom renderers" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/summary.mdx b/packages/docs/docs/codelabs/custom-renderer/summary.mdx
index bc5a5de5d71..46061913682 100644
--- a/packages/docs/docs/codelabs/custom-renderer/summary.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/summary.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/custom-renderer/summary
description: Summary of the "Build custom renderers" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/typed-connection-shapes.mdx b/packages/docs/docs/codelabs/custom-renderer/typed-connection-shapes.mdx
index 216e72cb848..3890aac03ad 100644
--- a/packages/docs/docs/codelabs/custom-renderer/typed-connection-shapes.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/typed-connection-shapes.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/typed-connection-shapes
description: How to set connection shapes based on connection types.
---
diff --git a/packages/docs/docs/codelabs/custom-renderer/understand-connection-shapes.mdx b/packages/docs/docs/codelabs/custom-renderer/understand-connection-shapes.mdx
index 3a497550ca2..13572842109 100644
--- a/packages/docs/docs/codelabs/custom-renderer/understand-connection-shapes.mdx
+++ b/packages/docs/docs/codelabs/custom-renderer/understand-connection-shapes.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-renderer/understand-connection-shapes
description: Introduction to connection shapes.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/add-an-icon-to-your-category.mdx b/packages/docs/docs/codelabs/custom-toolbox/add-an-icon-to-your-category.mdx
index b072f3180ad..35d225de29b 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/add-an-icon-to-your-category.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/add-an-icon-to-your-category.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-toolbox/add-an-icon-to-your-category
description: How to add an icon to your category.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/adding-a-custom-toolbox-item.mdx b/packages/docs/docs/codelabs/custom-toolbox/adding-a-custom-toolbox-item.mdx
index e89f5f1fe09..140955f6a7c 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/adding-a-custom-toolbox-item.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/adding-a-custom-toolbox-item.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-toolbox/adding-a-custom-toolbox-item
description: How to add a custom item to a toolbox.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/change-the-category-HTML.mdx b/packages/docs/docs/codelabs/custom-toolbox/change-the-category-HTML.mdx
index cb7e73d4440..85633a143c9 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/change-the-category-HTML.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/change-the-category-HTML.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-toolbox/change-the-category-HTML
description: How to change the HTML used by a category.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-category.mdx b/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-category.mdx
index f2212d07d4a..ecc0bd94fdf 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-category.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-category.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-toolbox/change-the-look-of-a-category
description: How to change the look of a category.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-selected-category.mdx b/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-selected-category.mdx
index 08a84de4262..033e3151719 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-selected-category.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/change-the-look-of-a-selected-category.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-toolbox/change-the-look-of-a-selected-category
description: How to change the look of a selected category.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/codelab-overview.mdx b/packages/docs/docs/codelabs/custom-toolbox/codelab-overview.mdx
index edd370ba7d0..e61f2816964 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/custom-toolbox/codelab-overview
description: Overview of the "Customizing a Blockly toolbox" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/setup.mdx b/packages/docs/docs/codelabs/custom-toolbox/setup.mdx
index 0e210d3f54b..e5f17a131ea 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/setup.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/custom-toolbox/setup
description: Setting up the "Customizing a Blockly toolbox" codelab.
---
diff --git a/packages/docs/docs/codelabs/custom-toolbox/summary.mdx b/packages/docs/docs/codelabs/custom-toolbox/summary.mdx
index 367eff8b9fd..e58b8b26013 100644
--- a/packages/docs/docs/codelabs/custom-toolbox/summary.mdx
+++ b/packages/docs/docs/codelabs/custom-toolbox/summary.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/custom-toolbox/summary
description: Summary of the "Customizing a Blockly toolbox" codelab.
---
diff --git a/packages/docs/docs/codelabs/getting-started/add-blockly-libraries.mdx b/packages/docs/docs/codelabs/getting-started/add-blockly-libraries.mdx
index d58661a1e19..6603041dbee 100644
--- a/packages/docs/docs/codelabs/getting-started/add-blockly-libraries.mdx
+++ b/packages/docs/docs/codelabs/getting-started/add-blockly-libraries.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/add-blockly-libraries
description: How to add Blockly libraries to an app.
---
diff --git a/packages/docs/docs/codelabs/getting-started/codelab-overview.mdx b/packages/docs/docs/codelabs/getting-started/codelab-overview.mdx
index 89df5690fab..72d6ea81606 100644
--- a/packages/docs/docs/codelabs/getting-started/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/getting-started/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/getting-started/codelab-overview
description: Overview of the "Getting started with Blockly" codelab.
---
diff --git a/packages/docs/docs/codelabs/getting-started/create-a-blockly-workspace.mdx b/packages/docs/docs/codelabs/getting-started/create-a-blockly-workspace.mdx
index 4671d42f03b..8df69a0ab33 100644
--- a/packages/docs/docs/codelabs/getting-started/create-a-blockly-workspace.mdx
+++ b/packages/docs/docs/codelabs/getting-started/create-a-blockly-workspace.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/create-a-blockly-workspace
description: How to add a workspace to your app.
---
diff --git a/packages/docs/docs/codelabs/getting-started/create-a-custom-block.mdx b/packages/docs/docs/codelabs/getting-started/create-a-custom-block.mdx
index 0900044794e..3b1787d33cb 100644
--- a/packages/docs/docs/codelabs/getting-started/create-a-custom-block.mdx
+++ b/packages/docs/docs/codelabs/getting-started/create-a-custom-block.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/create-a-custom-block
description: How to create a custom block.
---
diff --git a/packages/docs/docs/codelabs/getting-started/explore-the-app.mdx b/packages/docs/docs/codelabs/getting-started/explore-the-app.mdx
index 9b93ecbf357..ef864e56e69 100644
--- a/packages/docs/docs/codelabs/getting-started/explore-the-app.mdx
+++ b/packages/docs/docs/codelabs/getting-started/explore-the-app.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/explore-the-app
description: Explore Blockly's getting started app.
---
diff --git a/packages/docs/docs/codelabs/getting-started/generate-javaScript-code.mdx b/packages/docs/docs/codelabs/getting-started/generate-javaScript-code.mdx
index 6b9c3f70e48..ad874d7a640 100644
--- a/packages/docs/docs/codelabs/getting-started/generate-javaScript-code.mdx
+++ b/packages/docs/docs/codelabs/getting-started/generate-javaScript-code.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/generate-javaScript-code
description: How to generate JavaScript code.
---
diff --git a/packages/docs/docs/codelabs/getting-started/run-generated-code.mdx b/packages/docs/docs/codelabs/getting-started/run-generated-code.mdx
index f628fa64d10..52a6986dd3a 100644
--- a/packages/docs/docs/codelabs/getting-started/run-generated-code.mdx
+++ b/packages/docs/docs/codelabs/getting-started/run-generated-code.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/run-generated-code
description: How to run generated code.
---
diff --git a/packages/docs/docs/codelabs/getting-started/save-load-workspace.mdx b/packages/docs/docs/codelabs/getting-started/save-load-workspace.mdx
index cb18f67fb62..039ea389558 100644
--- a/packages/docs/docs/codelabs/getting-started/save-load-workspace.mdx
+++ b/packages/docs/docs/codelabs/getting-started/save-load-workspace.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/save-load-workspace
description: How to save and load your workspace.
---
diff --git a/packages/docs/docs/codelabs/getting-started/setup.mdx b/packages/docs/docs/codelabs/getting-started/setup.mdx
index 1ee6fac229c..bb1b653ee7d 100644
--- a/packages/docs/docs/codelabs/getting-started/setup.mdx
+++ b/packages/docs/docs/codelabs/getting-started/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/getting-started/setup
description: Setting up the "Getting started with Blockly" codelab.
---
diff --git a/packages/docs/docs/codelabs/getting-started/the-end.mdx b/packages/docs/docs/codelabs/getting-started/the-end.mdx
index 078e7e8c89c..3ef945ecccc 100644
--- a/packages/docs/docs/codelabs/getting-started/the-end.mdx
+++ b/packages/docs/docs/codelabs/getting-started/the-end.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/getting-started/the-end
description: Summary of the "Getting started with Blockly" codelab.
---
diff --git a/packages/docs/docs/codelabs/index.mdx b/packages/docs/docs/codelabs/index.mdx
index de98704ec5a..8269dc98fa6 100644
--- a/packages/docs/docs/codelabs/index.mdx
+++ b/packages/docs/docs/codelabs/index.mdx
@@ -2,7 +2,6 @@
title: Welcome to the Blockly Codelabs
pagination_next: null
pagination_prev: null
-slug: /codelabs
---
import { CodelabGrid, CodelabCard } from '@site/src/components/CodelabCards';
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/codelab-overview.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/codelab-overview.mdx
index fba7e0f40cb..5c1b3fb3677 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/theme-extension-identifier/codelab-overview
description: Overview of the "Customizing your themes" codelab.
---
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/customize-block-styles.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/customize-block-styles.mdx
index 84a53eecf97..af66725dca3 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/customize-block-styles.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/customize-block-styles.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/theme-extension-identifier/customize-block-styles
description: How to use a theme to set the colours of blocks.
---
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/customize-category-styles.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/customize-category-styles.mdx
index 0a213251476..2927b430f62 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/customize-category-styles.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/customize-category-styles.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/theme-extension-identifier/customize-category-styles
description: How to use a theme to set the colours of categories.
---
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/customize-components.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/customize-components.mdx
index 707d2b07846..f07bdfd88a5 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/customize-components.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/customize-components.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/theme-extension-identifier/customize-components
description: How to use a theme to set the colours of components.
---
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/setup.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/setup.mdx
index 5086103a954..d864ea70e92 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/setup.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/theme-extension-identifier/setup
description: Setting up the "Customizing your themes" codelab.
---
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/summary.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/summary.mdx
index d04e7b7e90a..673c0958d08 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/summary.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/summary.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/theme-extension-identifier/summary
description: Summary of the "Customizing your themes" codelab.
---
diff --git a/packages/docs/docs/codelabs/theme-extension-identifier/workspace-theme.mdx b/packages/docs/docs/codelabs/theme-extension-identifier/workspace-theme.mdx
index b8a9a9879e1..f89fc07943c 100644
--- a/packages/docs/docs/codelabs/theme-extension-identifier/workspace-theme.mdx
+++ b/packages/docs/docs/codelabs/theme-extension-identifier/workspace-theme.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/theme-extension-identifier/workspace-theme
description: How to create a theme.
---
diff --git a/packages/docs/docs/codelabs/validation-and-warnings/codelab-overview.mdx b/packages/docs/docs/codelabs/validation-and-warnings/codelab-overview.mdx
index 836214712f3..cff867a1497 100644
--- a/packages/docs/docs/codelabs/validation-and-warnings/codelab-overview.mdx
+++ b/packages/docs/docs/codelabs/validation-and-warnings/codelab-overview.mdx
@@ -1,6 +1,5 @@
---
pagination_prev: null
-slug: /codelabs/validation-and-warnings/codelab-overview
description: Overview of the "Block validation and warnings" codelab.
---
diff --git a/packages/docs/docs/codelabs/validation-and-warnings/displaying-warnings.mdx b/packages/docs/docs/codelabs/validation-and-warnings/displaying-warnings.mdx
index f2bbe2108b6..8616484aa13 100644
--- a/packages/docs/docs/codelabs/validation-and-warnings/displaying-warnings.mdx
+++ b/packages/docs/docs/codelabs/validation-and-warnings/displaying-warnings.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/validation-and-warnings/displaying-warnings
description: How to display a warning when a block fails validation.
---
diff --git a/packages/docs/docs/codelabs/validation-and-warnings/setup.mdx b/packages/docs/docs/codelabs/validation-and-warnings/setup.mdx
index 83a788cafd7..3154e4e78c2 100644
--- a/packages/docs/docs/codelabs/validation-and-warnings/setup.mdx
+++ b/packages/docs/docs/codelabs/validation-and-warnings/setup.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/validation-and-warnings/setup
description: Setting up the "Block validation and warnings" codelab.
---
diff --git a/packages/docs/docs/codelabs/validation-and-warnings/summary.mdx b/packages/docs/docs/codelabs/validation-and-warnings/summary.mdx
index d6cca3368ad..1d75c241f3d 100644
--- a/packages/docs/docs/codelabs/validation-and-warnings/summary.mdx
+++ b/packages/docs/docs/codelabs/validation-and-warnings/summary.mdx
@@ -1,6 +1,5 @@
---
pagination_next: null
-slug: /codelabs/validation-and-warnings/summary
description: Summary of the "Block validation and warnings" codelab.
---
diff --git a/packages/docs/docs/codelabs/validation-and-warnings/validating-blocks.mdx b/packages/docs/docs/codelabs/validation-and-warnings/validating-blocks.mdx
index 657bcbd2f74..9ed7bb85c00 100644
--- a/packages/docs/docs/codelabs/validation-and-warnings/validating-blocks.mdx
+++ b/packages/docs/docs/codelabs/validation-and-warnings/validating-blocks.mdx
@@ -1,5 +1,4 @@
---
-slug: /codelabs/validation-and-warnings/validating-blocks
description: How to validate the fields in a block.
---
diff --git a/packages/docs/docs/guides/contribute/core/index.mdx b/packages/docs/docs/guides/contribute/core/index.mdx
index 36750cf537d..514e5ba46d1 100644
--- a/packages/docs/docs/guides/contribute/core/index.mdx
+++ b/packages/docs/docs/guides/contribute/core/index.mdx
@@ -2,7 +2,6 @@
description: Learn how to contribute changes to Blockly Core.
title: Contribute to core
image: images/blockly_banner.png
-slug: /guides/contribute/core/index
---
# Contribute to core
diff --git a/packages/docs/docs/guides/contribute/get-started/index.mdx b/packages/docs/docs/guides/contribute/get-started/index.mdx
index f3f62b46367..9e261c254e5 100644
--- a/packages/docs/docs/guides/contribute/get-started/index.mdx
+++ b/packages/docs/docs/guides/contribute/get-started/index.mdx
@@ -2,7 +2,6 @@
description: Learn about contributing to Blockly.
title: Get started contributing to Blockly
image: images/blockly_banner.png
-slug: /guides/contribute/get-started/index
---
# Get started contributing to Blockly
@@ -15,8 +14,8 @@ you are new to open source development.
For information specific to Blockly that you should read before making a
contribution, see the
-[Contributing to Core](/guides/contribute/core/index) and
-[Contributing to Samples](/guides/contribute/samples/index) sections.
+[Contributing to Core](/guides/contribute/core) and
+[Contributing to Samples](/guides/contribute/samples) sections.
## Which repository?
@@ -53,8 +52,8 @@ These are the general steps you will follow any time you make a change.
terminal. The name should help you remember what you're working on.
1. **Make your changes.**
1. **Validate your changes,** following the guide for
- [core](/guides/contribute/core/index) or
- [samples](/guides/contribute/samples/index).
+ [core](/guides/contribute/core) or
+ [samples](/guides/contribute/samples).
1. **Save your changes** with `git commit -am "fix: My commit message"`.
[Read more about commit messages](#).
1. **Push your changes** to GitHub with `git push origin myBranchName`.
diff --git a/packages/docs/docs/guides/contribute/get-started/write_a_good_issue.mdx b/packages/docs/docs/guides/contribute/get-started/write_a_good_issue.mdx
index fef42fdfecb..d633196f37b 100644
--- a/packages/docs/docs/guides/contribute/get-started/write_a_good_issue.mdx
+++ b/packages/docs/docs/guides/contribute/get-started/write_a_good_issue.mdx
@@ -151,7 +151,7 @@ requests we will pursue.
Here are the guidelines for each of the different categories of projects:
-- [Blockly core](/guides/contribute/index)
+- [Blockly core](/guides/contribute)
- [Plugins](/guides/contribute/samples/add_a_plugin#first-party-criteria)
- Examples: Show how to use only one or two Blockly features.
- Codelabs: Show how to complete a single task or implement a single behaviour.
diff --git a/packages/docs/docs/guides/contribute/index.mdx b/packages/docs/docs/guides/contribute/index.mdx
index 4ed12daad09..c4d3689ea08 100644
--- a/packages/docs/docs/guides/contribute/index.mdx
+++ b/packages/docs/docs/guides/contribute/index.mdx
@@ -2,7 +2,6 @@
description: How to contribute (not just code!) to Blockly.
title: Contribute to Blockly
image: images/blockly_banner.png
-slug: /guides/contribute/index
---
# Contribute to Blockly
@@ -24,11 +23,11 @@ contributions.
- If you're new to open source development, or you want to get more background
knowledge, head over to the
- [Getting Started contributing](/guides/contribute/get-started/index)
+ [Getting Started contributing](/guides/contribute/get-started)
guides.
- If you are ready to jump in, check out the
- [Contributing to Core](/guides/contribute/core/index) or
- [Contributing to Samples](/guides/contribute/samples/index) guides.
+ [Contributing to Core](/guides/contribute/core) or
+ [Contributing to Samples](/guides/contribute/samples) guides.
### Talk to us!
diff --git a/packages/docs/docs/guides/contribute/samples/block_factory.mdx b/packages/docs/docs/guides/contribute/samples/block_factory.mdx
index f130dea28ad..a5a5f111bac 100644
--- a/packages/docs/docs/guides/contribute/samples/block_factory.mdx
+++ b/packages/docs/docs/guides/contribute/samples/block_factory.mdx
@@ -234,7 +234,7 @@ to an input on a block, and watch the output change. Check that the preview of
the block looks right, and that the code for each of the output sections is
correct.
-[blockly-samples-development]: /guides/contribute/samples/index
+[blockly-samples-development]: /guides/contribute/samples
[source-developer-tools]: https://github.com/RaspberryPiFoundation/blockly-samples/blob/main/examples/developer-tools
[source-blocks-index]: https://github.com/RaspberryPiFoundation/blockly-samples/blob/main/examples/developer-tools/src/blocks/index.ts
[source-blocks-fields]: https://github.com/RaspberryPiFoundation/blockly-samples/blob/main/examples/developer-tools/src/blocks/fields.ts
diff --git a/packages/docs/docs/guides/contribute/samples/index.mdx b/packages/docs/docs/guides/contribute/samples/index.mdx
index 759f27372c3..a40e666f517 100644
--- a/packages/docs/docs/guides/contribute/samples/index.mdx
+++ b/packages/docs/docs/guides/contribute/samples/index.mdx
@@ -2,7 +2,6 @@
description: Learn how to contribute changes to Blockly Samples.
title: Contribute to samples
image: images/blockly_banner.png
-slug: /guides/contribute/samples/index
---
# Contribute to samples
diff --git a/packages/docs/docs/guides/programming/forking_blockly.mdx b/packages/docs/docs/guides/programming/forking_blockly.mdx
index 5a1ba6af593..6afb9eba41e 100644
--- a/packages/docs/docs/guides/programming/forking_blockly.mdx
+++ b/packages/docs/docs/guides/programming/forking_blockly.mdx
@@ -49,7 +49,7 @@ Blockly welcomes contributions! If your change is general-purpose, your best bet
may be to make a pull request. Blockly improves, you don't have to maintain a
fork, and everyone wins.
-Check out the [contributing](/guides/contribute/index) page to learn
+Check out the [contributing](/guides/contribute) page to learn
more.
## Updating a fork
diff --git a/packages/docs/docusaurus.config.js b/packages/docs/docusaurus.config.js
index abe15e604b2..badc91451a0 100644
--- a/packages/docs/docusaurus.config.js
+++ b/packages/docs/docusaurus.config.js
@@ -13,8 +13,11 @@ const config = {
v4: true,
},
- url: 'https://raspberrypifoundation.github.io',
- baseUrl: process.env.BASE_URL || '/docs/',
+ // CloudFlare Pages requires a trailing slash for index pages to work correctly.
+ trailingSlash: true,
+
+ url: 'https://docs.blockly.com',
+ baseUrl: process.env.BASE_URL || '/',
// GitHub pages deployment config
organizationName: 'RaspberryPiFoundation',
@@ -102,7 +105,7 @@ const config = {
},
{
label: 'Contribute to Blockly',
- to: 'guides/contribute/index',
+ to: 'guides/contribute',
},
],
},
diff --git a/packages/docs/static/_redirects b/packages/docs/static/_redirects
index 63a16db93b3..50fd0514c5f 100644
--- a/packages/docs/static/_redirects
+++ b/packages/docs/static/_redirects
@@ -2,9 +2,14 @@
# Syntax: source destination [status_code]
# https://developers.cloudflare.com/pages/configuration/redirects/
-# Legacy /reference/js/* paths redirect to canonical /reference/* URLs
-/reference/js/* /reference/:splat 302
+# Legacy Google reference URLs used /reference/js/ and may end in .md.
+# Canonical URLs are /reference// (trailingSlash: true, no /js/, no extension).
+# More specific rules must appear before broader /reference/js/*.
-# Strip .md/.mdx extensions if someone lands on the raw filename
-/reference/*.md /reference/:splat 302
-/reference/*.mdx /reference/:splat 302
+/reference/js/*.md /reference/:splat/ 302
+/reference/js/*.mdx /reference/:splat/ 302
+/reference/js/* /reference/:splat/ 302
+
+# Strip .md/.mdx extensions on canonical /reference/* paths
+/reference/*.md /reference/:splat/ 302
+/reference/*.mdx /reference/:splat/ 302
diff --git a/patches/@microsoft+api-documenter+7.22.4.patch b/patches/@microsoft+api-documenter+7.22.4.patch
deleted file mode 100644
index 3cc97035da6..00000000000
--- a/patches/@microsoft+api-documenter+7.22.4.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-diff --git a/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js b/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js
-index 5284d10..4f8b439 100644
---- a/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js
-+++ b/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js
-@@ -877,12 +877,14 @@ class MarkdownDocumenter {
- }
- _writeBreadcrumb(output, apiItem) {
- const configuration = this._tsdocConfiguration;
-- output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
-- configuration,
-- tagName: '@link',
-- linkText: 'Home',
-- urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
-- }));
-+ // Don't print the first breadcrumb, because there's only one package, so we don't need the Home link.
-+ // output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
-+ // configuration,
-+ // tagName: '@link',
-+ // linkText: 'Home',
-+ // urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
-+ // }));
-+ let first = true;
- for (const hierarchyItem of apiItem.getHierarchy()) {
- switch (hierarchyItem.kind) {
- case api_extractor_model_1.ApiItemKind.Model:
-@@ -892,18 +894,23 @@ class MarkdownDocumenter {
- // this may change in the future.
- break;
- default:
-- output.appendNodesInParagraph([
-+ if (!first) {
-+ // Only print the breadcrumb separator if it's not the first item we're printing.
-+ output.appendNodeInParagraph(
- new tsdoc_1.DocPlainText({
- configuration,
- text: ' > '
-- }),
-+ }));
-+ }
-+ first = false;
-+ output.appendNodeInParagraph(
- new tsdoc_1.DocLinkTag({
- configuration,
- tagName: '@link',
- linkText: hierarchyItem.displayName,
- urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)
- })
-- ]);
-+ );
- }
- }
- }
-@@ -968,11 +975,8 @@ class MarkdownDocumenter {
- // For overloaded methods, add a suffix such as "MyClass.myMethod_2".
- let qualifiedName = Utilities_1.Utilities.getSafeFilenameForName(hierarchyItem.displayName);
- if (api_extractor_model_1.ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {
-- if (hierarchyItem.overloadIndex > 1) {
-- // Subtract one for compatibility with earlier releases of API Documenter.
-- // (This will get revamped when we fix GitHub issue #1308)
-- qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;
-- }
-+ // https://github.com/microsoft/rushstack/issues/1921
-+ qualifiedName += `_${hierarchyItem.overloadIndex}`;
- }
- switch (hierarchyItem.kind) {
- case api_extractor_model_1.ApiItemKind.Model:
-@@ -983,7 +987,8 @@ class MarkdownDocumenter {
- baseName = Utilities_1.Utilities.getSafeFilenameForName(node_core_library_1.PackageName.getUnscopedName(hierarchyItem.displayName));
- break;
- default:
-- baseName += '.' + qualifiedName;
-+ // https://github.com/microsoft/rushstack/issues/1921
-+ baseName += '.' + qualifiedName + '_' + hierarchyItem.kind.toLowerCase();
- }
- }
- return baseName + '.md';
diff --git a/patches/@microsoft+api-documenter+7.28.2.patch b/patches/@microsoft+api-documenter+7.28.2.patch
deleted file mode 100644
index 1ceaaf58a4b..00000000000
--- a/patches/@microsoft+api-documenter+7.28.2.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff --git a/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js b/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js
-index 716b861..853a6b1 100644
---- a/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js
-+++ b/node_modules/@microsoft/api-documenter/lib/documenters/MarkdownDocumenter.js
-@@ -893,12 +893,14 @@ class MarkdownDocumenter {
- }
- _writeBreadcrumb(output, apiItem) {
- const configuration = this._tsdocConfiguration;
-- output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
-- configuration,
-- tagName: '@link',
-- linkText: 'Home',
-- urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
-- }));
-+ // Don't print the first breadcrumb, because there's only one package, so we don't need the Home link.
-+ // output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
-+ // configuration,
-+ // tagName: '@link',
-+ // linkText: 'Home',
-+ // urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
-+ // }));
-+ let first = true;
- for (const hierarchyItem of apiItem.getHierarchy()) {
- switch (hierarchyItem.kind) {
- case api_extractor_model_1.ApiItemKind.Model:
-@@ -908,18 +910,24 @@ class MarkdownDocumenter {
- // this may change in the future.
- break;
- default:
-- output.appendNodesInParagraph([
-- new tsdoc_1.DocPlainText({
-- configuration,
-- text: ' > '
-- }),
-+ if (!first) {
-+ // Only print the breadcrumb separator if it's not the first item we're printing.
-+ output.appendNodeInParagraph(
-+ new tsdoc_1.DocPlainText({
-+ configuration,
-+ text: ' > '
-+ })
-+ );
-+ }
-+ first = false;
-+ output.appendNodeInParagraph(
- new tsdoc_1.DocLinkTag({
- configuration,
- tagName: '@link',
- linkText: hierarchyItem.displayName,
- urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)
- })
-- ]);
-+ );
- }
- }
- }
-@@ -992,11 +1000,8 @@ class MarkdownDocumenter {
- // For overloaded methods, add a suffix such as "MyClass.myMethod_2".
- let qualifiedName = Utilities_1.Utilities.getSafeFilenameForName(hierarchyItem.displayName);
- if (api_extractor_model_1.ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {
-- if (hierarchyItem.overloadIndex > 1) {
-- // Subtract one for compatibility with earlier releases of API Documenter.
-- // (This will get revamped when we fix GitHub issue #1308)
-- qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;
-- }
-+ // https://github.com/microsoft/rushstack/issues/1921
-+ qualifiedName += `_${hierarchyItem.overloadIndex}`;
- }
- switch (hierarchyItem.kind) {
- case api_extractor_model_1.ApiItemKind.Model:
-@@ -1007,7 +1012,8 @@ class MarkdownDocumenter {
- baseName = Utilities_1.Utilities.getSafeFilenameForName(node_core_library_1.PackageName.getUnscopedName(hierarchyItem.displayName));
- break;
- default:
-- baseName += '.' + qualifiedName;
-+ // https://github.com/microsoft/rushstack/issues/1921
-+ baseName += '.' + qualifiedName + '_' + hierarchyItem.kind.toLowerCase();
- }
- }
- return baseName + '.md';
diff --git a/patches/@microsoft+api-documenter+7.30.5+001+initial.patch b/patches/@microsoft+api-documenter+7.30.5+001+initial.patch
new file mode 100644
index 00000000000..9e9218382ca
--- /dev/null
+++ b/patches/@microsoft+api-documenter+7.30.5+001+initial.patch
@@ -0,0 +1,161 @@
+diff --git a/node_modules/@microsoft/api-documenter/lib-commonjs/documenters/MarkdownDocumenter.js b/node_modules/@microsoft/api-documenter/lib-commonjs/documenters/MarkdownDocumenter.js
+index 026a528..1ebdc8f 100644
+--- a/node_modules/@microsoft/api-documenter/lib-commonjs/documenters/MarkdownDocumenter.js
++++ b/node_modules/@microsoft/api-documenter/lib-commonjs/documenters/MarkdownDocumenter.js
+@@ -914,12 +914,14 @@ class MarkdownDocumenter {
+ }
+ _writeBreadcrumb(output, apiItem) {
+ const configuration = this._tsdocConfiguration;
+- output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
+- configuration,
+- tagName: '@link',
+- linkText: 'Home',
+- urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
+- }));
++ // Don't print the first breadcrumb, because there's only one package, so we don't need the Home link.
++ // output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
++ // configuration,
++ // tagName: '@link',
++ // linkText: 'Home',
++ // urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
++ // }));
++ let first = true;
+ for (const hierarchyItem of apiItem.getHierarchy()) {
+ switch (hierarchyItem.kind) {
+ case api_extractor_model_1.ApiItemKind.Model:
+@@ -929,18 +931,24 @@ class MarkdownDocumenter {
+ // this may change in the future.
+ break;
+ default:
+- output.appendNodesInParagraph([
+- new tsdoc_1.DocPlainText({
+- configuration,
+- text: ' > '
+- }),
++ if (!first) {
++ // Only print the breadcrumb separator if it's not the first item we're printing.
++ output.appendNodeInParagraph(
++ new tsdoc_1.DocPlainText({
++ configuration,
++ text: ' > '
++ })
++ );
++ }
++ first = false;
++ output.appendNodeInParagraph(
+ new tsdoc_1.DocLinkTag({
+ configuration,
+ tagName: '@link',
+ linkText: hierarchyItem.displayName,
+ urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)
+ })
+- ]);
++ );
+ }
+ }
+ }
+@@ -1014,9 +1022,8 @@ class MarkdownDocumenter {
+ let qualifiedName = Utilities_1.Utilities.getSafeFilenameForName(hierarchyItem.displayName);
+ if (api_extractor_model_1.ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {
+ if (hierarchyItem.overloadIndex > 1) {
+- // Subtract one for compatibility with earlier releases of API Documenter.
+- // (This will get revamped when we fix GitHub issue #1308)
+- qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;
++ // https://github.com/microsoft/rushstack/issues/1921
++ qualifiedName += `_${hierarchyItem.overloadIndex}`;
+ }
+ }
+ switch (hierarchyItem.kind) {
+@@ -1028,7 +1035,8 @@ class MarkdownDocumenter {
+ baseName = Utilities_1.Utilities.getSafeFilenameForName(node_core_library_1.PackageName.getUnscopedName(hierarchyItem.displayName));
+ break;
+ default:
+- baseName += '.' + qualifiedName;
++ // https://github.com/microsoft/rushstack/issues/1921
++ baseName += '.' + qualifiedName + '_' + hierarchyItem.kind.toLowerCase();
+ }
+ }
+ return baseName + '.md';
+diff --git a/node_modules/@microsoft/api-documenter/lib-esm/documenters/MarkdownDocumenter.js b/node_modules/@microsoft/api-documenter/lib-esm/documenters/MarkdownDocumenter.js
+index f08d6e8..0d28f73 100644
+--- a/node_modules/@microsoft/api-documenter/lib-esm/documenters/MarkdownDocumenter.js
++++ b/node_modules/@microsoft/api-documenter/lib-esm/documenters/MarkdownDocumenter.js
+@@ -878,33 +878,41 @@ export class MarkdownDocumenter {
+ }
+ _writeBreadcrumb(output, apiItem) {
+ const configuration = this._tsdocConfiguration;
+- output.appendNodeInParagraph(new DocLinkTag({
+- configuration,
+- tagName: '@link',
+- linkText: 'Home',
+- urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
+- }));
++ // Don't print the first breadcrumb, because there's only one package, so we don't need the Home link.
++ // output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
++ // configuration,
++ // tagName: '@link',
++ // linkText: 'Home',
++ // urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
++ // }));
++ let first = true;
+ for (const hierarchyItem of apiItem.getHierarchy()) {
+ switch (hierarchyItem.kind) {
+- case ApiItemKind.Model:
+- case ApiItemKind.EntryPoint:
++ case api_extractor_model_1.ApiItemKind.Model:
++ case api_extractor_model_1.ApiItemKind.EntryPoint:
+ // We don't show the model as part of the breadcrumb because it is the root-level container.
+ // We don't show the entry point because today API Extractor doesn't support multiple entry points;
+ // this may change in the future.
+ break;
+ default:
+- output.appendNodesInParagraph([
+- new DocPlainText({
+- configuration,
+- text: ' > '
+- }),
+- new DocLinkTag({
++ if (!first) {
++ // Only print the breadcrumb separator if it's not the first item we're printing.
++ output.appendNodeInParagraph(
++ new tsdoc_1.DocPlainText({
++ configuration,
++ text: ' > '
++ })
++ );
++ }
++ first = false;
++ output.appendNodeInParagraph(
++ new tsdoc_1.DocLinkTag({
+ configuration,
+ tagName: '@link',
+ linkText: hierarchyItem.displayName,
+ urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)
+ })
+- ]);
++ );
+ }
+ }
+ }
+@@ -978,9 +986,8 @@ export class MarkdownDocumenter {
+ let qualifiedName = Utilities.getSafeFilenameForName(hierarchyItem.displayName);
+ if (ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {
+ if (hierarchyItem.overloadIndex > 1) {
+- // Subtract one for compatibility with earlier releases of API Documenter.
+- // (This will get revamped when we fix GitHub issue #1308)
+- qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;
++ // https://github.com/microsoft/rushstack/issues/1921
++ qualifiedName += `_${hierarchyItem.overloadIndex}`;
+ }
+ }
+ switch (hierarchyItem.kind) {
+@@ -992,7 +999,8 @@ export class MarkdownDocumenter {
+ baseName = Utilities.getSafeFilenameForName(PackageName.getUnscopedName(hierarchyItem.displayName));
+ break;
+ default:
+- baseName += '.' + qualifiedName;
++ // https://github.com/microsoft/rushstack/issues/1921
++ baseName += '.' + qualifiedName + '_' + hierarchyItem.kind.toLowerCase();
+ }
+ }
+ return baseName + '.md';