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..bcde260b7f 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,9 +308,14 @@ 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', + returnType: entry.tags?.find(tag => tag.title === "chainable") + ? "this" + : entry.returns?.[0] + ? generateTypeFromTag(entry.returns[0]) + : 'void', module, submodule, class: className, @@ -423,7 +429,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 +438,7 @@ export function generateTypeFromTag(param) { type = 'any'; } - if (param.type?.type === 'RestType') { + if (param.rest || param.type?.type === 'RestType') { prefix = '...'; }