diff --git a/packages/codemirror/basicSetup.mjs b/packages/codemirror/basicSetup.mjs index 02294b93a..1bad65f8b 100644 --- a/packages/codemirror/basicSetup.mjs +++ b/packages/codemirror/basicSetup.mjs @@ -2,23 +2,13 @@ import { keymap, highlightSpecialChars, drawSelection, - highlightActiveLine, dropCursor, rectangularSelection, crosshairCursor, - lineNumbers, - highlightActiveLineGutter, } from '@codemirror/view'; -import { - defaultHighlightStyle, - syntaxHighlighting, - bracketMatching, - foldGutter, - foldKeymap, -} from '@codemirror/language'; +import { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language'; import { defaultKeymap, history, historyKeymap } from '@codemirror/commands'; -import { searchKeymap, highlightSelectionMatches } from '@codemirror/search'; -import { completionKeymap, closeBracketsKeymap } from '@codemirror/autocomplete'; +import { closeBracketsKeymap } from '@codemirror/autocomplete'; // Taken + slightly modified from https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index d6f6e5986..15642880b 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -2354,8 +2354,8 @@ export const ply = register('ply', function (factor, pat) { * @example * s("bd hh sd hh").fast(2) // s("[bd hh sd hh]*2") */ -export const { fast, density } = register( - ['fast', 'density'], +export const { fast } = register( + 'fast', function (factor, pat) { if (factor === 0) { return silence; diff --git a/packages/soundfonts/fontloader.mjs b/packages/soundfonts/fontloader.mjs index b4ae59828..073dc4901 100644 --- a/packages/soundfonts/fontloader.mjs +++ b/packages/soundfonts/fontloader.mjs @@ -28,7 +28,7 @@ async function loadFont(name) { const url = `${soundfontUrl}/${name}.js`; const preset = await fetch(url).then((res) => res.text()); let [_, data] = preset.split('={'); - return eval('{' + data); + return new Function('return {' + data)().zones; }; loadCache[name] = load(); return loadCache[name]; diff --git a/packages/webaudio/supradough.mjs b/packages/webaudio/supradough.mjs index 83458c54e..925a9bd5e 100644 --- a/packages/webaudio/supradough.mjs +++ b/packages/webaudio/supradough.mjs @@ -61,7 +61,7 @@ function githubPath(base, subpath = '') { } return `https://raw.githubusercontent.com/${path}/${subpath}`; } -export async function fetchSampleMap(url) { +export async function _fetchSampleMap(url) { if (url.startsWith('github:')) { url = githubPath(url, 'strudel.json'); } @@ -116,7 +116,7 @@ async function fetchSample(url) { export async function supradoughsamples(sampleMap, baseUrl) { if (typeof sampleMap === 'string') { - const [json, base] = await fetchSampleMap(sampleMap); + const [json, base] = await _fetchSampleMap(sampleMap); // console.log('json', json, 'base', base); return supradoughsamples(json, base); } diff --git a/packages/xen/xen.mjs b/packages/xen/xen.mjs index 0dcc4c9d6..a3d11ac7d 100644 --- a/packages/xen/xen.mjs +++ b/packages/xen/xen.mjs @@ -106,7 +106,7 @@ export const xen = register( let k = parray(input); return new Pattern((state) => { - let res = k.withValue((x) => x.map((y) => eval(y.join('/')))).query(state); + let res = k.withValue((x) => x.map((y) => y.reduce((acc, v) => acc / v))).query(state); return res; }); }; diff --git a/website/src/my_patterns.js b/website/src/my_patterns.js index 5779cc427..bb10e2a86 100644 --- a/website/src/my_patterns.js +++ b/website/src/my_patterns.js @@ -1,7 +1,7 @@ import { getMetadata } from './metadata_parser'; export function getMyPatterns() { - const my = import.meta.glob('../../my-patterns/**', { as: 'raw', eager: true }); + const my = import.meta.glob('../../my-patterns/**', { query: '?raw', eager: true }); return Object.fromEntries( Object.entries(my) .filter(([name]) => name.endsWith('.txt')) diff --git a/website/src/repl/util.mjs b/website/src/repl/util.mjs index bd1a85f24..4561f06e9 100644 --- a/website/src/repl/util.mjs +++ b/website/src/repl/util.mjs @@ -1,12 +1,15 @@ -import { code2hash, errorLogger, evalScope, hash2code, logger } from '@strudel/core'; +import * as strudelCore from '@strudel/core'; +import * as strudelWebaudio from '@strudel/webaudio'; import { settingPatterns } from '../settings.mjs'; -import { setVersionDefaults } from '@strudel/webaudio'; -import { getMetadata } from '../metadata_parser'; +import { getMetadata } from '../metadata_parser.js'; import { isTauri } from '../tauri.mjs'; import './Repl.css'; import { createClient } from '@supabase/supabase-js'; import { writeText } from '@tauri-apps/plugin-clipboard-manager'; -import { $featuredPatterns /* , loadDBPatterns */ } from '@src/user_pattern_utils.mjs'; +import { $featuredPatterns } from '@src/user_pattern_utils.mjs'; + +const { setVersionDefaults } = strudelWebaudio; +const { code2hash, errorLogger, evalScope, hash2code, logger } = strudelCore; // Create a single supabase client for interacting with your database export const supabase = createClient( @@ -68,13 +71,13 @@ export async function getRandomTune() { export function loadModules() { let modules = [ - import('@strudel/core'), + strudelCore, import('@strudel/draw'), import('@strudel/edo'), import('@strudel/tonal'), import('@strudel/mini'), import('@strudel/xen'), - import('@strudel/webaudio'), + strudelWebaudio, import('@strudel/codemirror'), import('@strudel/hydra'), import('@strudel/serial'),