-
Notifications
You must be signed in to change notification settings - Fork 6
/
index.mjs.map
1 lines (1 loc) · 311 KB
/
index.mjs.map
1
{"version":3,"file":"index.mjs","sources":["node_modules/ringbuf.js/dist/index.es.js","src/engine/maximilian.util.js","src/common/event.js","src/common/dispatcher.js","src/common/logger.js","src/engine/engine.js","node_modules/nearley/lib/nearley.js","node_modules/moo/moo.js","node_modules/nearley/lib/nearley-language-bootstrapped.js","src/compiler/compiler-low-level.js","node_modules/nearley/lib/generate.js","node_modules/nearley/lib/lint.js","src/compiler/IR.js","src/compiler/sema.js","src/compiler/compiler.js","src/learner/learner.js","src/common/blockTracker.js"],"sourcesContent":["// Send audio interleaved audio frames between threads, wait-free.\n//\n// Those classes allow communicating between a non-real time thread (browser\n// main thread or worker) and a real-time thread (in an AudioWorkletProcessor).\n// Write and Reader cannot change role after setup, unless externally\n// synchronized.\n//\n// GC _can_ happen during the initial construction of this object when hopefully\n// no audio is being output. This depends on how implementations schedule GC\n// passes. After the setup phase no GC is triggered on either side of the queue..\n\n// Interleaved -> Planar audio buffer conversion\n//\n// `input` is an array of n*128 frames arrays, interleaved, where n is the\n// channel count.\n// output is an array of 128-frames arrays.\n//\n// This is useful to get data from a codec, the network, or anything that is\n// interleaved, into planar format, for example a Web Audio API AudioBuffer or\n// the output parameter of an AudioWorkletProcessor.\nfunction deinterleave(input, output) {\n var channel_count = input.length / 256;\n if (output.length != channel_count) {\n throw \"not enough space in output arrays\";\n }\n for (var i = 0; i < channelCount; i++) {\n let out_channel = output[i];\n let interleaved_idx = i;\n for (var j = 0; j < 128; ++j) {\n out_channel[j] = input[interleaved_idx];\n interleaved_idx += channel_count;\n }\n }\n}\n// Planar -> Interleaved audio buffer conversion\n//\n// Input is an array of `n` 128 frames Float32Array that hold the audio data.\n// output is a Float32Array that is n*128 elements long. This function is useful\n// to get data from the Web Audio API (that does planar audio), into something\n// that codec or network streaming library expect.\nfunction interleave(input, output) {\n if (input.length * 128 != output.length) {\n throw \"input and output of incompatible sizes\";\n }\n var out_idx = 0;\n for (var i = 0; i < 128; i++) {\n for (var channel = 0; j < output.length; j++) {\n output[out_idx] = input[channel][i];\n out_idx++;\n }\n }\n}\n\nclass AudioWriter {\n // From a RingBuffer, build an object that can enqueue enqueue audio in a ring\n // buffer.\n constructor(ringbuf) {\n if (ringbuf.type() != \"Float32Array\") {\n throw \"This class requires a ring buffer of Float32Array\";\n }\n this.ringbuf = ringbuf;\n }\n // Enqueue a buffer of interleaved audio into the ring buffer.\n // Returns the number of samples that have been successfuly written to the\n // queue. `buf` is not written to during this call, so the samples that\n // haven't been written to the queue are still available.\n enqueue(buf) {\n return this.ringbuf.push(buf);\n }\n // Query the free space in the ring buffer. This is the amount of samples that\n // can be queued, with a guarantee of success.\n available_write() {\n return this.ringbuf.available_write();\n }\n}\n\nclass AudioReader {\n constructor(ringbuf) {\n if (ringbuf.type() != \"Float32Array\") {\n throw \"This class requires a ring buffer of Float32Array\";\n }\n this.ringbuf = ringbuf;\n }\n // Attempt to dequeue at most `buf.length` samples from the queue. This\n // returns the number of samples dequeued. If greater than 0, the samples are\n // at the beginning of `buf`\n dequeue(buf) {\n if (this.ringbuf.empty()) {\n return 0;\n }\n return this.ringbuf.pop(buf);\n }\n // Query the occupied space in the queue. This is the amount of samples that\n // can be read with a guarantee of success.\n available_read() {\n return this.ringbuf.available_read();\n }\n}\n\n// Communicate parameter changes, lock free, no gc.\n//\n// between a UI thread (browser main thread or worker) and a real-time thread\n// (in an AudioWorkletProcessor). Write and Reader cannot change role after\n// setup, unless externally synchronized.\n//\n// GC can happen during the initial construction of this object when hopefully\n// no audio is being output. This depends on the implementation.\n//\n// Parameter changes are like in the VST framework: an index and a float value\n// (no restriction on the value).\n//\n// This class supports up to 256 parameters, but this is easy to extend if\n// needed.\n//\n// An element is a index, that is an unsigned byte, and a float32, which is 4\n// bytes.\n\nclass ParameterWriter {\n // From a RingBuffer, build an object that can enqueue a parameter change in\n // the queue.\n constructor(ringbuf) {\n if (ringbuf.type() != \"Uint8Array\") {\n throw \"This class requires a ring buffer of Uint8Array\";\n }\n const SIZE_ELEMENT = 5;\n this.ringbuf = ringbuf;\n this.mem = new ArrayBuffer(SIZE_ELEMENT);\n this.array = new Uint8Array(this.mem);\n this.view = new DataView(this.mem);\n }\n // Enqueue a parameter change for parameter of index `index`, with a new value\n // of `value`.\n // Returns true if enqueuing suceeded, false otherwise.\n enqueue_change(index, value) {\n const SIZE_ELEMENT = 5;\n this.view.setUint8(0, index);\n this.view.setFloat32(1, value);\n if (this.ringbuf.available_write() < SIZE_ELEMENT) {\n return false;\n }\n return this.ringbuf.push(this.array) == SIZE_ELEMENT;\n }\n}\n\nclass ParameterReader {\n constructor(ringbuf) {\n const SIZE_ELEMENT = 5;\n this.ringbuf = ringbuf;\n this.mem = new ArrayBuffer(SIZE_ELEMENT);\n this.array = new Uint8Array(this.mem);\n this.view = new DataView(this.mem);\n }\n dequeue_change(o) {\n if (this.ringbuf.empty()) {\n return false;\n }\n var rv = this.ringbuf.pop(this.array);\n o.index = this.view.getUint8(0);\n o.value = this.view.getFloat32(1);\n\n return true;\n }\n}\n\n// A Single Producer - Single Consumer thread-safe wait-free ring buffer.\n//\n// The producer and the consumer can be separate thread, but cannot change role,\n// except with external synchronization.\n\nclass RingBuffer {\n static getStorageForCapacity(capacity, type) {\n if (!type.BYTES_PER_ELEMENT) {\n throw \"Pass in a ArrayBuffer subclass\";\n }\n var bytes = 8 + (capacity + 1) * type.BYTES_PER_ELEMENT;\n return new SharedArrayBuffer(bytes);\n }\n // `sab` is a SharedArrayBuffer with a capacity calculated by calling\n // `getStorageForCapacity` with the desired capacity.\n constructor(sab, type) {\n if (!ArrayBuffer.__proto__.isPrototypeOf(type) &&\n type.BYTES_PER_ELEMENT !== undefined) {\n throw \"Pass a concrete typed array class as second argument\";\n }\n\n // Maximum usable size is 1<<32 - type.BYTES_PER_ELEMENT bytes in the ring\n // buffer for this version, easily changeable.\n // -4 for the write ptr (uint32_t offsets)\n // -4 for the read ptr (uint32_t offsets)\n // capacity counts the empty slot to distinguish between full and empty.\n this._type = type;\n this.capacity = (sab.byteLength - 8) / type.BYTES_PER_ELEMENT;\n this.buf = sab;\n this.write_ptr = new Uint32Array(this.buf, 0, 1);\n this.read_ptr = new Uint32Array(this.buf, 4, 1);\n this.storage = new type(this.buf, 8, this.capacity);\n }\n // Returns the type of the underlying ArrayBuffer for this RingBuffer. This\n // allows implementing crude type checking.\n type() {\n return this._type.name;\n }\n // Push bytes to the ring buffer. `bytes` is an typed array of the same type\n // as passed in the ctor, to be written to the queue.\n // Returns the number of elements written to the queue.\n push(elements) {\n var rd = Atomics.load(this.read_ptr, 0);\n var wr = Atomics.load(this.write_ptr, 0);\n\n if ((wr + 1) % this._storage_capacity() == rd) {\n // full\n return 0;\n }\n\n let to_write = Math.min(this._available_write(rd, wr), elements.length);\n let first_part = Math.min(this._storage_capacity() - wr, to_write);\n let second_part = to_write - first_part;\n\n this._copy(elements, 0, this.storage, wr, first_part);\n this._copy(elements, first_part, this.storage, 0, second_part);\n\n // publish the enqueued data to the other side\n Atomics.store(\n this.write_ptr,\n 0,\n (wr + to_write) % this._storage_capacity()\n );\n\n return to_write;\n }\n // Read `elements.length` elements from the ring buffer. `elements` is a typed\n // array of the same type as passed in the ctor.\n // Returns the number of elements read from the queue, they are placed at the\n // beginning of the array passed as parameter.\n pop(elements) {\n var rd = Atomics.load(this.read_ptr, 0);\n var wr = Atomics.load(this.write_ptr, 0);\n\n if (wr == rd) {\n return 0;\n }\n\n let to_read = Math.min(this._available_read(rd, wr), elements.length);\n\n let first_part = Math.min(this._storage_capacity() - rd, elements.length);\n let second_part = to_read - first_part;\n\n this._copy(this.storage, rd, elements, 0, first_part);\n this._copy(this.storage, 0, elements, first_part, second_part);\n\n Atomics.store(this.read_ptr, 0, (rd + to_read) % this._storage_capacity());\n\n return to_read;\n }\n\n // True if the ring buffer is empty false otherwise. This can be late on the\n // reader side: it can return true even if something has just been pushed.\n empty() {\n var rd = Atomics.load(this.read_ptr, 0);\n var wr = Atomics.load(this.write_ptr, 0);\n\n return wr == rd;\n }\n\n // True if the ring buffer is full, false otherwise. This can be late on the\n // write side: it can return true when something has just been poped.\n full() {\n var rd = Atomics.load(this.read_ptr, 0);\n var wr = Atomics.load(this.write_ptr, 0);\n\n return (wr + 1) % this.capacity != rd;\n }\n\n // The usable capacity for the ring buffer: the number of elements that can be\n // stored.\n capacity() {\n return this.capacity - 1;\n }\n\n // Number of elements available for reading. This can be late, and report less\n // elements that is actually in the queue, when something has just been\n // enqueued.\n available_read() {\n var rd = Atomics.load(this.read_ptr, 0);\n var wr = Atomics.load(this.write_ptr, 0);\n return this._available_read(rd, wr);\n }\n\n // Number of elements available for writing. This can be late, and report less\n // elemtns that is actually available for writing, when something has just\n // been dequeued.\n available_write() {\n var rd = Atomics.load(this.read_ptr, 0);\n var wr = Atomics.load(this.write_ptr, 0);\n return this._available_write(rd, wr);\n }\n\n // private methods //\n\n // Number of elements available for reading, given a read and write pointer..\n _available_read(rd, wr) {\n if (wr > rd) {\n return wr - rd;\n } else {\n return wr + this._storage_capacity() - rd;\n }\n }\n\n // Number of elements available from writing, given a read and write pointer.\n _available_write(rd, wr) {\n let rv = rd - wr - 1;\n if (wr >= rd) {\n rv += this._storage_capacity();\n }\n return rv;\n }\n\n // The size of the storage for elements not accounting the space for the index.\n _storage_capacity() {\n return this.capacity;\n }\n\n // Copy `size` elements from `input`, starting at offset `offset_input`, to\n // `output`, starting at offset `offset_output`.\n _copy(input, offset_input, output, offset_output, size) {\n for (var i = 0; i < size; i++) {\n output[offset_output + i] = input[offset_input + i];\n }\n }\n}\n\nexport { AudioReader, AudioWriter, ParameterReader, ParameterWriter, RingBuffer, deinterleave, interleave };\n//# sourceMappingURL=index.es.js.map\n","export const getArrayAsVectorDbl = (arrayIn) => {\n var vecOut = new exports.VectorDouble();\n for (var i = 0; i < arrayIn.length; i++) {\n vecOut.push_back(arrayIn[i]);\n }\n return vecOut;\n};\n\nexport const getBase64 = (str) => {\n //check if the string is a data URI\n if (str.indexOf(';base64,') !== -1) {\n //see where the actual data begins\n var dataStart = str.indexOf(';base64,') + 8;\n //check if the data is base64-encoded, if yes, return it\n // taken from\n // http://stackoverflow.com/a/8571649\n return str.slice(dataStart).match(/^([A-Za-z0-9+\\/]{4})*([A-Za-z0-9+\\/]{4}|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{2}==)$/) ? str.slice(dataStart) : false;\n } else return false;\n};\n\nexport const _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport const removePaddingFromBase64 = (input) => {\n var lkey = Module.maxiTools._keyStr.indexOf(input.charAt(input.length - 1));\n if (lkey === 64) {\n return input.substring(0, input.length - 1);\n }\n return input;\n};\n\n\nexport const loadSampleToArray = (audioContext, sampleObjectName, url, audioWorkletNode) => {\n var data = [];\n\n var context = audioContext;\n\n //check if url is actually a base64-encoded string\n var b64 = getBase64(url);\n if (b64) {\n //convert to arraybuffer\n //modified version of this:\n // https://github.com/danguer/blog-examples/blob/master/js/base64-binary.js\n var ab_bytes = (b64.length / 4) * 3;\n var arrayBuffer = new ArrayBuffer(ab_bytes);\n\n b64 = removePaddingFromBase64(removePaddingFromBase64(b64));\n\n var bytes = parseInt((b64.length / 4) * 3, 10);\n\n var uarray;\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n var j = 0;\n\n uarray = new Uint8Array(arrayBuffer);\n\n b64 = b64.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n for (i = 0; i < bytes; i += 3) {\n //get the 3 octects in 4 ascii chars\n enc1 = _keyStr.indexOf(b64.charAt(j++));\n enc2 = _keyStr.indexOf(b64.charAt(j++));\n enc3 = _keyStr.indexOf(b64.charAt(j++));\n enc4 = _keyStr.indexOf(b64.charAt(j++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n uarray[i] = chr1;\n if (enc3 !== 64) {\n uarray[i + 1] = chr2;\n }\n if (enc4 !== 64) {\n uarray[i + 2] = chr3;\n }\n }\n\n // https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-decodeaudiodata\n // Asynchronously decodes the audio file data contained in the ArrayBuffer.\n audioContext.decodeAudioData(\n arrayBuffer, // has its content-type determined by sniffing\n function (buffer) { // successCallback, argument is an AudioBuffer representing the decoded PCM audio data.\n // source.buffer = buffer;\n // source.loop = true;\n // source.start(0);\n let float32ArrayBuffer = buffer.getChannelData(0);\n if (data !== undefined && audioWorkletNode !== undefined) {\n // console.log('f32array: ' + float32Array);\n audioWorkletNode.port.postMessage({\n \"sample\":sampleObjectName,\n \"buffer\": float32ArrayBuffer,\n });\n }\n },\n function (buffer) { // errorCallback\n console.log(\"Error decoding source!\");\n }\n );\n } else {\n // Load asynchronously\n // NOTE: This is giving me an error\n // Uncaught ReferenceError: XMLHttpRequest is not defined (index):97 MaxiProcessor Error detected: undefined\n // NOTE: followed the trail to the wasmmodule.js\n // when loading on if (typeof XMLHttpRequest !== 'undefined') {\n // throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers.\n // Use --embed-file or --preload-file in emcc on the main thread.\");\n var request = new XMLHttpRequest();\n request.addEventListener(\"load\", () =>\n\t\t\tconsole.info(`loading sample '${sampleObjectName}'`)\n\t\t);\n request.open(\"GET\", url, true);\n request.responseType = \"arraybuffer\";\n request.onload = function () {\n audioContext.decodeAudioData(\n request.response,\n function (buffer) {\n let float32ArrayBuffer = buffer.getChannelData(0);\n if (data !== undefined && audioWorkletNode !== undefined) {\n // console.log('f32array: ' + float32Array);\n audioWorkletNode.port.postMessage({\n \"sample\":sampleObjectName,\n \"buffer\": float32ArrayBuffer,\n });\n }\n },\n function (buffer) {\n console.log(\"Error decoding source!\");\n }\n );\n };\n request.send();\n }\n return \"Loading module\";\n};\n\n/**\n * @buildWorkletStringForBlob\n */\nexport const buildWorkletStringForBlob = (userDefinedFunction) => {\n\t// let = \"\";\n\t// switch (expression % 2) {\n\t// \tcase 0:\n\t// \t\tuserDefinedFunction = `Math.random() * 2`;\n\t// \t\tbreak;\n\t// \tcase 1:\n\t// \t\tuserDefinedFunction = `(Math.sin(400) + 0.4)`;\n\t// \t\tbreak;\n\t// \tdefault:\n\t// \t\tuserDefinedFunction = `(Math.sin(440) + 0.4)`;\n\t// }\n\n\t// We get an \"Error on loading worklet: DOMException\" with the following import:\n\t// import Module from './maximilian.wasmmodule.js';\n\treturn `\n import Module from './maximilian.wasmmodule.js';\n cwlass CustomProcessor extends AudioWorkletProcessor {\n static get parameterDescriptors() {\n return [{\n name: 'gain',\n defaultValue: 0.1\n }];\n }\n constructor() {\n super();\n this.sampleRate = 44100;\n\n this.port.onmessage = (event) => {\n console.log(event.data);\n };\n\n }\n process(inputs, outputs, parameters) {\n\n const outputsLength = outputs.length;\n for (let outputId = 0; outputId < outputsLength; ++outputId) {\n let output = outputs[outputId];\n const channelLenght = output.length;\n\n for (let channelId = 0; channelId < channelLenght; ++channelId) {\n const gain = parameters.gain;\n const isConstant = gain.length === 1\n let outputChannel = output[channelId];\n\n for (let i = 0; i < outputChannel.length; ++i) {\n const amp = isConstant ? gain[0] : gain[i]\n outputChannel[i] = ${userDefinedFunction} * amp;\n }\n }\n }\n return true;\n }\n }`;\n};\n\n/**\n * @createAndRegisterCustomProcessorCode\n */\nexport const createAndRegisterCustomProcessorCode = (il2pCode, processorName) => {\n\n return `${il2pCode}\n\n registerProcessor(\"${processorName}\", CustomProcessor);`;\n}\n\n/**\n * @buildWorkletStringForBlob\n */\nexport const buildWorkletFromBlob = () => {\n // console.log('processorCount: ' + this.processorCount);\n // // const userCode = editor.getDoc().getValue();\n // const processorName = `processor-${this.processorCount}`;\n\n // this.il2pCode = this.translateIntermediateLanguageToProcessorCode(this.processorCount);\n\n // const code = this.createAndRegisterCustomProcessorCode(this.il2pCode, processorName);\n\n // console.log(code);\n\n // const blob = new Blob([code], {\n // type: \"application/javascript; charset=utf-8\",\n // });\n\n return blob;\n}\n\n/**\n * TODO: Check for memory leaks\n * @runProcessorCode\n */\n// export const runProcessorCode = () => {\n// // TODO: Check for memory leaks\n// // URL.revokeObjectURL()\n// const workletUrl = window.URL.createObjectURL(blob);\n\n// // Set custom processor in audio worklet\n// this.audioContext.audioWorklet.addModule(workletUrl).then(() => {\n// this.stop();\n// this.customNode = new CustomAudioNode(this.audioContext, processorName);\n// this.customNode.port.onmessage = (event) => {\n// // data from the processor.\n// console.log(\"from processor: \" + event.data);\n// };\n// this.customNode.connect(this.audioContext.destination);\n// }).catch(e => console.log(\"Error on loading worklet: \", e));\n// }\n\n\nexport const generateNoiseBuffer = (length) => {\n var bufferData = new Module.VectorDouble();\n for (var n = 0; n < length; n++) {\n bufferData.push_back(Math.random(1));\n }\n return bufferData;\n}\n\n\nexport const translateBlobToBuffer = (blob) => {\n\n let arrayBuffer = null;\n let float32Array = null;\n var fileReader = new FileReader();\n fileReader.onload = function (event) {\n arrayBuffer = event.target.result;\n float32Array = new Float32Array(arrayBuffer);\n };\n fileReader.readAsArrayBuffer(blob);\n let audioFloat32Array = fileReader.result;\n var maxiSampleBufferData = new Module.VectorDouble();\n for (var i = 0; i < audioFloat32Array.length; i++) {\n maxiSampleBufferData.push_back(audioFloat32Array[i]);\n }\n return maxiSampleBufferData;\n}\n","export default class Event {\n\tconstructor(eventName) {\n\t\tthis.eventName = eventName;\n\t\tthis.callbacks = [];\n\t}\n\n\tregisterCallback(callback) {\n this.callbacks.push(callback);\n\t}\n\n\tunregisterCallback(callback) {\n const index = this.callbacks.indexOf(callback);\n\t\tif (index > -1) {\n\t\t\tthis.callbacks.splice(index, 1);\n\t\t}\n\t}\n\n\temit(data) {\n const callbacks = this.callbacks.slice(0);\n\t\tcallbacks.forEach( callback => {\n\t\t\tcallback(data);\n\t\t});\n\t}\n}\n","import Event from './event.js';\n\nexport default class Dispatcher {\n\n constructor() {\n\t\tthis.events = {};\n\t}\n\n\tdispatch(eventName, data) {\n\t\t// console.log(\"dispatch is getting called.\");\n\t\tconst event = this.events[eventName];\n\t\t//let event = Event()\n\n\t\t// console.log(\"event\", this.events, \"data\", data);\n\t\t// console.log(\"data\", data, event);\n\t\tif (event) {\n\t\t\t// console.log(\"data being emitted\", data)\n\t\t\tevent.emit(data);\n\t\t}\n\t}\n\n\taddEventListener(eventName, callback) {\n\t\tlet event = this.events[eventName];\n\t\tif (!event) {\n\t\t\tevent = new Event(eventName);\n\t\t\tthis.events[eventName] = event;\n\t\t}\n\t\tevent.registerCallback(callback);\n\t}\n\n\tremoveEventListener(eventName, callback) {\n\t\tconst event = this.events[eventName];\n\t\tif (event && event.callbacks.indexOf(callback) > -1) {\n\t\t\tevent.unregisterCallback(callback);\n\t\t\tif (event.callbacks.length === 0) {\n\t\t\t\tdelete this.events[eventName];\n\t\t\t}\n\t\t}\n\t}\n}\n","import Dispatcher from './dispatcher.js';\n\n// var cl, ci, cw, ce;\n\nexport class Logger {\n\t/**\n\t * @constructor\n\t */\n\tconstructor() {\n\t\tif (Logger.instance) {\n\t\t\treturn Logger.instance; // Singleton pattern\n\t\t}\n\t\tLogger.instance = this;\n\n\t\tthis.log = [];\n\t\tthis.rawLog = \"\"; //raw log of string data\n\n\t\tthis.dispatcher = new Dispatcher();\n\t}\n\n\n\n\t//pass in svelte store, of log\n\t// setStore(storeLog){\n\t// \tstoreLog.set = this.rawLog;\n\t// }\n\n\taddEventListener(event, callback) {\n\t\t// console.log(\"registering\", event, callback);\n\t\tif (this.dispatcher && event && callback) {\n\t\t\tthis.dispatcher.addEventListener(event, callback);\n\t\t\t// console.log(\"registered\");\n\t\t} else throw new Error(\"Error adding event listener to Logger\");\n\t}\n\n\tpush(data) {\n\t\tthis.log.push(data);\n\t\tthis.rawLog =\n\t\tthis.rawLog + \"\\n\" + data.type + \" \" + [...data.payload].join();\n\t\tthis.dispatcher.dispatch(\"onLog\");\n\t\t//console.log(\"getting dispatched\", this.rawLog);\n\t\t//this.dispatcher.dispatch(\"onConsoleLogsUpdate\", {test:10});\n\t}\n\n\t//console.log = overrideConsoleLog();\n\n\ttakeOverConsole() {\n\t\tif (window.console) {\n// this.onMessageHandler.bind(this);\n\t\t\tlet cl, ci, cw, ce;\n\n\t\t\tif (window.console.log) cl = console.log;\n\t\t\tif (window.console.info) ci = console.info;\n\t\t\tif (window.console.warn) cw = console.warn;\n\t\t\tif (window.console.error) ce = console.error;\n\t\t\tif (cl && ci && cw && ce) {\n\t\t\t\tcw(\"taking over MAIN console\");\n\n\t\t\t\tconsole.log = function (text) {\n\t\t\t\t\tthis.push({\n\t\t\t\t\t\tfunc: \"logs\",\n\t\t\t\t\t\tpayload: [...arguments],\n\t\t\t\t\t\ttype: \"[MAIN]\",\n\t\t\t\t\t});\n\t\t\t\t\tcl.apply(this, arguments);\n\t\t\t\t}.bind(this);\n\n\t\t\t\tconsole.info = function (text) {\n\t\t\t\t\tthis.push({\n\t\t\t\t\t\tfunc: \"logs\",\n\t\t\t\t\t\tpayload: [...arguments],\n\t\t\t\t\t\ttype: \"[MAIN]\",\n\t\t\t\t\t});\n\t\t\t\t\tci.apply(this, arguments);\n\t\t\t\t}.bind(this);\n\n\t\t\t\tconsole.warn = function (text) {\n\t\t\t\t\t// window.postMessage({\n\t\t\t\t\tthis.push({\n\t\t\t\t\t\tfunc: \"logs\",\n\t\t\t\t\t\tpayload: [...arguments],\n\t\t\t\t\t\ttype: \"[MAIN]\",\n\t\t\t\t\t});\n\t\t\t\t\tcw.apply(this, arguments);\n\t\t\t\t}.bind(this);\n\n\t\t\t\tconsole.error = function (text) {\n\t\t\t\t\t// window.postMessage({\n\t\t\t\t\tthis.push({\n\t\t\t\t\t\tfunc: \"logs\",\n\t\t\t\t\t\tpayload: [...arguments],\n\t\t\t\t\t\ttype: \"[MAIN]\",\n\t\t\t\t\t});\n\t\t\t\t\tce.apply(this, arguments);\n\t\t\t\t}.bind(this);\n\n\t\t\t\tce(\"MAIN console taken over\");\n\t\t\t}\n\t\t}\n\t}\n\n\t// takeOverConsole(f) {\n\t// \tif (f) {\n\t// \t\ttry {\n\t// \t\t\tvar original = window.console;\n\n\t// \t\t\tfunction handle(method, args) {\n\t// \t\t\t\tvar message = Array.prototype.slice.apply(args).join(\" \");\n\t// \t\t\t\tif (original) original[method](\"> \" + message);\n\t// \t\t\t}\n\n\t// \t\t\twindow.console = {\n\t// \t\t\t\tlog: function () {\n\t// \t\t\t\t\thandle(\"log\", arguments);\n\t// \t\t\t\t},\n\t// \t\t\t\twarn: function () {\n\t// \t\t\t\t\thandle(\"warn\", arguments);\n\t// \t\t\t\t},\n\t// \t\t\t\terror: function () {\n\t// \t\t\t\t\thandle(\"error\", arguments);\n\t// \t\t\t\t},\n\t// \t\t\t\tinfo: function () {\n\t// \t\t\t\t\thandle(\"info\", arguments);\n\t// \t\t\t\t},\n\t// \t\t\t};\n\t// \t\t} catch (error) {\n\t// \t\t\tconsole.error(error);\n\t// \t\t}\n\t// \t}\n\t// }\n}\n","// NOTE: this imports RingBuffer directly from node_modules\n// which is different from maxi-processor that\n// dynamically loads from the adjacent ringBuf.js file\nimport { RingBuffer } from 'ringbuf.js'; //thanks padenot\nimport { loadSampleToArray } from './maximilian.util.js';\nimport { Logger } from \"../common/logger.js\";\nimport Dispatcher from '../common/dispatcher.js';\n// import { isThisTypeNode } from 'typescript';\n// import {\n// kuramotoNetClock\n// } from './interfaces/clockInterface.js';\n// import {\n// PeerStreaming\n// } from '../interfaces/peerStreaming.js';\n\n/**\n * The CustomMaxiNode is a class that extends AudioWorkletNode\n * to hold an Custom Audio Worklet Processor and connect to Web Audio graph\n * @class CustomMaxiNode\n * @extends AudioWorkletNode\n */\n// if(true){\nclass CustomMaxiNode extends AudioWorkletNode {\n constructor(audioContext, processorName) {\n // super(audioContext, processorName);\n // console.log();\n let options = {\n numberOfInputs: 1,\n numberOfOutputs: 1,\n outputChannelCount: [audioContext.destination.maxChannelCount]\n };\n super(audioContext, processorName, options);\n }\n}\n// }\n\n/**\n * The Engine is a singleton class that encapsulates the AudioContext\n * and all WASM and Maximilian -powered Audio Worklet Processor\n * @class AudioEngine\n * TODO more error handling\n * TODO more checking of arguments passed to methods\n * TODO optimise performance, especially on analysers which are pumping data continuously\n */\nexport class Engine {\n\t/**\n\t * @constructor\n\t */\n\tconstructor() {\n\t\tif (Engine.instance) {\n\t\t\treturn Engine.instance; // Singleton pattern\n\t\t}\n\t\tEngine.instance = this;\n\n\t\tthis.origin = \"\";\n\n\t\tthis.learners = {};\n\n\t\t// Hash of on-demand analysers (e.g. spectrogram, oscilloscope)\n\t\t// NOTE: analysers serialized to localStorage are de-serialized\n\t\t// and loaded from localStorage before user-triggered audioContext init\n\t\tthis.analysers = {};\n\n\t\tthis.mediaStreamSource = {};\n\t\tthis.mediaStream = {};\n\n\t\t// Shared array buffers for sharing client side data to the audio engine- e.g. mouse coords\n\t\tthis.sharedArrayBuffers = {};\n\n\t\t// Event emitter that should be subscribed by SAB receivers\n\t\tthis.dispatcher = new Dispatcher();\n\t\tthis.logger = new Logger();\n\n\t\tthis.samplesLoaded = false;\n this.isHushed = false;\n\t}\n\n\t/**\n\t * Add learner instance\n\t */\n\tasync addLearner(id, learner) {\n\t\tif (learner) {\n\t\t\ttry {\n\t\t\t\t// `this` is the scope that will\n\t\t\t\tawait learner.init(this.origin);\n\n\t\t\t\tthis.addEventListener(\"onSharedBuffer\", (e) =>\n\t\t\t\t\tlearner.addSharedBuffer(e)\n\t\t\t\t); // Engine's SAB emissions subscribed by Learner\n\n\t\t\t\tlearner.addEventListener(\"onSharedBuffer\", (e) =>\n\t\t\t\t\tthis.addSharedBuffer(e)\n\t\t\t\t); // Learner's SAB emissions subscribed by Engine\n\n\t\t\t\tthis.learners[id] = learner;\n\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\"Error adding Learner to Engine: \", error);\n\t\t\t}\n\t\t} else throw new Error(\"Error adding Learner instance to Engine\");\n\t}\n\n\tremoveLearner(id) {\n\t\tif (id){\n\t\t\tif (this.learners && ( id in this.learners ) ) {\n\t\t\t\tlet learner = this.learners[id];\n\t\t\t\tlearner.removeEventListener(\"onSharedBuffer\", (e) =>\n\t\t\t\t\tthis.addSharedBuffer(e)\n\t\t\t\t);\n\t\t\t\tlearner = null;\n\t\t\t\tdelete this.learners[id];\n\t\t\t}\n\t\t\t// else throw new Error(\"Error removing Learner from Engine: \");\n\t\t} else throw new Error(\"Error with learner ID when removing Learner from Engine\");\n\t}\n\n\t/**\n\t * Engine's event subscription\n\t * @addEventListener\n\t * @param {*} event\n\t * @param {*} callback\n\t */\n\taddEventListener(event, callback) {\n\t\tif (this.dispatcher && event && callback)\n\t\t\tthis.dispatcher.addEventListener(event, callback);\n\t\telse throw new Error(\"Error adding event listener to Engine\");\n\t}\n\n\t/* #region SharedBuffers */\n\n\t/**\n\t * Create a shared array buffer for communicating with the audio engine\n\t * @param channelId\n\t * @param ttype\n\t * @param blocksize\n\t */\n\tcreateSharedBuffer(channelId, ttype, blocksize) {\n\t\tlet sab = RingBuffer.getStorageForCapacity(32 * blocksize, Float64Array);\n\t\tlet ringbuf = new RingBuffer(sab, Float64Array);\n\n\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\tfunc: \"sab\",\n\t\t\tvalue: sab,\n\t\t\tttype: ttype,\n\t\t\tchannelID: channelId,\n\t\t\tblocksize: blocksize,\n\t\t});\n\n\t\tthis.sharedArrayBuffers[channelId] = {\n\t\t\tsab: sab, // TODO: this is redundant, you can access the sab from the rb,\n\t\t\t// TODO change hashmap name it is confusing and induces error\n\t\t\trb: ringbuf,\n\t\t};\n\n\t\treturn sab;\n\t}\n\n\t/**\n\t * Push data to shared array buffer for communicating with the audio engine and ML worker\n\t * @param {*} e\n\t */\n\taddSharedBuffer(e) {\n\t\tif (e) {\n\t\t\tif (e.value && e.value instanceof SharedArrayBuffer) {\n\t\t\t\ttry {\n\t\t\t\t\tlet ringbuf = new RingBuffer(e.value, Float64Array);\n\t\t\t\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\t\t\t\tfunc: \"sab\",\n\t\t\t\t\t\tvalue: e.value,\n\t\t\t\t\t\tttype: e.ttype,\n\t\t\t\t\t\tchannelID: e.channelID,\n\t\t\t\t\t\tblocksize: e.blocksize,\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.sharedArrayBuffers[e.channelID] = {\n\t\t\t\t\t\tsab: e.value, // TODO this is redundant, you can access the sab from the rb,\n\t\t\t\t\t\t// TODO also change hashmap name it is confusing and induces error\n\t\t\t\t\t\trb: ringbuf,\n\t\t\t\t\t};\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(\"Error pushing SharedBuffer to engine\");\n\t\t\t\t}\n\t\t\t} else if (e.name && e.data) {\n\t\t\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\t\t\tfunc: \"sendbuf\",\n\t\t\t\t\tname: e.name,\n\t\t\t\t\tdata: e.data,\n\t\t\t\t});\n\t\t\t}\n\t\t} else throw new Error(\"Error with onSharedBuffer event\");\n\t}\n\n\t/**\n\t * Push data to shared array buffer for communicating with the audio engine and ML worker\n\t * @param {*} e\n\t * @param {*} channelId\n\t */\n\tpushDataToSharedBuffer(channelId, data) {\n\t\tif (channelId && data && typeof Array.isArray(data)) {\n\t\t\tif (this.sharedArrayBuffers && this.sharedArrayBuffers[channelId]) {\n\t\t\t\tthis.sharedArrayBuffers[channelId].rb.push(data);\n\t\t\t}\n\t\t} else throw new Error(\"Error in function parameters\");\n\t}\n\n\t/* #region Analysers */\n\n\t/**\n\t * Polls data from connected WAAPI analyser return structured object with data and time data in arrays\n\t * @param {*} analyser\n\t */\n\tpollAnalyserData(analyser) {\n\t\tif (analyser !== undefined) {\n\t\t\tconst timeDataArray = new Uint8Array(analyser.fftSize); // Uint8Array should be the same length as the fftSize\n\t\t\tconst frequencyDataArray = new Uint8Array(analyser.fftSize);\n\n\t\t\tanalyser.getByteTimeDomainData(timeDataArray);\n\t\t\tanalyser.getByteFrequencyData(frequencyDataArray);\n\n\t\t\treturn {\n\t\t\t\tsmoothingTimeConstant: analyser.smoothingTimeConstant,\n\t\t\t\tfftSize: analyser.fftSize,\n\t\t\t\tfrequencyDataArray: frequencyDataArray,\n\t\t\t\ttimeDataArray: timeDataArray,\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Creates a WAAPI analyser node\n\t * @todo configuration object as argumen\n\t * @createAnalyser\n\t */\n\tcreateAnalyser(analyserID, callback) {\n\t\t// If Analyser creation happens after AudioContext intialization, create and connect WAAPI analyser\n\t\tif (analyserID && callback){\n if(this.audioContext && this.audioWorkletNode ) {\n\n let analyser = this.audioContext.createAnalyser();\n analyser.smoothingTimeConstant = 0.25;\n analyser.fftSize = 256; // default 2048;\n analyser.minDecibels = -90; // default\n analyser.maxDecibels = -0; // default -10; max 0\n this.audioWorkletNode.connect(analyser);\n\n let analyserFrameId = -1,\n analyserData = {};\n\n this.analysers[analyserID] = {\n analyser,\n analyserFrameId,\n callback,\n };\n\n /**\n * Creates requestAnimationFrame loop for polling data and publishing\n * Returns Analyser Frame ID for adding to Analysers hash\n * and cancelling animation frame\n */\n const analyserPollingLoop = () => {\n analyserData = this.pollAnalyserData(\n this.analysers[analyserID].analyser\n );\n this.analysers[analyserID].callback(analyserData); // Invoke callback that carries\n // This will guarantee feeding poll request at steady animation framerate\n this.analysers[analyserID].analyserFrameId = requestAnimationFrame(\n analyserPollingLoop\n );\n return analyserFrameId;\n };\n\n\t\t\t\tconsole.info(\"Created analyser\");\n\n analyserPollingLoop();\n\n\t\t\t// Other if AudioContext is NOT created yet (after app load, before splashScreen click)\n } else {\n this.analysers[analyserID] = { callback };\n }\n } else throw new Error('Parameters to createAnalyser incorrect')\n\t}\n\n\t/**\n\t * Connects WAAPI analyser nodes to the main audio worklet for visualisation.\n\t * @connectAnalysers\n\t */\n\tconnectAnalysers() {\n\t\tObject.keys(this.analysers).map((id) =>\n\t\t\tthis.createAnalyser(id, this.analysers[id].callback)\n\t\t);\n\t}\n\n\t/**\n\t * Removes a WAAPI analyser node, disconnects graph, cancels animation frame, deletes from hash\n\t * @removeAnalyser\n\t */\n\tremoveAnalyser(event) {\n\t\tif ( this.audioContext && this.audioWorkletNode ) {\n\t\t\tlet analyser = this.analysers[event.id];\n\t\t\tif (analyser !== undefined) {\n\t\t\t\tcancelAnimationFrame(this.analysers[event.id].analyserFrameId);\n\t\t\t\tdelete this.analysers[event.id];\n\t\t\t\t// this.audioWorkletNode.disconnect(analyser);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* #endregion */\n\n\t/**\n\t * Initialises audio context and sets worklet processor code\n\t * @play\n\t */\n\tasync init(origin) {\n\t\tif (origin && new URL(origin)) {\n\n let isWorkletProcessorLoaded;\n\n try{\n // AudioContext needs lazy loading to workaround the Chrome warning\n // Audio Engine first play() call, triggered by user, prevents the warning\n // by setting this.audioContext = new AudioContext();\n this.audioContext;\n this.origin = origin;\n this.audioWorkletName = \"maxi-processor\";\n this.audioWorkletUrl = origin + \"/\" + this.audioWorkletName + \".js\";\n\n if (this.audioContext === undefined) {\n this.audioContext = new AudioContext({\n // create audio context with latency optimally configured for playback\n latencyHint: \"playback\",\n // latencyHint: 32/44100, //this doesn't work below 512 on chrome (?)\n // sampleRate: 48000\n });\n }\n\n isWorkletProcessorLoaded = await this.loadWorkletProcessorCode();\n\t\t\t\tconsole.log(\"Processor loaded\")\n }\n catch(err){\n return false;\n }\n\n\t\t\tif (isWorkletProcessorLoaded) {\n\n\t\t\t\tthis.connectWorkletNode();\n\n\n\n\t\t\t\treturn true;\n\t\t\t} else return false;\n\n\t\t\t// No need to inject the callback here, messaging is built in KuraClock\n\t\t\t// this.kuraClock = new kuramotoNetClock((phase, idx) => {\n\t\t\t// // console.log( `DEBUG:AudioEngine:sendPeersMyClockPhase:phase:${phase}:id:${idx}`);\n\t\t\t// // This requires an initialised audio worklet\n\t\t\t// this.audioWorkletNode.port.postMessage({ phase: phase, i: idx });\n\t\t\t// });\n\t\t\t// if (this.kuraClock.connected()) {\n\t\t\t// \tthis.kuraClock.queryPeers(async numClockPeers => {\n\t\t\t// \t\tconsole.log(`DEBUG:AudioEngine:init:numClockPeers: ${numClockPeers}`);\n\t\t\t// \t});\n\t\t\t// }\n\t\t} else {\n\t\t\tthrow new Error(\"Name and valid URL required for AudioWorklet processor\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Initialises audio context and sets worklet processor code\n\t * or re-starts audio playback by stopping and running the latest Audio Worklet Processor code\n\t * @play\n\t */\n\tplay() {\n\t\tif (this.audioContext !== undefined) {\n\t\t\tif (this.audioContext.state === \"suspended\") {\n\t\t\t\tthis.audioContext.resume();\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tthis.hush();\n\t\t\t\t// this.stop();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Suspends AudioContext (Pause)\n\t * @stop\n\t */\n\tstop() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tthis.hush();\n\t\t\t// this.audioContext.suspend();\n\t\t}\n\t}\n\n\t/**\n\t * Stops audio by disconnecting AudioNode with AudioWorkletProcessor code\n\t * from Web Audio graph TODO Investigate when it is best to just STOP the graph exectution\n\t * @stop\n\t */\n\tstopAndRelease() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tthis.audioWorkletNode.disconnect(this.audioContext.destination);\n\t\t\tthis.audioWorkletNode = undefined;\n\t\t}\n\t}\n\n\tsetGain(gain) {\n\t\tif (this.audioWorkletNode !== undefined && gain >= 0 && gain <= 1) {\n\t\t\tconst gainParam = this.audioWorkletNode.parameters.get(\"gain\");\n\t\t\tgainParam.value = gain;\n\t\t\tconsole.log(gainParam.value); // DEBUG\n\t\t\treturn true;\n\t\t} else return false;\n\t}\n\n\tmore() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tconst gainParam = this.audioWorkletNode.parameters.get(\"gain\");\n\t\t\tgainParam.value += 0.05;\n\t\t\tconsole.info(gainParam.value); // DEBUG\n\t\t\treturn gainParam.value;\n\t\t} else throw new Error(\"error increasing sound level\");\n\t}\n\n\tless() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tconst gainParam = this.audioWorkletNode.parameters.get(\"gain\");\n\t\t\tgainParam.value -= 0.05;\n\t\t\tconsole.info(gainParam.value); // DEBUG\n\t\t\treturn gainParam.value;\n\t\t} else throw new Error(\"error decreasing sound level\");\n\t}\n\n\thush() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\t\thush: 1,\n\t\t\t});\n this.isHushed = true;\n\t\t\treturn true;\n\t\t} else return false;\n\t}\n\n\tunHush() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\t\tunhush: 1,\n\t\t\t});\n this.isHushed = false;\n\t\t\treturn true;\n\t\t} else return false;\n\t}\n\n\teval(dspFunction) {\n\t\tif (this.audioWorkletNode && this.audioWorkletNode.port) {\n\t\t\tif (this.audioContext.state === \"suspended\") {\n\t\t\t\tthis.audioContext.resume();\n\t\t\t}\n\t\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\t\teval: 1,\n\t\t\t\tsetup: dspFunction.setup,\n\t\t\t\tloop: dspFunction.loop,\n\t\t\t});\n this.isHushed = false;\n\t\t\treturn true;\n\t\t} else return false;\n\t}\n\n\t/**\n\t * Handler of the Pub/Sub message events\n\t * whose topics are subscribed to in the audio engine constructor\n\t * @asyncPostToProcessor\n\t * @param {*} event\n\t */\n\tasyncPostToProcessor(event) {\n\t\tif (event && this.audioWorkletNode && this.audioWorkletNode.port) {\n\t\t\t// Receive notification from 'model-output-data' topic\n\t\t\tconsole.log(\"DEBUG:AudioEngine:onMessagingEventHandler:\");\n\t\t\tconsole.log(event);\n\t\t\tthis.audioWorkletNode.port.postMessage(event);\n\t\t} else throw new Error(\"Error async posting to processor\");\n\t}\n\n\tsendClockPhase(phase, idx) {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\tthis.audioWorkletNode.port.postMessage({\n\t\t\t\tphase: phase,\n\t\t\t\ti: idx,\n\t\t\t});\n\t\t}\n\t}\n\n\tonAudioInputInit(stream) {\n try {\n this.mediaStreamSource = this.audioContext.createMediaStreamSource(stream);\n this.mediaStreamSource.connect(this.audioWorkletNode);\n this.mediaStream = stream;\n this.mediaStreamSourceConnected = true;\n } catch (error) {\n console.error(error);\n }\n\t}\n\n\tonAudioInputFail(error) {\n\t\tthis.mediaStreamSourceConnected = false;\n\t\tconsole.error(\n\t\t\t`ERROR:Engine:AudioInputFail: ${error.message} ${error.name}`\n\t\t);\n\t}\n\n\tonAudioInputDisconnect() {\n\n\t}\n\n\t/**\n\t * Sets up an AudioIn WAAPI sub-graph\n\t * @connectMediaStreamSourceInput\n\t */\n\tasync connectMediaStream() {\n\t\tconst constraints = ( window.constraints = {\n audio: {\n latency: 0.02,\n echoCancellation: false,\n mozNoiseSuppression: false,\n mozAutoGainControl: false\n },\n\t\t\tvideo: false,\n\t\t});\n // onAudioInputDisconnect();\n\t\tawait navigator.mediaDevices\n\t\t\t.getUserMedia(constraints)\n\t\t\t.then( s => this.onAudioInputInit(s) )\n\t\t\t.catch(this.onAudioInputFail);\n\n\t\treturn this.mediaStreamSourceConnected;\n\t}\n\n\t/**\n\t * Breaks up an AudioIn WAAPI sub-graph\n\t * @disconnectMediaStreamSourceInput\n\t */\n\tasync disconnectMediaStream() {\n\n try {\n\t\t\tthis.mediaStreamSource.disconnect(this.audioWorkletNode);\n\t\t\tthis.mediaStream.getAudioTracks().forEach((at) => at.stop());\n\t\t\tthis.mediaStreamSource = null;\n\t\t\tthis.mediaStreamSourceConnected = false;\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n finally {\n return this.mediaStreamSourceConnected;\n }\n\t\t// await navigator.mediaDevices\n\t\t// \t.getUserMedia(constraints)\n\t\t// \t.then((s) => this.onAudioInputDisconnect(s))\n\t\t// \t.catch(this.onAudioInputFail);\n\n\n\t}\n\n\t/**\n\t * Loads audioWorklet processor code into a worklet,\n\t * setups up all handlers (errors, async messaging, etc),\n\t * connects the worklet processor to the WAAPI graph\n\t */\n\tasync loadWorkletProcessorCode() {\n\t\tif (this.audioContext !== undefined) {\n\t\t\ttry {\n\t\t\t\tawait this.audioContext.audioWorklet.addModule(this.audioWorkletUrl)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tconsole.info(\n\t\t\t\t\t\t\t\"running %csema-engine v0.1.0\",\n\t\t\t\t\t\t\t\"font-weight: bold; color: #ffb7c5\"\n\t\t\t\t\t\t\t// \"font-weight: bold; background: #000; color: #bada55\"\n\t\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"ERROR:Engine:loadWorkletProcessorCode: AudioWorklet not supported in this browser: \",\n\t\t\t\t\terr.message\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t// Custom node constructor with required parameters\n\t\t\t\t// this.audioWorkletNode = new CustomMaxiNode(\n\t\t\t\tthis.audioWorkletNode = new AudioWorkletNode(\n\t\t\t\t\tthis.audioContext,\n\t\t\t\t\tthis.audioWorkletName\n\t\t\t\t);\n\n\t\t\t\tthis.audioWorkletNode.channelInterpretation = \"discrete\";\n\t\t\t\tthis.audioWorkletNode.channelCountMode = \"explicit\";\n\t\t\t\tthis.audioWorkletNode.channelCount = this.audioContext.destination.maxChannelCount;\n\n\t\t\t\treturn true;\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Error loading worklet processor code: \", err);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * connects all error event handlers and default processor message callback\n\t */\n\tconnectWorkletNode() {\n\t\tif (this.audioWorkletNode !== undefined) {\n\t\t\ttry {\n\t\t\t\tthis.audioContext.destination.channelInterpretation = \"discrete\";\n\t\t\t\tthis.audioContext.destination.channelCountMode = \"explicit\";\n\t\t\t\tthis.audioContext.destination.channelCount = this.audioContext.destination.maxChannelCount;\n\n\t\t\t\t// Connect the worklet node to the audio graph\n\t\t\t\tthis.audioWorkletNode.connect(this.audioContext.destination);\n\n\t\t\t\t// All possible error event handlers subscribed\n\t\t\t\tthis.audioWorkletNode.onprocessorerror = (e) =>\n\t\t\t\t\t// Errors from the processor\n\t\t\t\t\tconsole.error(`Engine processor error detected`, e);\n\n\t\t\t\t// Subscribe state changes in the audio worklet processor\n\t\t\t\tthis.audioWorkletNode.onprocessorstatechange = (e) =>\n\t\t\t\t\tconsole.info(\n\t\t\t\t\t\t`Engine processor state change: ` + audioWorkletNode.processorState\n\t\t\t\t\t);\n\n\t\t\t\t// Subscribe errors from the processor port\n\t\t\t\tthis.audioWorkletNode.port.onmessageerror = (e) =>\n\t\t\t\t\tconsole.error(`Engine processor port error: ` + e);\n\n\t\t\t\t// Default worklet processor message handler\n\t\t\t\t// gets replaced by user callback with 'subscribeAsyncMessage'\n\t\t\t\tthis.audioWorkletNode.port.onmessage = (e) =>\n\t\t\t\t\tthis.onProcessorMessageHandler(e);\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Error connecting WorkletNode: \", err);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Default worklet processor message handler\n\t * gets replaced by user-supplied callback through 'subscribeProcessorMessage'\n\t * @param {*} event\n\t */\n\tonProcessorMessageHandler(event) {\n\n\t\tif (event && event.data) {\n\t\t\tif (event.data.func === 'logs') {\n\t\t\t\tthis.logger.push(event.data); //recieve data from the worker.js and push it to the logger.\n\t\t\t}\n\t\t\telse if (event.data.rq && event.data.rq === \"send\") {\n\t\t\t\tswitch (event.data.ttype) {\n\t\t\t\t\tcase \"ML\":\n\t\t\t\t\t\t// this.messaging.publish(\"model-input-data\", {\n\t\t\t\t\t\t// type: \"model-input-data\",\n\t\t\t\t\t\t// value: event.data.value,\n\t\t\t\t\t\t// ch: event.data.ch\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"NET\":\n\t\t\t\t\t\tthis.peerNet.send(\n\t\t\t\t\t\t\tevent.data.ch[0],\n\t\t\t\t\t\t\tevent.data.value,\n\t\t\t\t\t\t\tevent.data.ch[1]\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (event.data.rq && event.data.rq === \"buf\") {\n\t\t\t\tswitch (event.data.ttype) {\n\t\t\t\t\tcase \"ML\":\n\t\t\t\t\t\tthis.dispatcher.dispatch(\"onSharedBuffer\", {\n\t\t\t\t\t\t\tsab: event.data.value,\n\t\t\t\t\t\t\tchannelID: event.data.channelID, //channel ID\n\t\t\t\t\t\t\tblocksize: event.data.blocksize,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"scope\":\n\t\t\t\t\t\t// this.dispatcher.dispatch(\"onSharedBuffer\", {\n\t\t\t\t\t\t// \tsab: event.data.value,\n\t\t\t\t\t\t// \tchannelID: event.data.channelID, //channel ID\n\t\t\t\t\t\t// \tblocksize: event.data.blocksize,\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\tlet ringbuf = new RingBuffer(event.data.value, Float64Array);\n\n\t\t\t\t\t\tthis.sharedArrayBuffers[event.data.channelID] = {\n\t\t\t\t\t\t\tsab: event.data.value, // TODO: this is redundant, you can access the sab from the rb,\n\t\t\t\t\t\t\t// TODO change hashmap name it is confusing and induces error\n\t\t\t\t\t\t\trb: ringbuf,\n\t\t\t\t\t\t\tttype: event.data.ttype,\n\t\t\t\t\t\t\tchannelID: event.data.channelID, //channel ID\n\t\t\t\t\t\t\tblocksize: event.data.blocksize,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (event.data.rq && event.data.rq === \"rts\") { // ready to suspend\n\t\t \tthis.audioContext.suspend();\n this.isHushed = true;\n\t\t }\n else if (event.data instanceof Error){\n // TODO use a logger to inject error\n console.error(`On Processor Message ${event.data}`);\n }\n\n\t\t}\n\t}\n\n\t/**\n\t * Public method for subscribing async messaging from the Audio Worklet Processor scope\n\t * @param callback\n\t */\n\tsubscribeProcessorMessage(callback) {\n\t\tif (callback && this.audioWorkletNode)\n\t\t\tthis.audioWorkletNode.port.onmessage = callback;\n\t\telse throw new Error(\"Error subscribing processor message\");\n\t}\n\n\t/**\n\t * Load individual audio sample, assuming an origin URL with which the engine\n\t * is initialised\n\t * @param {*} objectName name of the sample\n\t * @param {*} url relative URL to the origin URL, startgin with `/`\n\t */\n\tloadSample(objectName, url) {\n\t\tif (this.audioContext && this.audioWorkletNode) {\n\t\t\tif (\n\t\t\t\turl &&\n\t\t\t\turl.length !== 0 &&\n\t\t\t\tthis.origin &&\n\t\t\t\tthis.origin.length !== 0 &&\n\t\t\t\tnew URL(this.origin + url)\n\t\t\t) {\n\t\t\t\ttry {\n\t\t\t\t\tloadSampleToArray(\n\t\t\t\t\t\tthis.audioContext,\n\t\t\t\t\t\tobjectName,\n\t\t\t\t\t\tthis.origin + url,\n\t\t\t\t\t\tthis.audioWorkletNode\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Error loading sample ${objectName} from ${url}: `,\n\t\t\t\t\t\terror\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else throw \"Problem with sample relative URL\";\n\t\t} else throw \"Engine is not initialised!\";\n\t}\n}\n","(function(root, factory) {\n if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n root.nearley = factory();\n }\n}(this, function() {\n\n function Rule(name, symbols, postprocess) {\n this.id = ++Rule.highestId;\n this.name = name;\n this.symbols = symbols; // a list of literal | regex class | nonterminal\n this.postprocess = postprocess;\n return this;\n }\n Rule.highestId = 0;\n\n Rule.prototype.toString = function(withCursorAt) {\n var symbolSequence = (typeof withCursorAt === \"undefined\")\n ? this.symbols.map(getSymbolShortDisplay).join(' ')\n : ( this.symbols.slice(0, withCursorAt).map(getSymbolShortDisplay).join(' ')\n + \" ● \"\n + this.symbols.slice(withCursorAt).map(getSymbolShortDisplay).join(' ') );\n return this.name + \" → \" + symbolSequence;\n }\n\n\n // a State is a rule at a position from a given starting point in the input stream (reference)\n function State(rule, dot, reference, wantedBy) {\n this.rule = rule;\n this.dot = dot;\n this.reference = reference;\n this.data = [];\n this.wantedBy = wantedBy;\n this.isComplete = this.dot === rule.symbols.length;\n }\n\n State.prototype.toString = function() {\n return \"{\" + this.rule.toString(this.dot) + \"}, from: \" + (this.reference || 0);\n };\n\n State.prototype.nextState = function(child) {\n var state = new State(this.rule, this.dot + 1, this.reference, this.wantedBy);\n state.left = this;\n state.right = child;\n if (state.isComplete) {\n state.data = state.build();\n // Having right set here will prevent the right state and its children\n // form being garbage collected\n state.right = undefined;\n }\n return state;\n };\n\n State.prototype.build = function() {\n var children = [];\n var node = this;\n do {\n children.push(node.right.data);\n node = node.left;\n } while (node.left);\n children.reverse();\n return children;\n };\n\n State.prototype.finish = function() {\n if (this.rule.postprocess) {\n this.data = this.rule.postprocess(this.data, this.reference, Parser.fail);\n }\n };\n\n\n function Column(grammar, index) {\n this.grammar = grammar;\n this.index = index;\n this.states = [];\n this.wants = {}; // states indexed by the non-terminal they expect\n this.scannable = []; // list of states that expect a token\n this.completed = {}; // states that are nullable\n }\n\n\n Column.prototype.process = function(nextColumn) {\n var states = this.states;\n var wants = this.wants;\n var completed = this.completed;\n\n for (var w = 0; w < states.length; w++) { // nb. we push() during iteration\n var state = states[w];\n\n if (state.isComplete) {\n state.finish();\n if (state.data !== Parser.fail) {\n // complete\n var wantedBy = state.wantedBy;\n for (var i = wantedBy.length; i--; ) { // this line is hot\n var left = wantedBy[i];\n this.complete(left, state);\n }\n\n // special-case nullables\n if (state.reference === this.index) {\n // make sure future predictors of this rule get completed.\n var exp = state.rule.name;\n (this.completed[exp] = this.completed[exp] || []).push(state);\n }\n }\n\n } else {\n // queue scannable states\n var exp = state.rule.symbols[state.dot];\n if (typeof exp !== 'string') {\n this.scannable.push(state);\n continue;\n }\n\n // predict\n if (wants[exp]) {\n wants[exp].push(state);\n\n if (completed.hasOwnProperty(exp)) {\n var nulls = completed[exp];\n for (var i = 0; i < nulls.length; i++) {\n var right = nulls[i];\n this.complete(state, right);\n }\n }\n } else {\n wants[exp] = [state];\n this.predict(exp);\n }\n }\n }\n }\n\n Column.prototype.predict = function(exp) {\n var rules = this.grammar.byName[exp] || [];\n\n for (var i = 0; i < rules.length; i++) {\n var r = rules[i];\n var wantedBy = this.wants[exp];\n var s = new State(r, 0, this.index, wantedBy);\n this.states.push(s);\n }\n }\n\n Column.prototype.complete = function(left, right) {\n var copy = left.nextState(right);\n this.states.push(copy);\n }\n\n\n function Grammar(rules, start) {\n this.rules = rules;\n this.start = start || this.rules[0].name;\n var byName = this.byName = {};\n this.rules.forEach(function(rule) {\n if (!byName.hasOwnProperty(rule.name)) {\n byName[rule.name] = [];\n }\n byName[rule.name].push(rule);\n });\n }\n\n // So we can allow passing (rules, start) directly to Parser for backwards compatibility\n Grammar.fromCompiled = function(rules, start) {\n var lexer = rules.Lexer;\n if (rules.ParserStart) {\n start = rules.ParserStart;\n rules = rules.ParserRules;\n }\n var rules = rules.map(function (r) { return (new Rule(r.name, r.symbols, r.postprocess)); });\n var g = new Grammar(rules, start);\n g.lexer = lexer; // nb. storing lexer on Grammar is iffy, but unavoidable\n return g;\n }\n\n\n function StreamLexer() {\n this.reset(\"\");\n }\n\n StreamLexer.prototype.reset = function(data, state) {\n this.buffer = data;\n this.index = 0;\n this.line = state ? state.line : 1;\n this.lastLineBreak = state ? -state.col : 0;\n }\n\n StreamLexer.prototype.next = function() {\n if (this.index < this.buffer.length) {\n var ch = this.buffer[this.index++];\n if (ch === '\\n') {\n this.line += 1;\n this.lastLineBreak = this.index;\n }\n return {value: ch};\n }\n }\n\n StreamLexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.index - this.lastLineBreak,\n }\n }\n\n StreamLexer.prototype.formatError = function(token, message) {\n // nb. this gets called after consuming the offending token,\n // so the culprit is index-1\n var buffer = this.buffer;\n if (typeof buffer === 'string') {\n var lines = buffer\n .split(\"\\n\")\n .slice(\n Math.max(0, this.line - 5), \n this.line\n );\n\n var nextLineBreak = buffer.indexOf('\\n', this.index);\n if (nextLineBreak === -1) nextLineBreak = buffer.length;\n var col = this.index - this.lastLineBreak;\n var lastLineDigits = String(this.line).length;\n message += \" at line \" + this.line + \" col \" + col + \":\\n\\n\";\n message += lines\n .map(function(line, i) {\n return pad(this.line - lines.length + i + 1, lastLineDigits) + \" \" + line;\n }, this)\n .join(\"\\n\");\n message += \"\\n\" + pad(\"\", lastLineDigits + col) + \"^\\n\";\n return message;\n } else {\n return message + \" at index \" + (this.index - 1);\n }\n\n function pad(n, length) {\n var s = String(n);\n return Array(length - s.length + 1).join(\" \") + s;\n }\n }\n\n function Parser(rules, start, options) {\n if (rules instanceof Grammar) {\n var grammar = rules;\n var options = start;\n } else {\n var grammar = Grammar.fromCompiled(rules, start);\n }\n this.grammar = grammar;\n\n // Read options\n this.options = {\n keepHistory: false,\n lexer: grammar.lexer || new StreamLexer,\n };\n for (var key in (options || {})) {\n this.options[key] = options[key];\n }\n\n // Setup lexer\n this.lexer = this.options.lexer;\n this.lexerState = undefined;\n\n // Setup a table\n var column = new Column(grammar, 0);\n var table = this.table = [column];\n\n // I could be expecting anything.\n column.wants[grammar.start] = [];\n column.predict(grammar.start);\n // TODO what if start rule is nullable?\n column.process();\n this.current = 0; // token index\n }\n\n // create a reserved token for indicating a parse fail\n Parser.fail = {};\n\n Parser.prototype.feed = function(chunk) {\n var lexer = this.lexer;\n lexer.reset(chunk, this.lexerState);\n\n var token;\n while (true) {\n try {\n token = lexer.next();\n if (!token) {\n break;\n }\n } catch (e) {\n // Create the next column so that the error reporter\n // can display the correctly predicted states.\n var nextColumn = new Column(this.grammar, this.current + 1);\n this.table.push(nextColumn);\n var err = new Error(this.reportLexerError(e));\n err.offset = this.current;\n err.token = e.token;\n throw err;\n }\n // We add new states to table[current+1]\n var column = this.table[this.current];\n\n // GC unused states\n if (!this.options.keepHistory) {\n delete this.table[this.current - 1];\n }\n\n var n = this.current + 1;\n var nextColumn = new Column(this.grammar, n);\n this.table.push(nextColumn);\n\n // Advance all tokens that expect the symbol\n var literal = token.text !== undefined ? token.text : token.value;\n var value = lexer.constructor === StreamLexer ? token.value : token;\n var scannable = column.scannable;\n for (var w = scannable.length; w--; ) {\n var state = scannable[w];\n var expect = state.rule.symbols[state.dot];\n // Try to consume the token\n // either regex or literal\n if (expect.test ? expect.test(value) :\n expect.type ? expect.type === token.type\n : expect.literal === literal) {\n // Add it\n var next = state.nextState({data: value, token: token, isToken: true, reference: n - 1});\n nextColumn.states.push(next);\n }\n }\n\n // Next, for each of the rules, we either\n // (a) complete it, and try to see if the reference row expected that\n // rule\n // (b) predict the next nonterminal it expects by adding that\n // nonterminal's start state\n // To prevent duplication, we also keep track of rules we have already\n // added\n\n nextColumn.process();\n\n // If needed, throw an error:\n if (nextColumn.states.length === 0) {\n // No states at all! This is not good.\n var err = new Error(this.reportError(token));\n err.offset = this.current;\n err.token = token;\n throw err;\n }\n\n // maybe save lexer state\n if (this.options.keepHistory) {\n column.lexerState = lexer.save()\n }\n\n this.current++;\n }\n if (column) {\n this.lexerState = lexer.save()\n }\n\n // Incrementally keep track of results\n this.results = this.finish();\n\n // Allow chaining, for whatever it's worth\n return this;\n };\n\n Parser.prototype.reportLexerError = function(lexerError) {\n var tokenDisplay, lexerMessage;\n // Planning to add a token property to moo's thrown error\n // even on erroring tokens to be used in error display below\n var token = lexerError.token;\n if (token) {\n tokenDisplay = \"input \" + JSON.stringify(token.text[0]) + \" (lexer error)\";\n lexerMessage = this.lexer.formatError(token, \"Syntax error\");\n } else {\n tokenDisplay = \"input (lexer error)\";\n lexerMessage = lexerError.message;\n }\n return this.reportErrorCommon(lexerMessage, tokenDisplay);\n };\n\n Parser.prototype.reportError = function(token) {\n var tokenDisplay = (token.type ? token.type + \" token: \" : \"\") + JSON.stringify(token.value !== undefined ? token.value : token);\n var lexerMessage = this.lexer.formatError(token, \"Syntax error\");\n return this.reportErrorCommon(lexerMessage, tokenDisplay);\n };\n\n Parser.prototype.reportErrorCommon = function(lexerMessage, tokenDisplay) {\n var lines = [];\n lines.push(lexerMessage);\n var lastColumnIndex = this.table.length - 2;\n var lastColumn = this.table[lastColumnIndex];\n var expectantStates = lastColumn.states\n .filter(function(state) {\n var nextSymbol = state.rule.symbols[state.dot];\n return nextSymbol && typeof nextSymbol !== \"string\";\n });\n\n if (expectantStates.length === 0) {\n lines.push('Unexpected ' + tokenDisplay + '. I did not expect any more input. Here is the state of my parse table:\\n');\n this.displayStateStack(lastColumn.states, lines);\n } else {\n lines.push('Unexpected ' + tokenDisplay + '. Instead, I was expecting to see one of the following:\\n');\n // Display a \"state stack\" for each expectant state\n // - which shows you how this state came to be, step by step.\n // If there is more than one derivation, we only display the first one.\n var stateStacks = expectantStates\n .map(function(state) {\n return this.buildFirstStateStack(state, []) || [state];\n }, this);\n // Display each state that is expecting a terminal symbol next.\n stateStacks.forEach(function(stateStack) {\n var state = stateStack[0];\n var nextSymbol = state.rule.symbols[state.dot];\n var symbolDisplay = this.getSymbolDisplay(nextSymbol);\n lines.push('A ' + symbolDisplay + ' based on:');\n this.displayStateStack(stateStack, lines);\n }, this);\n }\n lines.push(\"\");\n return lines.join(\"\\n\");\n }\n \n Parser.prototype.displayStateStack = function(stateStack, lines) {\n var lastDisplay;\n var sameDisplayCount = 0;\n for (var j = 0; j < stateStack.length; j++) {\n var state = stateStack[j];\n var display = state.rule.toString(state.dot);\n if (display === lastDisplay) {\n sameDisplayCount++;\n } else {\n if (sameDisplayCount > 0) {\n lines.push(' ^ ' + sameDisplayCount + ' more lines identical to this');\n }\n sameDisplayCount = 0;\n lines.push(' ' + display);\n }\n lastDisplay = display;\n }\n };\n\n Parser.prototype.getSymbolDisplay = function(symbol) {\n return getSymbolLongDisplay(symbol);\n };\n\n /*\n Builds a the first state stack. You can think of a state stack as the call stack\n of the recursive-descent parser which the Nearley parse algorithm simulates.\n A state stack is represented as an array of state objects. Within a\n state stack, the first item of the array will be the starting\n state, with each successive item in the array going further back into history.\n\n This function needs to be given a starting state and an empty array representing\n the visited states, and it returns an single state stack.\n\n */\n Parser.prototype.buildFirstStateStack = function(state, visited) {\n if (visited.indexOf(state) !== -1) {\n // Found cycle, return null\n // to eliminate this path from the results, because\n // we don't know how to display it meaningfully\n return null;\n }\n if (state.wantedBy.length === 0) {\n return [state];\n }\n var prevState = state.wantedBy[0];\n var childVisited = [state].concat(visited);\n var childResult = this.buildFirstStateStack(prevState, childVisited);\n if (childResult === null) {\n return null;\n }\n return [state].concat(childResult);\n };\n\n Parser.prototype.save = function() {\n var column = this.table[this.current];\n column.lexerState = this.lexerState;\n return column;\n };\n\n Parser.prototype.restore = function(column) {\n var index = column.index;\n this.current = index;\n this.table[index] = column;\n this.table.splice(index + 1);\n this.lexerState = column.lexerState;\n\n // Incrementally keep track of results\n this.results = this.finish();\n };\n\n // nb. deprecated: use save/restore instead!\n Parser.prototype.rewind = function(index) {\n if (!this.options.keepHistory) {\n throw new Error('set option `keepHistory` to enable rewinding')\n }\n // nb. recall column (table) indicies fall between token indicies.\n // col 0 -- token 0 -- col 1\n this.restore(this.table[index]);\n };\n\n Parser.prototype.finish = function() {\n // Return the possible parsings\n var considerations = [];\n var start = this.grammar.start;\n var column = this.table[this.table.length - 1]\n column.states.forEach(function (t) {\n if (t.rule.name === start\n && t.dot === t.rule.symbols.length\n && t.reference === 0\n && t.data !== Parser.fail) {\n considerations.push(t);\n }\n });\n return considerations.map(function(c) {return c.data; });\n };\n\n function getSymbolLongDisplay(symbol) {\n var type = typeof symbol;\n if (type === \"string\") {\n return symbol;\n } else if (type === \"object\") {\n if (symbol.literal) {\n return JSON.stringify(symbol.literal);\n } else if (symbol instanceof RegExp) {\n return 'character matching ' + symbol;\n } else if (symbol.type) {\n return symbol.type + ' token';\n } else if (symbol.test) {\n return 'token matching ' + String(symbol.test);\n } else {\n throw new Error('Unknown symbol type: ' + symbol);\n }\n }\n }\n\n function getSymbolShortDisplay(symbol) {\n var type = typeof symbol;\n if (type === \"string\") {\n return symbol;\n } else if (type === \"object\") {\n if (symbol.literal) {\n return JSON.stringify(symbol.literal);\n } else if (symbol instanceof RegExp) {\n return symbol.toString();\n } else if (symbol.type) {\n return '%' + symbol.type;\n } else if (symbol.test) {\n return '<' + String(symbol.test) + '>';\n } else {\n throw new Error('Unknown symbol type: ' + symbol);\n }\n }\n }\n\n return {\n Parser: Parser,\n Grammar: Grammar,\n Rule: Rule,\n };\n\n}));\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.moo = factory()\n }\n}(this, function() {\n 'use strict';\n\n var hasOwnProperty = Object.prototype.hasOwnProperty\n var toString = Object.prototype.toString\n var hasSticky = typeof new RegExp().sticky === 'boolean'\n\n /***************************************************************************/\n\n function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }\n function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }\n\n function reEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n function reGroups(s) {\n var re = new RegExp('|' + s)\n return re.exec('').length - 1\n }\n function reCapture(s) {\n return '(' + s + ')'\n }\n function reUnion(regexps) {\n if (!regexps.length) return '(?!)'\n var source = regexps.map(function(s) {\n return \"(?:\" + s + \")\"\n }).join('|')\n return \"(?:\" + source + \")\"\n }\n\n function regexpOrLiteral(obj) {\n if (typeof obj === 'string') {\n return '(?:' + reEscape(obj) + ')'\n\n } else if (isRegExp(obj)) {\n // TODO: consider /u support\n if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')\n if (obj.global) throw new Error('RegExp /g flag is implied')\n if (obj.sticky) throw new Error('RegExp /y flag is implied')\n if (obj.multiline) throw new Error('RegExp /m flag is implied')\n return obj.source\n\n } else {\n throw new Error('Not a pattern: ' + obj)\n }\n }\n\n function objectToRules(object) {\n var keys = Object.getOwnPropertyNames(object)\n var result = []\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var thing = object[key]\n var rules = [].concat(thing)\n if (key === 'include') {\n for (var j = 0; j < rules.length; j++) {\n result.push({include: rules[j]})\n }\n continue\n }\n var match = []\n rules.forEach(function(rule) {\n if (isObject(rule)) {\n if (match.length) result.push(ruleOptions(key, match))\n result.push(ruleOptions(key, rule))\n match = []\n } else {\n match.push(rule)\n }\n })\n if (match.length) result.push(ruleOptions(key, match))\n }\n return result\n }\n\n function arrayToRules(array) {\n var result = []\n for (var i = 0; i < array.length; i++) {\n var obj = array[i]\n if (obj.include) {\n var include = [].concat(obj.include)\n for (var j = 0; j < include.length; j++) {\n result.push({include: include[j]})\n }\n continue\n }\n if (!obj.type) {\n throw new Error('Rule has no type: ' + JSON.stringify(obj))\n }\n result.push(ruleOptions(obj.type, obj))\n }\n return result\n }\n\n function ruleOptions(type, obj) {\n if (!isObject(obj)) {\n obj = { match: obj }\n }\n if (obj.include) {\n throw new Error('Matching rules cannot also include states')\n }\n\n // nb. error and fallback imply lineBreaks\n var options = {\n defaultType: type,\n lineBreaks: !!obj.error || !!obj.fallback,\n pop: false,\n next: null,\n push: null,\n error: false,\n fallback: false,\n value: null,\n type: null,\n shouldThrow: false,\n }\n\n // Avoid Object.assign(), so we support IE9+\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n options[key] = obj[key]\n }\n }\n\n // type transform cannot be a string\n if (typeof options.type === 'string' && type !== options.type) {\n throw new Error(\"Type transform cannot be a string (type '\" + options.type + \"' for token '\" + type + \"')\")\n }\n\n // convert to array\n var match = options.match\n options.match = Array.isArray(match) ? match : match ? [match] : []\n options.match.sort(function(a, b) {\n return isRegExp(a) && isRegExp(b) ? 0\n : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length\n })\n return options\n }\n\n function toRules(spec) {\n return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)\n }\n\n var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})\n function compileRules(rules, hasStates) {\n var errorRule = null\n var fast = Object.create(null)\n var fastAllowed = true\n var unicodeFlag = null\n var groups = []\n var parts = []\n\n // If there is a fallback rule, then disable fast matching\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].fallback) {\n fastAllowed = false\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var options = rules[i]\n\n if (options.include) {\n // all valid inclusions are removed by states() preprocessor\n throw new Error('Inheritance is not allowed in stateless lexers')\n }\n\n if (options.error || options.fallback) {\n // errorRule can only be set once\n if (errorRule) {\n if (!options.fallback === !errorRule.fallback) {\n throw new Error(\"Multiple \" + (options.fallback ? \"fallback\" : \"error\") + \" rules not allowed (for token '\" + options.defaultType + \"')\")\n } else {\n throw new Error(\"fallback and error are mutually exclusive (for token '\" + options.defaultType + \"')\")\n }\n }\n errorRule = options\n }\n\n var match = options.match.slice()\n if (fastAllowed) {\n while (match.length && typeof match[0] === 'string' && match[0].length === 1) {\n var word = match.shift()\n fast[word.charCodeAt(0)] = options\n }\n }\n\n // Warn about inappropriate state-switching options\n if (options.pop || options.push || options.next) {\n if (!hasStates) {\n throw new Error(\"State-switching options are not allowed in stateless lexers (for token '\" + options.defaultType + \"')\")\n }\n if (options.fallback) {\n throw new Error(\"State-switching options are not allowed on fallback tokens (for token '\" + options.defaultType + \"')\")\n }\n }\n\n // Only rules with a .match are included in the RegExp\n if (match.length === 0) {\n continue\n }\n fastAllowed = false\n\n groups.push(options)\n\n // Check unicode flag is used everywhere or nowhere\n for (var j = 0; j < match.length; j++) {\n var obj = match[j]\n if (!isRegExp(obj)) {\n continue\n }\n\n if (unicodeFlag === null) {\n unicodeFlag = obj.unicode\n } else if (unicodeFlag !== obj.unicode && options.fallback === false) {\n throw new Error('If one rule is /u then all must be')\n }\n }\n\n // convert to RegExp\n var pat = reUnion(match.map(regexpOrLiteral))\n\n // validate\n var regexp = new RegExp(pat)\n if (regexp.test(\"\")) {\n throw new Error(\"RegExp matches empty string: \" + regexp)\n }\n var groupCount = reGroups(pat)\n if (groupCount > 0) {\n throw new Error(\"RegExp has capture groups: \" + regexp + \"\\nUse (?: … ) instead\")\n }\n\n // try and detect rules matching newlines\n if (!options.lineBreaks && regexp.test('\\n')) {\n throw new Error('Rule should declare lineBreaks: ' + regexp)\n }\n\n // store regex\n parts.push(reCapture(pat))\n }\n\n\n // If there's no fallback rule, use the sticky flag so we only look for\n // matches at the current index.\n //\n // If we don't support the sticky flag, then fake it using an irrefutable\n // match (i.e. an empty pattern).\n var fallbackRule = errorRule && errorRule.fallback\n var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'\n var suffix = hasSticky || fallbackRule ? '' : '|'\n\n if (unicodeFlag === true) flags += \"u\"\n var combined = new RegExp(reUnion(parts) + suffix, flags)\n return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}\n }\n\n function compile(rules) {\n var result = compileRules(toRules(rules))\n return new Lexer({start: result}, 'start')\n }\n\n function checkStateGroup(g, name, map) {\n var state = g && (g.push || g.next)\n if (state && !map[state]) {\n throw new Error(\"Missing state '\" + state + \"' (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n if (g && g.pop && +g.pop !== 1) {\n throw new Error(\"pop must be 1 (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n }\n function compileStates(states, start) {\n var all = states.$all ? toRules(states.$all) : []\n delete states.$all\n\n var keys = Object.getOwnPropertyNames(states)\n if (!start) start = keys[0]\n\n var ruleMap = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n ruleMap[key] = toRules(states[key]).concat(all)\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var rules = ruleMap[key]\n var included = Object.create(null)\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j]\n if (!rule.include) continue\n var splice = [j, 1]\n if (rule.include !== key && !included[rule.include]) {\n included[rule.include] = true\n var newRules = ruleMap[rule.include]\n if (!newRules) {\n throw new Error(\"Cannot include nonexistent state '\" + rule.include + \"' (in state '\" + key + \"')\")\n }\n for (var k = 0; k < newRules.length; k++) {\n var newRule = newRules[k]\n if (rules.indexOf(newRule) !== -1) continue\n splice.push(newRule)\n }\n }\n rules.splice.apply(rules, splice)\n j--\n }\n }\n\n var map = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n map[key] = compileRules(ruleMap[key], true)\n }\n\n for (var i = 0; i < keys.length; i++) {\n var name = keys[i]\n var state = map[name]\n var groups = state.groups\n for (var j = 0; j < groups.length; j++) {\n checkStateGroup(groups[j], name, map)\n }\n var fastKeys = Object.getOwnPropertyNames(state.fast)\n for (var j = 0; j < fastKeys.length; j++) {\n checkStateGroup(state.fast[fastKeys[j]], name, map)\n }\n }\n\n return new Lexer(map, start)\n }\n\n function keywordTransform(map) {\n var reverseMap = Object.create(null)\n var byLength = Object.create(null)\n var types = Object.getOwnPropertyNames(map)\n for (var i = 0; i < types.length; i++) {\n var tokenType = types[i]\n var item = map[tokenType]\n var keywordList = Array.isArray(item) ? item : [item]\n keywordList.forEach(function(keyword) {\n (byLength[keyword.length] = byLength[keyword.length] || []).push(keyword)\n if (typeof keyword !== 'string') {\n throw new Error(\"keyword must be string (in keyword '\" + tokenType + \"')\")\n }\n reverseMap[keyword] = tokenType\n })\n }\n\n // fast string lookup\n // https://jsperf.com/string-lookups\n function str(x) { return JSON.stringify(x) }\n var source = ''\n source += 'switch (value.length) {\\n'\n for (var length in byLength) {\n var keywords = byLength[length]\n source += 'case ' + length + ':\\n'\n source += 'switch (value) {\\n'\n keywords.forEach(function(keyword) {\n var tokenType = reverseMap[keyword]\n source += 'case ' + str(keyword) + ': return ' + str(tokenType) + '\\n'\n })\n source += '}\\n'\n }\n source += '}\\n'\n return Function('value', source) // type\n }\n\n /***************************************************************************/\n\n var Lexer = function(states, state) {\n this.startState = state\n this.states = states\n this.buffer = ''\n this.stack = []\n this.reset()\n }\n\n Lexer.prototype.reset = function(data, info) {\n this.buffer = data || ''\n this.index = 0\n this.line = info ? info.line : 1\n this.col = info ? info.col : 1\n this.queuedToken = info ? info.queuedToken : null\n this.queuedThrow = info ? info.queuedThrow : null\n this.setState(info ? info.state : this.startState)\n this.stack = info && info.stack ? info.stack.slice() : []\n return this\n }\n\n Lexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.col,\n state: this.state,\n stack: this.stack.slice(),\n queuedToken: this.queuedToken,\n queuedThrow: this.queuedThrow,\n }\n }\n\n Lexer.prototype.setState = function(state) {\n if (!state || this.state === state) return\n this.state = state\n var info = this.states[state]\n this.groups = info.groups\n this.error = info.error\n this.re = info.regexp\n this.fast = info.fast\n }\n\n Lexer.prototype.popState = function() {\n this.setState(this.stack.pop())\n }\n\n Lexer.prototype.pushState = function(state) {\n this.stack.push(this.state)\n this.setState(state)\n }\n\n var eat = hasSticky ? function(re, buffer) { // assume re is /y\n return re.exec(buffer)\n } : function(re, buffer) { // assume re is /g\n var match = re.exec(buffer)\n // will always match, since we used the |(?:) trick\n if (match[0].length === 0) {\n return null\n }\n return match\n }\n\n Lexer.prototype._getGroup = function(match) {\n var groupCount = this.groups.length\n for (var i = 0; i < groupCount; i++) {\n if (match[i + 1] !== undefined) {\n return this.groups[i]\n }\n }\n throw new Error('Cannot find token type for matched text')\n }\n\n function tokenToString() {\n return this.value\n }\n\n Lexer.prototype.next = function() {\n var index = this.index\n\n // If a fallback token matched, we don't need to re-run the RegExp\n if (this.queuedGroup) {\n var token = this._token(this.queuedGroup, this.queuedText, index)\n this.queuedGroup = null\n this.queuedText = \"\"\n return token\n }\n\n var buffer = this.buffer\n if (index === buffer.length) {\n return // EOF\n }\n\n // Fast matching for single characters\n var group = this.fast[buffer.charCodeAt(index)]\n if (group) {\n return this._token(group, buffer.charAt(index), index)\n }\n\n // Execute RegExp\n var re = this.re\n re.lastIndex = index\n var match = eat(re, buffer)\n\n // Error tokens match the remaining buffer\n var error = this.error\n if (match == null) {\n return this._token(error, buffer.slice(index, buffer.length), index)\n }\n\n var group = this._getGroup(match)\n var text = match[0]\n\n if (error.fallback && match.index !== index) {\n this.queuedGroup = group\n this.queuedText = text\n\n // Fallback tokens contain the unmatched portion of the buffer\n return this._token(error, buffer.slice(index, match.index), index)\n }\n\n return this._token(group, text, index)\n }\n\n Lexer.prototype._token = function(group, text, offset) {\n // count line breaks\n var lineBreaks = 0\n if (group.lineBreaks) {\n var matchNL = /\\n/g\n var nl = 1\n if (text === '\\n') {\n lineBreaks = 1\n } else {\n while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }\n }\n }\n\n var token = {\n type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,\n value: typeof group.value === 'function' ? group.value(text) : text,\n text: text,\n toString: tokenToString,\n offset: offset,\n lineBreaks: lineBreaks,\n line: this.line,\n col: this.col,\n }\n // nb. adding more props to token object will make V8 sad!\n\n var size = text.length\n this.index += size\n this.line += lineBreaks\n if (lineBreaks !== 0) {\n this.col = size - nl + 1\n } else {\n this.col += size\n }\n\n // throw, if no rule with {error: true}\n if (group.shouldThrow) {\n throw new Error(this.formatError(token, \"invalid syntax\"))\n }\n\n if (group.pop) this.popState()\n else if (group.push) this.pushState(group.push)\n else if (group.next) this.setState(group.next)\n\n return token\n }\n\n if (typeof Symbol !== 'undefined' && Symbol.iterator) {\n var LexerIterator = function(lexer) {\n this.lexer = lexer\n }\n\n LexerIterator.prototype.next = function() {\n var token = this.lexer.next()\n return {value: token, done: !token}\n }\n\n LexerIterator.prototype[Symbol.iterator] = function() {\n return this\n }\n\n Lexer.prototype[Symbol.iterator] = function() {\n return new LexerIterator(this)\n }\n }\n\n Lexer.prototype.formatError = function(token, message) {\n if (token == null) {\n // An undefined token indicates EOF\n var text = this.buffer.slice(this.index)\n var token = {\n text: text,\n offset: this.index,\n lineBreaks: text.indexOf('\\n') === -1 ? 0 : 1,\n line: this.line,\n col: this.col,\n }\n }\n var start = Math.max(0, token.offset - token.col + 1)\n var eol = token.lineBreaks ? token.text.indexOf('\\n') : token.text.length\n var firstLine = this.buffer.substring(start, token.offset + eol)\n message += \" at line \" + token.line + \" col \" + token.col + \":\\n\\n\"\n message += \" \" + firstLine + \"\\n\"\n message += \" \" + Array(token.col).join(\" \") + \"^\"\n return message\n }\n\n Lexer.prototype.clone = function() {\n return new Lexer(this.states, this.state)\n }\n\n Lexer.prototype.has = function(tokenType) {\n return true\n }\n\n\n return {\n compile: compile,\n states: compileStates,\n error: Object.freeze({error: true}),\n fallback: Object.freeze({fallback: true}),\n keywords: keywordTransform,\n }\n\n}));\n","// Generated automatically by nearley, version 2.19.5\n// http://github.com/Hardmath123/nearley\n(function () {\nfunction id(x) { return x[0]; }\n\nfunction getValue(d) {\n return d[0].value\n}\n\nfunction literals(list) {\n var rules = {}\n for (var lit of list) {\n rules[lit] = {match: lit, next: 'main'}\n }\n return rules\n}\n\nvar moo = require('moo')\nvar rules = Object.assign({\n ws: {match: /\\s+/, lineBreaks: true, next: 'main'},\n comment: /\\#.*/,\n arrow: {match: /[=-]+\\>/, next: 'main'},\n js: {\n match: /\\{\\%(?:[^%]|\\%[^}])*\\%\\}/,\n value: x => x.slice(2, -2),\n lineBreaks: true,\n },\n word: {match: /[\\w\\?\\+]+/, next: 'afterWord'},\n string: {\n match: /\"(?:[^\\\\\"\\n]|\\\\[\"\\\\/bfnrt]|\\\\u[a-fA-F0-9]{4})*\"/,\n value: x => JSON.parse(x),\n next: 'main',\n },\n btstring: {\n match: /`[^`]*`/,\n value: x => x.slice(1, -1),\n next: 'main',\n lineBreaks: true,\n },\n}, literals([\n \",\", \"|\", \"$\", \"%\", \"(\", \")\",\n \":?\", \":*\", \":+\",\n \"@include\", \"@builtin\", \"@\",\n \"]\",\n]))\n\nvar lexer = moo.states({\n main: Object.assign({}, rules, {\n charclass: {\n match: /\\.|\\[(?:\\\\.|[^\\\\\\n])+?\\]/,\n value: x => new RegExp(x),\n },\n }),\n // Both macro arguments and charclasses are both enclosed in [ ].\n // We disambiguate based on whether the previous token was a `word`.\n afterWord: Object.assign({}, rules, {\n \"[\": {match: \"[\", next: 'main'},\n }),\n})\n\nfunction insensitive(sl) {\n var s = sl.literal;\n var result = [];\n for (var i=0; i<s.length; i++) {\n var c = s.charAt(i);\n if (c.toUpperCase() !== c || c.toLowerCase() !== c) {\n result.push(new RegExp(\"[\" + c.toLowerCase() + c.toUpperCase() + \"]\"));\n } else {\n result.push({literal: c});\n }\n }\n return {subexpression: [{tokens: result, postprocess: function(d) {return d.join(\"\"); }}]};\n}\n\nvar grammar = {\n Lexer: lexer,\n ParserRules: [\n {\"name\": \"final$ebnf$1\", \"symbols\": [(lexer.has(\"ws\") ? {type: \"ws\"} : ws)], \"postprocess\": id},\n {\"name\": \"final$ebnf$1\", \"symbols\": [], \"postprocess\": function(d) {return null;}},\n {\"name\": \"final\", \"symbols\": [\"_\", \"prog\", \"_\", \"final$ebnf$1\"], \"postprocess\": function(d) { return d[1]; }},\n {\"name\": \"prog\", \"symbols\": [\"prod\"], \"postprocess\": function(d) { return [d[0]]; }},\n {\"name\": \"prog\", \"symbols\": [\"prod\", \"ws\", \"prog\"], \"postprocess\": function(d) { return [d[0]].concat(d[2]); }},\n {\"name\": \"prod\", \"symbols\": [\"word\", \"_\", (lexer.has(\"arrow\") ? {type: \"arrow\"} : arrow), \"_\", \"expression+\"], \"postprocess\": function(d) { return {name: d[0], rules: d[4]}; }},\n {\"name\": \"prod\", \"symbols\": [\"word\", {\"literal\":\"[\"}, \"_\", \"wordlist\", \"_\", {\"literal\":\"]\"}, \"_\", (lexer.has(\"arrow\") ? {type: \"arrow\"} : arrow), \"_\", \"expression+\"], \"postprocess\": function(d) {return {macro: d[0], args: d[3], exprs: d[9]}}},\n {\"name\": \"prod\", \"symbols\": [{\"literal\":\"@\"}, \"_\", \"js\"], \"postprocess\": function(d) { return {body: d[2]}; }},\n {\"name\": \"prod\", \"symbols\": [{\"literal\":\"@\"}, \"word\", \"ws\", \"word\"], \"postprocess\": function(d) { return {config: d[1], value: d[3]}; }},\n {\"name\": \"prod\", \"symbols\": [{\"literal\":\"@include\"}, \"_\", \"string\"], \"postprocess\": function(d) {return {include: d[2].literal, builtin: false}}},\n {\"name\": \"prod\", \"symbols\": [{\"literal\":\"@builtin\"}, \"_\", \"string\"], \"postprocess\": function(d) {return {include: d[2].literal, builtin: true }}},\n {\"name\": \"expression+\", \"symbols\": [\"completeexpression\"]},\n {\"name\": \"expression+\", \"symbols\": [\"expression+\", \"_\", {\"literal\":\"|\"}, \"_\", \"completeexpression\"], \"postprocess\": function(d) { return d[0].concat([d[4]]); }},\n {\"name\": \"expressionlist\", \"symbols\": [\"completeexpression\"]},\n {\"name\": \"expressionlist\", \"symbols\": [\"expressionlist\", \"_\", {\"literal\":\",\"}, \"_\", \"completeexpression\"], \"postprocess\": function(d) { return d[0].concat([d[4]]); }},\n {\"name\": \"wordlist\", \"symbols\": [\"word\"]},\n {\"name\": \"wordlist\", \"symbols\": [\"wordlist\", \"_\", {\"literal\":\",\"}, \"_\", \"word\"], \"postprocess\": function(d) { return d[0].concat([d[4]]); }},\n {\"name\": \"completeexpression\", \"symbols\": [\"expr\"], \"postprocess\": function(d) { return {tokens: d[0]}; }},\n {\"name\": \"completeexpression\", \"symbols\": [\"expr\", \"_\", \"js\"], \"postprocess\": function(d) { return {tokens: d[0], postprocess: d[2]}; }},\n {\"name\": \"expr_member\", \"symbols\": [\"word\"], \"postprocess\": id},\n {\"name\": \"expr_member\", \"symbols\": [{\"literal\":\"$\"}, \"word\"], \"postprocess\": function(d) {return {mixin: d[1]}}},\n {\"name\": \"expr_member\", \"symbols\": [\"word\", {\"literal\":\"[\"}, \"_\", \"expressionlist\", \"_\", {\"literal\":\"]\"}], \"postprocess\": function(d) {return {macrocall: d[0], args: d[3]}}},\n {\"name\": \"expr_member$ebnf$1\", \"symbols\": [{\"literal\":\"i\"}], \"postprocess\": id},\n {\"name\": \"expr_member$ebnf$1\", \"symbols\": [], \"postprocess\": function(d) {return null;}},\n {\"name\": \"expr_member\", \"symbols\": [\"string\", \"expr_member$ebnf$1\"], \"postprocess\": function(d) { if (d[1]) {return insensitive(d[0]); } else {return d[0]; } }},\n {\"name\": \"expr_member\", \"symbols\": [{\"literal\":\"%\"}, \"word\"], \"postprocess\": function(d) {return {token: d[1]}}},\n {\"name\": \"expr_member\", \"symbols\": [\"charclass\"], \"postprocess\": id},\n {\"name\": \"expr_member\", \"symbols\": [{\"literal\":\"(\"}, \"_\", \"expression+\", \"_\", {\"literal\":\")\"}], \"postprocess\": function(d) {return {'subexpression': d[2]} ;}},\n {\"name\": \"expr_member\", \"symbols\": [\"expr_member\", \"_\", \"ebnf_modifier\"], \"postprocess\": function(d) {return {'ebnf': d[0], 'modifier': d[2]}; }},\n {\"name\": \"ebnf_modifier\", \"symbols\": [{\"literal\":\":+\"}], \"postprocess\": getValue},\n {\"name\": \"ebnf_modifier\", \"symbols\": [{\"literal\":\":*\"}], \"postprocess\": getValue},\n {\"name\": \"ebnf_modifier\", \"symbols\": [{\"literal\":\":?\"}], \"postprocess\": getValue},\n {\"name\": \"expr\", \"symbols\": [\"expr_member\"]},\n {\"name\": \"expr\", \"symbols\": [\"expr\", \"ws\", \"expr_member\"], \"postprocess\": function(d){ return d[0].concat([d[2]]); }},\n {\"name\": \"word\", \"symbols\": [(lexer.has(\"word\") ? {type: \"word\"} : word)], \"postprocess\": getValue},\n {\"name\": \"string\", \"symbols\": [(lexer.has(\"string\") ? {type: \"string\"} : string)], \"postprocess\": d => ({literal: d[0].value})},\n {\"name\": \"string\", \"symbols\": [(lexer.has(\"btstring\") ? {type: \"btstring\"} : btstring)], \"postprocess\": d => ({literal: d[0].value})},\n {\"name\": \"charclass\", \"symbols\": [(lexer.has(\"charclass\") ? {type: \"charclass\"} : charclass)], \"postprocess\": getValue},\n {\"name\": \"js\", \"symbols\": [(lexer.has(\"js\") ? {type: \"js\"} : js)], \"postprocess\": getValue},\n {\"name\": \"_$ebnf$1\", \"symbols\": [\"ws\"], \"postprocess\": id},\n {\"name\": \"_$ebnf$1\", \"symbols\": [], \"postprocess\": function(d) {return null;}},\n {\"name\": \"_\", \"symbols\": [\"_$ebnf$1\"]},\n {\"name\": \"ws\", \"symbols\": [(lexer.has(\"ws\") ? {type: \"ws\"} : ws)]},\n {\"name\": \"ws$ebnf$1\", \"symbols\": [(lexer.has(\"ws\") ? {type: \"ws\"} : ws)], \"postprocess\": id},\n {\"name\": \"ws$ebnf$1\", \"symbols\": [], \"postprocess\": function(d) {return null;}},\n {\"name\": \"ws\", \"symbols\": [\"ws$ebnf$1\", (lexer.has(\"comment\") ? {type: \"comment\"} : comment), \"_\"]}\n]\n , ParserStart: \"final\"\n}\nif (typeof module !== 'undefined'&& typeof module.exports !== 'undefined') {\n module.exports = grammar;\n} else {\n window.grammar = grammar;\n}\n})();\n","/*\n MIT License\n Copyright (c) 2019 Guillermo Webster\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n// import nearley from \"nearley\";\nimport nearley from \"../../node_modules/nearley/lib/nearley.js\";\n\n// import bootstraped from \"nearley/lib/nearley-language-bootstrapped\";\nimport bootstraped from \"../../node_modules/nearley/lib/nearley-language-bootstrapped.js\";\n\nexport default function compileLowLevel(structure, opts) {\n\tvar unique = uniquer();\n\tif (!opts.alreadycompiled) {\n\t\topts.alreadycompiled = [];\n\t}\n\n\tvar result = {\n\t\trules: [],\n\t\tbody: [], // @directives list\n\t\tconfig: {}, // @config value\n\t\tcustomTokens: [], // %tokens\n\t\tmacros: {},\n\t\tstart: \"\"\n\t};\n\n\tfor (var i = 0; i < structure.length; i++) {\n\t\tvar productionRule = structure[i];\n\t\tmarkRange(\n\t\t\tproductionRule.name,\n\t\t\tproductionRule.pos,\n\t\t\tproductionRule.name && productionRule.name.length\n\t\t);\n\n\t\tif (productionRule.body) {\n\t\t\t// This isn't a rule, it's an @directive.\n\t\t\tif (!opts.nojs) {\n\t\t\t\tresult.body.push(productionRule.body);\n\t\t\t}\n\t\t} else if (productionRule.include) {\n\t\t\t// Include file\n\t\t\tvar path;\n\t\t\tif (!productionRule.builtin) {\n\t\t\t\tpath = require(\"path\").resolve(\n\t\t\t\t\topts.file ? require(\"path\").dirname(opts.file) : process.cwd(),\n\t\t\t\t\tproductionRule.include\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpath = productionRule.include;\n\t\t\t}\n\t\t\tif (opts.alreadycompiled.indexOf(path) === -1) {\n\t\t\t\topts.alreadycompiled.push(path);\n\t\t\t\tif (path === \"postprocessors.ne\") {\n\t\t\t\t\tvar f = require(\"nearley/builtin/postprocessors.ne\");\n\t\t\t\t} else if (path === \"whitespace.ne\") {\n\t\t\t\t\tvar f = require(\"nearley/builtin/whitespace.ne\");\n\t\t\t\t} else if (path === \"string.ne\") {\n\t\t\t\t\tvar f = require(\"nearley/builtin/string.ne\");\n\t\t\t\t} else if (path === \"number.ne\") {\n\t\t\t\t\tvar f = require(\"nearley/builtin/number.ne\");\n\t\t\t\t} else if (path === \"cow.ne\") {\n\t\t\t\t\tvar f = require(\"nearley/builtin/cow.ne\");\n\t\t\t\t}\n\n\t\t\t\tvar parserGrammar = nearley.Grammar.fromCompiled(bootstraped);\n\t\t\t\tvar parser = new nearley.Parser(parserGrammar);\n\t\t\t\tparser.feed(f);\n\t\t\t\tvar c = Compile(parser.results[0], {\n\t\t\t\t\tfile: path,\n\t\t\t\t\t__proto__: opts\n\t\t\t\t});\n\n\t\t\t\tresult.rules = result.rules.concat(c.rules);\n\t\t\t\tresult.body = result.body.concat(c.body);\n\t\t\t\t// result.customTokens = result.customTokens.concat(c.customTokens);\n\t\t\t\tObject.keys(c.config).forEach(function(k) {\n\t\t\t\t\tresult.config[k] = c.config[k];\n\t\t\t\t});\n\t\t\t\tObject.keys(c.macros).forEach(function(k) {\n\t\t\t\t\tresult.macros[k] = c.macros[k];\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (productionRule.macro) {\n\t\t\tresult.macros[productionRule.macro] = {\n\t\t\t\targs: productionRule.args,\n\t\t\t\texprs: productionRule.exprs\n\t\t\t};\n\t\t} else if (productionRule.config) {\n\t\t\t// This isn't a rule, it's an @config.\n\t\t\tresult.config[productionRule.config] = productionRule.value;\n\t\t} else {\n\t\t\tproduceRules(productionRule.name, productionRule.rules, {});\n\t\t\tif (!result.start) {\n\t\t\t\tresult.start = productionRule.name;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n\n\tfunction markRange(name, start, length) {\n\t\t// console.log(name, [start, start + length])\n\t\tif (opts.rangeCallback) {\n\t\t\topts.rangeCallback(name, start, start + length);\n\t\t}\n\t}\n\n\tfunction produceRules(name, rules, env) {\n\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\tvar rule = buildRule(name, rules[i], env);\n\t\t\tif (opts.nojs) {\n\t\t\t\trule.postprocess = null;\n\t\t\t}\n\t\t\tresult.rules.push(rule);\n\t\t}\n\t}\n\n\tfunction buildRule(ruleName, rule, env) {\n\t\tvar tokens = [];\n\t\tfor (var i = 0; i < rule.tokens.length; i++) {\n\t\t\tvar token = buildToken(ruleName, rule.tokens[i], env);\n\t\t\tif (token !== null) {\n\t\t\t\ttokens.push(token);\n\t\t\t}\n\t\t}\n\t\treturn new nearley.Rule(ruleName, tokens, rule.postprocess);\n\t}\n\n\tfunction buildToken(ruleName, token, env) {\n\t\tif (typeof token === \"string\") {\n\t\t\tif (token === \"null\") {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn token;\n\t\t}\n\n\t\tif (token instanceof RegExp) {\n\t\t\treturn token;\n\t\t}\n\n\t\tif (token.literal) {\n\t\t\tif (!token.literal.length) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (token.literal.length === 1 || result.config.lexer) {\n\t\t\t\treturn token;\n\t\t\t}\n\t\t\treturn buildStringToken(ruleName, token, env);\n\t\t}\n\t\tif (token.token) {\n\t\t\tif (result.config.lexer) {\n\t\t\t\tvar name = token.token;\n\t\t\t\tif (result.customTokens.indexOf(name) === -1) {\n\t\t\t\t\tresult.customTokens.push(name);\n\t\t\t\t}\n\t\t\t\tvar expr =\n\t\t\t\t\tresult.config.lexer +\n\t\t\t\t\t\".has(\" +\n\t\t\t\t\tJSON.stringify(name) +\n\t\t\t\t\t\") ? {type: \" +\n\t\t\t\t\tJSON.stringify(name) +\n\t\t\t\t\t\"} : \" +\n\t\t\t\t\tname;\n\t\t\t\treturn { token: \"(\" + expr + \")\" };\n\t\t\t}\n\n\t\t\treturn token;\n\t\t}\n\n\t\tif (token.subexpression) {\n\t\t\treturn buildSubExpressionToken(ruleName, token, env);\n\t\t}\n\n\t\tif (token.ebnf) {\n\t\t\treturn buildEBNFToken(ruleName, token, env);\n\t\t}\n\n\t\tif (token.macrocall) {\n\t\t\treturn buildMacroCallToken(ruleName, token, env);\n\t\t}\n\n\t\tif (token.mixin) {\n\t\t\tif (env[token.mixin]) {\n\t\t\t\treturn buildToken(ruleName, env[token.mixin], env);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unbound variable: \" + token.mixin);\n\t\t\t}\n\t\t}\n\n\t\tthrow new Error(\"unrecognized token: \" + JSON.stringify(token));\n\t}\n\n\tfunction buildStringToken(ruleName, token, env) {\n\t\tvar newname = unique(ruleName + \"$string\");\n\t\tmarkRange(newname, token.pos, JSON.stringify(token.literal).length);\n\n\t\tproduceRules(\n\t\t\tnewname,\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\ttokens: token.literal.split(\"\").map(function charLiteral(d) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tliteral: d\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\tpostprocess: { builtin: \"joiner\" }\n\t\t\t\t}\n\t\t\t],\n\t\t\tenv\n\t\t);\n\t\treturn newname;\n\t}\n\n\tfunction buildSubExpressionToken(ruleName, token, env) {\n\t\tvar data = token.subexpression;\n\t\tvar name = unique(ruleName + \"$subexpression\");\n\t\t//structure.push({\"name\": name, \"rules\": data});\n\t\tproduceRules(name, data, env);\n\t\treturn name;\n\t}\n\n\tfunction buildEBNFToken(ruleName, token, env) {\n\t\tswitch (token.modifier) {\n\t\t\tcase \":+\":\n\t\t\t\treturn buildEBNFPlus(ruleName, token, env);\n\t\t\tcase \":*\":\n\t\t\t\treturn buildEBNFStar(ruleName, token, env);\n\t\t\tcase \":?\":\n\t\t\t\treturn buildEBNFOpt(ruleName, token, env);\n\t\t}\n\t}\n\n\tfunction buildEBNFPlus(ruleName, token, env) {\n\t\tvar name = unique(ruleName + \"$ebnf\");\n\t\t/*\n structure.push({\n name: name,\n rules: [{\n tokens: [token.ebnf],\n }, {\n tokens: [token.ebnf, name],\n postprocess: {builtin: \"arrconcat\"}\n }]\n });\n */\n\t\tproduceRules(\n\t\t\tname,\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\ttokens: [token.ebnf]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttokens: [token.ebnf, name],\n\t\t\t\t\tpostprocess: { builtin: \"arrconcat\" }\n\t\t\t\t}\n\t\t\t],\n\t\t\tenv\n\t\t);\n\t\treturn name;\n\t}\n\n\tfunction buildEBNFStar(ruleName, token, env) {\n\t\tvar name = unique(ruleName + \"$ebnf\");\n\t\t/*\n structure.push({\n name: name,\n rules: [{\n tokens: [],\n }, {\n tokens: [token.ebnf, name],\n postprocess: {builtin: \"arrconcat\"}\n }]\n });\n */\n\t\tproduceRules(\n\t\t\tname,\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\ttokens: []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttokens: [token.ebnf, name],\n\t\t\t\t\tpostprocess: { builtin: \"arrconcat\" }\n\t\t\t\t}\n\t\t\t],\n\t\t\tenv\n\t\t);\n\t\treturn name;\n\t}\n\n\tfunction buildEBNFOpt(ruleName, token, env) {\n\t\tvar name = unique(ruleName + \"$ebnf\");\n\t\t/*\n structure.push({\n name: name,\n rules: [{\n tokens: [token.ebnf],\n postprocess: {builtin: \"id\"}\n }, {\n tokens: [],\n postprocess: {builtin: \"nuller\"}\n }]\n });\n */\n\t\tproduceRules(\n\t\t\tname,\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\ttokens: [token.ebnf],\n\t\t\t\t\tpostprocess: { builtin: \"id\" }\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttokens: [],\n\t\t\t\t\tpostprocess: { builtin: \"nuller\" }\n\t\t\t\t}\n\t\t\t],\n\t\t\tenv\n\t\t);\n\t\treturn name;\n\t}\n\n\tfunction buildMacroCallToken(ruleName, token, env) {\n\t\tvar name = unique(ruleName + \"$macrocall\");\n\t\tvar macro = result.macros[token.macrocall];\n\t\tif (!macro) {\n\t\t\tthrow new Error(\"Unkown macro: \" + token.macrocall);\n\t\t}\n\t\tif (macro.args.length !== token.args.length) {\n\t\t\tthrow new Error(\"Argument count mismatch.\");\n\t\t}\n\t\tvar newenv = { __proto__: env };\n\t\tfor (var i = 0; i < macro.args.length; i++) {\n\t\t\tvar argrulename = unique(ruleName + \"$macrocall\");\n\t\t\tnewenv[macro.args[i]] = argrulename;\n\t\t\tproduceRules(argrulename, [token.args[i]], env);\n\t\t\t//structure.push({\"name\": argrulename, \"rules\":[token.args[i]]});\n\t\t\t//buildRule(name, token.args[i], env);\n\t\t}\n\t\tproduceRules(name, macro.exprs, newenv);\n\t\treturn name;\n\t}\n}\n\nfunction uniquer() {\n\tvar uns = {};\n\treturn unique;\n\tfunction unique(name) {\n\t\tvar un = (uns[name] = (uns[name] || 0) + 1);\n\t\treturn name + \"$\" + un;\n\t}\n}\n","(function(root, factory) {\n if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('./nearley'));\n } else {\n root.generate = factory(root.nearley);\n }\n}(this, function(nearley) {\n\n function serializeRules(rules, builtinPostprocessors, extraIndent) {\n if (extraIndent == null) {\n extraIndent = ''\n }\n\n return '[\\n ' + rules.map(function(rule) {\n return serializeRule(rule, builtinPostprocessors);\n }).join(',\\n ') + '\\n' + extraIndent + ']';\n }\n\n function dedentFunc(func) {\n var lines = func.toString().split(/\\n/);\n\n if (lines.length === 1) {\n return [lines[0].replace(/^\\s+|\\s+$/g, '')];\n }\n\n var indent = null;\n var tail = lines.slice(1);\n for (var i = 0; i < tail.length; i++) {\n var match = /^\\s*/.exec(tail[i]);\n if (match && match[0].length !== tail[i].length) {\n if (indent === null ||\n match[0].length < indent.length) {\n indent = match[0];\n }\n }\n }\n\n if (indent === null) {\n return lines;\n }\n\n return lines.map(function dedent(line) {\n if (line.slice(0, indent.length) === indent) {\n return line.slice(indent.length);\n }\n return line;\n });\n }\n\n function tabulateString(string, indent, options) {\n var lines;\n if(Array.isArray(string)) {\n lines = string;\n } else {\n lines = string.toString().split('\\n');\n }\n\n options = options || {};\n var tabulated = lines.map(function addIndent(line, i) {\n var shouldIndent = true;\n\n if(i == 0 && !options.indentFirst) {\n shouldIndent = false;\n }\n\n if(shouldIndent) {\n return indent + line;\n } else {\n return line;\n }\n }).join('\\n');\n\n return tabulated;\n }\n\n function serializeSymbol(s) {\n if (s instanceof RegExp) {\n return s.toString();\n } else if (s.token) {\n return s.token;\n } else {\n return JSON.stringify(s);\n }\n }\n\n function serializeRule(rule, builtinPostprocessors) {\n var ret = '{';\n ret += '\"name\": ' + JSON.stringify(rule.name);\n ret += ', \"symbols\": [' + rule.symbols.map(serializeSymbol).join(', ') + ']';\n if (rule.postprocess) {\n if(rule.postprocess.builtin) {\n rule.postprocess = builtinPostprocessors[rule.postprocess.builtin];\n }\n ret += ', \"postprocess\": ' + tabulateString(dedentFunc(rule.postprocess), ' ', {indentFirst: false});\n }\n ret += '}';\n return ret;\n }\n\n var generate = function (parser, exportName) {\n if(!parser.config.preprocessor) {\n parser.config.preprocessor = \"_default\";\n }\n\n if(!generate[parser.config.preprocessor]) {\n throw new Error(\"No such preprocessor: \" + parser.config.preprocessor)\n }\n\n return generate[parser.config.preprocessor](parser, exportName);\n };\n\n generate.js = generate._default = generate.javascript = function (parser, exportName) {\n var output = \"// Generated automatically by nearley, version \" + parser.version + \"\\n\";\n output += \"// http://github.com/Hardmath123/nearley\\n\";\n output += \"(function () {\\n\";\n output += \"function id(x) { return x[0]; }\\n\";\n output += parser.body.join('\\n');\n output += \"var grammar = {\\n\";\n output += \" Lexer: \" + parser.config.lexer + \",\\n\";\n output += \" ParserRules: \" +\n serializeRules(parser.rules, generate.javascript.builtinPostprocessors)\n + \"\\n\";\n output += \" , ParserStart: \" + JSON.stringify(parser.start) + \"\\n\";\n output += \"}\\n\";\n output += \"if (typeof module !== 'undefined'\"\n + \"&& typeof module.exports !== 'undefined') {\\n\";\n output += \" module.exports = grammar;\\n\";\n output += \"} else {\\n\";\n output += \" window.\" + exportName + \" = grammar;\\n\";\n output += \"}\\n\";\n output += \"})();\\n\";\n return output;\n };\n\n generate.javascript.builtinPostprocessors = {\n \"joiner\": \"function joiner(d) {return d.join('');}\",\n \"arrconcat\": \"function arrconcat(d) {return [d[0]].concat(d[1]);}\",\n \"arrpush\": \"function arrpush(d) {return d[0].concat([d[1]]);}\",\n \"nuller\": \"function(d) {return null;}\",\n \"id\": \"id\"\n }\n\n generate.module = generate.esmodule = function (parser, exportName) {\n var output = \"// Generated automatically by nearley, version \" + parser.version + \"\\n\";\n output += \"// http://github.com/Hardmath123/nearley\\n\";\n output += \"function id(x) { return x[0]; }\\n\";\n output += parser.body.join('\\n');\n output += \"let Lexer = \" + parser.config.lexer + \";\\n\";\n output += \"let ParserRules = \" + serializeRules(parser.rules, generate.javascript.builtinPostprocessors) + \";\\n\";\n output += \"let ParserStart = \" + JSON.stringify(parser.start) + \";\\n\";\n output += \"export default { Lexer, ParserRules, ParserStart };\\n\";\n return output;\n };\n\n generate.cs = generate.coffee = generate.coffeescript = function (parser, exportName) {\n var output = \"# Generated automatically by nearley, version \" + parser.version + \"\\n\";\n output += \"# http://github.com/Hardmath123/nearley\\n\";\n output += \"do ->\\n\";\n output += \" id = (d) -> d[0]\\n\";\n output += tabulateString(dedentFunc(parser.body.join('\\n')), ' ') + '\\n';\n output += \" grammar = {\\n\";\n output += \" Lexer: \" + parser.config.lexer + \",\\n\";\n output += \" ParserRules: \" +\n tabulateString(\n serializeRules(parser.rules, generate.coffeescript.builtinPostprocessors),\n ' ',\n {indentFirst: false})\n + \",\\n\";\n output += \" ParserStart: \" + JSON.stringify(parser.start) + \"\\n\";\n output += \" }\\n\";\n output += \" if typeof module != 'undefined' \"\n + \"&& typeof module.exports != 'undefined'\\n\";\n output += \" module.exports = grammar;\\n\";\n output += \" else\\n\";\n output += \" window.\" + exportName + \" = grammar;\\n\";\n return output;\n };\n\n generate.coffeescript.builtinPostprocessors = {\n \"joiner\": \"(d) -> d.join('')\",\n \"arrconcat\": \"(d) -> [d[0]].concat(d[1])\",\n \"arrpush\": \"(d) -> d[0].concat([d[1]])\",\n \"nuller\": \"() -> null\",\n \"id\": \"id\"\n };\n\n generate.ts = generate.typescript = function (parser, exportName) {\n var output = \"// Generated automatically by nearley, version \" + parser.version + \"\\n\";\n output += \"// http://github.com/Hardmath123/nearley\\n\";\n output += \"// Bypasses TS6133. Allow declared but unused functions.\\n\";\n output += \"// @ts-ignore\\n\";\n output += \"function id(d: any[]): any { return d[0]; }\\n\";\n output += parser.customTokens.map(function (token) { return \"declare var \" + token + \": any;\\n\" }).join(\"\")\n output += parser.body.join('\\n');\n output += \"\\n\";\n output += \"interface NearleyToken {\\n\";\n output += \" value: any;\\n\";\n output += \" [key: string]: any;\\n\";\n output += \"};\\n\";\n output += \"\\n\";\n output += \"interface NearleyLexer {\\n\";\n output += \" reset: (chunk: string, info: any) => void;\\n\";\n output += \" next: () => NearleyToken | undefined;\\n\";\n output += \" save: () => any;\\n\";\n output += \" formatError: (token: never) => string;\\n\";\n output += \" has: (tokenType: string) => boolean;\\n\";\n output += \"};\\n\";\n output += \"\\n\";\n output += \"interface NearleyRule {\\n\";\n output += \" name: string;\\n\";\n output += \" symbols: NearleySymbol[];\\n\";\n output += \" postprocess?: (d: any[], loc?: number, reject?: {}) => any;\\n\";\n output += \"};\\n\";\n output += \"\\n\";\n output += \"type NearleySymbol = string | { literal: any } | { test: (token: any) => boolean };\\n\";\n output += \"\\n\";\n output += \"interface Grammar {\\n\";\n output += \" Lexer: NearleyLexer | undefined;\\n\";\n output += \" ParserRules: NearleyRule[];\\n\";\n output += \" ParserStart: string;\\n\";\n output += \"};\\n\";\n output += \"\\n\";\n output += \"const grammar: Grammar = {\\n\";\n output += \" Lexer: \" + parser.config.lexer + \",\\n\";\n output += \" ParserRules: \" + serializeRules(parser.rules, generate.typescript.builtinPostprocessors, \" \") + \",\\n\";\n output += \" ParserStart: \" + JSON.stringify(parser.start) + \",\\n\";\n output += \"};\\n\";\n output += \"\\n\";\n output += \"export default grammar;\\n\";\n\n return output;\n };\n\n generate.typescript.builtinPostprocessors = {\n \"joiner\": \"(d) => d.join('')\",\n \"arrconcat\": \"(d) => [d[0]].concat(d[1])\",\n \"arrpush\": \"(d) => d[0].concat([d[1]])\",\n \"nuller\": \"() => null\",\n \"id\": \"id\"\n };\n\n return generate;\n\n}));\n","// Node-only\n\nvar warn = function (opts, str) {\n opts.out.write(\"WARN\"+\"\\t\" + str + \"\\n\");\n}\n\nfunction lintNames(grm, opts) {\n var all = [];\n grm.rules.forEach(function(rule) {\n all.push(rule.name);\n });\n grm.rules.forEach(function(rule) {\n rule.symbols.forEach(function(symbol) {\n if (!symbol.literal && !symbol.token && symbol.constructor !== RegExp) {\n if (all.indexOf(symbol) === -1) {\n warn(opts,\"Undefined symbol `\" + symbol + \"` used.\");\n }\n }\n });\n });\n}\n\nfunction lint(grm, opts) {\n if (!opts.out) opts.out = process.stderr;\n lintNames(grm, opts);\n}\n\nmodule.exports = lint;\n","\n\nvar objectID = 0;\n\nvar vars = {};\n\nfunction genBlepOsc(waveform) {\n\treturn {\n\t\tsetup: (o, p) => `${o} = new Maximilian.maxiPolyBLEP();\n\t\t\t\t\t\t\t\t\t\t\t${o}.setWaveform(${waveform});\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\tloop: (o, p) => {\n\t\t\tif (p.length==1) {\n\t\t\t\treturn `${o}.play(${p[0].loop})`\n\t\t\t}else{\n\t\t\t\treturn `(()=>{${o}.setPulseWidth(${p[1].loop}); return ${o}.play(${p[0].loop});})()`\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsFuncMap = {\n\tsaw: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.saw(${p[0].loop})`,\n\t},\n\tsin: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.sinewave(${p[0].loop})`,\n\t},\n\ttri: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.triangle(${p[0].loop})`,\n\t},\n\tpha: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.phasor(${p[0].loop})`,\n\t},\n\tph2: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 3 ? p[3].loop : 0.0});`,\n\t\tloop: (o, p) =>\n\t\t\t`${o}.phasorBetween(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\tsqr: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.square(${p[0].loop})`,\n\t},\n\tpul: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 2 ? p[2].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.pulse(${p[0].loop},${p[1].loop})`,\n\t},\n\timp: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.impulse(${p[0].loop})`,\n\t},\n\tsawn: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc();\n ${o}.phaseReset(${p.length > 1 ? p[1].loop : 0.0});`,\n\t\tloop: (o, p) => `${o}.sawn(${p[0].loop})`,\n\t},\n\tnoiz: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiOsc()`,\n\t\tloop: (o, p) => `${o}.noise()*${p[0].loop}`,\n\t},\n\tgt: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `((${p[0].loop} > ${p[1].loop}) ? 1 : 0)`,\n\t},\n\tlt: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `((${p[0].loop} < ${p[1].loop}) ? 1 : 0)`,\n\t},\n\tmod: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `(${p[0].loop} % ${p[1].loop})`,\n\t},\n\tadd: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `(${p[0].loop} + ${p[1].loop})`,\n\t},\n\tmul: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `(${p[0].loop} * ${p[1].loop})`,\n\t},\n\tsub: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `(${p[0].loop} - ${p[1].loop})`,\n\t},\n\tdiv: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `(${p[1].loop} != 0 ? ${p[0].loop}/${p[1].loop} : 0)`,\n\t},\n\tpow: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Math.pow(${p[0].loop},${p[1].loop})`,\n\t},\n\tabs: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Math.abs(${p[0].loop})`,\n\t},\n\tenv: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiEnv();\n ${o}.setAttack(${p[1].loop});\n ${o}.setDecay(${p[2].loop});\n ${o}.setSustain(${p[3].loop});\n ${o}.setRelease(${p[4].loop})`,\n\t\tloop: (o, p) => `${o}.adsr(1,${p[0].loop})`,\n\t},\n\tsum: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => {\n\t\t\tlet s = `(${p[0].loop}`;\n\t\t\tfor (let i = 1; i < p.length; i++) s += `+${p[i].loop}`;\n\t\t\treturn s + \")\";\n\t\t},\n\t},\n\tmix: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => {\n\t\t\tlet s = `((${p[0].loop}`;\n\t\t\tfor (let i = 1; i < p.length; i++) s += `+${p[i].loop}`;\n\t\t\treturn s + `)/${p.length})`;\n\t\t},\n\t},\n\tprod: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => {\n\t\t\tlet s = `(${p[0].loop}`;\n\t\t\tfor (let i = 1; i < p.length; i++) s += `*${p[i].loop}`;\n\t\t\treturn s + \")\";\n\t\t},\n\t},\n\tblin: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiMap.linlin(${p[0].loop}, -1, 1, ${p[1].loop}, ${p[2].loop})`,\n\t},\n\tulin: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiMap.linlin(${p[0].loop}, 0, 1, ${p[1].loop}, ${p[2].loop})`,\n\t},\n\tbexp: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiMap.linexp(${p[0].loop}, -1, 1, ${p[1].loop}, ${p[2].loop})`,\n\t},\n\tuexp: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiMap.linexp(${p[0].loop}, 0.0000001, 1, ${p[1].loop}, ${p[2].loop})`,\n\t},\n\tlinlin: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiMap.linlin(${p[0].loop}, ${p[1].loop}, ${p[2].loop},${p[3].loop}, ${p[4].loop})`,\n\t},\n\tlinexp: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiMap.linexp(${p[0].loop}, ${p[1].loop}, ${p[2].loop}, ${p[3].loop}, ${p[4].loop})`,\n\t},\n\tdist: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiNonlinearity()`,\n\t\tloop: (o, p) => `${o}.atanDist(${p[0].loop},${p[1].loop})`,\n\t},\n\tsoftclip: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiNonlinearity()`,\n\t\tloop: (o, p) => `${o}.softclip(${p[0].loop})`,\n\t},\n\thardclip: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiNonlinearity()`,\n\t\tloop: (o, p) => `${o}.hardclip(${p[0].loop})`,\n\t},\n\tasymclip: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiNonlinearity()`,\n\t\tloop: (o, p) => `${o}.asymclip(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\tflange: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiFlanger()`,\n\t\tloop: (o, p) =>\n\t\t\t`${o}.flange(${p[0].loop},${p[1].loop},${p[2].loop},${p[3].loop},${p[4].loop})`,\n\t},\n\tchor: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiChorus()`,\n\t\tloop: (o, p) =>\n\t\t\t`${o}.chorus(${p[0].loop},${p[1].loop},${p[2].loop},${p[3].loop},${p[4].loop})`,\n\t},\n\tdl: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiDelayline()`,\n\t\tloop: (o, p) => `${o}.dl(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\tlpf: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiFilter()`,\n\t\tloop: (o, p) => `${o}.lopass(${p[0].loop},${p[1].loop})`,\n\t},\n\thpf: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiFilter()`,\n\t\tloop: (o, p) => `${o}.hipass(${p[0].loop},${p[1].loop})`,\n\t},\n\tlpz: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiFilter()`,\n\t\tloop: (o, p) => `${o}.lores(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\thpz: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiFilter()`,\n\t\tloop: (o, p) => `${o}.hires(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\n\t// `toJS`: { //freq, data, channel\n\t// \tsetup: (o, p) => `${o} = this.createMLOutputTransducer(${p[0].loop})`,\n\t// \tloop: (o, p) => `${o}.send(${p[1].loop}, ${p[2].loop})`\n\t// },\n\tscop: {\n\t\t//freq, data, channel, [blocksize]\n\t\tsetup: (o, p) =>\n\t\t\t`${o} = new SABOutputTransducer(outputSABs,\n this.port,\n 'scope',\n ${p[1].loop},\n this.currentSample,\n ${p.length == 3 ? 1 : p[3].loop})`,\n\t\tloop: (o, p) => `${o}.send(${p[0].loop}, ${p[2].loop})`,\n\t},\n\n\ttoJS: {\n\t\t//freq, data, channel, [blocksize]\n\t\tsetup: (o, p) =>\n\t\t\t`${o} = new SABOutputTransducer(outputSABs,\n this.port,\n 'ML',\n ${p[1].loop},\n this.currentSample,\n ${p.length == 3 ? 1 : p[3].loop})`,\n\t\tloop: (o, p) => `${o}.send(${p[0].loop}, ${p[2].loop})`,\n\t},\n\tfromJS: {\n\t\t//channel\n\t\t// setup: (o, p) => `${o} = this.registerInputTransducer('ML', ${p[0].loop})`,\n\t\t// loop: (o, p) => `${o}.getValue()`\n\t\tsetup: (o, p) =>\n\t\t\t`${o} = new SABInputTransducer(${p[0].loop}, ${p.length == 2 ? 1 : 0})`,\n\t\tloop: (o, p) =>\n\t\t\t`${o}.getSABValue(inputSABs, ${p.length == 2 ? p[1].loop : 0})`,\n\t},\n\tmouseX: {\n\t\tsetup: (o, p) => ``,\n\t\tloop: (o, p) => `this.getSABValue('mxy')[0]`,\n\t},\n\tmouseY: {\n\t\tsetup: (o, p) => ``,\n\t\tloop: (o, p) => `this.getSABValue('mxy')[1]`,\n\t},\n\tat: {\n\t\tsetup: (o, p) => ``,\n\t\tloop: (o, p) =>\n\t\t\t`${p[0].loop}[Math.min(${p[1].loop}, ${p[0].loop}.length-1)]`,\n\t},\n\n\t// toPeer: { //value, dest, channel, frequency\n\t// setup: (o, p) => `${o} = this.createNetOutputTransducer(${p[3].loop})`,\n\t// \tloop: (o, p) => `${o}.send(${p[0].loop},[${p[1].loop},${p[2].loop}])`\n\t// },\n\t// fromPeer: { //source, channel\n\t// \tsetup: (o, p) => `${o} = this.registerInputTransducer('NET', [${p[0].loop}, ${p[1].loop}])`,\n\t// \tloop: (o, p) => `${o}.getValue()`\n\t// },\n\n\t// oscin: {\n\t// \tsetup: (o, p) => \"\",\n\t// \tloop: (o, p) => `this.OSCTransducer(${p[0].loop},${p[1].loop})`\n\t// },\n\t// oscout: {\n\t// \tsetup: (o, p) => \"\",\n\t// \tloop: (o, p) => `this.OSCTransducer(${p[0].loop},${p[1].loop})`\n\t// },\n\n\tsah: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSampleAndHold();`,\n\t\tloop: (o, p) => `${o}.sah(${p[0].loop},${p[1].loop})`,\n\t},\n\tstretch: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSample();\n ${o}.setSample(this.getSampleBuffer(${p[4].loop}));\n ${o}stretch = new Module.maxiStretch();\n ${o}stretch.setSample(${o});`,\n\t\tloop: (o, p) =>\n\t\t\t`(${o}.isReady() ? ${o}stretch.play(${p[0].loop},${p[1].loop},${p[2].loop},${p[3].loop},0.0) : 0.0)`,\n\t},\n\t// 'adc': {\"setup\":(o,p)=>\"\", \"loop\":(o,p)=>`inputs[${p[0].loop}]`},\n\tadc: { setup: (o, p) => \"\", loop: (o, p) => `(inputs * ${p[0].loop})` },\n\tsampler: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSample();\n ${o}.setSample(this.getSampleBuffer(${\n\t\t\tp[p.length - 1].loop\n\t\t}));`,\n\t\tloop: (o, p) => {\n\t\t\t// let playArgs = `${p[0].loop}`;\n\t\t\t// if (p.length == 3) {\n\t\t\t// \tplayArgs += `,${p[1].loop}`;\n\t\t\t// } else if (p.length == 4) {\n\t\t\t// \tplayArgs += `,${p[1].loop},${p[2].loop}`;\n\t\t\t// }\n\t\t\t// return `(${o}.isReady() ? ${o}.playOnZX(${playArgs}) : 0.0)`;\n\t\t\tlet playFunction=\"\";\n\t\t\tswitch(p.length) {\n\t\t\t\tcase 2:\n\t\t\t\t\tplayFunction = `playOnZX(${p[0].loop})`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tplayFunction = `playOnZXAtSpeed(${p[0].loop},${p[1].loop})`;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tplayFunction = `playOnZXAtSpeedFromOffset(${p[0].loop},${p[1].loop},${p[2].loop})`;\n\t\t\t\t\tbreak;\t\t\t\t\n\t\t\t}\n\t\t\treturn `(${o}.isReady() ? ${o}.${playFunction} : 0.0)`;\n\t\t},\n\t},\n\tloop: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSample();\n ${o}.setSample(this.getSampleBuffer(${p[1].loop}));`,\n\t\tloop: (o, p) => `(${o}.isReady() ? ${o}.play(${p[0].loop}) : 0.0)`,\n\t},\n\tslice: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSample();\n ${o}.setSample(this.getSampleBuffer(${p[2].loop}));`,\n\t\tloop: (o, p) =>\n\t\t\t`(${o}.isReady() ? ${o}.loopSetPosOnZX(${p[0].loop},${p[1].loop}) : 0.0)`,\n\t},\n\toscin: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `this.OSCTransducer(${p[0].loop},${p[1].loop})`,\n\t},\n\toscout: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `this.OSCTransducer(${p[0].loop},${p[1].loop})`,\n\t},\n\tsah: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSampleAndHold();`,\n\t\tloop: (o, p) => `${o}.sah(${p[0].loop},${p[1].loop})`,\n\t},\n\tstretch: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiSample();\n ${o}.setSample(this.getSampleBuffer(${p[4].loop}));\n ${o}stretch = new Module.maxiStretch();\n ${o}stretch.setSample(${o});`,\n\t\tloop: (o, p) =>\n\t\t\t`(${o}.isReady() ? ${o}stretch.play(${p[0].loop},${p[1].loop},${p[2].loop},${p[3].loop},0.0) : 0.0)`,\n\t},\n\tbitToSig: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.toSignal(${p[0].loop})`,\n\t},\n\tbitToTrigSig: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.toTrigSignal(${p[0].loop})`,\n\t},\n\tbitNeg: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.neg(${p[0].loop})`,\n\t},\n\tbitInc: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.inc(${p[0].loop})`,\n\t},\n\tbitDec: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.dec(${p[0].loop})`,\n\t},\n\tbitAnd: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.land(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitOr: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.lor(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitXor: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.lxor(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitShl: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.shl(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitShr: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.shr(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitAt: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.at(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitAdd: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.add(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitSub: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.sub(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitMul: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.mul(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitEq: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.eq(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitGt: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.gt(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitGte: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.gte(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitLte: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.lte(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitLt: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.lt(${p[0].loop},${p[1].loop})`,\n\t},\n\tsetup: (o, p) => \"\",\n\tbitDiv: {\n\t\tloop: (o, p) => `Module.maxiBits.div(${p[0].loop},${p[1].loop})`,\n\t},\n\tbitr: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`Module.maxiBits.at(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\tbitnoise: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.noise()`,\n\t},\n\tbtime: {\n\t\tsetup: (o, p) => ``,\n\t\tloop: (o, p) => `this.bitTime`,\n\t},\n\tbitFromSig: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `Module.maxiBits.fromSignal(${p[0].loop})`,\n\t},\n\t//basic clock functions\n\tclp: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`this.clockPhase(${p[0].loop},${p.length > 1 ? p[1].loop : 0})`,\n\t},\n\tclt: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`this.clockTrig(${p[0].loop},${p.length > 1 ? p[1].loop : 0})`,\n\t},\n\t//clock meta\n\tclk: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) =>\n\t\t\t`(()=>{this.setBPM(${p[0].loop}); this.setBeatsPerBar(${p[1].loop});})()`,\n\t},\n\t/*quantise code evaluations to the bar.\n\tvalues from maxiProcessor\n\t\tthis.codeQuantModes = {\n\t\t\tQUANTISE_TO_BAR: 0,\n\t\t\tDONTQUANTISE:1\n\t\t};\n*/\n\tquantise: {\n\t\tsetup: (o, p) => `this.setCodeQuantiseMode(${p[0].loop > 0 ? 0 : 1})`,\n\t\tloop: (o, p) =>\n\t\t\t\"\",\n\t},\n\n\n\tonzx: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiTrigger();`,\n\t\tloop: (o, p) => `${o}.onZX(${p[0].loop})`,\n\t},\n\tonchange: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiTrigger();`,\n\t\tloop: (o, p) => `${o}.onChanged(${p[0].loop},${p[1].loop})`,\n\t},\n\tcount: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiCounter();`,\n\t\tloop: (o, p) => `${o}.count(${p[0].loop},${p[1].loop})`,\n\t},\n\tidx: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiIndex();`,\n\t\tloop: (o, p) => `${o}.pull(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\tsvf: {\n\t\t//set cutoff and resonance only when params change to save CPU\n\t\tsetup: (o, p) => `${o} = new Module.maxiSVF();\n ${o}_p1 = new Module.maxiTrigger();\n ${o}_p2 = new Module.maxiTrigger();`,\n\t\tloop: (o, p) => `( () => { ${o}_cutoff = ${p[1].loop};\n if (${o}_p1.onChanged(${o}_cutoff, 1e-5)) {${o}.setCutoff(${o}_cutoff)};\n ${o}_res = ${p[2].loop};\n if (${o}_p2.onChanged(${o}_res, 1e-5)) {${o}.setResonance(${o}_res)};\n return ${o}.play(${p[0].loop},${p[3].loop},${p[4].loop},${p[5].loop},${p[6].loop})})()`,\n\t},\n\tbitclock: {\n\t\tsetup: (o, p) => \"\",\n\t\tloop: (o, p) => `this.bitclock`,\n\t},\n\tpvshift: {\n\t\tsetup: (o, p) => `${o} = new pvshift();`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop},${p[1].loop})`,\n\t},\n\n\trsq: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiRatioSeq();`,\n\t\tloop: (o, p) => {\n\t\t\treturn p.length == 2\n\t\t\t\t? `${o}.playTrig(${p[0].loop},${p[1].loop})`\n\t\t\t\t: `${o}.playValues(${p[0].loop},${p[1].loop},${p[2].loop})`;\n\t\t},\n\t},\n\to303: {\n\t\tsetup: (o, p) => `${o} = new Module.Open303();\n ${o}.setSampleRate(sampleRate);\n ${o}_tnote = new Module.maxiTrigger();\n ${o}_twf = new Module.maxiTrigger();\n ${o}_tcut = new Module.maxiTrigger();\n ${o}_tres = new Module.maxiTrigger();\n ${o}_tenvm = new Module.maxiTrigger();\n ${o}_tdec = new Module.maxiTrigger();\n ${o}_tnoteoff = new Module.maxiTrigger();\n ${o}_tatt = new Module.maxiTrigger();`,\n\t\tloop: (o, p) => `(()=>{\n\t\t\tlet newNote = ${o}_tnote.onZX(${p[0].loop});\n\t\t\tlet accent = ${p[3].loop};\n\t\t\tif (newNote) {\n\t\t\t\tif (${p[2].loop}>0) {\n\t\t\t\t\t${o}.slideToNote(${p[1].loop},accent);\n\t\t\t\t}else{\n\t\t\t\t\t${o}.triggerNote(${p[1].loop},accent);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (${o}_tnoteoff.onChanged(${p[4].loop}, 1e-5)) {${o}.allNotesOff()};\n\t\t\tif (${o}_twf.onChanged(${p[5].loop}, 1e-5)) {${o}.setWaveform(${p[5].loop})};\n\t\t\tif (${o}_tcut.onChanged(${p[6].loop}, 1e-5)) {${o}.setCutoff(${p[6].loop})};\n\t\t\tif (${o}_tres.onChanged(${p[7].loop}, 1e-5)) {${o}.setResonance(${p[7].loop})};\n\t\t\tif (${o}_tenvm.onChanged(${p[8].loop}, 1e-5)) {${o}.setEnvMod(${p[8].loop})};\n\t\t\tif (${o}_tatt.onChanged(${p[9].loop}, 1e-5)) {${o}.setNormalAttack(${p[9].loop})};\n\t\t\tif (${o}_tdec.onChanged(${p[10].loop}, 1e-5)) {${o}.setDecay(${p[10].loop})};\n\t\t\t${o}.setAccent(${p[11].loop});\n\t\t\treturn ${o}.play();})()`,\n\t},\n\tfreeverb: {\n\t\tsetup: (o, p) => `${o} = new Module.maxiFreeVerb();`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop},${p[1].loop},${p[2].loop})`,\n\t},\n\tline: {\n\t\t//creates a triggered line from 0-1 - use other functions to shape the line\n\t\tsetup: (o, p) =>\n\t\t\t`${o} = new Module.maxiLine(); ${o}.prepare(0,1,${p[1].loop}, false); ${o}.triggerEnable(1);`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop})`,\n\t},\n\tconst: {\n\t\tsetup: (o, p) => ``,\n\t\tloop: (o, p) => `${p[0].loop}`,\n\t},\n\tpoll: {\n\t\tsetup: (o, p) => `${o} = new poll()`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop})`,\n\t},\n\tdac: {\n\t\tsetup: (o, p) => ``,\n\t\tloop: (o, p) => {\n\t\t\tif (p.length == 1) {\n\t\t\t\treturn `this.dacOutAll(${p[0].loop})`;\n\t\t\t} else {\n\t\t\t\treturn `this.dacOut(${p[0].loop},${p[1].loop})`;\n\t\t\t}\n\t\t},\n\t},\n\tfft: {\n\t\tsetup: (o, p) => `${o} = new fft(${p[1].loop}, ${p[2].loop})`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop})`,\n\t},\n\tifft: {\n\t\tsetup: (o, p) => `${o} = new ifft(${p[3].loop}, ${p[4].loop})`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop}, ${p[1].loop}, ${p[2].loop})`,\n\t},\n\tmfcc: {\n\t\tsetup: (o, p) =>\n\t\t\t`${o} = new mfcc(${p[1].loop}, ${p[2].loop}, ${p[3].loop})`,\n\t\tloop: (o, p) => `${o}.play(${p[0].loop})`,\n\t},\n\n\t//polybleps\n\tsinb: genBlepOsc(0),\n\tcosb: genBlepOsc(1),\n\ttrib: genBlepOsc(2),\n\tsqrb: genBlepOsc(3),\n\trectb: genBlepOsc(4),\n\tsawb: genBlepOsc(5),\n\trampb: genBlepOsc(6),\n\tmodtrib: genBlepOsc(7),\n\tmodsqrb: genBlepOsc(8),\n\threcsinb: genBlepOsc(9),\n\tfrecsinb: genBlepOsc(10),\n\ttripulb: genBlepOsc(11),\n\ttrapb: genBlepOsc(12),\n\tvtrapb: genBlepOsc(13),\n\t//blep with modulatable waveform\n\tpolyblep:{\n\t\tsetup: (o, p) => `${o} = new Maximilian.maxiPolyBLEP();`,\n\t\tloop: (o, p) => {\n\t\t\tif (p.length==2) {\n\t\t\t\treturn `(()=>{${o}.setWaveform(${p[1].loop}); return ${o}.play(${p[0].loop});})()`;\n\t\t\t}else{\n\t\t\t\treturn `(()=>{${o}.setPulseWidth(${p[2].loop}); ${o}.setWaveform(${p[1].loop}); return ${o}.play(${p[0].loop});})()`;\n\t\t\t}\n\t\t}\n\t},\n};\n\n// if (${o}_twf.onChanged(${p[2].loop}, 1e-5)) {${o}.setWaveform(${p[2].loop})};\n// if (${o}_tcut.onChanged(${p[3].loop}, 1e-5)) {${o}.setCutoff(${p[3].loop})};\n// if (${o}_tres.onChanged(${p[4].loop}, 1e-5)) {${o}.setResonance(${p[4].loop})};\n// if (${o}_tenvm.onChanged(${p[5].loop}, 1e-5)) {${o}.setEnvMod(${p[5].loop})};\n// if (${o}_tdec.onChanged(${p[6].loop}, 1e-5)) {${o}.setDecay(${p[6].loop})};\n// if (newPitch || newVel) {${o}.noteOn(${p[0].loop},${p[1].loop})};\n\nexport default class ASTreeToJavascript {\n\n static getNextID() {\n objectID = objectID > 9999 ? 0 : ++objectID;\n return objectID;\n }\n\n static emptyCode() {\n return {\n \"setup\": \"\",\n \"loop\": \"\",\n \"paramMarkers\": []\n };\n }\n\n static traverseTree(t, code, level, vars, blockIdx) {\n // console.log(`DEBUG:IR:traverseTree:level: ${level}`);\n // console.log(`DEBUG:IR:traverseTree:vars:`);\n // console.log(vars);\n let attribMap = {\n '@lang': (ccode, el) => {\n let statements = [];\n el.map((langEl) => {\n let statementCode = ASTreeToJavascript.traverseTree(langEl, ASTreeToJavascript.emptyCode(), level, vars, blockIdx);\n // console.log(\"@lang: \" + statementCode.loop);\n ccode.setup += statementCode.setup;\n ccode.loop += statementCode.loop;\n // ccode.paramMarkers\n });\n return ccode;\n },\n // '@sigOut': (ccode, el) => {\n // ccode = ASTreeToJavascript.traverseTree(el, ccode, level, vars, blockIdx);\n // ccode.loop = `q.sigOut = ${ccode.loop};`;\n // return ccode;\n // },\n '@spawn': (ccode, el) => {\n ccode = ASTreeToJavascript.traverseTree(el, ccode, level, vars, blockIdx);\n ccode.loop += \";\";\n return ccode;\n },\n '@sigp': (ccode, el) => {\n let paramMarkers = [{\"s\":el['paramBegin'], \"e\":el['paramEnd'], \"l\":level}]\n ccode.paramMarkers = ccode.paramMarkers.concat(paramMarkers);\n\n let functionName = el['@func'].value;\n let funcInfo = jsFuncMap[functionName];\n let objName = \"q.b\" + blockIdx + \"u\" + ASTreeToJavascript.getNextID();\n\n let allParams=[];\n\n for (let p = 0; p < el['@params'].length; p++) {\n let params = ASTreeToJavascript.emptyCode();\n params = ASTreeToJavascript.traverseTree(el['@params'][p], params, level+1, vars, blockIdx);\n // console.log(params);\n allParams[p] = params;\n }\n // console.log(allParams);\n let setupCode = \"\";\n for (let param in allParams) {\n setupCode += allParams[param].setup;\n ccode.paramMarkers = ccode.paramMarkers.concat(allParams[param].paramMarkers);\n }\n ccode.setup += `${setupCode} ${funcInfo.setup(objName, allParams)};`;\n ccode.loop += `${funcInfo.loop(objName, allParams)}`;\n return ccode;\n },\n '@setvar': (ccode, el) => {\n // console.log(\"DEBUG:traverseTree:@setvar\");\n // console.log(vars);\n // console.log(el['@varname']);\n let variableName = el['@varname'];\n // console.log(variableName);\n let memIdx = vars[variableName];\n // console.log(memIdx);\n if (memIdx == undefined) {\n // console.log(\"var not found\");\n memIdx = Object.keys(vars).length;\n vars[variableName] = memIdx;\n // console.log(memIdx);\n }\n let varValueCode = ASTreeToJavascript.traverseTree(el['@varvalue'], ASTreeToJavascript.emptyCode(), level+1, vars, blockIdx);\n ccode.setup += varValueCode.setup;\n // ccode.loop = `this.setvar(q, '${el['@varname']}', ${varValueCode.loop})`;\n ccode.loop = `(mem[${memIdx}] = ${varValueCode.loop})`;\n return ccode;\n },\n '@getvar': (ccode, el) => {\n let memIdx = vars[el];\n if (memIdx == undefined) {\n\t\t\t\t\tmemIdx = Object.keys(vars).length;\n vars[el] = memIdx;\n }\n // ccode.loop += `this.getvar(q, '${el.value}')`;\n ccode.loop += `(mem[${memIdx}] != undefined ? mem[${memIdx}] : 0)`;\n return ccode;\n },\n '@string': (ccode, el) => {\n // console.log(el.value);\n if (typeof el === 'string' || el instanceof String) {\n ccode.loop += `'${el}'`;\n }\n // else {\n // ccode = ASTreeToJavascript.traverseTree(el, ccode, level, vars, blockIdx);\n // }\n return ccode;\n },\n '@num': (ccode, el) => {\n if (el.value != undefined) {\n ccode.loop += `${el.value}`;\n }\n // else {\n // ccode = ASTreeToJavascript.traverseTree(el, ccode, level);\n // }\n return ccode;\n },\n '@list': (ccode, el) => {\n //a list can be static and/or dynamic\n //create a vector for the list\n let objName = \"q.b\" + blockIdx + \"l\" + ASTreeToJavascript.getNextID();\n\t\t\t\t// ccode.setup += `${objName} = new Module.VectorDouble();`;\n // ccode.setup += `${objName}.resize(${el.length},0);`;\n\t\t\t\tccode.setup += `${objName} = new Float64Array(${el.length});`;\n\n //in the loop, we create a function that returns the list. It might also update dynamic elements of the list\n ccode.loop += `(()=>{`;\n let extraSetupCode = \"\";\n\n for(let i_list=0; i_list < el.length; i_list++) {\n //if the element is a static number, set this element once in the setup code\n let element = ASTreeToJavascript.traverseTree(el[i_list], ASTreeToJavascript.emptyCode(), level, vars, blockIdx);\n if(Object.keys(el[i_list])[0] == '@num') {\n\t\t\t\t\t\t// ccode.setup += `${objName}.set(${i_list}, ${element.loop});`;\n\t\t\t\t\t\tccode.setup += `${objName}[${i_list}] = ${element.loop};`;\n }else{\n //if the element not a number, set this element each update before returning the list\n extraSetupCode += element.setup;\n ccode.loop += `${objName}[${i_list}] = ${element.loop};`;\n }\n }\n\n ccode.loop += `return ${objName}})()`;\n ccode.setup += extraSetupCode;\n // ccode.loop+=`${objName}`;\n // console.log(ccode);\n return ccode;\n }\n }\n\n if (Array.isArray(t)) {\n t.map((el) => {\n Object.keys(el).map((k) => {\n // console.log(\"DEBUG:traverseTree:@ARRAYAttribMap\");\n // console.log(k);\n code = attribMap[k](code, el[k]);\n });\n })\n } else {\n Object.keys(t).map((k) => {\n // console.log(\"DEBUG:traverseTree:@OBJECTAttribMap\");\n // console.log(k);\n code = attribMap[k](code, t[k]);\n });\n }\n return code;\n }\n\n static treeToCode(tree, blockIdx=0) {\n // console.log(tree);\n vars = {};\n let code = ASTreeToJavascript.traverseTree(tree, ASTreeToJavascript.emptyCode(), 0, vars, blockIdx);\n // console.log(vars);\n\t\t// code.setup = `() => {let q=this.newq(); q.sigOut=0; ${code.setup}; return q;}`;\n // code.loop = `(q, inputs, mem) => {${code.loop} return q.sigOut;}`\n\t\tcode.setup = `() => {let q=this.newq(); ${code.setup}; return q;}`;\n code.loop = `(q, inputs, mem) => {${code.loop}}`\n // console.log(\"DEBUG:treeToCode\");\n\t\tconsole.log(code.setup);\n\t\tconsole.log(code.loop); \n return code;\n }\n}\n\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.sema = factory()\n }\n}(this, function() {\n 'use strict';\n\n\n // create the tree structure for a number\n function num(val) {\n return { \"@num\": { value: val } };\n }\n\n // create the tree structure for a string - useful for naming samples\n function str(val) {\n return { \"@string\": val };\n }\n\n // create the tree structure for a DSP function\n function synth(functionName, params) {\n let branch = {\n \"@sigp\": { \"@params\": params, \"@func\": { value: functionName } }\n };\n return branch;\n }\n\n // create the tree structure for setting a variable\n function setvar(name, value) {\n return { \"@setvar\": { \"@varname\": name, \"@varvalue\": value } };\n }\n\n // create the tree structure for reading a variable\n function getvar(name) {\n return { \"@getvar\": name };\n }\n\n return {\n\t\tnum: num,\n\t\tstr: str,\n\t\tsynth: synth,\n\t\tsetvar: setvar,\n\t\tgetvar: getvar\n\t}\n\n}));","\n\n\nimport nearley from \"../../node_modules/nearley/lib/nearley.js\";\nimport compileLowLevel from \"./compiler-low-level.js\";\nimport {\n\tParserRules,\n\tParserStart,\n\tLexer\n} from \"../../node_modules/nearley/lib/nearley-language-bootstrapped.js\";\nimport generate from \"../../node_modules/nearley/lib/generate.js\";\nimport lint from \"../../node_modules/nearley/lib/lint.js\";\n\nimport ASTreeToJavascript from \"./IR.js\";\nimport mooo from \"../../node_modules/moo/moo.js\";\nimport semaa from \"./sema.js\";\n\n// import compilerWorker from \"web-worker:./worker.js\";\n\nexport function getModuleExports(source) {\n\tlet moo = mooo; // `let` local scope, works with eval – does NOT work with Geval\n\tlet sema = semaa; // does NOT work with Geval, works with eval\n\tsema.num(\"3\"); // hack to force the module to load before eval\n\tlet module = { exports: \"\" };\n\tconst encodedJs = encodeURIComponent(source);\n\tconst dataUri = \"data:text/javascript;charset=utf-8,\" + encodedJs;\n\timport(dataUri);\n\treturn module.exports;\n}\n\n\nexport function evalToGlobalScope(source) {\n\t// let moo = mooo; // `let` local scope, works with eval – does NOT work with Geval\n\twindow.moo = mooo; // global scope, works with Geval\n\t// let sema = semaa; // does NOT work with Geval, works with eval\n\twindow.sema = semaa; // global scope, works with Geval\n\tsema.num(\"3\"); // hack to force the module to load before eval\n\tlet module = { exports: \"\" };\n\t// eval(source);\n\tvar geval = eval; // eval in the global scope, avoiding rollup warning - https://rollupjs.org/guide/en/#avoiding-eval\n\tgeval(source); // does NOT work with geval – ReferenceError: moo is not defined\n // inject parser in window.grammar\n}\n\n/**\n * Loads the modules dependencies in the compiled parser source code (moo, sema)\n * before dynamically loading it with eval\n * @param {*} source\n * * sema.num('3') is a hack to force the module to load before eval,\n * TODO need to check how the module is built differently from moo\n */\nexport function getParserModuleExports(source) {\n\tlet moo = mooo; // `let` local scope, works with eval – does NOT work with Geval\n\tlet sema = semaa; // does NOT work with Geval, works with eval\n\tsema.num(\"3\"); // hack to force the module to load before eval\n\tlet module = { exports: \"\" };\n\teval(source); // works but gets flagged by Rollup!\n\treturn module.exports;\n}\n\n\n/**\n * Given a livecode's grammar source code, compile a livecode's source\n * @param {*} grammarSource\n * @param {*} livecodeSource\n */\nexport function compile(grammarSource, livecodeSource) {\n try {\n\t\tlet dspCode;\n\t\tlet sema = semaa;\n\n\t\tconst { errors, output } = compileGrammar(grammarSource);\n\n\t\t// const grammar = getModuleExports(output);\n\n\t\t// evalToGlobalScope(output); // FAILS in unit testing, `ReferenceError: window is not defined`\n\t\t// const compiledParser = new nearley.Parser(window.grammar);\n\n\t\tconst grammar = getParserModuleExports(output);\n\t\tconst compiledParser = new nearley.Parser(grammar);\n\n\t\t// let worker = new compilerWorker();\n\t\t// worker.postMessage({ livecodeSource, grammarSource });\n\n\t\tif (!errors && compiledParser) {\n\t\t\tconst livecodeParseTree = compiledParser.feed(livecodeSource);\n\t\t\tif (livecodeParseTree) {\n\t\t\t\tdspCode = ASTreeToJavascript.treeToCode(livecodeParseTree.results, 0);\n\t\t\t}\n\t\t}\n\t\treturn { dspCode };\n\t} catch (error) {\n \t\treturn { errors: error };\n }\n}\n\n/**\n * Given a livecode's grammar source code, compile a livecode's source\n * @param {*} grammarSource\n * @param {*} livecodeSource\n */\nexport function parse(grammarSource, livecodeSource) {\n try {\n\t\tlet dspCode;\n\t\tlet sema = semaa;\n\n\t\tconst { errors, output } = compileGrammar(grammarSource);\n\n\t\t// const grammar = getModuleExports(output);\n\n\t\t// evalToGlobalScope(output); // FAILS in unit testing, `ReferenceError: window is not defined`\n\t\t// const compiledParser = new nearley.Parser(window.grammar);\n\n\t\tconst grammar = getParserModuleExports(output);\n\t\tconst compiledParser = new nearley.Parser(grammar);\n\n\t\t// let worker = new compilerWorker();\n\t\t// worker.postMessage({ livecodeSource, grammarSource });\n\n\t\tif (!errors && compiledParser) {\n\t\t\tconst livecodeParseTree = compiledParser.feed(livecodeSource).results;\n\t\t\treturn { livecodeParseTree }\n\t\t}\n\t\telse return { errors };\n\t} catch (error) {\n \t\treturn { errors: error };\n }\n}\n\n/**\n * Given an abstract syntax tree, generate Javascript DSP code\n * @param {*} liveCodeParseTree\n */\nexport function ASTreeToDSPcode(livecodeParseTree) {\n\tif (livecodeParseTree) {\n try {\n\t\t\tconst dspCode = ASTreeToJavascript.treeToCode(livecodeParseTree, 0);\n return { dspCode };\n }\n catch (error) {\n return { errors: error };\n }\n }\n else throw new Error('Problem with livecodeParseTree argument passed to ASTreeToDSPCode');\n}\n\n/*\n MIT License\n Copyright (c) 2019 Guillermo Webster\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nfunction stream() {\n\tlet out = \"\";\n\treturn {\n\t\twrite(str) {\n\t\t\tout += str;\n\t\t},\n\t\tdump() {\n\t\t\treturn out;\n\t\t}\n\t};\n}\n\nfunction AnnotatePositions(rules) {\n\treturn rules.map(\n\t\trule =>\n\t\t\tnew nearley.Rule(\n\t\t\t\trule.name,\n\t\t\t\trule.symbols,\n\t\t\t\trule.postprocess &&\n\t\t\t\t\t((data, ref, reject) => {\n\t\t\t\t\t\tvar orig = rule.postprocess(data, ref, reject);\n\t\t\t\t\t\tif (orig === null) return null;\n\t\t\t\t\t\tif (typeof orig == \"object\" && !orig.slice) {\n\t\t\t\t\t\t\torig.pos = ref;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn orig;\n\t\t\t\t\t})\n\t\t\t)\n\t);\n}\n\nexport function compileGrammar(grammar) {\n\n\tlet parser = new nearley.Parser( AnnotatePositions(ParserRules), ParserStart, { lexer: Lexer } );\n\n\tlet errors = stream();\n\tlet output = \"\";\n\tlet positions = {};\n\n\ttry {\n\t\tparser.feed(grammar);\n\t\tif (parser.results[0]) {\n\t\t\tfunction rangeCallback(name, start, end) {\n\t\t\t\tpositions[name] = [start, end];\n\t\t\t}\n\t\t\tvar c = compileLowLevel(parser.results[0], {\n\t\t\t\trangeCallback: rangeCallback\n\t\t\t});\n\t\t\tlint(c, { out: errors });\n\n\t\t\toutput = generate(c, \"grammar\");\n\t\t}\n\t} catch (e) {\n\t\terrors.write(e);\n\t}\n\n\treturn {\n\t\terrors: errors.dump(),\n\t\tpositions,\n\t\toutput\n\t};\n}\n","\nimport Dispatcher from \"../common/dispatcher.js\";\n\n// here we use the default pattern but any RegEx can be configured\nimport mlworker from 'web-worker:./worker.js';\n\nimport { Logger } from \"../common/logger.js\";\n\n/**\n * The Learner class encapsulates a worker thread\n * and does async initialization and manages all async communication with it\n * @class Learner\n * TODO more error handling\n * TODO more checking of arguments passed to methods\n */\nexport class Learner {\n\t/**\n\t * @constructor\n\t */\n\tconstructor() {\n\t\t// Manager of events subscrition and emission, that should be subscribed by SAB receivers\n\t\tthis.dispatcher = new Dispatcher();\n\t\tthis.logger = new Logger();\n\t}\n\n\t/**\n\t * Learner's event subscription\n\t * @addEventListener\n\t * @param {*} event\n\t * @param {*} callback\n\t */\n\taddEventListener(event, callback) {\n\t\tif (this.dispatcher && event && callback)\n\t\t\tthis.dispatcher.addEventListener(event, callback);\n\t\telse throw new Error(\"Error adding event listener to Learner\");\n\t}\n\n\tremoveEventListener(event, callback) {\n\t\tif (this.dispatcher && event && callback)\n\t\t\tthis.dispatcher.removeEventListener(event, callback);\n\t\telse throw new Error(\"Error removing event listener to Learner\");\n\t}\n\n\t/**\n\t * Initialises worker with origin URL\n\t * @param {*} url\n\t * @param {*} sab\n\t */\n\tasync init(url) {\n\t\t// this.dispatcher = new Dispatcher();\n\t\tthis.worker = new mlworker();\n\t\t//this.logger = new Logger(); //make a logger instance\n\n\t\t//console.log(\"TEST CONSOLE TAKEOVER IN LEARNER\");\n\n\t\treturn new Promise( (resolve, reject) => {\n\t\t\tlet result = {};\n\t\t\tif (this.worker && new URL(url)) {\n\n\t\t\t\tthis.worker.postMessage({ url });\n\n\t\t\t\tthis.worker.onerror = e => {\n\t\t\t\t\tconsole.log(\"onError\");\n reject(e);\n };\n\n\t\t\t\tthis.worker.onmessage = e => {\n\t\t\t\t\tresult = e.data.init;\n\t\t\t\t\tconsole.info(\"running Learner\");\n\t\t\t\t\tresolve(result);\n\t\t\t\t\t// this.worker.onmessage = this.onMessageHandler;\n\t\t\t\t\tthis.worker.onmessage = this.onMessageHandler.bind(this);\n\t\t\t\t};\n\n\t\t\t}\n\t\t});\n\t}\n\n\tonMessageHandler(m){\n\n\t\t// data is a property of postMessage. func is then a property of data sent in our messages.\n\t\tif ( m && m.data && m.data.func ) {\n\n\t\t\tlet responders = {\n\n\t\t\t\tsab: (data) => {\n\t\t\t\t\t// Publish data to audio engine\n\t\t\t\t\tthis.dispatcher.dispatch(\"onSharedBuffer\", data);\n\t\t\t\t},\n\t\t\t\tsendbuf: (data) => {\n\t\t\t\t\t// Publish data to audio engine\n\t\t\t\t\tthis.dispatcher.dispatch(\"onSharedBuffer\", data);\n\t\t\t\t},\n\t\t\t\tsave: (data) => {\n\t\t\t\t\t// console.log(\"save\");\n\t\t\t\t\twindow.localStorage.setItem(data.name, data.val);\n\t\t\t\t},\n\t\t\t\tload: (data) => {\n\t\t\t\t\t// console.log(\"load\");\n\t\t\t\t\tlet msg = {\n\t\t\t\t\t\tname: data.name,\n\t\t\t\t\t\tval: window.localStorage.getItem(data.name),\n\t\t\t\t\t};\n\t\t\t\t\tmodelWorker.postMessage(msg);\n\t\t\t\t},\n\t\t\t\tdownload: (data) => {\n\t\t\t\t\t// console.log(\"download\");\n\t\t\t\t\tlet downloadData = window.localStorage.getItem(data.name);\n\t\t\t\t\tlet blob = new Blob([downloadData], {\n\t\t\t\t\t\ttype: \"text/plain;charset=utf-8\",\n\t\t\t\t\t});\n\t\t\t\t\tsaveData(blob, `${data.name}.data`);\n\t\t\t\t},\n\t\t\t\tsendcode: (data) => {\n\t\t\t\t\t// console.log(data);\n\t\t\t\t},\n // DEPRECATED\n data: () => {\n\t\t\t\t\t// Publish data to audio engine\n\t\t\t\t\t// messaging.publish(\"model-output-data\", data);\n\t\t\t\t},\n\t\t\t\tpbcopy: (data) => {\n\t\t\t\t\tcopyToPasteBuffer(data.msg);\n\t\t\t\t\t// let copyField=document.getElementById(\"hiddenCopyField\");\n\t\t\t\t\t// copyField.value = data.msg;\n\t\t\t\t\t// copyField.select();\n\t\t\t\t\t// document.execCommand(\"Copy\");\n\t\t\t\t},\n\t\t\t\tenvsave: (data) => {\n\t\t\t\t\tmessaging.publish(\"env-save\", data);\n\t\t\t\t},\n\t\t\t\tenvload: (data) => {\n\t\t\t\t\tmessaging.publish(\"env-load\", data);\n\t\t\t\t},\n\t\t\t\tdomeval: (data) => {\n\t\t\t\t\tevalDOMCode(data.code);\n\t\t\t\t},\n\t\t\t\tpeerinfo: (data) => {\n\t\t\t\t\tmessaging.publish(\"peerinfo-request\", {});\n\t\t\t\t},\n\t\t\t\t// data from the worker.js for the logger widget\n\t\t\t\tlogs: (data) => {\n\t\t\t\t\t// console.log(\">\", [...data.payload].join()); //for now just log to console and have it captured here.\n\t\t\t\t\tthis.logger.push(data); //recieve data from the worker.js and push it to the logger.\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tresponders[m.data.func](m.data);\n\n } else if (m.data !== undefined && m.data.length !== 0) {\n\t\t\t// res(m.data);\n\t\t\tconsole.log(m.data);\n\t\t}\n\t\t// clearTimeout(timeout);\n\t};\n\n\t/**\n\t *\n\t */\n\teval(expression) {\n\t\tif (this.worker && expression)\n\t\t\tthis.worker.postMessage({ eval: expression });\n\t\t//console.log(\"DEBUG:ModelEditor:evalModelEditorExpression: \" + code);\n\t\t// window.localStorage.setItem(\"modelEditorValue\", codeMirror.getValue());\n\t\t// addToHistory(\"model-history-\", modelCode);\n\t}\n\n\t/**\n\t *\n\t * @param {*} sab\n\t * @param {*} blocksize\n\t * @param {*} channelID\n\t */\n\taddSharedBuffer(e) {\n\t\tif (this.worker && e && e.sab && e.sab instanceof SharedArrayBuffer) {\n\t\t\tthis.worker.postMessage({\n\t\t\t\tsab: e.sab,\n\t\t\t\tblocksize: e.blocksize,\n\t\t\t\tchannelID: e.channelID,\n\t\t\t});\n\t\t} else throw new Error(\"Error pushing SharedBuffer in Learner\");\n\t}\n\n\tevalBlock(block) {\n\t\t// let modelCode = codeMirror.getBlock();\n\t\t// console.log(modelCode);\n\t\tlet linebreakPos = block.indexOf(\"\\n\");\n\t\tlet firstLine = block.substr(0, linebreakPos);\n\t\t// console.log(firstLine);\n\t\tif (firstLine == \"//--DOM\") {\n\t\t\tblock = block.substr(linebreakPos);\n\t\t\tevalDomCode(block);\n\t\t\taddToHistory(\"dom-history-\", block);\n\t\t} else {\n\t\t\tthis.worker.postMessage({ eval: block });\n\t\t\t// console.log(\"DEBUG:ModelEditor:evalModelEditorExpressionBlock: \" + code);\n\t\t\twindow.localStorage.setItem(\"modelEditorValue\", codeMirror.getValue());\n\t\t\taddToHistory(\"model-history-\", block);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t */\n\tterminate() {\n\t\tthis.worker.onmessage = null; // remove event handler subscription\n\t\tthis.worker.terminate();\n\t\tthis.worker = null; // make sure it is deleted by GC\n\t}\n}\n","/**\n * Find code between dividers,\n * const divider = \"__________\";\n */\nexport function getBlock(editor) {\n\tif (editor) {\n\t\tlet cursorInfo = editor.getCursor();\n\t\t//find post divider\n\t\tlet line = cursorInfo.line;\n\t\tlet linePost = editor.lastLine();\n\n\t\twhile (line < linePost) {\n\t\t\tif (/___+/.test(editor.getLine(line))) {\n\t\t\t\t// Test RegEx at least 3 underscores\n\t\t\t\tlinePost = line - 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tline++;\n\t\t}\n\n\t\tline = cursorInfo.line;\n\t\tlet linePre = -1;\n\t\twhile (line >= 0) {\n\t\t\t// console.log(editor2.getLine(line));\n\t\t\tif (/___+/.test(editor.getLine(line))) {\n\t\t\t\tlinePre = line;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tline--;\n\t\t}\n\t\tif (linePre > -1) {\n\t\t\tlinePre++;\n\t\t}\n\t\tlet code = editor.getRange(\n\t\t\t{\n\t\t\t\tline: linePre,\n\t\t\t\tch: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\tline: linePost + 1,\n\t\t\t\tch: 0,\n\t\t\t}\n\t\t);\n\n\t\treturn code;\n\t}\n}\n"],"names":["this","moo","require$$0","bootstraped","sema","semaa","ParserRules","ParserStart","Lexer","lint","mlworker"],"mappings":"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"}