Skip to content
This repository was archived by the owner on Jun 9, 2019. It is now read-only.

Commit 4966f8c

Browse files
committed
Merge pull request #34 from mohayonao/v0.5.0
v0.5.0
2 parents 7388bca + af17164 commit 4966f8c

File tree

150 files changed

+5100
-8108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

150 files changed

+5100
-8108
lines changed

.babelrc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
{
22
"presets": [
3-
"es2015"
3+
"es2015",
4+
"stage-0"
45
],
56
"plugins": [
6-
"transform-es2015-modules-commonjs"
7+
"transform-es2015-modules-commonjs",
8+
"transform-decorators-legacy"
79
]
810
}

.eslintignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
test/bootstrap/assert.js
1+
test/bootstrap/assert.min.js

.eslintrc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,8 @@
33
"env": {
44
"node": true
55
},
6-
"extend": "mohayonao"
6+
"rules": {
7+
"comma-dangle": [ 2, "never" ]
8+
},
9+
"extends": "mohayonao"
710
}

build/web-audio-test-api.js

Lines changed: 3002 additions & 3502 deletions
Large diffs are not rendered by default.

index.html

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
<!DOCTYPE html>
2-
<html>
2+
<html lang="en">
33
<head>
44
<meta charset="utf-8">
55
<title>web-audio-test-api.js</title>
6-
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/mocha/2.2.5/mocha.min.css">
6+
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/mocha/2.3.4/mocha.min.css">
77
<style>
88
* { font-family: "Monaco", "Consolas", monospace }
99
code { font-family: "Monaco", "Consolas", monospace }
1010
.title { font-size: 3em !important }
1111
.link { color: #3498db }
1212
</style>
13-
<script src="//cdnjs.cloudflare.com/ajax/libs/mocha/2.2.5/mocha.min.js"></script>
14-
<script src="//cdnjs.cloudflare.com/ajax/libs/sinon.js/1.7.3/sinon-min.js"></script>
15-
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.3/lodash.min.js"></script>
16-
<script src="test/bootstrap/assert.js"></script>
17-
<script src="build/web-audio-test-api.js"></script>
13+
<script src="//cdnjs.cloudflare.com/ajax/libs/mocha/2.3.4/mocha.min.js"></script>
14+
<script src="//cdnjs.cloudflare.com/ajax/libs/sinon.js/1.15.4/sinon.min.js"></script>
15+
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>
16+
<script src="./test/bootstrap/assert.min.js"></script>
17+
<script src="./build/web-audio-test-api.js"></script>
1818
<script>
1919
mocha.setup("bdd");
20-
window.onload = function() {
21-
mocha.run();
22-
};
20+
2321
window.global = window;
24-
window.closeTo = function(actual, expected, delta) {
22+
window.onload = mocha.run;
23+
24+
function closeTo(actual, expected, delta) {
2525
return Math.abs(actual - expected) <= delta;
26-
};
26+
}
2727
</script>
2828
<script src="./test/AnalyserNode.js"></script>
2929
<script src="./test/AudioBuffer.js"></script>
@@ -41,14 +41,8 @@
4141
<script src="./test/ConvolverNode.js"></script>
4242
<script src="./test/DelayNode.js"></script>
4343
<script src="./test/DynamicsCompressorNode.js"></script>
44-
<script src="./test/Element.js"></script>
45-
<script src="./test/Event.js"></script>
46-
<script src="./test/EventTarget.js"></script>
4744
<script src="./test/GainNode.js"></script>
48-
<script src="./test/HTMLElement.js"></script>
49-
<script src="./test/HTMLMediaElement.js"></script>
5045
<script src="./test/MediaElementAudioSourceNode.js"></script>
51-
<script src="./test/MediaStream.js"></script>
5246
<script src="./test/MediaStreamAudioDestinationNode.js"></script>
5347
<script src="./test/MediaStreamAudioSourceNode.js"></script>
5448
<script src="./test/OfflineAudioCompletionEvent.js"></script>
@@ -60,6 +54,12 @@
6054
<script src="./test/StereoPannerNode.js"></script>
6155
<script src="./test/WaveShaperNode.js"></script>
6256
<script src="./test/WebAudioTestAPI.js"></script>
57+
<script src="./test/dom/Element.js"></script>
58+
<script src="./test/dom/Event.js"></script>
59+
<script src="./test/dom/EventTarget.js"></script>
60+
<script src="./test/dom/HTMLElement.js"></script>
61+
<script src="./test/dom/HTMLMediaElement.js"></script>
62+
<script src="./test/dom/MediaStream.js"></script>
6363
</head>
6464
<body>
6565
<div id="mocha">

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("./lib").default;

package.json

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "web-audio-test-api",
33
"description": "Web Audio API test library for CI",
4-
"version": "0.4.0",
4+
"version": "0.5.0",
55
"author": "Nao Yonamine <[email protected]>",
66
"bugs": {
77
"url": "https://github.com/mohayonao/web-audio-test-api/issues"
@@ -10,8 +10,10 @@
1010
"devDependencies": {
1111
"babel-cli": "^6.3.15",
1212
"babel-eslint": "^4.1.6",
13+
"babel-plugin-transform-decorators-legacy": "^1.2.0",
1314
"babel-plugin-transform-es2015-modules-commonjs": "^6.3.16",
1415
"babel-preset-es2015": "^6.3.13",
16+
"babel-preset-stage-0": "^6.3.13",
1517
"babel-register": "^6.3.13",
1618
"babelify": "^7.2.0",
1719
"browserify": "^12.0.1",
@@ -27,26 +29,30 @@
2729
"files": [
2830
"package.json",
2931
"README.md",
32+
"index.js",
33+
"lib",
3034
"build"
3135
],
3236
"homepage": "https://github.com/mohayonao/web-audio-test-api/",
3337
"keywords": [
34-
"webaudioapi",
35-
"test"
38+
"test",
39+
"web audio api"
3640
],
3741
"license": "MIT",
38-
"main": "build/web-audio-test-api.js",
42+
"main": "index.js",
3943
"repository": {
4044
"type": "git",
4145
"url": "http://github.com/mohayonao/web-audio-test-api.git"
4246
},
4347
"scripts": {
44-
"build": "browserify src -t babelify --outfile build/web-audio-test-api.js",
48+
"build": "npm run build:to5 && npm run build:browser",
49+
"build:browser": "browserify index.js --standalone WebAudioTestAPI -o build/web-audio-test-api.js",
50+
"build:to5": "babel src --out-dir lib",
4551
"cover": "babel-node $(npm bin)/isparta cover --report text --report html --report lcov _mocha",
4652
"lint": "eslint src test",
47-
"prepublish": "npm run lint && npm run test && npm run build",
48-
"test": "mocha --compilers js:espower-babel/guess",
4953
"mocha": "mocha --compilers js:babel-register",
54+
"prepublish": "npm run lint && npm run mocha && npm run build",
55+
"test": "mocha --compilers js:espower-babel/guess",
5056
"travis": "npm run lint && npm run cover"
5157
}
5258
}

src/AnalyserNode.js

Lines changed: 31 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
import utils from "./utils";
21
import Configuration from "./utils/Configuration";
3-
import Enumerator from "./utils/Enumerator";
42
import AudioNode from "./AudioNode";
3+
import * as props from "./decorators/props";
4+
import * as methods from "./decorators/methods";
5+
import * as validators from "./validators";
56

67
let configuration = Configuration.getInstance();
78

89
export default class AnalyserNode extends AudioNode {
10+
static $JSONKeys = [ "fftSize", "minDecibels", "maxDecibels", "smoothingTimeConstant" ];
11+
912
constructor(admission, context) {
1013
super(admission, {
1114
name: "AnalyserNode",
@@ -14,152 +17,44 @@ export default class AnalyserNode extends AudioNode {
1417
numberOfOutputs: 1,
1518
channelCount: 1,
1619
channelCountMode: "explicit",
17-
channelInterpretation: "speakers",
20+
channelInterpretation: "speakers"
1821
});
19-
2022
this._.fftSize = 2048;
21-
this._.minDecibels = -100;
22-
this._.maxDecibels = 30;
23-
this._.smoothingTimeConstant = 0.8;
24-
this._.JSONKeys = AnalyserNode.$JSONKeys.slice();
2523
}
2624

27-
get fftSize() {
28-
return this._.fftSize;
29-
}
25+
@props.enum([ 32, 64, 128, 256, 512, 1024, 2048 ])
26+
fftSize() {}
3027

31-
set fftSize(value) {
32-
this._.inspector.describe("fftSize", ($assert) => {
33-
let enumFFTSize = new Enumerator([
34-
32, 64, 128, 256, 512, 1024, 2048,
35-
]);
36-
37-
$assert(enumFFTSize.contains(value), (fmt) => {
38-
throw new TypeError(fmt.plain `
39-
${fmt.form};
40-
${fmt.butGot(value, "fftSize", enumFFTSize.toString())}
41-
`);
42-
});
43-
});
44-
45-
this._.fftSize = value;
46-
}
47-
48-
get frequencyBinCount() {
28+
@props.readonly()
29+
frequencyBinCount() {
4930
return this.fftSize >> 1;
5031
}
5132

52-
set frequencyBinCount(value) {
53-
this._.inspector.describe("frequencyBinCount", ($assert) => {
54-
$assert.throwReadOnlyTypeError(value);
55-
});
56-
}
57-
58-
get minDecibels() {
59-
return this._.minDecibels;
60-
}
33+
@props.typed(validators.isNumber, -100)
34+
minDecibels() {}
6135

62-
set minDecibels(value) {
63-
this._.inspector.describe("minDecibels", ($assert) => {
64-
$assert(utils.isNumber(value), (fmt) => {
65-
throw new TypeError(fmt.plain `
66-
${fmt.form};
67-
${fmt.butGot(value, "minDecibels", "number")}
68-
`);
69-
});
70-
});
36+
@props.typed(validators.isNumber, 30)
37+
maxDecibels() {}
7138

72-
this._.minDecibels = value;
73-
}
39+
@props.typed(validators.isNumber, 0.8)
40+
smoothingTimeConstant() {}
7441

75-
get maxDecibels() {
76-
return this._.maxDecibels;
77-
}
42+
@methods.param("array", validators.isInstanceOf(Float32Array))
43+
getFloatFrequencyData() {}
7844

79-
set maxDecibels(value) {
80-
this._.inspector.describe("maxDecibels", ($assert) => {
81-
$assert(utils.isNumber(value), (fmt) => {
82-
throw new TypeError(fmt.plain `
83-
${fmt.form};
84-
${fmt.butGot(value, "maxDecibels", "number")}
85-
`);
86-
});
87-
});
45+
@methods.param("array", validators.isInstanceOf(Uint8Array))
46+
getByteFrequencyData() {}
8847

89-
this._.maxDecibels = value;
90-
}
48+
@methods.param("array", validators.isInstanceOf(Float32Array))
49+
@methods.contract({
50+
precondition() {
51+
if (configuration.getState("AnalyserNode#getFloatTimeDomainData") !== "enabled") {
52+
throw new TypeError("not enabled");
53+
}
54+
}
55+
})
56+
getFloatTimeDomainData() {}
9157

92-
get smoothingTimeConstant() {
93-
return this._.smoothingTimeConstant;
94-
}
95-
96-
set smoothingTimeConstant(value) {
97-
this._.inspector.describe("smoothingTimeConstant", ($assert) => {
98-
$assert(utils.isNumber(value), (fmt) => {
99-
throw new TypeError(fmt.plain `
100-
${fmt.form};
101-
${fmt.butGot(value, "smoothingTimeConstant", "number")}
102-
`);
103-
});
104-
});
105-
106-
this._.smoothingTimeConstant = value;
107-
}
108-
109-
getFloatFrequencyData(array) {
110-
this._.inspector.describe("getFloatFrequencyData", ($assert) => {
111-
$assert(utils.isInstanceOf(array, Float32Array), (fmt) => {
112-
throw new TypeError(fmt.plain `
113-
${fmt.form};
114-
${fmt.butGot(array, "array", "Float32Array")}
115-
`);
116-
});
117-
});
118-
}
119-
120-
getByteFrequencyData(array) {
121-
this._.inspector.describe("getByteFrequencyData", ($assert) => {
122-
$assert(utils.isInstanceOf(array, Uint8Array), (fmt) => {
123-
throw new TypeError(fmt.plain `
124-
${fmt.form};
125-
${fmt.butGot(array, "array", "Uint8Array")}
126-
`);
127-
});
128-
});
129-
}
130-
131-
getFloatTimeDomainData(array) {
132-
this._.inspector.describe("getFloatTimeDomainData", ($assert) => {
133-
$assert(configuration.getState("AnalyserNode#getFloatTimeDomainData") === "enabled", (fmt) => {
134-
throw new TypeError(fmt.plain `
135-
${fmt.form};
136-
not enabled
137-
`);
138-
});
139-
$assert(utils.isInstanceOf(array, Float32Array), (fmt) => {
140-
throw new TypeError(fmt.plain `
141-
${fmt.form};
142-
${fmt.butGot(array, "array", "Float32Array")}
143-
`);
144-
});
145-
});
146-
}
147-
148-
getByteTimeDomainData(array) {
149-
this._.inspector.describe("getByteTimeDomainData", ($assert) => {
150-
$assert(utils.isInstanceOf(array, Uint8Array), (fmt) => {
151-
throw new TypeError(fmt.plain `
152-
${fmt.form};
153-
${fmt.butGot(array, "array", "Uint8Array")}
154-
`);
155-
});
156-
});
157-
}
58+
@methods.param("array", validators.isInstanceOf(Uint8Array))
59+
getByteTimeDomainData() {}
15860
}
159-
160-
AnalyserNode.$JSONKeys = [
161-
"fftSize",
162-
"minDecibels",
163-
"maxDecibels",
164-
"smoothingTimeConstant",
165-
];

0 commit comments

Comments
 (0)