fragment-tools 0.1.13 → 0.1.15

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 (184) hide show
  1. package/.prettierignore +1 -2
  2. package/.prettierrc +23 -7
  3. package/README.md +28 -9
  4. package/bin/index.js +70 -10
  5. package/package.json +14 -6
  6. package/src/cli/build.js +125 -0
  7. package/src/cli/create.js +238 -0
  8. package/src/cli/createConfig.js +82 -0
  9. package/src/cli/createFragmentFile.js +70 -0
  10. package/src/cli/getEntries.js +85 -0
  11. package/src/cli/log.js +36 -24
  12. package/src/cli/plugins/check-dependencies.js +88 -42
  13. package/src/cli/plugins/hot-shader-replacement.js +408 -0
  14. package/src/cli/plugins/hot-sketch-reload.js +21 -25
  15. package/src/cli/plugins/save.js +101 -0
  16. package/src/cli/preview.js +55 -0
  17. package/src/cli/prompts.js +260 -0
  18. package/src/cli/run.js +131 -0
  19. package/src/cli/templates/blank/index.js +33 -0
  20. package/src/cli/templates/blank/meta.json +4 -0
  21. package/src/cli/templates/default/index.js +39 -0
  22. package/src/cli/templates/default/meta.json +5 -0
  23. package/src/cli/templates/fragment-gl/index.js +37 -0
  24. package/src/cli/templates/fragment-gl/meta.json +4 -0
  25. package/src/cli/templates/p5/index.js +32 -0
  26. package/src/cli/templates/p5/meta.json +5 -0
  27. package/src/cli/templates/p5-webgl/fragment.fs +14 -0
  28. package/src/cli/templates/p5-webgl/index.js +67 -0
  29. package/src/cli/templates/p5-webgl/meta.json +5 -0
  30. package/src/cli/templates/three-fragment/fragment.fs +10 -0
  31. package/src/cli/templates/three-fragment/index.js +95 -0
  32. package/src/cli/templates/three-fragment/meta.json +5 -0
  33. package/src/cli/templates/three-orthographic/index.js +55 -0
  34. package/src/cli/templates/three-orthographic/meta.json +5 -0
  35. package/src/cli/templates/three-perspective/index.js +52 -0
  36. package/src/cli/templates/three-perspective/meta.json +5 -0
  37. package/src/cli/utils.js +70 -0
  38. package/src/cli/ws.js +87 -78
  39. package/src/client/app/App.svelte +3 -3
  40. package/src/client/app/client.js +55 -39
  41. package/src/client/app/components/IconCross.svelte +18 -18
  42. package/src/client/app/components/Init.svelte +40 -8
  43. package/src/client/app/components/KeyBinding.svelte +22 -22
  44. package/src/client/app/helpers.js +42 -0
  45. package/src/client/app/hooks.js +20 -0
  46. package/src/client/app/inputs/Input.js +9 -9
  47. package/src/client/app/inputs/Keyboard.js +13 -15
  48. package/src/client/app/inputs/MIDI.js +14 -15
  49. package/src/client/app/inputs/Mouse.js +1 -1
  50. package/src/client/app/inputs/Webcam.js +89 -88
  51. package/src/client/app/lib/canvas-recorder/CanvasRecorder.js +41 -21
  52. package/src/client/app/lib/canvas-recorder/FrameRecorder.js +7 -6
  53. package/src/client/app/lib/canvas-recorder/H264Recorder.js +45 -0
  54. package/src/client/app/lib/canvas-recorder/MP4Recorder.js +7 -9
  55. package/src/client/app/lib/canvas-recorder/WebMRecorder.js +3 -4
  56. package/src/client/app/lib/canvas-recorder/mp4.js +1649 -15
  57. package/src/client/app/lib/canvas-recorder/utils.js +33 -17
  58. package/src/client/app/lib/gl/Geometry.js +11 -8
  59. package/src/client/app/lib/gl/Program.js +38 -19
  60. package/src/client/app/lib/gl/Renderer.js +163 -156
  61. package/src/client/app/lib/gl/Texture.js +113 -85
  62. package/src/client/app/lib/gl/index.js +12 -12
  63. package/src/client/app/lib/gl/utils.js +1 -3
  64. package/src/client/app/lib/helpers/frameDebounce.js +30 -30
  65. package/src/client/app/lib/loader/index.js +10 -10
  66. package/src/client/app/lib/loader/loadImage.js +15 -15
  67. package/src/client/app/lib/loader/loadScript.js +1 -1
  68. package/src/client/app/lib/paper-sizes.js +75 -76
  69. package/src/client/app/lib/presets.js +25 -5
  70. package/src/client/app/lib/tempo/Analyser.js +18 -17
  71. package/src/client/app/lib/tempo/Range.js +15 -12
  72. package/src/client/app/lib/tempo/index.js +34 -27
  73. package/src/client/app/modules/AudioAnalyser/Range.svelte +69 -72
  74. package/src/client/app/modules/AudioAnalyser/Spectrum.svelte +20 -19
  75. package/src/client/app/modules/AudioAnalyser.svelte +52 -35
  76. package/src/client/app/modules/Console/ConsoleLine.svelte +193 -172
  77. package/src/client/app/modules/Console.svelte +76 -74
  78. package/src/client/app/modules/Exports.svelte +62 -43
  79. package/src/client/app/modules/MidiPanel.svelte +100 -101
  80. package/src/client/app/modules/Monitor.svelte +57 -57
  81. package/src/client/app/modules/Params.svelte +128 -103
  82. package/src/client/app/renderers/2DRenderer.js +3 -3
  83. package/src/client/app/renderers/FragmentRenderer.js +30 -23
  84. package/src/client/app/renderers/P5GLRenderer.js +144 -0
  85. package/src/client/app/renderers/P5Renderer.js +10 -7
  86. package/src/client/app/renderers/THREERenderer.js +136 -94
  87. package/src/client/app/stores/audioAnalysis.js +3 -4
  88. package/src/client/app/stores/console.js +9 -10
  89. package/src/client/app/stores/errors.js +1 -1
  90. package/src/client/app/stores/exports.js +36 -20
  91. package/src/client/app/stores/index.js +2 -2
  92. package/src/client/app/stores/layout.js +143 -138
  93. package/src/client/app/stores/multisampling.js +4 -4
  94. package/src/client/app/stores/props.js +76 -13
  95. package/src/client/app/stores/renderers.js +26 -15
  96. package/src/client/app/stores/rendering.js +108 -89
  97. package/src/client/app/stores/sketches.js +7 -9
  98. package/src/client/app/stores/time.js +18 -18
  99. package/src/client/app/stores/utils.js +95 -38
  100. package/src/client/app/transitions/fade.js +3 -3
  101. package/src/client/app/transitions/index.js +6 -7
  102. package/src/client/app/transitions/splitX.js +2 -2
  103. package/src/client/app/transitions/splitY.js +2 -2
  104. package/src/client/app/triggers/Keyboard.js +88 -79
  105. package/src/client/app/triggers/MIDI.js +110 -84
  106. package/src/client/app/triggers/Mouse.js +73 -65
  107. package/src/client/app/triggers/Trigger.js +59 -58
  108. package/src/client/app/triggers/index.js +7 -7
  109. package/src/client/app/triggers/shared.js +5 -5
  110. package/src/client/app/ui/Build.svelte +70 -71
  111. package/src/client/app/ui/ErrorOverlay.svelte +118 -104
  112. package/src/client/app/ui/Field.svelte +393 -258
  113. package/src/client/app/ui/FieldGroup.svelte +106 -94
  114. package/src/client/app/ui/FieldSection.svelte +127 -116
  115. package/src/client/app/ui/FieldSpace.svelte +29 -30
  116. package/src/client/app/ui/FieldTrigger.svelte +256 -244
  117. package/src/client/app/ui/FieldTriggers.svelte +46 -46
  118. package/src/client/app/ui/FloatingParams.svelte +29 -30
  119. package/src/client/app/ui/Layout.svelte +31 -32
  120. package/src/client/app/ui/LayoutColumn.svelte +4 -4
  121. package/src/client/app/ui/LayoutComponent.svelte +239 -225
  122. package/src/client/app/ui/LayoutResizer.svelte +195 -176
  123. package/src/client/app/ui/LayoutRoot.svelte +6 -6
  124. package/src/client/app/ui/LayoutRow.svelte +4 -4
  125. package/src/client/app/ui/LayoutToolbar.svelte +191 -194
  126. package/src/client/app/ui/Module.svelte +134 -135
  127. package/src/client/app/ui/ModuleHeaderAction.svelte +81 -78
  128. package/src/client/app/ui/ModuleHeaderButton.svelte +12 -12
  129. package/src/client/app/ui/ModuleHeaderSelect.svelte +47 -37
  130. package/src/client/app/ui/ModuleRenderer.svelte +26 -27
  131. package/src/client/app/ui/OutputRenderer.svelte +112 -105
  132. package/src/client/app/ui/ParamsMultisampling.svelte +96 -95
  133. package/src/client/app/ui/ParamsOutput.svelte +130 -113
  134. package/src/client/app/ui/Preview.svelte +7 -8
  135. package/src/client/app/ui/SelectChevrons.svelte +27 -15
  136. package/src/client/app/ui/SketchRenderer.svelte +780 -667
  137. package/src/client/app/ui/SketchSelect.svelte +50 -44
  138. package/src/client/app/ui/fields/ButtonInput.svelte +61 -48
  139. package/src/client/app/ui/fields/CheckboxInput.svelte +67 -61
  140. package/src/client/app/ui/fields/ColorInput.svelte +294 -238
  141. package/src/client/app/ui/fields/FieldInputRow.svelte +8 -8
  142. package/src/client/app/ui/fields/ImageInput.svelte +123 -121
  143. package/src/client/app/ui/fields/Input.svelte +100 -111
  144. package/src/client/app/ui/fields/IntervalInput.svelte +268 -0
  145. package/src/client/app/ui/fields/ListInput.svelte +96 -96
  146. package/src/client/app/ui/fields/NumberInput.svelte +120 -116
  147. package/src/client/app/ui/fields/ProgressInput.svelte +99 -73
  148. package/src/client/app/ui/fields/Select.svelte +137 -124
  149. package/src/client/app/ui/fields/TextInput.svelte +10 -11
  150. package/src/client/app/ui/fields/VectorInput.svelte +86 -82
  151. package/src/client/app/utils/canvas.utils.js +189 -208
  152. package/src/client/app/utils/color.utils.js +138 -101
  153. package/src/client/app/utils/fields.utils.js +131 -0
  154. package/src/client/app/utils/file.utils.js +209 -37
  155. package/src/client/app/utils/glsl.utils.js +2 -2
  156. package/src/client/app/utils/glslErrors.js +49 -31
  157. package/src/client/app/utils/index.js +32 -29
  158. package/src/client/app/utils/math.utils.js +14 -10
  159. package/src/client/index.html +16 -16
  160. package/src/client/main.js +4 -4
  161. package/src/client/public/css/global.css +26 -16
  162. package/src/cli/db.js +0 -17
  163. package/src/cli/index.js +0 -198
  164. package/src/cli/plugins/db.js +0 -12
  165. package/src/cli/plugins/hot-shader-reload.js +0 -86
  166. package/src/cli/plugins/screenshot.js +0 -46
  167. package/src/cli/server.js +0 -153
  168. package/src/cli/templates/2d.js +0 -15
  169. package/src/cli/templates/blank.js +0 -13
  170. package/src/cli/templates/fragment.js +0 -18
  171. package/src/cli/templates/index.js +0 -27
  172. package/src/cli/templates/p5.js +0 -13
  173. package/src/cli/templates/three-fragment.js +0 -53
  174. package/src/cli/templates/three-orthographic.js +0 -23
  175. package/src/cli/templates/three-perspective.js +0 -20
  176. package/src/client/app/lib/canvas-recorder/FFMPEGRecorder.js +0 -56
  177. package/src/client/app/utils/props.utils.js +0 -51
  178. package/src/client/public/fonts/Inter-Bold.woff2 +0 -0
  179. package/src/client/public/fonts/Inter-Italic.woff2 +0 -0
  180. package/src/client/public/fonts/Inter-Regular.woff2 +0 -0
  181. package/src/client/public/fonts/Inter-SemiBold.woff2 +0 -0
  182. package/src/client/public/js/ffmpeg.min.js +0 -2
  183. package/src/client/public/js/ffmpeg.min.js.map +0 -1
  184. /package/src/cli/templates/{fragment.fs → fragment-gl/fragment.fs} +0 -0
@@ -0,0 +1,70 @@
1
+ import path from 'node:path';
2
+ import { writeFile } from 'node:fs/promises';
3
+ import { log } from './log.js';
4
+ import { mkdirp } from './utils.js';
5
+
6
+ /**
7
+ * Create local files needed by Fragment
8
+ * @param {string[]} entries
9
+ * @param {string} cwd Current working directory
10
+ * @returns {string}
11
+ */
12
+ export async function createFragmentFile(entries = [], cwd = process.cwd()) {
13
+ try {
14
+ function getFilenameFromEntries(entries) {
15
+ if (entries.length === 1) {
16
+ const filename = path.parse(entries[0]).name;
17
+
18
+ return `${filename}.js`;
19
+ }
20
+
21
+ return `sketches.js`;
22
+ }
23
+
24
+ log.info(`Generating files...`);
25
+
26
+ const dir = '/node_modules/.fragment';
27
+ const dirpath = path.join(cwd, dir);
28
+ const filename = getFilenameFromEntries(entries);
29
+ const filepath = path.join(dirpath, filename);
30
+
31
+ // generate sketch index file
32
+ const code = /* js */ `
33
+ // This file is generated by Fragment. Do not edit it.
34
+
35
+ export const sketches = {
36
+ ${entries
37
+ .map((entry) => {
38
+ const entryPath = entry.split(path.sep).join(path.posix.sep);
39
+ const relativeEntryPath = `../../${entry}`
40
+ .split(path.sep)
41
+ .join(path.posix.sep);
42
+
43
+ return `"${entryPath}": () => import("${relativeEntryPath}")`;
44
+ })
45
+ .join(',')}
46
+ };
47
+
48
+ export const onSketchReload = (fn) => {
49
+ if (import.meta.hot) {
50
+ import.meta.hot.data.onSketchChange = fn;
51
+ }
52
+ };
53
+
54
+ if (import.meta.hot) {
55
+ import.meta.hot.accept((m) => {
56
+ if (typeof import.meta.hot.data.onSketchChange === "function") {
57
+ import.meta.hot.data.onSketchChange(m);
58
+ }
59
+ });
60
+ }
61
+ `;
62
+
63
+ await mkdirp(dirpath);
64
+ await writeFile(filepath, code);
65
+
66
+ return filepath;
67
+ } catch (error) {
68
+ throw error;
69
+ }
70
+ }
@@ -0,0 +1,85 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import { lstat, readdir } from 'node:fs/promises';
4
+ import { bold, cyan, log } from './log.js';
5
+ import * as p from './prompts.js';
6
+ import { addExtension } from './utils.js';
7
+
8
+ /**
9
+ * Build entries from entry filepath or folder path
10
+ * @param {string} entry
11
+ * @param {string} cwd - Current working directory
12
+ * @returns {string[]}
13
+ */
14
+ export async function getEntries(
15
+ entry,
16
+ cwd = process.cwd(),
17
+ command,
18
+ prefix = log.prefix(command),
19
+ ) {
20
+ const displayCommand = (message) => {
21
+ p.note(bold(cyan(message)));
22
+ };
23
+
24
+ const onError = (message) => {
25
+ log.error(`Error\n`, prefix);
26
+ log.warn(message);
27
+ };
28
+
29
+ try {
30
+ const entries = [];
31
+
32
+ if (!entry) {
33
+ onError(`You need to specify a file to start Fragment.\n`);
34
+ displayCommand(
35
+ `fragment${command === 'build' ? ' build' : ''} [your-file].js`,
36
+ );
37
+ return entries;
38
+ }
39
+
40
+ const entryPath = path.join(cwd, entry);
41
+
42
+ if (fs.existsSync(entryPath)) {
43
+ const stats = await lstat(entryPath);
44
+
45
+ if (stats.isFile()) {
46
+ entries.push(path.relative(cwd, entryPath));
47
+ } else if (stats.isDirectory()) {
48
+ const files = await readdir(entryPath);
49
+ const sketchFiles = files
50
+ .filter((file) => path.extname(file) === '.js')
51
+ .map((file) => path.join(entryPath, file));
52
+
53
+ if (sketchFiles.length > 0) {
54
+ entries.push(
55
+ ...sketchFiles.map((sketchFile) =>
56
+ path.relative(cwd, sketchFile),
57
+ ),
58
+ );
59
+ } else {
60
+ onError(`Folder doesn't contain any sketch files.`);
61
+ }
62
+ }
63
+ } else {
64
+ onError(`${path.join(cwd, entry)} does not exist.\n`);
65
+
66
+ const entryWithExt = addExtension(entry, '.js');
67
+ const fileExists = fs.existsSync(path.join(cwd, entryWithExt));
68
+
69
+ if (fileExists) {
70
+ log.message(`Did you mean to type?\n`);
71
+
72
+ displayCommand(`fragment ${entryWithExt}`);
73
+ } else {
74
+ log.message(
75
+ `Run the following command to start a new sketch:\n`,
76
+ );
77
+ displayCommand(`fragment ${entryWithExt} --new`);
78
+ }
79
+ }
80
+
81
+ return entries;
82
+ } catch (error) {
83
+ throw error;
84
+ }
85
+ }
package/src/cli/log.js CHANGED
@@ -1,26 +1,38 @@
1
- import kleur from "kleur";
1
+ import { green, yellow, grey, inverse, red } from 'kleur/colors';
2
2
 
3
- const log = (() => {
4
- let prefix = kleur.grey('[fragment]');
3
+ export const log = {
4
+ message: (message = '', prefix) => {
5
+ const prefixed = prefix ? `${prefix} ` : ``;
6
+ process.stdout.write(`${prefixed}${message}\n`);
7
+ },
8
+ info: (message = '', prefix) => {
9
+ log.message(grey(`${message}`), prefix);
10
+ },
11
+ success: (message = '', prefix) => {
12
+ log.message(green(`${message}`), prefix);
13
+ },
14
+ warn: (message = '', prefix) => {
15
+ log.message(yellow(`${message}`), prefix);
16
+ },
17
+ /** alias for `log.warn()`. */
18
+ warning: (message = '', prefix) => {
19
+ log.warn(message, prefix);
20
+ },
21
+ error: (message = '', prefix) => {
22
+ log.message(red(`${message}`), prefix);
23
+ },
24
+ prefix: (label) => {
25
+ return inverse(` ${label} `);
26
+ },
27
+ };
5
28
 
6
- const success = (message) => {
7
- console.log(prefix, kleur.green(`✔ ${message}`));
8
- };
9
-
10
- const warning = (message) => {
11
- console.log(prefix, kleur.yellow(`ℹ ${message}`));
12
- };
13
-
14
- const error = (message) => {
15
- console.log(prefix, kleur.red(`✖ ${message}`));
16
- };
17
-
18
- return {
19
- prefix,
20
- success,
21
- warning,
22
- error,
23
- };
24
- })();
25
-
26
- export default log;
29
+ export {
30
+ green,
31
+ magenta,
32
+ cyan,
33
+ bold,
34
+ grey,
35
+ yellow,
36
+ dim,
37
+ red,
38
+ } from 'kleur/colors';
@@ -1,50 +1,85 @@
1
- import path from "path";
2
- import fs from "fs";
3
- import log from "../log.js";
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import { log, bold, cyan, dim, magenta } from '../log.js';
4
+ import { packageManager } from '../utils.js';
5
+ import * as p from '../prompts.js';
4
6
 
5
- export default function checkDependencies({ cwd, app, entriesPaths, build } = {}) {
6
- const regex = /\bexport[\s]*\b(let|const)[\s]*\brendering\b[\s]*=[\s]*["'](.*?)["']/;
7
+ /**
8
+ *
9
+ * @param {object} params
10
+ * @param {string} params.cwd - Current working directory
11
+ * @param {string} params.app - App directory
12
+ * @param {string[]} params.entriesPaths - Absolute entries paths
13
+ * @param {boolean} params.build - Building for production
14
+ * @returns {import('vite').Plugin}
15
+ */
16
+ export default function checkDependencies({
17
+ cwd = process.cwd(),
18
+ app,
19
+ entriesPaths,
20
+ build,
21
+ } = {}) {
22
+ const regex =
23
+ /\bexport[\s]*\b(let|const)[\s]*\brendering\b[\s]*=[\s]*["'](.*?)["']/;
7
24
 
8
- const dependenciesMap = new Map();
9
- dependenciesMap.set("three", ["three"]);
10
- dependenciesMap.set("p5", ["p5"]);
11
- dependenciesMap.set("fragment", []);
12
- dependenciesMap.set("2d", []);
25
+ const dependenciesMap = new Map();
26
+ dependenciesMap.set('three', ['three']);
27
+ dependenciesMap.set('p5', ['p5']);
28
+ dependenciesMap.set('p5-webgl', ['p5']);
29
+ dependenciesMap.set('fragment', []);
30
+ dependenciesMap.set('2d', []);
13
31
 
14
32
  const renderers = new Map();
15
- renderers.set("three", `${app}/renderers/THREERenderer.js`);
16
- renderers.set("p5", `${app}/renderers/P5Renderer.js`);
17
- renderers.set("ogl", `${app}/renderers/OGLRenderer.js`);
18
- renderers.set("fragment", `${app}/renderers/FragmentRenderer.js`);
19
- renderers.set("2d", `${app}/renderers/2DRenderer.js`);
33
+ renderers.set('three', `${app}/renderers/THREERenderer.js`);
34
+ renderers.set('p5', `${app}/renderers/P5Renderer.js`);
35
+ renderers.set('p5-webgl', `${app}/renderers/P5GLRenderer.js`);
36
+ renderers.set('ogl', `${app}/renderers/OGLRenderer.js`);
37
+ renderers.set('fragment', `${app}/renderers/FragmentRenderer.js`);
38
+ renderers.set('2d', `${app}/renderers/2DRenderer.js`);
20
39
 
21
40
  const renderings = [];
22
41
 
23
42
  entriesPaths.forEach((entry) => {
24
- const content = fs.readFileSync(entry, { encoding: "utf-8" });
25
- const match = content.match(regex);
43
+ const content = fs.readFileSync(entry, { encoding: 'utf-8' });
44
+ const match = content.match(regex);
26
45
  const rendering = match && match[2];
27
46
 
28
47
  if (rendering) {
29
48
  renderings.push(rendering);
30
49
 
31
- const dependencies = dependenciesMap.get(rendering);
32
- dependencies.forEach((dependency) => {
33
- const dependencyPath = path.join(cwd, `node_modules/${dependency}`);
34
- const isInstalled = fs.existsSync(dependencyPath);
50
+ if (dependenciesMap.has(rendering)) {
51
+ const dependencies = dependenciesMap.get(rendering);
52
+ dependencies.forEach((dependency) => {
53
+ const dependencyPath = path.join(
54
+ cwd,
55
+ `node_modules/${dependency}`,
56
+ );
57
+ const isInstalled = fs.existsSync(dependencyPath);
35
58
 
36
- if (!isInstalled) {
37
- const filename = entry.split(`${cwd}/`)[1];
38
- const error = `Missing dependency "${dependency}" in ${filename}`;
39
- log.error(error);
40
- console.log(`
41
- It looks like you're trying to build a ${dependency} sketch (${filename}) without having ${dependency} installed.
42
- Run 'npm install ${dependency}' before starting Fragment to run ${filename}.
43
- `)
59
+ if (!isInstalled) {
60
+ const filename = entry.split(`${cwd}/`)[1];
61
+ log.message();
62
+ log.error(
63
+ `Missing dependency "${dependency}" in ${filename}\n`,
64
+ log.prefix(`run`),
65
+ );
66
+ log.warn(
67
+ `It looks like you're trying to build a sketch with the following dependency: ${bold(dependency)}. It needs to be installed before running Fragment.\n`,
68
+ );
44
69
 
45
- throw new Error(error);
46
- }
47
- });
70
+ log.message(
71
+ `Follow the next steps to start running ${magenta(filename)} with Fragment:\n`,
72
+ );
73
+
74
+ p.note(
75
+ `${dim(`1. Install dependencies`)}\n${bold(cyan(`${packageManager} install ${dependency}`))}\n${dim(`2. Start Fragment`)}\n${bold(cyan(`fragment ${filename}`))}`,
76
+ '',
77
+ );
78
+
79
+ process.exit(1);
80
+ }
81
+ });
82
+ }
48
83
  }
49
84
  });
50
85
 
@@ -58,20 +93,31 @@ Run 'npm install ${dependency}' before starting Fragment to run ${filename}.
58
93
  })
59
94
  .flat();
60
95
 
61
- return {
62
- name: 'check-dependencies',
96
+ return {
97
+ name: 'check-dependencies',
63
98
  config: () => ({
64
99
  define: {
65
- '__THREE_RENDERER__': build ? renderings.some((rendering) => rendering === "three") : true,
66
- '__P5_RENDERER__': build ? renderings.some((rendering) => rendering === "p5") : true,
67
- '__FRAGMENT_RENDERER__': build ? renderings.some((rendering) => rendering === "fragment") : true,
68
- '__2D_RENDERER__': build ? renderings.some((rendering) => rendering === "2d") : true,
100
+ __THREE_RENDERER__: build
101
+ ? renderings.some((rendering) => rendering === 'three')
102
+ : true,
103
+ __P5_RENDERER__: build
104
+ ? renderings.some((rendering) => rendering === 'p5')
105
+ : true,
106
+ __P5_WEBGL_RENDERER__: build
107
+ ? renderings.some((rendering) => rendering === 'p5-webgl')
108
+ : true,
109
+ __FRAGMENT_RENDERER__: build
110
+ ? renderings.some((rendering) => rendering === 'fragment')
111
+ : true,
112
+ __2D_RENDERER__: build
113
+ ? renderings.some((rendering) => rendering === '2d')
114
+ : true,
69
115
  },
70
116
  }),
71
- load(id) {
117
+ load(id) {
72
118
  if (build && skipFiles.includes(id)) {
73
- return { code: "", map: null };
119
+ return { code: '', map: null };
74
120
  }
75
- },
76
- };
121
+ },
122
+ };
77
123
  }