diff --git a/examples/codemirror-repl/main.js b/examples/codemirror-repl/main.js index 5b5714fb7..2d360ce5d 100644 --- a/examples/codemirror-repl/main.js +++ b/examples/codemirror-repl/main.js @@ -29,6 +29,7 @@ const editor = new StrudelMirror({ import('@strudel/core'), import('@strudel/draw'), import('@strudel/mini'), + import('@strudel/shader'), import('@strudel/tonal'), import('@strudel/webaudio'), ); diff --git a/packages/draw/index.mjs b/packages/draw/index.mjs index 98ac989af..506c6151d 100644 --- a/packages/draw/index.mjs +++ b/packages/draw/index.mjs @@ -2,6 +2,5 @@ export * from './animate.mjs'; export * from './color.mjs'; export * from './draw.mjs'; export * from './pianoroll.mjs'; -export * from './shader.mjs'; export * from './spiral.mjs'; export * from './pitchwheel.mjs'; diff --git a/packages/draw/package.json b/packages/draw/package.json index b65817504..a6a88ecfa 100644 --- a/packages/draw/package.json +++ b/packages/draw/package.json @@ -29,8 +29,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel/core": "workspace:*", - "picogl": "^0.17.9" + "@strudel/core": "workspace:*" }, "devDependencies": { "vite": "^5.0.10" diff --git a/packages/repl/prebake.mjs b/packages/repl/prebake.mjs index 9fc1c8819..f0f72687f 100644 --- a/packages/repl/prebake.mjs +++ b/packages/repl/prebake.mjs @@ -12,6 +12,7 @@ export async function prebake() { import('@strudel/webaudio'), import('@strudel/codemirror'), import('@strudel/hydra'), + import('@strudel/shader'), import('@strudel/soundfonts'), import('@strudel/midi'), // import('@strudel/xen'), diff --git a/packages/shader/README.md b/packages/shader/README.md new file mode 100644 index 000000000..851cc7814 --- /dev/null +++ b/packages/shader/README.md @@ -0,0 +1,3 @@ +# @strudel/shader + +Helpers for drawing shader diff --git a/packages/draw/shader.mjs b/packages/shader/index.mjs similarity index 100% rename from packages/draw/shader.mjs rename to packages/shader/index.mjs diff --git a/packages/shader/package.json b/packages/shader/package.json new file mode 100644 index 000000000..55e1250e7 --- /dev/null +++ b/packages/shader/package.json @@ -0,0 +1,39 @@ +{ + "name": "@strudel/shader", + "version": "1.0.0", + "description": "Helpers for drawing shader", + "main": "index.mjs", + "type": "module", + "publishConfig": { + "main": "dist/index.mjs" + }, + "scripts": { + "build": "vite build", + "prepublishOnly": "npm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "keywords": [ + "titdalcycles", + "strudel", + "pattern", + "livecoding", + "algorave", + "shader" + ], + "author": "Felix Roos ", + "license": "AGPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://github.com/tidalcycles/strudel#readme", + "dependencies": { + "@strudel/core": "workspace:*", + "picogl": "^0.17.9" + }, + "devDependencies": { + "vite": "^5.0.10" + } +} diff --git a/packages/shader/vite.config.js b/packages/shader/vite.config.js new file mode 100644 index 000000000..5df3edc1b --- /dev/null +++ b/packages/shader/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es'], + fileName: (ext) => ({ es: 'index.mjs' })[ext], + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a18f06e73..fb7fba514 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -406,6 +406,19 @@ importers: specifier: ^5.0.10 version: 5.4.9(@types/node@22.7.6)(terser@5.36.0) + packages/shader: + dependencies: + '@strudel/core': + specifier: workspace:* + version: link:../core + picogl: + specifier: ^0.17.9 + version: 0.17.9 + devDependencies: + vite: + specifier: ^5.0.10 + version: 5.4.9(@types/node@22.7.6)(terser@5.36.0) + packages/soundfonts: dependencies: '@strudel/core': @@ -629,6 +642,9 @@ importers: '@strudel/serial': specifier: workspace:* version: link:../packages/serial + '@strudel/shader': + specifier: workspace:* + version: link:../packages/shader '@strudel/soundfonts': specifier: workspace:* version: link:../packages/soundfonts @@ -6084,6 +6100,9 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picogl@0.17.9: + resolution: {integrity: sha512-TfqB7jlD5FTO4a/Rp9wnMhVjPA0XZ/xbtLS2f8eHtOmVtIOhFD7Wf0jUL6kDjww3bgF/REEV9oPreBeGvWFlUQ==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -14789,6 +14808,8 @@ snapshots: picocolors@1.1.1: {} + picogl@0.17.9: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} diff --git a/website/package.json b/website/package.json index 942fee9c6..176454660 100644 --- a/website/package.json +++ b/website/package.json @@ -35,6 +35,7 @@ "@strudel/mini": "workspace:*", "@strudel/osc": "workspace:*", "@strudel/serial": "workspace:*", + "@strudel/shader": "workspace:*", "@strudel/soundfonts": "workspace:*", "@strudel/tonal": "workspace:*", "@strudel/transpiler": "workspace:*", diff --git a/website/src/repl/util.mjs b/website/src/repl/util.mjs index 905e16b09..901f3323f 100644 --- a/website/src/repl/util.mjs +++ b/website/src/repl/util.mjs @@ -78,6 +78,7 @@ export function loadModules() { import('@strudel/codemirror'), import('@strudel/hydra'), import('@strudel/serial'), + import('@strudel/shader'), import('@strudel/soundfonts'), import('@strudel/csound'), import('@strudel/tidal'),