From 7d5985fb60c16c7e0bdc2f0ac3371515ee70bb90 Mon Sep 17 00:00:00 2001 From: SoundOfScooting Date: Mon, 2 Jun 2025 17:15:52 -0400 Subject: [PATCH 1/2] [dev-2.0] Fix optional and rest parameters in TypeScript class method declarations. --- package.json | 10 ++++++++-- utils/helper.mjs | 10 ++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 3ee0dad7ee..90d523ad7c 100644 --- a/package.json +++ b/package.json @@ -68,8 +68,14 @@ "license": "LGPL-2.1", "browser": "./lib/p5.min.js", "exports": { - ".": "./dist/app.js", - "./core": "./dist/core/main.js", + ".": { + "types": "./types/p5.d.ts", + "default": "./dist/app.js" + }, + "./core": { + "types": "./types/core/main.d.ts", + "default": "./dist/core/main.js" + }, "./shape": "./dist/shape/index.js", "./accessibility": "./dist/accessibility/index.js", "./friendlyErrors": "./dist/core/friendlyErrors/index.js", diff --git a/utils/helper.mjs b/utils/helper.mjs index 6c340bc1df..a266fd38e8 100644 --- a/utils/helper.mjs +++ b/utils/helper.mjs @@ -286,7 +286,8 @@ function generateDeclarationFile(items, organizedData) { params: (entry.params || []).map(param => ({ name: param.name, type: generateTypeFromTag(param), - optional: param.type?.type === 'OptionalType' + optional: param.type?.type === 'OptionalType', + rest: param.type?.type === 'RestType' })), module, submodule, @@ -307,7 +308,8 @@ function generateDeclarationFile(items, organizedData) { params: (entry.params || []).map(param => ({ name: param.name, type: generateTypeFromTag(param), - optional: param.type?.type === 'OptionalType' + optional: param.type?.type === 'OptionalType', + rest: param.type?.type === 'RestType' })), returnType: entry.returns?.[0] ? generateTypeFromTag(entry.returns[0]) : 'void', module, @@ -423,7 +425,7 @@ export function generateTypeFromTag(param) { let type = param.type; let prefix = ''; - const isOptional = param.type?.type === 'OptionalType'; + const isOptional = param.optional || param.type?.type === 'OptionalType'; if (typeof type === 'string') { type = normalizeTypeName(type); } else if (param.type?.type) { @@ -432,7 +434,7 @@ export function generateTypeFromTag(param) { type = 'any'; } - if (param.type?.type === 'RestType') { + if (param.rest || param.type?.type === 'RestType') { prefix = '...'; } From 1b7e8084b97e9d4973430ff5115de6015cd85602 Mon Sep 17 00:00:00 2001 From: SoundOfScooting Date: Sun, 15 Jun 2025 14:18:54 -0400 Subject: [PATCH 2/2] [dev-2.0] Fix `@chainable` in class method declarations --- utils/helper.mjs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/helper.mjs b/utils/helper.mjs index a266fd38e8..bcde260b7f 100644 --- a/utils/helper.mjs +++ b/utils/helper.mjs @@ -311,7 +311,11 @@ function generateDeclarationFile(items, organizedData) { optional: param.type?.type === 'OptionalType', rest: param.type?.type === 'RestType' })), - returnType: entry.returns?.[0] ? generateTypeFromTag(entry.returns[0]) : 'void', + returnType: entry.tags?.find(tag => tag.title === "chainable") + ? "this" + : entry.returns?.[0] + ? generateTypeFromTag(entry.returns[0]) + : 'void', module, submodule, class: className,