textmode.export.js 1.2.1 → 1.3.0-beta.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.
Files changed (98) hide show
  1. package/README.md +171 -172
  2. package/dist/textmode.export.esm.js +1376 -1243
  3. package/dist/textmode.export.umd.js +2 -2
  4. package/dist/types/exporters/base/DataExtractor.d.ts +15 -1
  5. package/dist/types/exporters/base/DataExtractor.d.ts.map +1 -1
  6. package/dist/types/exporters/base/FileHandler.d.ts +3 -0
  7. package/dist/types/exporters/base/FileHandler.d.ts.map +1 -1
  8. package/dist/types/exporters/gif/GIFExporter.d.ts +5 -2
  9. package/dist/types/exporters/gif/GIFExporter.d.ts.map +1 -1
  10. package/dist/types/exporters/gif/GIFRecorder.d.ts +3 -3
  11. package/dist/types/exporters/gif/GIFRecorder.d.ts.map +1 -1
  12. package/dist/types/exporters/gif/types.d.ts.map +1 -1
  13. package/dist/types/exporters/image/ImageExporter.d.ts +7 -2
  14. package/dist/types/exporters/image/ImageExporter.d.ts.map +1 -1
  15. package/dist/types/exporters/image/index.d.ts +1 -1
  16. package/dist/types/exporters/image/index.d.ts.map +1 -1
  17. package/dist/types/exporters/image/types.d.ts.map +1 -1
  18. package/dist/types/exporters/json/JSONDataExtractor.d.ts +16 -0
  19. package/dist/types/exporters/json/JSONDataExtractor.d.ts.map +1 -0
  20. package/dist/types/exporters/json/JSONExporter.d.ts +56 -0
  21. package/dist/types/exporters/json/JSONExporter.d.ts.map +1 -0
  22. package/dist/types/exporters/json/JSONExporter.test.d.ts +2 -0
  23. package/dist/types/exporters/json/JSONExporter.test.d.ts.map +1 -0
  24. package/dist/types/exporters/json/index.d.ts +4 -0
  25. package/dist/types/exporters/json/index.d.ts.map +1 -0
  26. package/dist/types/exporters/json/types.d.ts +135 -0
  27. package/dist/types/exporters/json/types.d.ts.map +1 -0
  28. package/dist/types/exporters/svg/SVGContentGenerator.d.ts +9 -1
  29. package/dist/types/exporters/svg/SVGContentGenerator.d.ts.map +1 -1
  30. package/dist/types/exporters/svg/SVGDataExtractor.d.ts +2 -8
  31. package/dist/types/exporters/svg/SVGDataExtractor.d.ts.map +1 -1
  32. package/dist/types/exporters/svg/SVGExporter.d.ts +3 -0
  33. package/dist/types/exporters/svg/SVGExporter.d.ts.map +1 -1
  34. package/dist/types/exporters/svg/SVGPathGenerator.d.ts +8 -4
  35. package/dist/types/exporters/svg/SVGPathGenerator.d.ts.map +1 -1
  36. package/dist/types/exporters/svg/index.d.ts +1 -1
  37. package/dist/types/exporters/svg/index.d.ts.map +1 -1
  38. package/dist/types/exporters/svg/types.d.ts.map +1 -1
  39. package/dist/types/exporters/txt/TXTExporter.d.ts +4 -0
  40. package/dist/types/exporters/txt/TXTExporter.d.ts.map +1 -1
  41. package/dist/types/exporters/txt/index.d.ts.map +1 -1
  42. package/dist/types/exporters/txt/types.d.ts.map +1 -1
  43. package/dist/types/exporters/video/VideoExporter.d.ts +5 -2
  44. package/dist/types/exporters/video/VideoExporter.d.ts.map +1 -1
  45. package/dist/types/exporters/video/VideoRecorder.d.ts +3 -3
  46. package/dist/types/exporters/video/VideoRecorder.d.ts.map +1 -1
  47. package/dist/types/exporters/video/index.d.ts +1 -1
  48. package/dist/types/exporters/video/index.d.ts.map +1 -1
  49. package/dist/types/exporters/video/types.d.ts +2 -2
  50. package/dist/types/exporters/video/types.d.ts.map +1 -1
  51. package/dist/types/index.d.ts +10 -2
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/overlay/blades/Blade.d.ts +6 -1
  54. package/dist/types/overlay/blades/Blade.d.ts.map +1 -1
  55. package/dist/types/overlay/blades/GIFBlade.d.ts.map +1 -1
  56. package/dist/types/overlay/blades/ImageBlade.d.ts.map +1 -1
  57. package/dist/types/overlay/blades/JSONBlade.d.ts +15 -0
  58. package/dist/types/overlay/blades/JSONBlade.d.ts.map +1 -0
  59. package/dist/types/overlay/blades/SVGBlade.d.ts.map +1 -1
  60. package/dist/types/overlay/blades/TextBlade.d.ts.map +1 -1
  61. package/dist/types/overlay/blades/VideoBlade.d.ts.map +1 -1
  62. package/dist/types/overlay/blades/index.d.ts +1 -0
  63. package/dist/types/overlay/blades/index.d.ts.map +1 -1
  64. package/dist/types/overlay/components/actions/Button.d.ts.map +1 -1
  65. package/dist/types/overlay/components/base/Component.d.ts.map +1 -1
  66. package/dist/types/overlay/components/base/Container.d.ts.map +1 -1
  67. package/dist/types/overlay/components/base/Field.d.ts.map +1 -1
  68. package/dist/types/overlay/components/display/Header.d.ts.map +1 -1
  69. package/dist/types/overlay/components/display/StatusDisplay.d.ts.map +1 -1
  70. package/dist/types/overlay/components/inputs/CheckboxInput.d.ts.map +1 -1
  71. package/dist/types/overlay/components/inputs/NumberInput.d.ts.map +1 -1
  72. package/dist/types/overlay/components/inputs/RangeInput.d.ts.map +1 -1
  73. package/dist/types/overlay/components/inputs/SelectInput.d.ts.map +1 -1
  74. package/dist/types/overlay/components/inputs/TextInput.d.ts.map +1 -1
  75. package/dist/types/overlay/core/EventBus.d.ts +1 -0
  76. package/dist/types/overlay/core/EventBus.d.ts.map +1 -1
  77. package/dist/types/overlay/core/OverlayController.d.ts.map +1 -1
  78. package/dist/types/overlay/core/StateManager.d.ts.map +1 -1
  79. package/dist/types/overlay/formatRegistry.d.ts.map +1 -1
  80. package/dist/types/overlay/index.d.ts +1 -0
  81. package/dist/types/overlay/index.d.ts.map +1 -1
  82. package/dist/types/overlay/models/FormatDefinition.d.ts +3 -3
  83. package/dist/types/overlay/models/FormatDefinition.d.ts.map +1 -1
  84. package/dist/types/overlay/models/OverlayEvents.d.ts.map +1 -1
  85. package/dist/types/overlay/models/OverlayState.d.ts.map +1 -1
  86. package/dist/types/overlay/services/ClipboardService.d.ts +8 -2
  87. package/dist/types/overlay/services/ClipboardService.d.ts.map +1 -1
  88. package/dist/types/overlay/services/ExportService.d.ts.map +1 -1
  89. package/dist/types/overlay/services/PositionService.d.ts.map +1 -1
  90. package/dist/types/overlay/types.d.ts +3 -1
  91. package/dist/types/overlay/types.d.ts.map +1 -1
  92. package/dist/types/types.d.ts +104 -0
  93. package/dist/types/types.d.ts.map +1 -1
  94. package/dist/types/utils/pixels.d.ts +1 -0
  95. package/dist/types/utils/pixels.d.ts.map +1 -1
  96. package/dist/types/version.d.ts +2 -0
  97. package/dist/types/version.d.ts.map +1 -0
  98. package/package.json +118 -71
@@ -3,24 +3,45 @@ import type { TXTExportOptions } from './exporters/txt';
3
3
  import type { SVGExportOptions } from './exporters/svg';
4
4
  import type { GIFExportOptions } from './exporters/gif';
5
5
  import type { VideoExportOptions } from './exporters/video';
6
+ import type { JSONExportOptions, TextmodeLayerJSON } from './exporters/json';
6
7
  /**
7
8
  * Controller for managing the export overlay UI visibility at runtime.
8
9
  */
9
10
  export interface ExportOverlayController {
10
11
  /**
11
12
  * Shows the export overlay UI.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * t.exportOverlay.show();
17
+ * ```
12
18
  */
13
19
  show(): void;
14
20
  /**
15
21
  * Hides the export overlay UI.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * t.exportOverlay.hide();
26
+ * ```
16
27
  */
17
28
  hide(): void;
18
29
  /**
19
30
  * Toggles the export overlay UI visibility.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * t.exportOverlay.toggle();
35
+ * ```
20
36
  */
21
37
  toggle(): void;
22
38
  /**
23
39
  * Checks if the export overlay is currently visible.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const visible = t.exportOverlay.isVisible();
44
+ * ```
24
45
  */
25
46
  isVisible(): boolean;
26
47
  }
@@ -34,44 +55,127 @@ export interface TextmodeExportAPI {
34
55
  exportOverlay: ExportOverlayController;
35
56
  /**
36
57
  * Saves the current canvas content to an image file *(`'png'` by default)*.
58
+ *
37
59
  * @param options Export options.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * await t.saveCanvas({ format: 'png', filename: 'frame-001' });
64
+ * ```
38
65
  */
39
66
  saveCanvas(options?: ImageExportOptions): Promise<void>;
40
67
  /**
41
68
  * Copies the current canvas to the user's clipboard as an image.
69
+ *
42
70
  * @param options Export options.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * await t.copyCanvas({ format: 'png' });
75
+ * ```
43
76
  */
44
77
  copyCanvas(options?: ImageExportOptions): Promise<void>;
45
78
  /**
46
79
  * Downloads the current frame as an SVG file.
80
+ *
47
81
  * @param options Export options.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * t.saveSVG({ filename: 'poster', includeBackgroundRectangles: true });
86
+ * ```
48
87
  */
49
88
  saveSVG(options?: SVGExportOptions): void;
50
89
  /**
51
90
  * Downloads the current text content as a plain-text file.
91
+ *
52
92
  * @param options Export options.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * t.saveStrings({ filename: 'frame', preserveTrailingSpaces: true });
97
+ * ```
53
98
  */
54
99
  saveStrings(options?: TXTExportOptions): void;
55
100
  /**
56
101
  * Generates the SVG markup for the current frame.
102
+ *
57
103
  * @param options Export options.
58
104
  * @returns The SVG content representing the artwork.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * const svg = t.toSVG({ drawMode: 'stroke', strokeWidth: 1.5 });
109
+ * ```
59
110
  */
60
111
  toSVG(options?: SVGExportOptions): string;
61
112
  /**
62
113
  * Produces the current text content as a string.
114
+ *
63
115
  * @param options Export options.
64
116
  * @returns The textual representation of the artwork.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const text = t.toString({ preserveTrailingSpaces: false });
121
+ * ```
65
122
  */
66
123
  toString(options?: TXTExportOptions): string;
124
+ /**
125
+ * Produces the current base layer as structured JSON data.
126
+ *
127
+ * @param options Export options.
128
+ * @returns The JSON document representing the current base layer.
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * const layer = t.toJSON({ colorMode: 'hex', includeMetadata: true });
133
+ * ```
134
+ */
135
+ toJSON(options?: JSONExportOptions): TextmodeLayerJSON;
136
+ /**
137
+ * Produces the current base layer as a JSON string.
138
+ *
139
+ * @param options Export options.
140
+ * @returns Serialized JSON string for the current base layer.
141
+ *
142
+ * @example
143
+ * ```ts
144
+ * const json = t.toJSONString({ pretty: false, colorMode: 'hex' });
145
+ * ```
146
+ */
147
+ toJSONString(options?: JSONExportOptions): string;
148
+ /**
149
+ * Downloads the current base layer as a JSON file.
150
+ *
151
+ * @param options Export options.
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * t.saveJSON({ filename: 'frame', pretty: true });
156
+ * ```
157
+ */
158
+ saveJSON(options?: JSONExportOptions): void;
67
159
  /**
68
160
  * Records an animated GIF and saves it to disk.
161
+ *
69
162
  * @param options Export options.
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * await t.saveGIF({ frameCount: 120, frameRate: 30, filename: 'loop' });
167
+ * ```
70
168
  */
71
169
  saveGIF(options?: GIFExportOptions): Promise<void>;
72
170
  /**
73
171
  * Captures a WEBM video and saves it to disk.
172
+ *
74
173
  * @param options Export options.
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * await t.saveWEBM({ frameCount: 240, frameRate: 60, filename: 'capture' });
178
+ * ```
75
179
  */
76
180
  saveWEBM(options?: VideoExportOptions): Promise<void>;
77
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,aAAa,EAAE,uBAAuB,CAAC;IAEvC;;;OAGG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C;;;OAGG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;;;;;OAOG;IACH,MAAM,IAAI,IAAI,CAAC;IAEf;;;;;;;OAOG;IACH,SAAS,IAAI,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,aAAa,EAAE,uBAAuB,CAAC;IAEvC;;;;;;;;;OASG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;OASG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE1C;;;;;;;;;OASG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE9C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAE7C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;IAEvD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAElD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAE5C;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * Convert a pixel array to an RGBA object.
3
+ *
3
4
  * @param pixels Pixel array (Uint8Array)
4
5
  * @param index Starting index in the pixel array
5
6
  * @returns RGBA object
@@ -1 +1 @@
1
- {"version":3,"file":"pixels.d.ts","sourceRoot":"","sources":["../../../src/utils/pixels.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAO9G"}
1
+ {"version":3,"file":"pixels.d.ts","sourceRoot":"","sources":["../../../src/utils/pixels.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAO9G"}
@@ -0,0 +1,2 @@
1
+ export declare const TEXTMODE_EXPORT_VERSION = "1.2.1";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,71 +1,118 @@
1
- {
2
- "name": "textmode.export.js",
3
- "version": "1.2.1",
4
- "description": "Export plugin for textmode.js - Save your creations as images, GIFs, videos, SVG, and plain text.",
5
- "type": "module",
6
- "types": "./dist/types/index.d.ts",
7
- "main": "./dist/textmode.export.umd.js",
8
- "module": "./dist/textmode.export.esm.js",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/types/index.d.ts",
12
- "import": "./dist/textmode.export.esm.js",
13
- "require": "./dist/textmode.export.umd.js"
14
- }
15
- },
16
- "scripts": {
17
- "dev": "vite --port 5174",
18
- "build": "vite build && tsc",
19
- "preview": "vite preview",
20
- "build:docs": "typedoc",
21
- "dev:docs": "typedoc --watch"
22
- },
23
- "devDependencies": {
24
- "@rollup/plugin-terser": "^0.4.4",
25
- "@types/node": "^24.5.2",
26
- "terser": "^5.44.0",
27
- "typedoc": "^0.28.13",
28
- "typedoc-plugin-frontmatter": "^1.3.1",
29
- "typedoc-plugin-markdown": "^4.9.0",
30
- "typedoc-vitepress-theme": "^1.1.2",
31
- "typescript": "~5.8.3",
32
- "vite": "^7.1.7",
33
- "vite-plugin-css-injected-by-js": "^3.5.2"
34
- },
35
- "dependencies": {
36
- "gifenc": "^1.0.1",
37
- "webm-writer": "^1.0.0",
38
- "textmode.js": ">=0.7.0"
39
- },
40
- "repository": {
41
- "type": "git",
42
- "url": "git+https://github.com/humanbydefinition/textmode.export.js.git"
43
- },
44
- "keywords": [
45
- "textmode",
46
- "textmode.js",
47
- "ascii",
48
- "petscii",
49
- "export",
50
- "plugin",
51
- "gif",
52
- "video",
53
- "webm",
54
- "svg",
55
- "image",
56
- "png",
57
- "jpg",
58
- "webp",
59
- "creative-coding",
60
- "canvas"
61
- ],
62
- "author": "humanbydefinition",
63
- "license": "MIT",
64
- "bugs": {
65
- "url": "https://github.com/humanbydefinition/textmode.export.js/issues"
66
- },
67
- "homepage": "https://code.textmode.art",
68
- "files": [
69
- "dist"
70
- ]
71
- }
1
+ {
2
+ "name": "textmode.export.js",
3
+ "version": "1.3.0-beta.1",
4
+ "description": "Export plugin for textmode.js - Save your creations as images, GIFs, videos, SVG, JSON, and plain text.",
5
+ "type": "module",
6
+ "main": "./dist/textmode.export.umd.js",
7
+ "module": "./dist/textmode.export.esm.js",
8
+ "types": "./dist/types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/types/index.d.ts",
12
+ "import": "./dist/textmode.export.esm.js",
13
+ "require": "./dist/textmode.export.umd.js"
14
+ }
15
+ },
16
+ "sideEffects": [
17
+ "./dist/textmode.export.esm.js",
18
+ "./dist/textmode.export.umd.js"
19
+ ],
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "dev": "vite --port 5174 --host",
25
+ "build:bundle": "vite build",
26
+ "build:types": "tsc",
27
+ "build": "npm run build:bundle && npm run build:types",
28
+ "check": "npm run check:format && npm run lint && npm run lint:md && npm run check:types && npm run check:api-docs && npm run test && npm run build",
29
+ "check:api-docs": "node ./scripts/check-public-api-docs.mjs",
30
+ "dev:docs": "typedoc --watch",
31
+ "build:docs": "typedoc",
32
+ "preview": "vite preview",
33
+ "test": "vitest run --passWithNoTests",
34
+ "test:watch": "vitest --passWithNoTests",
35
+ "test:ui": "vitest --ui --passWithNoTests",
36
+ "test:coverage": "vitest --coverage --passWithNoTests",
37
+ "format": "prettier --write .",
38
+ "check:format": "prettier --check .",
39
+ "check:types": "tsc --noEmit",
40
+ "lint:md": "markdownlint-cli2",
41
+ "lint:md:fix": "markdownlint-cli2 --fix",
42
+ "lint": "eslint src --config eslint.config.js",
43
+ "prepare": "husky"
44
+ },
45
+ "peerDependencies": {
46
+ "textmode.js": ">=0.10.0"
47
+ },
48
+ "dependencies": {
49
+ "gifenc": "^1.0.1",
50
+ "webm-writer": "^1.0.0"
51
+ },
52
+ "devDependencies": {
53
+ "@commitlint/cli": "^20.5.0",
54
+ "@commitlint/config-conventional": "^20.5.0",
55
+ "@eslint/js": "^9.39.4",
56
+ "@rollup/plugin-terser": "^0.4.4",
57
+ "@semantic-release/commit-analyzer": "^13.0.1",
58
+ "@semantic-release/exec": "^7.1.0",
59
+ "@semantic-release/github": "^12.0.6",
60
+ "@semantic-release/npm": "^13.1.5",
61
+ "@semantic-release/release-notes-generator": "^14.1.0",
62
+ "@types/node": "^24.0.13",
63
+ "@vitest/ui": "^3.1.2",
64
+ "eslint": "^9.39.2",
65
+ "eslint-plugin-jsdoc": "^62.9.0",
66
+ "globals": "^17.5.0",
67
+ "husky": "^9.1.7",
68
+ "jsdom": "^26.1.0",
69
+ "lint-staged": "^16.4.0",
70
+ "markdownlint-cli2": "^0.22.1",
71
+ "markdownlint-cli2-formatter-default": "^0.0.6",
72
+ "prettier": "^3.8.3",
73
+ "semantic-release": "^25.0.3",
74
+ "terser": "^5.44.0",
75
+ "textmode.js": "^0.12.0",
76
+ "typedoc": "^0.28.19",
77
+ "typedoc-plugin-frontmatter": "^1.3.1",
78
+ "typedoc-plugin-markdown": "^4.11.0",
79
+ "typedoc-vitepress-theme": "^1.1.2",
80
+ "typescript": "^5.9.2",
81
+ "typescript-eslint": "^8.59.0",
82
+ "vite": "^6.3.4",
83
+ "vite-plugin-css-injected-by-js": "^3.5.2",
84
+ "vitest": "^3.1.2"
85
+ },
86
+ "keywords": [
87
+ "textmode",
88
+ "textmode.js",
89
+ "ascii",
90
+ "petscii",
91
+ "export",
92
+ "plugin",
93
+ "gif",
94
+ "video",
95
+ "webm",
96
+ "svg",
97
+ "json",
98
+ "image",
99
+ "png",
100
+ "jpg",
101
+ "webp",
102
+ "creative-coding",
103
+ "canvas"
104
+ ],
105
+ "author": "humanbydefinition <hello@textmode.art> (https://code.textmode.art)",
106
+ "license": "MIT",
107
+ "homepage": "https://code.textmode.art",
108
+ "lint-staged": {
109
+ "*": "prettier --ignore-unknown --write"
110
+ },
111
+ "repository": {
112
+ "type": "git",
113
+ "url": "git+https://github.com/humanbydefinition/textmode.export.js.git"
114
+ },
115
+ "bugs": {
116
+ "url": "https://github.com/humanbydefinition/textmode.export.js/issues"
117
+ }
118
+ }