diff --git a/package-lock.json b/package-lock.json index 1b469861..986af55d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8504,6 +8504,31 @@ "node": ">=8" } }, + "node_modules/peggy": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/peggy/-/peggy-2.0.1.tgz", + "integrity": "sha512-mBqfmdUAOVn7RILpXTbcRBhLfTR4Go0SresSnivGDdRylBOyVFJncFiVyCNNpPWq8HmgeRleXHs/Go4o8kQVXA==", + "dev": true, + "dependencies": { + "commander": "^9.3.0", + "source-map-generator": "0.8.0" + }, + "bin": { + "peggy": "bin/peggy.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/peggy/node_modules/commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -9901,6 +9926,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/source-map-generator": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz", + "integrity": "sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -11339,7 +11373,7 @@ }, "packages/core": { "name": "@strudel.cycles/core", - "version": "0.1.0", + "version": "0.1.2", "license": "AGPL-3.0-or-later", "dependencies": { "bjork": "^0.0.1", @@ -11351,15 +11385,15 @@ }, "packages/embed": { "name": "@strudel.cycles/embed", - "version": "0.1.0", + "version": "0.1.1", "license": "AGPL-3.0-or-later" }, "packages/eval": { "name": "@strudel.cycles/eval", - "version": "0.1.1", + "version": "0.1.3", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "estraverse": "^5.3.0", "shift-ast": "^6.1.0", "shift-codegen": "^7.0.3", @@ -11383,27 +11417,30 @@ }, "packages/midi": { "name": "@strudel.cycles/midi", - "version": "0.1.1", + "version": "0.1.3", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/tone": "^0.1.1", + "@strudel.cycles/tone": "^0.1.3", "tone": "^14.7.77", "webmidi": "^2.5.2" } }, "packages/mini": { "name": "@strudel.cycles/mini", - "version": "0.1.1", + "version": "0.1.3", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0", - "@strudel.cycles/eval": "^0.1.1", - "@strudel.cycles/tone": "^0.1.1" + "@strudel.cycles/core": "^0.1.2", + "@strudel.cycles/eval": "^0.1.3", + "@strudel.cycles/tone": "^0.1.3" + }, + "devDependencies": { + "peggy": "^2.0.1" } }, "packages/osc": { "name": "@strudel.cycles/osc", - "version": "0.1.0", + "version": "0.1.1", "license": "AGPL-3.0-or-later", "dependencies": { "osc-js": "^2.3.2" @@ -11411,14 +11448,14 @@ }, "packages/react": { "name": "@strudel.cycles/react", - "version": "0.1.2", + "version": "0.1.4", "license": "AGPL-3.0-or-later", "peer": true, "dependencies": { "@codemirror/lang-javascript": "^0.19.0", - "@strudel.cycles/core": "*", - "@strudel.cycles/eval": "^0.1.1", - "@strudel.cycles/tone": "^0.1.1", + "@strudel.cycles/core": "^0.1.2", + "@strudel.cycles/eval": "^0.1.3", + "@strudel.cycles/tone": "^0.1.3", "react-codemirror6": "^1.1.0", "react-hook-inview": "^4.5.0" }, @@ -11487,16 +11524,16 @@ }, "packages/serial": { "name": "@strudel.cycles/serial", - "version": "0.1.0", + "version": "0.1.3", "license": "AGPL-3.0-or-later" }, "packages/soundfonts": { "name": "@strudel.cycles/soundfonts", - "version": "0.1.0", + "version": "0.1.1", "license": "AGPL-3.0-or-later", "dependencies": { "@strudel.cycles/core": "*", - "@strudel.cycles/webaudio": "*" + "@strudel.cycles/webaudio": "^0.1.4" }, "devDependencies": { "node-fetch": "^3.2.6" @@ -11522,10 +11559,10 @@ }, "packages/tonal": { "name": "@strudel.cycles/tonal", - "version": "0.1.1", + "version": "0.1.3", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "@tonaljs/tonal": "^4.6.5", "webmidi": "^3.0.15" } @@ -11547,10 +11584,10 @@ }, "packages/tone": { "name": "@strudel.cycles/tone", - "version": "0.1.1", + "version": "0.1.3", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "@tonejs/piano": "^0.2.1", "chord-voicings": "^0.0.1", "tone": "^14.7.77" @@ -11558,27 +11595,27 @@ }, "packages/webaudio": { "name": "@strudel.cycles/webaudio", - "version": "0.1.1", + "version": "0.1.4", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0" + "@strudel.cycles/core": "^0.1.2" } }, "packages/webdirt": { "name": "@strudel.cycles/webdirt", - "version": "0.1.0", + "version": "0.1.2", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "WebDirt": "github:dktr0/WebDirt" } }, "packages/xen": { "name": "@strudel.cycles/xen", - "version": "0.1.1", + "version": "0.1.3", "license": "AGPL-3.0-or-later", "dependencies": { - "@strudel.cycles/core": "^0.1.0" + "@strudel.cycles/core": "^0.1.2" } } }, @@ -13393,7 +13430,7 @@ "@strudel.cycles/eval": { "version": "file:packages/eval", "requires": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "estraverse": "^5.3.0", "shift-ast": "^6.1.0", "shift-codegen": "^7.0.3", @@ -13405,7 +13442,7 @@ "@strudel.cycles/midi": { "version": "file:packages/midi", "requires": { - "@strudel.cycles/tone": "^0.1.1", + "@strudel.cycles/tone": "^0.1.3", "tone": "^14.7.77", "webmidi": "^2.5.2" } @@ -13413,9 +13450,10 @@ "@strudel.cycles/mini": { "version": "file:packages/mini", "requires": { - "@strudel.cycles/core": "^0.1.0", - "@strudel.cycles/eval": "^0.1.1", - "@strudel.cycles/tone": "^0.1.1" + "@strudel.cycles/core": "^0.1.2", + "@strudel.cycles/eval": "^0.1.3", + "@strudel.cycles/tone": "^0.1.3", + "peggy": "^2.0.1" } }, "@strudel.cycles/osc": { @@ -13428,9 +13466,9 @@ "version": "file:packages/react", "requires": { "@codemirror/lang-javascript": "^0.19.0", - "@strudel.cycles/core": "*", - "@strudel.cycles/eval": "^0.1.1", - "@strudel.cycles/tone": "^0.1.1", + "@strudel.cycles/core": "^0.1.2", + "@strudel.cycles/eval": "^0.1.3", + "@strudel.cycles/tone": "^0.1.3", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.2", "@vitejs/plugin-react": "^1.3.0", @@ -13494,7 +13532,7 @@ "version": "file:packages/soundfonts", "requires": { "@strudel.cycles/core": "*", - "@strudel.cycles/webaudio": "*", + "@strudel.cycles/webaudio": "^0.1.4", "node-fetch": "^3.2.6" }, "dependencies": { @@ -13514,7 +13552,7 @@ "@strudel.cycles/tonal": { "version": "file:packages/tonal", "requires": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "@tonaljs/tonal": "^4.6.5", "webmidi": "^3.0.15" }, @@ -13534,7 +13572,7 @@ "@strudel.cycles/tone": { "version": "file:packages/tone", "requires": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "@tonejs/piano": "^0.2.1", "chord-voicings": "^0.0.1", "tone": "^14.7.77" @@ -13543,20 +13581,20 @@ "@strudel.cycles/webaudio": { "version": "file:packages/webaudio", "requires": { - "@strudel.cycles/core": "^0.1.0" + "@strudel.cycles/core": "^0.1.2" } }, "@strudel.cycles/webdirt": { "version": "file:packages/webdirt", "requires": { - "@strudel.cycles/core": "^0.1.0", + "@strudel.cycles/core": "^0.1.2", "WebDirt": "github:dktr0/WebDirt" } }, "@strudel.cycles/xen": { "version": "file:packages/xen", "requires": { - "@strudel.cycles/core": "^0.1.0" + "@strudel.cycles/core": "^0.1.2" } }, "@tonaljs/abc-notation": { @@ -18292,6 +18330,24 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "peggy": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/peggy/-/peggy-2.0.1.tgz", + "integrity": "sha512-mBqfmdUAOVn7RILpXTbcRBhLfTR4Go0SresSnivGDdRylBOyVFJncFiVyCNNpPWq8HmgeRleXHs/Go4o8kQVXA==", + "dev": true, + "requires": { + "commander": "^9.3.0", + "source-map-generator": "0.8.0" + }, + "dependencies": { + "commander": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", + "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "dev": true + } + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -18544,9 +18600,9 @@ "version": "file:packages/react", "requires": { "@codemirror/lang-javascript": "^0.19.0", - "@strudel.cycles/core": "*", - "@strudel.cycles/eval": "^0.1.1", - "@strudel.cycles/tone": "^0.1.1", + "@strudel.cycles/core": "^0.1.2", + "@strudel.cycles/eval": "^0.1.3", + "@strudel.cycles/tone": "^0.1.3", "@types/react": "^17.0.2", "@types/react-dom": "^17.0.2", "@vitejs/plugin-react": "^1.3.0", @@ -19410,6 +19466,12 @@ "is-plain-obj": "^2.0.0" } }, + "source-map-generator": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz", + "integrity": "sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==", + "dev": true + }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", diff --git a/packages/core/index.mjs b/packages/core/index.mjs index e64d3215..6efc8055 100644 --- a/packages/core/index.mjs +++ b/packages/core/index.mjs @@ -16,4 +16,8 @@ export * from './timespan.mjs'; export * from './util.mjs'; export * from './speak.mjs'; export { default as gist } from './gist.js'; +import * as p from './package.json'; +export const version = p.version; +console.log('🌀🌀🌀 @strudel.cycles/core@' + version); + // export * from './value.mjs'; diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index 29558f46..f5c7cd51 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -15,6 +15,7 @@ import drawLine from './drawLine.mjs'; /** @class Class representing a pattern. */ export class Pattern { + _Pattern = true; // this property is used to detect if a pattern that fails instanceof Pattern is an instance of another Pattern /** * Create a pattern. As an end user, you will most likely not create a Pattern directly. * @@ -1212,7 +1213,15 @@ export function pure(value) { export function isPattern(thing) { // thing?.constructor?.name !== 'Pattern' // <- this will fail when code is mangled - return thing instanceof Pattern; + const is = thing instanceof Pattern || thing._Pattern; + if (!thing instanceof Pattern) { + console.warn( + `Found Pattern that fails "instanceof Pattern" check. + This may happen if you are using multiple versions of @strudel.cycles/core. + Please check by running "npm ls @strudel.cycles/core".`, + ); + } + return is; } export function reify(thing) { @@ -1389,7 +1398,7 @@ export function pr(args) { } export const add = curry((a, pat) => pat.add(a)); -export const chop = curry((a, pat) => pat.chop(a)) +export const chop = curry((a, pat) => pat.chop(a)); export const chunk = curry((a, pat) => pat.chunk(a)); export const chunkBack = curry((a, pat) => pat.chunkBack(a)); export const div = curry((a, pat) => pat.div(a));