This commit is contained in:
Yotam Mann 2021-10-13 18:38:30 -04:00
parent 8d75c16f20
commit 10c27a99e1
20 changed files with 966 additions and 612 deletions

90
.eslintrc.cjs Normal file
View file

@ -0,0 +1,90 @@
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["jsdoc", "html"],
extends: ["plugin:@typescript-eslint/recommended"],
rules: {
"prefer-rest-params": "off",
"@typescript-eslint/ban-ts-ignore": "off",
"@typescript-eslint/ban-ts-comment" : "off",
"@typescript-eslint/no-empty-function": "off",
"jsdoc/check-alignment": 1,
"jsdoc/check-param-names": ["error"],
// "jsdoc/check-examples": ["error"],
"jsdoc/check-indentation": [
"error",
{ excludeTags: ["example", "param"] },
],
"dot-location": ["error", "property"],
"linebreak-style": ["error", "unix"],
eqeqeq: ["error"],
curly: ["error", "all"],
"dot-notation": ["error"],
"no-throw-literal": ["error"],
"no-useless-call": ["error"],
"no-unmodified-loop-condition": ["error"],
"quote-props": ["error", "as-needed"],
quotes: ["error", "double"],
"no-shadow": "error",
"no-console": ["error", { allow: ["warn"] }],
"@typescript-eslint/no-object-literal-type-assertion": "off",
"@typescript-eslint/no-unused-vars": "off",
"sort-imports": [
"error",
{
ignoreCase: true,
ignoreDeclarationSort: true,
ignoreMemberSort: false,
memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
},
],
"no-lonely-if": ["error"],
semi: ["error", "always"],
"no-cond-assign": ["error", "always"],
indent: "off",
"no-var": "error",
"prefer-arrow-callback": "error",
"@typescript-eslint/indent": [
"error",
"tab",
{ SwitchCase: 1, MemberExpression: 2 },
],
"@typescript-eslint/explicit-member-accessibility": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"no-multi-spaces": ["error"],
"array-bracket-spacing": ["error", "never"],
"block-spacing": ["error", "always"],
"func-call-spacing": ["error", "never"],
"key-spacing": ["error", { beforeColon: false, afterColon: true }],
"brace-style": ["error", "1tbs"],
"space-in-parens": ["error", "never"],
"eol-last": ["error", "always"],
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/array-type": "off",
"spaced-comment": [
"error",
"always",
{
line: { exceptions: ["-"] },
block: { balanced: true },
},
],
"lines-between-class-members": "off",
"no-multiple-empty-lines": ["error", { max: 1, maxEOF: 1, maxBOF: 0 }],
"no-unneeded-ternary": ["error"],
"object-curly-spacing": ["error", "always"],
"space-unary-ops": ["error", { words: true, nonwords: false }],
"block-spacing": ["error", "always"],
"keyword-spacing": ["error", { before: true }],
"space-before-function-paren": [
"error",
{ anonymous: "never", named: "never", asyncArrow: "always" },
],
"comma-spacing": ["error", { before: false, after: true }],
"arrow-spacing": ["error", { before: true, after: true }],
"space-before-blocks": [
"error",
{ functions: "always", keywords: "always", classes: "always" },
],
},
};

View file

@ -1,73 +0,0 @@
module.exports = {
"parser": '@typescript-eslint/parser',
"plugins": [
'@typescript-eslint',
"jsdoc",
"html"
],
"extends": ["plugin:@typescript-eslint/recommended"],
"rules": {
"prefer-rest-params": "off",
"@typescript-eslint/ban-ts-ignore": "off",
"@typescript-eslint/no-empty-function": "off",
"jsdoc/check-alignment": 1,
"jsdoc/check-param-names": ["error"],
"jsdoc/check-examples": ["error"],
"jsdoc/check-indentation": ["error", { "excludeTags": ["example", "param"] }],
"dot-location": ["error", "property"],
"linebreak-style": ["error", "unix"],
"eqeqeq": ["error"],
"curly": ["error", "all"],
"dot-notation": ["error"],
"no-throw-literal": ["error"],
"no-useless-call": ["error"],
"no-unmodified-loop-condition": ["error"],
"quote-props": ["error", "as-needed"],
"quotes": ["error", "double"],
"no-shadow": "error",
"no-console": ["error", { "allow": ["warn"] }],
"@typescript-eslint/no-object-literal-type-assertion": "off",
"@typescript-eslint/no-unused-vars": "off",
"sort-imports": ["error", {
"ignoreCase": true,
"ignoreDeclarationSort": true,
"ignoreMemberSort": false,
"memberSyntaxSortOrder": ["none", "all", "multiple", "single"]
}],
"no-lonely-if": ["error"],
"semi": ["error", "always"],
"no-cond-assign": ["error", "always"],
"indent": "off",
"no-var": "error",
"prefer-arrow-callback": "error",
"@typescript-eslint/indent": ["error", "tab", { "SwitchCase": 1, "MemberExpression": 2 }],
"@typescript-eslint/explicit-member-accessibility": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"no-multi-spaces": ["error"],
"array-bracket-spacing": ["error", "never"],
"block-spacing": ["error", "always"],
"func-call-spacing": ["error", "never"],
"key-spacing": ["error", { "beforeColon": false, "afterColon": true }],
"brace-style": ["error", "1tbs"],
"space-in-parens": ["error", "never"],
"eol-last": ["error", "always"],
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-use-before-define": "off",
"@typescript-eslint/array-type": "off",
"spaced-comment": ["error", "always", {
"line": { "exceptions": ["-"] },
"block": { "balanced": true },
}],
"lines-between-class-members": "off",
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0 }],
"no-unneeded-ternary": ["error"],
"object-curly-spacing": ["error", "always"],
"space-unary-ops": ["error", { "words": true, "nonwords": false }],
"block-spacing": ["error", "always"],
"keyword-spacing": ["error", { "before": true }],
"space-before-function-paren": ["error", { "anonymous": "never", "named": "never", "asyncArrow": "always" }],
"comma-spacing": ["error", { "before": false, "after": true }],
"arrow-spacing": ["error", { "before": true, "after": true }],
"space-before-blocks": ["error", { "functions": "always", "keywords": "always", "classes": "always" }]
}
};

View file

@ -7,7 +7,7 @@ import { readOnly } from "../../core/util/Interface";
export interface LimiterOptions extends ToneAudioNodeOptions {
threshold: Decibels;
};
}
/**
* Limiter will limit the loudness of an incoming signal.

View file

@ -605,8 +605,8 @@ const EnvelopeCurves: EnvelopeCurveMap = (() => {
In: cosineCurve,
Out: reverseCurve(cosineCurve),
},
exponential: "exponential" as "exponential",
linear: "linear" as "linear",
exponential: "exponential" as const,
linear: "linear" as const,
ripple: {
In: rippleCurve,
Out: invertCurve(rippleCurve),

View file

@ -88,9 +88,9 @@ export class FeedbackCombFilter extends ToneAudioWorklet<FeedbackCombFilterOptio
onReady(node: AudioWorkletNode) {
connectSeries(this.input, node, this.output);
const delayTime = node.parameters.get("delayTime") as AudioParam;;
const delayTime = node.parameters.get("delayTime") as AudioParam;
this.delayTime.setParam(delayTime);
const feedback = node.parameters.get("feedback") as AudioParam;;
const feedback = node.parameters.get("feedback") as AudioParam;
this.resonance.setParam(feedback);
}

View file

@ -66,7 +66,7 @@ export class TickSource<TypeName extends "bpm" | "hertz"> extends ToneWithContex
static getDefaults(): TickSourceOptions {
return Object.assign({
frequency: 1,
units: "hertz" as "hertz",
units: "hertz" as const,
}, ToneWithContext.getDefaults());
}

View file

@ -64,7 +64,7 @@ export class AutoFilter extends LFOEffect<AutoFilterOptions> {
baseFrequency: 200,
octaves: 2.6,
filter: {
type: "lowpass" as "lowpass",
type: "lowpass" as const,
rolloff: -12 as -12,
Q: 1,
}

View file

@ -61,7 +61,7 @@ export class Chebyshev extends Effect<ChebyshevOptions> {
static getDefaults(): ChebyshevOptions {
return Object.assign(Effect.getDefaults(), {
order: 1,
oversample: "none" as "none"
oversample: "none" as const
});
}

View file

@ -118,7 +118,7 @@ export class Chorus extends StereoFeedbackEffect<ChorusOptions> {
frequency: 1.5,
delayTime: 3.5,
depth: 0.7,
type: "sine" as "sine",
type: "sine" as const,
spread: 180,
feedback: 0,
wet: 0.5,

View file

@ -68,14 +68,14 @@ export abstract class MidSideEffect<Options extends MidSideEffectOptions> extend
/**
* Connect the mid chain of the effect
*/
protected connectEffectMid(...nodes: OutputNode[]): void{
protected connectEffectMid(...nodes: OutputNode[]): void {
this._midSend.chain(...nodes, this._midReturn);
}
/**
* Connect the side chain of the effect
*/
protected connectEffectSide(...nodes: OutputNode[]): void{
protected connectEffectSide(...nodes: OutputNode[]): void {
this._sideSend.chain(...nodes, this._sideReturn);
}

View file

@ -68,7 +68,7 @@ export class StereoEffect<Options extends StereoEffectOptions> extends ToneAudio
/**
* Connect the left part of the effect
*/
protected connectEffectLeft(...nodes: OutputNode[]): void{
protected connectEffectLeft(...nodes: OutputNode[]): void {
this._split.connect(nodes[0], 0, 0);
connectSeries(...nodes);
connect(nodes[nodes.length-1], this._merge, 0, 0);
@ -77,7 +77,7 @@ export class StereoEffect<Options extends StereoEffectOptions> extends ToneAudio
/**
* Connect the right part of the effect
*/
protected connectEffectRight(...nodes: OutputNode[]): void{
protected connectEffectRight(...nodes: OutputNode[]): void {
this._split.connect(nodes[0], 1, 0);
connectSeries(...nodes);
connect(nodes[nodes.length-1], this._merge, 0, 1);

View file

@ -111,7 +111,7 @@ export class Tremolo extends StereoEffect<TremoloOptions> {
static getDefaults(): TremoloOptions {
return Object.assign(StereoEffect.getDefaults(), {
frequency: 10,
type: "sine" as "sine",
type: "sine" as const,
depth: 0.5,
spread: 180,
});

View file

@ -79,7 +79,7 @@ export class Vibrato extends Effect<VibratoOptions> {
maxDelay: 0.005,
frequency: 5,
depth: 0.1,
type: "sine" as "sine"
type: "sine" as const
});
}

View file

@ -73,7 +73,7 @@ export class Pattern<ValueType> extends Loop<PatternOptions<ValueType>> {
static getDefaults(): PatternOptions<any> {
return Object.assign(Loop.getDefaults(), {
pattern: "up" as "up",
pattern: "up" as const,
values: [],
callback: noOp,
});

View file

@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/camelcase */
import { expect } from "chai";
import { BasicTests } from "test/helper/Basic";
import { CompareToFile } from "test/helper/CompareToFile";

View file

@ -138,7 +138,7 @@ export class Sampler extends Instrument<SamplerOptions> {
return Object.assign(Instrument.getDefaults(), {
attack: 0,
baseUrl: "",
curve: "exponential" as "exponential",
curve: "exponential" as const,
onload: noOp,
onerror: noOp,
release: 0.1,

View file

@ -106,7 +106,7 @@ export class PWMOscillator extends Source<PWMOscillatorOptions> implements ToneO
frequency: 440,
modulationFrequency: 0.4,
phase: 0,
type: "pwm" as "pwm",
type: "pwm" as const,
});
}
/**

View file

@ -128,7 +128,7 @@ export class PulseOscillator extends Source<PulseOscillatorOptions> implements T
detune: 0,
frequency: 440,
phase: 0,
type: "pulse" as "pulse",
type: "pulse" as const,
width: 0.2,
});
}

1374
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -65,18 +65,18 @@
"@types/chai": "^4.2.22",
"@types/mocha": "^5.2.6",
"@types/ua-parser-js": "^0.7.32",
"@typescript-eslint/eslint-plugin": "^2.28.0",
"@typescript-eslint/parser": "^2.28.0",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"async": "^3.1.0",
"chai": "^4.3.4",
"codecov": "^3.1.0",
"cross-var": "^1.1.0",
"eslint": "^8.0.0",
"eslint-plugin-html": "^6.0.2",
"eslint-plugin-jsdoc": "^15.12.0",
"eslint": "^7.32.0",
"eslint-plugin-html": "^6.2.0",
"eslint-plugin-jsdoc": "^36.1.1",
"fs-extra": "^8.1.0",
"glob": "^7.1.5",
"html-webpack-plugin": "^3.2.0",
"html-webpack-plugin": "^5.3.2",
"http-server": "^13.0.2",
"istanbul-instrumenter-loader": "^3.0.1",
"jsdom": "^16.3.0",