@mgonza02/goal-image-gallery 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/README.md +7 -6
- package/lib/GoalImageGallery.js +1 -1
- package/lib/components/ImageGalleryEmptyState.js +12 -6
- package/lib/components/ImageGalleryModal.js +3 -1
- package/lib/examples.js +23 -9
- package/lib/index.js +14 -6
- package/package.json +86 -87
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,39 @@ All notable changes to the GoalImageGallery project will be documented in this f
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.2.1] - 2026-05-22
|
|
9
|
+
|
|
10
|
+
### 🐛 Bug Fixes
|
|
11
|
+
- **Stack alignItems**: Moved `alignItems` prop inside the `sx` prop in `ImageGalleryEmptyState` component to prevent React from passing it down as an unrecognized attribute to DOM elements.
|
|
12
|
+
|
|
13
|
+
## [1.2.0] - 2026-04-29
|
|
14
|
+
|
|
15
|
+
### ⬆️ Dependency Upgrades
|
|
16
|
+
- **MUI v9**: Upgraded `@mui/material` and `@mui/icons-material` from `^5.18` to `^9.0.0`
|
|
17
|
+
- **Emotion**: Updated `@emotion/react` and `@emotion/styled` to `^11.14.0`
|
|
18
|
+
- **Node engine**: Minimum Node.js version raised to `>=18.0.0`
|
|
19
|
+
|
|
20
|
+
### 🔧 Migration — MUI v9 Breaking Changes
|
|
21
|
+
- **System props removed**: Migrated deprecated shorthand props (`color`, `alignItems`, `textAlign`, `display`) on Typography and Stack to the `sx` prop using the official `@mui/codemod v9.0.0/system-props` codemod
|
|
22
|
+
- **Stack alignItems**: Restored `alignItems` as a direct prop on `Stack` components where the codemod incorrectly moved it into `sx`, fixing a React DOM prop warning (`React does not recognize the alignItems prop on a DOM element`)
|
|
23
|
+
- **Grid v2**: Confirmed Grid already uses the v2 `size` prop API required by MUI v9
|
|
24
|
+
|
|
25
|
+
### 📦 Package Manager — Migrated to pnpm
|
|
26
|
+
- **pnpm@10.33.2**: Replaced npm with pnpm as the official package manager
|
|
27
|
+
- Added `"packageManager": "pnpm@10.33.2"` to `package.json`
|
|
28
|
+
- Added `.npmrc` with `engine-strict=true`, `auto-install-peers=true`, `shamefully-hoist=false`
|
|
29
|
+
- All `npm run X` script calls replaced with `pnpm X`
|
|
30
|
+
- `package-lock.json` replaced by `pnpm-lock.yaml`
|
|
31
|
+
- Updated `.gitignore` and `.npmignore` with pnpm log/lockfile entries
|
|
32
|
+
|
|
33
|
+
### 🐳 Docker
|
|
34
|
+
- **Dockerfile**: Replaced `npm install` with `corepack enable && corepack prepare pnpm@10.33.2 --activate` + `pnpm install --frozen-lockfile`; `CMD` updated to `pnpm start`
|
|
35
|
+
- **docker-compose.yml**: Updated `command` from `node start.js` to `pnpm build`
|
|
36
|
+
|
|
37
|
+
### 📐 Architecture
|
|
38
|
+
- Added `SOLID_PRINCIPLES.md`: documents how SRP, OCP, LSP, ISP, and DIP are applied and enforced in this codebase, including allowed import direction graph and PR checklist
|
|
39
|
+
|
|
40
|
+
|
|
8
41
|
## [1.1.1] - 2025-07-14
|
|
9
42
|
### 🐛 Bug Fixes
|
|
10
43
|
- **Fixed Image Gallery Modal**: Resolved issues with the image gallery modal not displaying correctly
|
package/README.md
CHANGED
|
@@ -53,10 +53,10 @@ import { GoalImageGallery } from '@mgonza02/goal-image-gallery';
|
|
|
53
53
|
|
|
54
54
|
## Installation & Setup
|
|
55
55
|
|
|
56
|
-
###
|
|
56
|
+
### Installation
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
|
|
59
|
+
pnpm add @mgonza02/goal-image-gallery
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
### Peer Dependencies
|
|
@@ -64,7 +64,7 @@ npm install @mgonza02/goal-image-gallery
|
|
|
64
64
|
Make sure you have the required peer dependencies installed:
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
|
|
67
|
+
pnpm add @mui/material @mui/icons-material @emotion/react @emotion/styled react react-dom
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### Import
|
|
@@ -1106,13 +1106,14 @@ When contributing to this component:
|
|
|
1106
1106
|
For detailed information about changes, new features, and updates across versions, see [CHANGELOG.md](CHANGELOG.md).
|
|
1107
1107
|
|
|
1108
1108
|
### Recent Updates
|
|
1109
|
+
- **v1.2.1**: Fixed warning about invalid `alignItems` prop being passed to DOM elements by Stack components
|
|
1110
|
+
- **v1.2.0**: Upgraded to MUI v9, migrated to pnpm, Docker build pipeline, SOLID principles documentation
|
|
1111
|
+
- **v1.1.1**: Modal responsiveness, accessibility improvements, styled-components replaced with MUI Box
|
|
1112
|
+
- **v1.1.0**: Fixed handleAfterUpload array structure for bulk uploads
|
|
1109
1113
|
- **v1.0.6**: Major package cleanup and optimization
|
|
1110
1114
|
- **v1.0.5**: Initial package review and dependency analysis
|
|
1111
1115
|
- **v1.0.4**: Comprehensive documentation overhaul
|
|
1112
1116
|
- **v1.0.3**: NPM publication and scoped package setup
|
|
1113
|
-
- **v1.0.2**: Slot system implementation and UI enhancements
|
|
1114
|
-
- **v1.0.1**: Bug fixes and stability improvements
|
|
1115
|
-
- **v1.0.0**: Initial release with core features
|
|
1116
1117
|
|
|
1117
1118
|
## License
|
|
1118
1119
|
|
package/lib/GoalImageGallery.js
CHANGED
|
@@ -14,7 +14,7 @@ import { downloadImage } from "./utils/image-utils";
|
|
|
14
14
|
* Provides advanced upload capabilities, responsive design, accessibility features, and extensive customization options.
|
|
15
15
|
*
|
|
16
16
|
* @component
|
|
17
|
-
* @version 1.0
|
|
17
|
+
* @version 1.2.0
|
|
18
18
|
* @author Goal Team
|
|
19
19
|
* @since 2023
|
|
20
20
|
*
|
|
@@ -18,7 +18,9 @@ const ImageGalleryEmptyState = _ref => {
|
|
|
18
18
|
return /*#__PURE__*/_jsx(StyledEmptyStateContainer, {
|
|
19
19
|
children: /*#__PURE__*/_jsxs(Stack, {
|
|
20
20
|
spacing: 3,
|
|
21
|
-
|
|
21
|
+
sx: {
|
|
22
|
+
alignItems: 'center'
|
|
23
|
+
},
|
|
22
24
|
children: [/*#__PURE__*/_jsx(ImageIcon, {
|
|
23
25
|
sx: {
|
|
24
26
|
fontSize: 64,
|
|
@@ -26,7 +28,9 @@ const ImageGalleryEmptyState = _ref => {
|
|
|
26
28
|
}
|
|
27
29
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
28
30
|
variant: "h6",
|
|
29
|
-
|
|
31
|
+
sx: {
|
|
32
|
+
color: 'text.secondary'
|
|
33
|
+
},
|
|
30
34
|
children: emptyMessage
|
|
31
35
|
}), updatable && /*#__PURE__*/_jsxs(_Fragment, {
|
|
32
36
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
@@ -40,9 +44,9 @@ const ImageGalleryEmptyState = _ref => {
|
|
|
40
44
|
}), /*#__PURE__*/_jsxs(Stack, {
|
|
41
45
|
direction: "row",
|
|
42
46
|
spacing: 1,
|
|
43
|
-
alignItems: "center",
|
|
44
47
|
sx: {
|
|
45
|
-
mt: 2
|
|
48
|
+
mt: 2,
|
|
49
|
+
alignItems: 'center'
|
|
46
50
|
},
|
|
47
51
|
children: [/*#__PURE__*/_jsx(Chip, {
|
|
48
52
|
icon: /*#__PURE__*/_jsx(UploadIcon, {}),
|
|
@@ -65,8 +69,10 @@ const ImageGalleryEmptyState = _ref => {
|
|
|
65
69
|
})]
|
|
66
70
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
67
71
|
variant: "caption",
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
sx: {
|
|
73
|
+
color: 'text.secondary',
|
|
74
|
+
textAlign: 'center'
|
|
75
|
+
},
|
|
70
76
|
children: "Soporta m\xFAltiples m\xE9todos de carga: archivos, portapapeles y URLs"
|
|
71
77
|
})]
|
|
72
78
|
})]
|
|
@@ -117,7 +117,9 @@ const ImageGalleryModal = _ref => {
|
|
|
117
117
|
})
|
|
118
118
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
119
119
|
variant: "body2",
|
|
120
|
-
|
|
120
|
+
sx: {
|
|
121
|
+
color: 'text.secondary'
|
|
122
|
+
},
|
|
121
123
|
children: "Use las flechas del teclado para navegar"
|
|
122
124
|
}), /*#__PURE__*/_jsx(Tooltip, {
|
|
123
125
|
title: "Imagen siguiente",
|
package/lib/examples.js
CHANGED
|
@@ -285,8 +285,10 @@ export const AdvancedUploadExample = () => {
|
|
|
285
285
|
children: "Advanced Upload Methods Demo"
|
|
286
286
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
287
287
|
variant: "body2",
|
|
288
|
-
color: "text.secondary",
|
|
289
288
|
paragraph: true,
|
|
289
|
+
sx: {
|
|
290
|
+
color: 'text.secondary'
|
|
291
|
+
},
|
|
290
292
|
children: "This gallery supports multiple upload methods:"
|
|
291
293
|
}), /*#__PURE__*/_jsxs("ul", {
|
|
292
294
|
children: [/*#__PURE__*/_jsx("li", {
|
|
@@ -358,8 +360,10 @@ export const MobileGalleryExample = () => {
|
|
|
358
360
|
children: "Mobile-Optimized Gallery"
|
|
359
361
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
360
362
|
variant: "body2",
|
|
361
|
-
color: "text.secondary",
|
|
362
363
|
paragraph: true,
|
|
364
|
+
sx: {
|
|
365
|
+
color: 'text.secondary'
|
|
366
|
+
},
|
|
363
367
|
children: "Optimized for mobile devices with touch-friendly interface"
|
|
364
368
|
}), /*#__PURE__*/_jsx(GoalImageGallery, {
|
|
365
369
|
imageCodes: mobileImages,
|
|
@@ -542,14 +546,16 @@ export const CustomSelectorExample = () => {
|
|
|
542
546
|
children: title
|
|
543
547
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
544
548
|
variant: "body1",
|
|
545
|
-
color: "text.secondary",
|
|
546
549
|
paragraph: true,
|
|
550
|
+
sx: {
|
|
551
|
+
color: 'text.secondary'
|
|
552
|
+
},
|
|
547
553
|
children: uploadMessage
|
|
548
554
|
}), /*#__PURE__*/_jsxs(Typography, {
|
|
549
555
|
variant: "caption",
|
|
550
|
-
display: "block",
|
|
551
|
-
color: "text.secondary",
|
|
552
556
|
sx: {
|
|
557
|
+
display: 'block',
|
|
558
|
+
color: 'text.secondary',
|
|
553
559
|
mb: 2
|
|
554
560
|
},
|
|
555
561
|
children: ["Maximum file size: ", maxFileSize / 1024 / 1024, "MB | Theme: ", theme]
|
|
@@ -612,8 +618,10 @@ export const CustomSelectorExample = () => {
|
|
|
612
618
|
children: "Custom Image Selector with Slots"
|
|
613
619
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
614
620
|
variant: "body2",
|
|
615
|
-
color: "text.secondary",
|
|
616
621
|
paragraph: true,
|
|
622
|
+
sx: {
|
|
623
|
+
color: 'text.secondary'
|
|
624
|
+
},
|
|
617
625
|
children: "This example demonstrates how to use the slot system to provide a custom image selector with enhanced UI and functionality."
|
|
618
626
|
}), /*#__PURE__*/_jsx(GoalImageGallery, {
|
|
619
627
|
imageCodes: images,
|
|
@@ -768,12 +776,16 @@ export const BulkUploadExample = () => {
|
|
|
768
776
|
children: "Bulk Upload Images"
|
|
769
777
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
770
778
|
variant: "body2",
|
|
771
|
-
color: "text.secondary",
|
|
772
779
|
paragraph: true,
|
|
780
|
+
sx: {
|
|
781
|
+
color: 'text.secondary'
|
|
782
|
+
},
|
|
773
783
|
children: "Drop multiple images here or click to select"
|
|
774
784
|
}), selectedFiles.length > 0 && /*#__PURE__*/_jsxs(Typography, {
|
|
775
785
|
variant: "body2",
|
|
776
|
-
|
|
786
|
+
sx: {
|
|
787
|
+
color: 'success.main'
|
|
788
|
+
},
|
|
777
789
|
children: [selectedFiles.length, " file", selectedFiles.length !== 1 ? 's' : '', " selected"]
|
|
778
790
|
}), /*#__PURE__*/_jsx(Button, {
|
|
779
791
|
variant: "contained",
|
|
@@ -800,8 +812,10 @@ export const BulkUploadExample = () => {
|
|
|
800
812
|
children: "Bulk Upload Gallery"
|
|
801
813
|
}), /*#__PURE__*/_jsx(Typography, {
|
|
802
814
|
variant: "body2",
|
|
803
|
-
color: "text.secondary",
|
|
804
815
|
paragraph: true,
|
|
816
|
+
sx: {
|
|
817
|
+
color: 'text.secondary'
|
|
818
|
+
},
|
|
805
819
|
children: "This example demonstrates bulk upload functionality where multiple images can be uploaded at once. The handleAfterUpload method now accepts arrays of image objects."
|
|
806
820
|
}), /*#__PURE__*/_jsx(GoalImageGallery, {
|
|
807
821
|
imageCodes: galleryImages,
|
package/lib/index.js
CHANGED
|
@@ -136,13 +136,21 @@ export const CONFIG = {
|
|
|
136
136
|
};
|
|
137
137
|
|
|
138
138
|
// Export version info
|
|
139
|
-
export const VERSION = '2.
|
|
139
|
+
export const VERSION = '1.2.1';
|
|
140
140
|
export const CHANGELOG = [{
|
|
141
|
-
version: '2.
|
|
142
|
-
date: '
|
|
143
|
-
changes: ['
|
|
141
|
+
version: '1.2.1',
|
|
142
|
+
date: '2026-05-22',
|
|
143
|
+
changes: ['Fixed warning about invalid alignItems prop being passed to DOM elements by Stack components']
|
|
144
|
+
}, {
|
|
145
|
+
version: '1.2.0',
|
|
146
|
+
date: '2026-04-29',
|
|
147
|
+
changes: ['Upgraded to MUI v9', 'Migrated to pnpm package manager', 'Implemented Docker build pipeline', 'Added SOLID principles documentation']
|
|
148
|
+
}, {
|
|
149
|
+
version: '1.1.1',
|
|
150
|
+
date: '2025-07-14',
|
|
151
|
+
changes: ['Enhanced modal responsiveness and accessibility', 'Replaced styled-components with MUI Box']
|
|
144
152
|
}, {
|
|
145
153
|
version: '1.0.0',
|
|
146
|
-
date: '
|
|
147
|
-
changes: ['Initial release
|
|
154
|
+
date: '2025-07-11',
|
|
155
|
+
changes: ['Initial release with multi-method upload support', 'Enhanced UI/UX with Material Design 3', 'Added keyboard navigation and accessibility features']
|
|
148
156
|
}];
|
package/package.json
CHANGED
|
@@ -1,90 +1,89 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
"name": "@mgonza02/goal-image-gallery",
|
|
3
|
+
"version": "1.2.1",
|
|
4
|
+
"description": "Advanced, accessible, and highly customizable React image gallery component with multi-method upload, responsive design, and extensive TypeScript support",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"module": "lib/index.js",
|
|
7
|
+
"types": "lib/index.d.ts",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"react",
|
|
10
|
+
"image-gallery",
|
|
11
|
+
"material-ui",
|
|
12
|
+
"component",
|
|
13
|
+
"upload",
|
|
14
|
+
"drag-drop",
|
|
15
|
+
"clipboard",
|
|
16
|
+
"modal",
|
|
17
|
+
"zoom",
|
|
18
|
+
"responsive"
|
|
19
|
+
],
|
|
20
|
+
"author": "Goal Team",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/mgonza02/goal-image-gallery.git"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/mgonza02/goal-image-gallery#readme",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/mgonza02/goal-image-gallery/issues"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"lib/",
|
|
35
|
+
"README.md",
|
|
36
|
+
"CHANGELOG.md",
|
|
37
|
+
"QUICK_REFERENCE.md",
|
|
38
|
+
"MIGRATION.md",
|
|
39
|
+
"IMPLEMENTATION_GUIDE.md",
|
|
40
|
+
"IMPLEMENTATION_SUMMARY.md",
|
|
41
|
+
"DOCUMENTATION_UPDATE_SUMMARY.md",
|
|
42
|
+
"PACKAGE_CLEANUP_SUMMARY.md",
|
|
43
|
+
"LICENSE"
|
|
44
|
+
],
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"@emotion/react": "^11.14.0",
|
|
47
|
+
"@emotion/styled": "^11.14.0",
|
|
48
|
+
"@mui/icons-material": "^9.0.0",
|
|
49
|
+
"@mui/material": "^9.0.0",
|
|
50
|
+
"react": "^18.0.0",
|
|
51
|
+
"react-dom": "^18.0.0"
|
|
52
|
+
},
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"prop-types": "^15.8.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@babel/cli": "^7.20.0",
|
|
58
|
+
"@babel/core": "^7.20.0",
|
|
59
|
+
"@babel/preset-env": "^7.20.0",
|
|
60
|
+
"@babel/preset-react": "^7.18.0",
|
|
61
|
+
"prettier": "^3.4.2"
|
|
62
|
+
},
|
|
63
|
+
"browserslist": {
|
|
64
|
+
"production": [
|
|
65
|
+
">0.2%",
|
|
66
|
+
"not dead",
|
|
67
|
+
"not op_mini all"
|
|
19
68
|
],
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"IMPLEMENTATION_SUMMARY.md",
|
|
41
|
-
"DOCUMENTATION_UPDATE_SUMMARY.md",
|
|
42
|
-
"PACKAGE_CLEANUP_SUMMARY.md",
|
|
43
|
-
"LICENSE"
|
|
44
|
-
],
|
|
45
|
-
"peerDependencies": {
|
|
46
|
-
"@emotion/react": "^11.0.0",
|
|
47
|
-
"@emotion/styled": "^11.0.0",
|
|
48
|
-
"@mui/icons-material": "^5.18.0",
|
|
49
|
-
"@mui/material": "^5.18.0",
|
|
50
|
-
"react": "^18.0.0",
|
|
51
|
-
"react-dom": "^18.0.0"
|
|
52
|
-
},
|
|
53
|
-
"dependencies": {
|
|
54
|
-
"prop-types": "^15.8.0"
|
|
55
|
-
},
|
|
56
|
-
"scripts": {
|
|
57
|
-
"build": "npm run clean && npm run build:js && npm run build:types",
|
|
58
|
-
"build:js": "babel src --out-dir lib --copy-files --ignore '**/*.test.js'",
|
|
59
|
-
"build:types": "cp src/index.d.ts lib/index.d.ts",
|
|
60
|
-
"prepublishOnly": "npm run build",
|
|
61
|
-
"format": "prettier --write src/**/*.js",
|
|
62
|
-
"format:check": "prettier --check src/**/*.js",
|
|
63
|
-
"clean": "rm -rf lib",
|
|
64
|
-
"validate": "npm run format:check",
|
|
65
|
-
"dev": "npm run build -- --watch",
|
|
66
|
-
"prepack": "npm run validate && npm run build"
|
|
67
|
-
},
|
|
68
|
-
"devDependencies": {
|
|
69
|
-
"@babel/cli": "^7.20.0",
|
|
70
|
-
"@babel/core": "^7.20.0",
|
|
71
|
-
"@babel/preset-env": "^7.20.0",
|
|
72
|
-
"@babel/preset-react": "^7.18.0",
|
|
73
|
-
"prettier": "^3.4.2"
|
|
74
|
-
},
|
|
75
|
-
"browserslist": {
|
|
76
|
-
"production": [
|
|
77
|
-
">0.2%",
|
|
78
|
-
"not dead",
|
|
79
|
-
"not op_mini all"
|
|
80
|
-
],
|
|
81
|
-
"development": [
|
|
82
|
-
"last 1 chrome version",
|
|
83
|
-
"last 1 firefox version",
|
|
84
|
-
"last 1 safari version"
|
|
85
|
-
]
|
|
86
|
-
},
|
|
87
|
-
"engines": {
|
|
88
|
-
"node": ">=16.0.0"
|
|
89
|
-
}
|
|
69
|
+
"development": [
|
|
70
|
+
"last 1 chrome version",
|
|
71
|
+
"last 1 firefox version",
|
|
72
|
+
"last 1 safari version"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"engines": {
|
|
76
|
+
"node": ">=18.0.0",
|
|
77
|
+
"pnpm": ">=9.0.0"
|
|
78
|
+
},
|
|
79
|
+
"scripts": {
|
|
80
|
+
"build": "pnpm clean && pnpm build:js && pnpm build:types",
|
|
81
|
+
"build:js": "babel src --out-dir lib --copy-files --ignore '**/*.test.js'",
|
|
82
|
+
"build:types": "cp src/index.d.ts lib/index.d.ts",
|
|
83
|
+
"format": "prettier --write src/**/*.js",
|
|
84
|
+
"format:check": "prettier --check src/**/*.js",
|
|
85
|
+
"clean": "rm -rf lib",
|
|
86
|
+
"validate": "pnpm format:check",
|
|
87
|
+
"dev": "pnpm build -- --watch"
|
|
88
|
+
}
|
|
90
89
|
}
|