From 5e8b2a6925b3564188c0fb6e2781a657de04a180 Mon Sep 17 00:00:00 2001 From: kungfooman Date: Thu, 9 Nov 2023 14:52:50 +0100 Subject: [PATCH 01/47] Adding RTI transpiler to every target, I will fine-tune a bit later --- package-lock.json | 32 ++++++++++++++++++++++++++++++++ package.json | 1 + rollup.config.mjs | 2 ++ 3 files changed, 35 insertions(+) diff --git a/package-lock.json b/package-lock.json index 4b73c78a1fe..320ce9af621 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", + "@runtime-type-inspector/plugin-rollup": "^1.0.1", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -2168,6 +2169,37 @@ } } }, + "node_modules/@runtime-type-inspector/plugin-rollup": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.1.tgz", + "integrity": "sha512-Ff2yHzc5Oqwr9nEkeT5S1W7J4YnVBo6zM5OC6G6ZIrlaN7rwBgt6Nz4xFMdOFecXceEEG/DZRNag6zgFyH3XmA==", + "dev": true, + "dependencies": { + "@runtime-type-inspector/runtime": "^2.0.5", + "@runtime-type-inspector/transpiler": "^2.0.10", + "rollup": "^3.29.4" + } + }, + "node_modules/@runtime-type-inspector/runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/runtime/-/runtime-2.0.5.tgz", + "integrity": "sha512-IwvfHotrv3v/RWN9I2ptPrUjXz0r682fTfFezTANRdq8yerlfH/Ke4tuUAQMttC/FMrtkb5UfFnDo66SuW0aAQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.2.0", + "typescript": "^5.1.6" + } + }, + "node_modules/@runtime-type-inspector/transpiler": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.10.tgz", + "integrity": "sha512-sWdaoDZ6+VbxThV/9fIJHl+meLvzZE1I+JkAG3pbIa8hZZbxJjsAoM0UGJplygmvXu9CNSSTyB9zr8xzZtJh8A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.2.0", + "typescript": "^5.1.6" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", diff --git a/package.json b/package.json index 94cf09b7d17..471b0d5e759 100644 --- a/package.json +++ b/package.json @@ -108,6 +108,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", + "@runtime-type-inspector/plugin-rollup": "^1.0.1", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", diff --git a/rollup.config.mjs b/rollup.config.mjs index cf50a564257..a23b3805be9 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -11,6 +11,7 @@ import terser from '@rollup/plugin-terser'; import dts from 'rollup-plugin-dts'; import jscc from 'rollup-plugin-jscc'; import { visualizer } from 'rollup-plugin-visualizer'; +import { runtimeTypeInspector } from '@runtime-type-inspector/plugin-rollup'; // custom Rollup plugins import { shaderChunks } from './utils/rollup-shader-chunks.mjs'; @@ -268,6 +269,7 @@ function buildTarget(buildType, moduleFormat) { shaderChunks({ enabled: buildType !== 'debug' }), engineLayerImportValidation(rootFile, buildType === 'debug'), buildType !== 'debug' ? strip(stripOptions) : undefined, + runtimeTypeInspector(), babel(babelOptions[moduleFormat]), spacesToTabs(buildType !== 'debug') ] From 91dec96a253d6981ce0da559d903deff365f8f77 Mon Sep 17 00:00:00 2001 From: kungfooman Date: Thu, 9 Nov 2023 17:40:44 +0100 Subject: [PATCH 02/47] name output build/playcanvas-rti and update packages --- examples/package-lock.json | 48 +++++++++++++++++++++----------------- package-lock.json | 16 ++++++------- package.json | 3 ++- rollup.config.mjs | 12 ++++++---- 4 files changed, 43 insertions(+), 36 deletions(-) diff --git a/examples/package-lock.json b/examples/package-lock.json index 59943da9d95..66a722d5e3c 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -57,23 +57,26 @@ "version": "1.67.0-dev", "dev": true, "license": "MIT", + "dependencies": { + "@types/webxr": "^0.5.7", + "@webgpu/types": "^0.1.38" + }, "devDependencies": { - "@babel/core": "^7.23.0", + "@babel/core": "^7.23.2", "@babel/eslint-parser": "^7.22.15", - "@babel/preset-env": "^7.22.20", + "@babel/preset-env": "^7.23.2", "@playcanvas/canvas-mock": "^1.0.1", "@playcanvas/eslint-config": "^1.7.1", "@playcanvas/jsdoc-template": "^1.1.2", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-strip": "^3.0.2", - "@rollup/plugin-terser": "^0.4.3", - "@rollup/pluginutils": "^5.0.4", - "@types/webxr": "^0.5.5", - "@webgpu/types": "^0.1.35", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-strip": "^3.0.4", + "@rollup/plugin-terser": "^0.4.4", + "@rollup/pluginutils": "^5.0.5", + "@runtime-type-inspector/plugin-rollup": "^1.0.1", "c8": "^8.0.0", "chai": "^4.3.10", - "eslint": "^8.50.0", + "eslint": "^8.52.0", "fflate": "^0.8.1", "jsdoc": "^4.0.2", "jsdoc-tsimport-plugin": "^1.0.5", @@ -87,7 +90,7 @@ "rollup-plugin-jscc": "2.0.0", "rollup-plugin-visualizer": "^5.9.2", "serve": "^14.2.1", - "sinon": "^16.0.0", + "sinon": "^17.0.0", "typedoc": "^0.25.1", "typedoc-plugin-mdn-links": "^3.1.0", "typescript": "^5.2.2", @@ -9820,22 +9823,23 @@ "playcanvas": { "version": "file:..", "requires": { - "@babel/core": "^7.23.0", + "@babel/core": "^7.23.2", "@babel/eslint-parser": "^7.22.15", - "@babel/preset-env": "^7.22.20", + "@babel/preset-env": "^7.23.2", "@playcanvas/canvas-mock": "^1.0.1", "@playcanvas/eslint-config": "^1.7.1", "@playcanvas/jsdoc-template": "^1.1.2", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-strip": "^3.0.2", - "@rollup/plugin-terser": "^0.4.3", - "@rollup/pluginutils": "^5.0.4", - "@types/webxr": "^0.5.5", - "@webgpu/types": "^0.1.35", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-strip": "^3.0.4", + "@rollup/plugin-terser": "^0.4.4", + "@rollup/pluginutils": "^5.0.5", + "@runtime-type-inspector/plugin-rollup": "^1.0.1", + "@types/webxr": "^0.5.7", + "@webgpu/types": "^0.1.38", "c8": "^8.0.0", "chai": "^4.3.10", - "eslint": "^8.50.0", + "eslint": "^8.52.0", "fflate": "^0.8.1", "jsdoc": "^4.0.2", "jsdoc-tsimport-plugin": "^1.0.5", @@ -9849,7 +9853,7 @@ "rollup-plugin-jscc": "2.0.0", "rollup-plugin-visualizer": "^5.9.2", "serve": "^14.2.1", - "sinon": "^16.0.0", + "sinon": "^17.0.0", "typedoc": "^0.25.1", "typedoc-plugin-mdn-links": "^3.1.0", "typescript": "^5.2.2", diff --git a/package-lock.json b/package-lock.json index 320ce9af621..425a351bdbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.1", + "@runtime-type-inspector/plugin-rollup": "^1.0.3", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -2170,13 +2170,13 @@ } }, "node_modules/@runtime-type-inspector/plugin-rollup": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.1.tgz", - "integrity": "sha512-Ff2yHzc5Oqwr9nEkeT5S1W7J4YnVBo6zM5OC6G6ZIrlaN7rwBgt6Nz4xFMdOFecXceEEG/DZRNag6zgFyH3XmA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.3.tgz", + "integrity": "sha512-3MwxmV8/NSmdIjKUtNULSgyhAxlC9AG3kgFQ3i2kCffxgPlMNj8PEAIHDiNrNvcbZ7YVAsJrrTHuKGbz8YQ5XQ==", "dev": true, "dependencies": { "@runtime-type-inspector/runtime": "^2.0.5", - "@runtime-type-inspector/transpiler": "^2.0.10", + "@runtime-type-inspector/transpiler": "^2.0.11", "rollup": "^3.29.4" } }, @@ -2191,9 +2191,9 @@ } }, "node_modules/@runtime-type-inspector/transpiler": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.10.tgz", - "integrity": "sha512-sWdaoDZ6+VbxThV/9fIJHl+meLvzZE1I+JkAG3pbIa8hZZbxJjsAoM0UGJplygmvXu9CNSSTyB9zr8xzZtJh8A==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.11.tgz", + "integrity": "sha512-g8PV5V6Gq/c+bnomCbQh1KuHpgaEqB97pidBrFq2M2V2ig+m8qZRT1GtDX6E4ikQBbYQ9mX+rosofYrcQjxQUQ==", "dev": true, "dependencies": { "@babel/core": "^7.2.0", diff --git a/package.json b/package.json index 471b0d5e759..050182d2abc 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.1", + "@runtime-type-inspector/plugin-rollup": "^1.0.3", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -142,6 +142,7 @@ "build:es6_release": "rollup -c --environment target:release_es6", "build:es6_debug": "rollup -c --environment target:debug_es6", "build:profiler": "rollup -c --environment target:profiler", + "build:rti": "rollup -c --environment target:rti", "build:treemap": "npm run build:es5 -- --environment treemap", "build:treenet": "npm run build:es5 -- --environment treenet", "build:treesun": "npm run build:es5 -- --environment treesun", diff --git a/rollup.config.mjs b/rollup.config.mjs index a23b3805be9..5389657c77a 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -147,7 +147,7 @@ const stripFunctions = [ /** * Build a target that rollup is supposed to build. * - * @param {'debug'|'release'|'profiler'|'min'} buildType - The build type. + * @param {'debug'|'release'|'profiler'|'min'|'rti'} buildType - The build type. * @param {'es5'|'es6'} moduleFormat - The module format. * @returns {RollupOptions} One rollup target. */ @@ -156,7 +156,8 @@ function buildTarget(buildType, moduleFormat) { debug: ' (DEBUG)', release: ' (RELEASE)', profiler: ' (PROFILE)', - min: ' (RELEASE)' + min: ' (RELEASE)', + rti: ' (RUNTIME-TYPE-INSPECTOR)' }; const outputPlugins = { @@ -192,7 +193,8 @@ function buildTarget(buildType, moduleFormat) { debug: 'build/playcanvas.dbg', release: 'build/playcanvas', profiler: 'build/playcanvas.prf', - min: 'build/playcanvas.min' + min: 'build/playcanvas.min', + rti: 'build/playcanvas-rti' }; const outputExtension = { @@ -269,7 +271,7 @@ function buildTarget(buildType, moduleFormat) { shaderChunks({ enabled: buildType !== 'debug' }), engineLayerImportValidation(rootFile, buildType === 'debug'), buildType !== 'debug' ? strip(stripOptions) : undefined, - runtimeTypeInspector(), + buildType === 'rti' ? runtimeTypeInspector() : undefined, babel(babelOptions[moduleFormat]), spacesToTabs(buildType !== 'debug') ] @@ -378,7 +380,7 @@ export default (args) => { } else if (envTarget === 'extras') { targets.push(...target_extras); } else { - ['release', 'debug', 'profiler', 'min'].forEach((t) => { + ['release', 'debug', 'profiler', 'min', 'rti'].forEach((t) => { ['es5', 'es6'].forEach((m) => { if (envTarget === null || envTarget === t || envTarget === m || envTarget === `${t}_${m}`) { targets.push(buildTarget(t, m)); From 1ff92a2164507ca015385116244d40f0b6de2bf5 Mon Sep 17 00:00:00 2001 From: kungfooman Date: Fri, 10 Nov 2023 12:11:40 +0100 Subject: [PATCH 03/47] Resolve RTI runtime and update to latest RTI rollup plugin --- package-lock.json | 17 +++++++++-------- package.json | 2 +- rollup.config.mjs | 1 + 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 425a351bdbb..e626702bfa5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.3", + "@runtime-type-inspector/plugin-rollup": "^1.0.4", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -2170,13 +2170,13 @@ } }, "node_modules/@runtime-type-inspector/plugin-rollup": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.3.tgz", - "integrity": "sha512-3MwxmV8/NSmdIjKUtNULSgyhAxlC9AG3kgFQ3i2kCffxgPlMNj8PEAIHDiNrNvcbZ7YVAsJrrTHuKGbz8YQ5XQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.4.tgz", + "integrity": "sha512-6Oo2NWMAkn7kulbWx2mWBCsPe72qTYiz3MC7uH41Zf/hNxHyDrNZJE7MMJAmQXgUct1EMvv8kmkCG+Dfr60l+g==", "dev": true, "dependencies": { "@runtime-type-inspector/runtime": "^2.0.5", - "@runtime-type-inspector/transpiler": "^2.0.11", + "@runtime-type-inspector/transpiler": "^2.0.13", "rollup": "^3.29.4" } }, @@ -2191,12 +2191,13 @@ } }, "node_modules/@runtime-type-inspector/transpiler": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.11.tgz", - "integrity": "sha512-g8PV5V6Gq/c+bnomCbQh1KuHpgaEqB97pidBrFq2M2V2ig+m8qZRT1GtDX6E4ikQBbYQ9mX+rosofYrcQjxQUQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.13.tgz", + "integrity": "sha512-XMSIADYZxOvmczIq4rdYypyNsYkaIWUbEpEPblq83FrfuYxCeE6BIGmT2NL+4WF2q1TTdBOoMzXUNwHOd1CmJg==", "dev": true, "dependencies": { "@babel/core": "^7.2.0", + "@runtime-type-inspector/runtime": "^2.0.5", "typescript": "^5.1.6" } }, diff --git a/package.json b/package.json index 050182d2abc..188ac6f9630 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.3", + "@runtime-type-inspector/plugin-rollup": "^1.0.4", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", diff --git a/rollup.config.mjs b/rollup.config.mjs index 5389657c77a..e2e9833f944 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -267,6 +267,7 @@ function buildTarget(buildType, moduleFormat) { input: rootFile, output: outputOptions, plugins: [ + resolve(), jscc(jsccOptions[buildType] || jsccOptions.release), shaderChunks({ enabled: buildType !== 'debug' }), engineLayerImportValidation(rootFile, buildType === 'debug'), From 82feb3ada9efd90b211243c37265c9cdf9df87cf Mon Sep 17 00:00:00 2001 From: kungfooman Date: Fri, 10 Nov 2023 16:48:55 +0100 Subject: [PATCH 04/47] Integrate RTI into Examples browser via `npm run develop:rti` --- examples/package.json | 3 ++- examples/rollup.config.js | 2 +- package-lock.json | 22 +++++++++------------- package.json | 2 +- rollup.config.mjs | 2 +- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/examples/package.json b/examples/package.json index 996a89ffa91..01ea13ab435 100644 --- a/examples/package.json +++ b/examples/package.json @@ -18,7 +18,8 @@ "watch": "npm run prebuild && cross-env concurrently --kill-others \"npm run rollup:watch\"", "watch:debug": "cross-env ENGINE_PATH=../build/playcanvas.dbg.js npm run watch", "watch:profiler": "cross-env ENGINE_PATH=../build/playcanvas.prf.js npm run watch", - "develop": "cross-env NODE_ENV=development concurrently --kill-others \"npm run watch\" \"npm run serve\"" + "develop": "cross-env NODE_ENV=development concurrently --kill-others \"npm run watch\" \"npm run serve\"", + "develop:rti": "ENGINE_PATH=../build/playcanvas.rti.js npm run develop" }, "eslintConfig": { "root": true, diff --git a/examples/rollup.config.js b/examples/rollup.config.js index f0d5d6ddd5e..43b7122b42e 100644 --- a/examples/rollup.config.js +++ b/examples/rollup.config.js @@ -99,7 +99,7 @@ function timestamp() { } /** - * @param {import('rollup').Plugin} - The Rollup plugin. + * @param {import('rollup').Plugin} plugin - The Rollup plugin. * @param {string} src - File or path to watch. */ function watch(plugin, src) { diff --git a/package-lock.json b/package-lock.json index e626702bfa5..814fd3db9c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.4", + "@runtime-type-inspector/plugin-rollup": "^1.0.5", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -2170,25 +2170,21 @@ } }, "node_modules/@runtime-type-inspector/plugin-rollup": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.4.tgz", - "integrity": "sha512-6Oo2NWMAkn7kulbWx2mWBCsPe72qTYiz3MC7uH41Zf/hNxHyDrNZJE7MMJAmQXgUct1EMvv8kmkCG+Dfr60l+g==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.5.tgz", + "integrity": "sha512-by35JU0WvWq/dYG1pr3aEaYFZ02Jed5lQVYtmGrZqjglCVy/haHhWG/CnzAlyNlZvfc7Ut6/KuZ7oRBsaGaqkQ==", "dev": true, "dependencies": { - "@runtime-type-inspector/runtime": "^2.0.5", + "@runtime-type-inspector/runtime": "^2.0.6", "@runtime-type-inspector/transpiler": "^2.0.13", "rollup": "^3.29.4" } }, "node_modules/@runtime-type-inspector/runtime": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/runtime/-/runtime-2.0.5.tgz", - "integrity": "sha512-IwvfHotrv3v/RWN9I2ptPrUjXz0r682fTfFezTANRdq8yerlfH/Ke4tuUAQMttC/FMrtkb5UfFnDo66SuW0aAQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.2.0", - "typescript": "^5.1.6" - } + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/runtime/-/runtime-2.0.6.tgz", + "integrity": "sha512-TovIrltJwWlfCe5FxjHwNtPiuMshXgZWP8N/49hV6ay2SHE9UpYcodz5gkbX2zsAaFlI7733+eo+WZLe5cX4PQ==", + "dev": true }, "node_modules/@runtime-type-inspector/transpiler": { "version": "2.0.13", diff --git a/package.json b/package.json index 188ac6f9630..dd4953393f9 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.4", + "@runtime-type-inspector/plugin-rollup": "^1.0.5", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", diff --git a/rollup.config.mjs b/rollup.config.mjs index e2e9833f944..c4cda9be641 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -194,7 +194,7 @@ function buildTarget(buildType, moduleFormat) { release: 'build/playcanvas', profiler: 'build/playcanvas.prf', min: 'build/playcanvas.min', - rti: 'build/playcanvas-rti' + rti: 'build/playcanvas.rti' }; const outputExtension = { From 53ab80c4a68d8db150a1d2cd26725578565216a0 Mon Sep 17 00:00:00 2001 From: kungfooman Date: Fri, 10 Nov 2023 17:14:50 +0100 Subject: [PATCH 05/47] only add node-resolve plugin for RTI --- rollup.config.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index c4cda9be641..ff6e078aeee 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -263,16 +263,16 @@ function buildTarget(buildType, moduleFormat) { }; const rootFile = 'src/index.js'; + const pluginsRTI = buildType === 'rti' ? [resolve(), runtimeTypeInspector()] : []; return { input: rootFile, output: outputOptions, plugins: [ - resolve(), jscc(jsccOptions[buildType] || jsccOptions.release), shaderChunks({ enabled: buildType !== 'debug' }), engineLayerImportValidation(rootFile, buildType === 'debug'), buildType !== 'debug' ? strip(stripOptions) : undefined, - buildType === 'rti' ? runtimeTypeInspector() : undefined, + ...pluginsRTI, babel(babelOptions[moduleFormat]), spacesToTabs(buildType !== 'debug') ] From af6366eb8137b1ec93e1a5b50adc87b36602077b Mon Sep 17 00:00:00 2001 From: kungfooman Date: Sat, 11 Nov 2023 11:56:10 +0100 Subject: [PATCH 06/47] Don't type check framework/parsers/draco-worker.js (because a Worker context has no access to RTI) --- rollup.config.mjs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rollup.config.mjs b/rollup.config.mjs index ff6e078aeee..72b01ceceb4 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -263,7 +263,14 @@ function buildTarget(buildType, moduleFormat) { }; const rootFile = 'src/index.js'; - const pluginsRTI = buildType === 'rti' ? [resolve(), runtimeTypeInspector()] : []; + const pluginsRTI = buildType === 'rti' ? [ + resolve(), + runtimeTypeInspector({ + ignoredFiles: [ + 'framework/parsers/draco-worker.js' // runs in Worker context without RTI + ] + }) + ] : []; return { input: rootFile, output: outputOptions, From 20a249a4374b0f0d3dbbbae428f6370000b9667e Mon Sep 17 00:00:00 2001 From: kungfooman Date: Sat, 11 Nov 2023 16:07:10 +0100 Subject: [PATCH 07/47] npm i @runtime-type-inspector/plugin-rollup@1.0.6 (added `types.d.ts` for IntelliSense) --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 814fd3db9c1..40703b0225d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.5", + "@runtime-type-inspector/plugin-rollup": "^1.0.6", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -2170,13 +2170,13 @@ } }, "node_modules/@runtime-type-inspector/plugin-rollup": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.5.tgz", - "integrity": "sha512-by35JU0WvWq/dYG1pr3aEaYFZ02Jed5lQVYtmGrZqjglCVy/haHhWG/CnzAlyNlZvfc7Ut6/KuZ7oRBsaGaqkQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.6.tgz", + "integrity": "sha512-2jJqKa53Fu5LnzwOXh88PA+xrafRtCBLjbS+Y+TDjBdx5xTqyEjBWz1Rn5bBeQAysGmQda7FYMqEvRGQaPLWSA==", "dev": true, "dependencies": { "@runtime-type-inspector/runtime": "^2.0.6", - "@runtime-type-inspector/transpiler": "^2.0.13", + "@runtime-type-inspector/transpiler": "^2.0.14", "rollup": "^3.29.4" } }, @@ -2187,9 +2187,9 @@ "dev": true }, "node_modules/@runtime-type-inspector/transpiler": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.13.tgz", - "integrity": "sha512-XMSIADYZxOvmczIq4rdYypyNsYkaIWUbEpEPblq83FrfuYxCeE6BIGmT2NL+4WF2q1TTdBOoMzXUNwHOd1CmJg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.14.tgz", + "integrity": "sha512-rdXrtIVN1YCG1owIrEgnP7Lq08k6OXu5+51SBnVvxnUI4zJjomJwatFsAWQip5yQp6LgakVf27dML9Kt8q7Lbw==", "dev": true, "dependencies": { "@babel/core": "^7.2.0", diff --git a/package.json b/package.json index dd4953393f9..8aba22d9986 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.5", + "@runtime-type-inspector/plugin-rollup": "^1.0.6", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", From c89fde451cf4ac4e44682d41ff4de3466602736f Mon Sep 17 00:00:00 2001 From: kungfooman Date: Mon, 13 Nov 2023 12:41:07 +0100 Subject: [PATCH 08/47] Add type reporting mode: never --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 40703b0225d..0e130cd3ca4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.6", + "@runtime-type-inspector/plugin-rollup": "^1.0.7", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", @@ -2170,30 +2170,30 @@ } }, "node_modules/@runtime-type-inspector/plugin-rollup": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.6.tgz", - "integrity": "sha512-2jJqKa53Fu5LnzwOXh88PA+xrafRtCBLjbS+Y+TDjBdx5xTqyEjBWz1Rn5bBeQAysGmQda7FYMqEvRGQaPLWSA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/plugin-rollup/-/plugin-rollup-1.0.7.tgz", + "integrity": "sha512-nOFD8jHSAUx40T2wthtXcl9lAqxh0TAnz1mQlyRkYB7u1djJP22u4NxeYRtgd7owEFsIrM8Zg2lyvlbCp94dbA==", "dev": true, "dependencies": { "@runtime-type-inspector/runtime": "^2.0.6", - "@runtime-type-inspector/transpiler": "^2.0.14", + "@runtime-type-inspector/transpiler": "^2.0.15", "rollup": "^3.29.4" } }, "node_modules/@runtime-type-inspector/runtime": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/runtime/-/runtime-2.0.6.tgz", - "integrity": "sha512-TovIrltJwWlfCe5FxjHwNtPiuMshXgZWP8N/49hV6ay2SHE9UpYcodz5gkbX2zsAaFlI7733+eo+WZLe5cX4PQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/runtime/-/runtime-2.0.7.tgz", + "integrity": "sha512-5cbxySUw0NTVd7NhWGEZX2iuAEEP5bQIqMMYGwThbWFniFqAXQq2WRnykMXxx+kFcUcwMi6KAz32UwavIXkz/A==", "dev": true }, "node_modules/@runtime-type-inspector/transpiler": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.14.tgz", - "integrity": "sha512-rdXrtIVN1YCG1owIrEgnP7Lq08k6OXu5+51SBnVvxnUI4zJjomJwatFsAWQip5yQp6LgakVf27dML9Kt8q7Lbw==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@runtime-type-inspector/transpiler/-/transpiler-2.0.15.tgz", + "integrity": "sha512-0MKDNNIExke1F2KIGSe4G2T+QNgpZo/E4oU+4TZ9UJzkDHUTiahMVTDzAs7+S8cURhTrUyTEKzkTqldlaaHn8g==", "dev": true, "dependencies": { "@babel/core": "^7.2.0", - "@runtime-type-inspector/runtime": "^2.0.5", + "@runtime-type-inspector/runtime": "^2.0.7", "typescript": "^5.1.6" } }, diff --git a/package.json b/package.json index 8aba22d9986..03b3274d665 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@rollup/plugin-strip": "^3.0.4", "@rollup/plugin-terser": "^0.4.4", "@rollup/pluginutils": "^5.0.5", - "@runtime-type-inspector/plugin-rollup": "^1.0.6", + "@runtime-type-inspector/plugin-rollup": "^1.0.7", "c8": "^8.0.0", "chai": "^4.3.10", "eslint": "^8.52.0", From b4cb08d4898efe057ac22210d001f97e5858d976 Mon Sep 17 00:00:00 2001 From: kungfooman Date: Tue, 28 Nov 2023 18:03:09 +0100 Subject: [PATCH 09/47] npm run develop:rti - Support live reload --- examples/package.json | 2 +- .../{rollup.config.js => rollup.config.mjs} | 8 ++- .../scripts/generate-standalone-files.mjs | 4 ++ utils/rollup-build-target-rti.mjs | 58 +++++++++++++++++++ 4 files changed, 68 insertions(+), 4 deletions(-) rename examples/{rollup.config.js => rollup.config.mjs} (96%) create mode 100644 utils/rollup-build-target-rti.mjs diff --git a/examples/package.json b/examples/package.json index 01ea13ab435..2a3d968dd7d 100644 --- a/examples/package.json +++ b/examples/package.json @@ -19,7 +19,7 @@ "watch:debug": "cross-env ENGINE_PATH=../build/playcanvas.dbg.js npm run watch", "watch:profiler": "cross-env ENGINE_PATH=../build/playcanvas.prf.js npm run watch", "develop": "cross-env NODE_ENV=development concurrently --kill-others \"npm run watch\" \"npm run serve\"", - "develop:rti": "ENGINE_PATH=../build/playcanvas.rti.js npm run develop" + "develop:rti": "RTI=on npm run develop" }, "eslintConfig": { "root": true, diff --git a/examples/rollup.config.js b/examples/rollup.config.mjs similarity index 96% rename from examples/rollup.config.js rename to examples/rollup.config.mjs index b5a6689c90e..80c9d1d4f9d 100644 --- a/examples/rollup.config.js +++ b/examples/rollup.config.mjs @@ -11,6 +11,7 @@ import commonjs from "@rollup/plugin-commonjs"; import replace from '@rollup/plugin-replace'; import resolve from "@rollup/plugin-node-resolve"; import terser from '@rollup/plugin-terser'; +import { buildTargetRTI } from '../utils/rollup-build-target-rti.mjs'; /** @typedef {import('rollup').RollupOptions} RollupOptions */ /** @typedef {import('rollup').Plugin} RollupPlugin */ @@ -65,7 +66,7 @@ function isModuleWithExternalDependencies(content) { return a || b || c; } -let { NODE_ENV = '', ENGINE_PATH = '' } = process.env; +let { NODE_ENV = '', ENGINE_PATH = '', RTI = '' } = process.env; // If we don't set ENGINE_PATH and NODE_ENV is 'development', we use ../src/index.js, which // requires no additional build shells. @@ -166,7 +167,7 @@ function buildAndWatchStandaloneExamples() { } }, generateBundle() { - const cmd = `cross-env NODE_ENV=${NODE_ENV} ENGINE_PATH=${ENGINE_PATH} npm run build:standalone`; + const cmd = `cross-env NODE_ENV=${NODE_ENV} ENGINE_PATH=${ENGINE_PATH} RTI=${RTI} npm run build:standalone`; console.log(cmd); exec(cmd); } @@ -239,7 +240,8 @@ const builds = [ timestamp() ] }, - scriptTarget('pcx', '../extras/index.js', 'dist/iframe/playcanvas-extras.js') + scriptTarget('pcx', '../extras/index.js', 'dist/iframe/playcanvas-extras.js'), + process.env.RTI ? buildTargetRTI('es6') : undefined ]; export default builds; diff --git a/examples/scripts/generate-standalone-files.mjs b/examples/scripts/generate-standalone-files.mjs index 33e8fbd3e06..f6ad1a9968f 100644 --- a/examples/scripts/generate-standalone-files.mjs +++ b/examples/scripts/generate-standalone-files.mjs @@ -95,6 +95,7 @@ ${exampleClass.example.toString()}