Skip to content

Commit 9de31c2

Browse files
authored
build: switch to tsup (#644)
1 parent 915a86a commit 9de31c2

File tree

12 files changed

+5372
-5197
lines changed

12 files changed

+5372
-5197
lines changed

.gitignore

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,7 @@ docs/
1010
dist/
1111

1212
# Ignore generated source files
13-
src/browser.ts
14-
src/cairo.ts
15-
src/napi-rs.ts
16-
src/skia.ts
17-
**/*.tsbuildinfo
18-
19-
# Ignore generated export files
20-
/*.js
21-
/*.mjs
22-
!rollup.config.mjs
23-
/*.d.ts
13+
src/*.ts
2414

2515
# Ignore heapsnapshot and log files
2616
*.heapsnapshot

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# canvas-constructor
66

7-
**An ES6 chainable class for node-canvas with built-in utilities.**
7+
**A utility for Canvas with chainable methods and consistent interface for all environments**
88

99
[![npm](https://img.shields.io/npm/v/canvas-constructor.svg?maxAge=3600)](https://www.npmjs.com/package/canvas-constructor)
1010
[![npm](https://img.shields.io/npm/dt/canvas-constructor.svg?maxAge=3600)](https://www.npmjs.com/package/canvas-constructor)

package.json

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,78 @@
11
{
22
"name": "canvas-constructor",
33
"version": "7.0.2",
4-
"description": "A ES6 class for node-canvas with built-in functions and chained methods.",
4+
"description": "A utility for Canvas with chainable methods and consistent interface for all environments",
55
"author": "kyranet",
66
"license": "MIT",
7+
"type": "module",
78
"contributors": [
89
"Aura Román <[email protected]>",
910
"yorkaargh",
1011
1112
],
12-
"browser": "dist/browser.umd.js",
13-
"unpkg": "dist/browser.umd.js",
13+
"browser": "dist/iife/browser.global.js",
14+
"unpkg": "dist/iife/browser.global.js",
1415
"exports": {
1516
"./browser": {
16-
"types": "./dist/browser.d.ts",
17-
"import": "./dist/browser.mjs",
18-
"require": "./dist/browser.js"
17+
"import": {
18+
"types": "./dist/esm/browser.d.mts",
19+
"default": "./dist/esm/browser.mjs"
20+
},
21+
"require": {
22+
"types": "./dist/cjs/browser.d.cts",
23+
"default": "./dist/cjs/browser.cjs"
24+
}
1925
},
2026
"./cairo": {
21-
"types": "./dist/cairo.d.ts",
22-
"import": "./dist/cairo.mjs",
23-
"require": "./dist/cairo.js"
27+
"import": {
28+
"types": "./dist/esm/cairo.d.mts",
29+
"default": "./dist/esm/cairo.mjs"
30+
},
31+
"require": {
32+
"types": "./dist/cjs/cairo.d.cts",
33+
"default": "./dist/cjs/cairo.cjs"
34+
}
2435
},
2536
"./napi-rs": {
26-
"types": "./dist/napi-rs.d.ts",
27-
"import": "./dist/napi-rs.mjs",
28-
"require": "./dist/napi-rs.js"
37+
"import": {
38+
"types": "./dist/esm/napi-rs.d.mts",
39+
"default": "./dist/esm/napi-rs.mjs"
40+
},
41+
"require": {
42+
"types": "./dist/cjs/napi-rs.d.cts",
43+
"default": "./dist/cjs/napi-rs.cjs"
44+
}
2945
},
3046
"./skia": {
31-
"types": "./dist/skia.d.ts",
32-
"import": "./dist/skia.mjs",
33-
"require": "./dist/skia.js"
47+
"import": {
48+
"types": "./dist/esm/skia.d.mts",
49+
"default": "./dist/esm/skia.mjs"
50+
},
51+
"require": {
52+
"types": "./dist/cjs/skia.d.cts",
53+
"default": "./dist/cjs/skia.cjs"
54+
}
3455
}
3556
},
36-
"sideEffects": false,
57+
"sideEffects": [
58+
"./dist/esm/chunk-G5GHKT7C.mjs",
59+
"./dist/iife/browser.global.js"
60+
],
3761
"scripts": {
3862
"lint": "eslint scripts --ext mjs --fix",
3963
"format": "prettier --write scripts",
4064
"docs": "yarn build:gen && typedoc",
4165
"update": "yarn upgrade-interactive --latest",
4266
"build": "yarn build:gen && yarn build:ts",
4367
"build:gen": "node ./scripts/generate.mjs",
44-
"build:ts": "rollup -c rollup.config.mjs",
68+
"build:ts": "tsup && yarn build:rename-esm-indexes",
69+
"build:rename-esm-indexes": "node scripts/rename-esm-indexes.mjs",
4570
"watch": "yarn build -w",
4671
"bump": "cliff-jumper",
47-
"clean": "rimraf {browser,cairo,napi-rs,skia}.{d.ts,js,mjs} dist",
72+
"clean": "rimraf dist",
4873
"check-update": "cliff-jumper --dry-run",
4974
"prepack": "yarn build"
5075
},
51-
"dependencies": {
52-
"tslib": "^2.6.2"
53-
},
5476
"devDependencies": {
5577
"@commitlint/cli": "^19.3.0",
5678
"@commitlint/config-conventional": "^19.2.2",
@@ -69,12 +91,9 @@
6991
"lint-staged": "^15.2.4",
7092
"prettier": "^3.2.5",
7193
"rimraf": "^5.0.7",
72-
"rollup": "^3.29.4",
73-
"rollup-plugin-cleaner": "^1.0.0",
74-
"rollup-plugin-terser": "^7.0.2",
75-
"rollup-plugin-typescript2": "^0.36.0",
7694
"skia-canvas": "^1.0.1",
77-
"ts-node": "^10.9.2",
95+
"terser": "^5.31.0",
96+
"tsup": "^8.0.2",
7897
"typedoc": "^0.25.13",
7998
"typescript": "^5.4.5"
8099
},
@@ -87,19 +106,7 @@
87106
"url": "git+https://github.com/kyranet/canvas-constructor.git"
88107
},
89108
"files": [
90-
"dist",
91-
"browser.js",
92-
"browser.mjs",
93-
"browser.d.ts",
94-
"cairo.js",
95-
"cairo.mjs",
96-
"cairo.d.ts",
97-
"napi-rs.js",
98-
"napi-rs.mjs",
99-
"napi-rs.d.ts",
100-
"skia.js",
101-
"skia.mjs",
102-
"skia.d.ts"
109+
"dist"
103110
],
104111
"engines": {
105112
"node": ">=v14.18.0"

rollup.config.mjs

Lines changed: 0 additions & 60 deletions
This file was deleted.

scripts/generate.mjs

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,7 @@ await Promise.all(configuration.entries.map((entry) => generateAll(entry)));
1111

1212
/** @param {import('../generator.config.json')['entries'][number]} entry */
1313
function generateAll(entry) {
14-
return Promise.all([generateCode(entry), generateExport(entry.name)]);
15-
}
16-
17-
/** @param {string} name */
18-
async function generateExport(name) {
19-
const entries = [
20-
{ name: `${name}.js`, content: `require('tslib').__exportStar(require('./dist/${name}.js'), exports);\n` },
21-
{ name: `${name}.mjs`, content: `export * from './dist/${name}.mjs';\n` },
22-
{ name: `${name}.d.ts`, content: `export * from './dist/${name}';\n` }
23-
];
24-
25-
await Promise.all(
26-
entries.map((entry) => {
27-
const output = new URL(entry.name, root);
28-
return writeFile(output, entry.content, 'utf8');
29-
})
30-
);
14+
return Promise.all([generateCode(entry)]);
3115
}
3216

3317
/** @param {import('../generator.config.json')['entries'][number]} entry */

scripts/rename-esm-indexes.mjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { green } from 'colorette';
2+
import { rename } from 'node:fs/promises';
3+
import { resolve } from 'node:path';
4+
5+
const indexes = ['browser', 'cairo', 'napi-rs', 'skia'];
6+
7+
for (const index of indexes) {
8+
const input = resolve(`dist/esm/${index}.d.ts`);
9+
const output = resolve(`dist/esm/${index}.d.mts`);
10+
11+
await rename(input, output);
12+
console.log(green(`✅ Renamed ${index}.d.ts to ${index}.d.mts`));
13+
}

src/main.ts.template

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2153,7 +2153,7 @@ export class Canvas {
21532153
public toBufferAsync(mimeType: 'application/pdf', config?: PdfConfig): Promise<Buffer>; \
21542154
public toBufferAsync(...args: readonly any[]): Promise<Buffer> { \
21552155
return new Promise<Buffer>((resolve, reject) => \
2156-
this.canvas.toBuffer( \
2156+
this.canvas.toBuffer( \
21572157
// @ts-expect-error: Complains about invalid overload (expects more than 0 overloads). \
21582158
(error: Error | null, buffer: Buffer | null): void => { \
21592159
if (error) reject(error); \
@@ -2339,13 +2339,13 @@ export class Canvas {
23392339
positionY: y - radius / ratio,
23402340
sizeX: diameter,
23412341
sizeY: diameter / ratio
2342-
}
2342+
}
23432343
: {
23442344
positionX: x - radius * ratio,
23452345
positionY: y - radius,
23462346
sizeX: diameter * ratio,
23472347
sizeY: diameter
2348-
};
2348+
};
23492349
}
23502350

23512351
if (ratio > 1) {
@@ -2490,12 +2490,12 @@ export type FontVariants = FontVariantLigatures | FontVariantAlternates | FontVa
24902490
type GetFontVariant<K extends FontVariants> = K extends FontVariantLigatures
24912491
? FontVariantLigatures
24922492
: K extends FontVariantAlternates
2493-
? FontVariantAlternates
2494-
: K extends FontVariantCaps
2495-
? FontVariantCaps
2496-
: K extends FontVariantNumeric
2497-
? FontVariantNumeric
2498-
: FontVariantEastAsian;
2493+
? FontVariantAlternates
2494+
: K extends FontVariantCaps
2495+
? FontVariantCaps
2496+
: K extends FontVariantNumeric
2497+
? FontVariantNumeric
2498+
: FontVariantEastAsian;
24992499

25002500
export function fontVariant<K1 extends FontVariantString>(k1: K1): K1;
25012501
export function fontVariant<K1 extends FontVariants, K2 extends Exclude<FontVariants, GetFontVariant<K1>>>(k1: K1, k2: K2): `${K1} ${K2}`;

src/tsconfig.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
"compilerOptions": {
44
"rootDir": "./",
55
"outDir": "../dist",
6-
"composite": true,
7-
"useDefineForClassFields": false
6+
"incremental": false
87
},
98
"include": ["."]
109
}

tsconfig.base.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
2-
"extends": ["@sapphire/ts-config", "@sapphire/ts-config/extra-strict", "@sapphire/ts-config/verbatim", "@sapphire/ts-config/bundler"],
2+
"extends": ["@sapphire/ts-config", "@sapphire/ts-config/extra-strict", "@sapphire/ts-config/bundler", "@sapphire/ts-config/verbatim"],
33
"compilerOptions": {
4-
"target": "ES2019"
4+
"target": "ES2019",
5+
"useDefineForClassFields": false
56
}
67
}

tsconfig.eslint.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"extends": "./tsconfig.base.json",
3-
"include": ["scripts", "src", "rollup.config.ts"]
3+
"include": ["scripts", "src", "tsup.config.ts"]
44
}

0 commit comments

Comments
 (0)