Skip to content

Commit

Permalink
Further flow fixes and limited testing
Browse files Browse the repository at this point in the history
  • Loading branch information
tmitchel2 committed Jun 24, 2016
1 parent fcac116 commit a4fe356
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 86 deletions.
26 changes: 26 additions & 0 deletions flow/measured.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* @flow */
declare module 'measured' {
declare class MeasuredCollection {
_metrics: any;

timer(name: string): MeasuredTimer;

counter(name: string): MeasuredCounter;

toJSON(): any;
}

declare class MeasuredTimer {
start(): Stopwatch;
}

declare class MeasuredCounter {
inc(value: number): void;
}

declare class Stopwatch {
end(): void;
}

declare function createCollection(): MeasuredCollection;
}
153 changes: 74 additions & 79 deletions make-webpack-config.js
Original file line number Diff line number Diff line change
@@ -1,97 +1,92 @@
var path = require("path");
var webpack = require("webpack");
var StatsPlugin = require("stats-webpack-plugin");
var ContextReplacementPlugin = require("webpack/lib/ContextReplacementPlugin");
var path = require('path');
var webpack = require('webpack');
var StatsPlugin = require('stats-webpack-plugin');
var ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin');

module.exports = function(options) {
var entry = { 'index': './src/Index.js' };
module.exports = function (options) {

var entry = { index: './src/Index.js' };
var loaders = [
{ test: /\.jsx$/, loader: options.hotComponents ? ["react-hot-loader", "babel-loader?stage=0"] : "babel-loader?stage=0"},
{ test: /\.js$/, loader: "babel-loader", include: path.join(__dirname, "src")},
{ test: /\.jsx$/, loader: options.hotComponents ?
[ 'react-hot-loader', 'babel-loader?stage=0' ] : 'babel-loader?stage=0'},
{ test: /\.js$/, loader: 'babel-loader', include: path.join(__dirname, 'src')},
{ test: /\.json$/, loader: 'json-loader' },
{ test: /\.md|markdown$/, loader: 'markdown-loader'}
];

var alias = {};
var aliasLoader = {};
var externals = [
var alias = {};
var aliasLoader = {};
var externals = [
{ 'aws-sdk': 'commonjs aws-sdk' } // This is already available on the lambda server
];
var modulesDirectories = ['node_modules', 'web_modules'];
var extensions = ["", ".web.js", ".js", ".jsx", ".json"];
var root = __dirname;
var modulesDirectories = [ 'node_modules', 'web_modules' ];
var extensions = [ '', '.web.js', '.js', '.jsx', '.json' ];
var root = __dirname;

var publicPath = options.devServer ?
"http://localhost:2992/assets/" :
"/assets/";
var publicPath = options.devServer ? 'http://localhost:2992/assets/' : '/assets/';

var output = {
path: path.join(__dirname, "dist"),
publicPath,
filename: "[name].js",
chunkFilename: options.devServer ? "[id].js" : "[name].js",
sourceMapFilename: "debugging/[file].map",
pathinfo: options.debug,
libraryTarget: 'umd'
};
var output = {
path: path.join(__dirname, 'dist'),
publicPath,
filename: '[name].js',
chunkFilename: options.devServer ? '[id].js' : '[name].js',
sourceMapFilename: 'debugging/[file].map',
pathinfo: options.debug,
libraryTarget: 'umd'
};

var excludeFromStats = [
/node_modules[\\\/]react(-router)?[\\\/]/,
/node_modules[\\\/]items-store[\\\/]/
];
var excludeFromStats = [
/node_modules[\\\/]react(-router)?[\\\/]/,
/node_modules[\\\/]items-store[\\\/]/
];

var plugins = [
new StatsPlugin(path.join(__dirname, "build", "stats.json"), {
chunkModules: true,
exclude: excludeFromStats
}),
new ContextReplacementPlugin(/moment\.js[\/\\]lang$/, /^\.\/(de|pl)$/)
];
var plugins = [
new StatsPlugin(path.join(__dirname, 'build', 'stats.json'), {
chunkModules: true,
exclude: excludeFromStats
}),
new ContextReplacementPlugin(/moment\.js[\/\\]lang$/, /^\.\/(de|pl)$/)
];

if(options.minimize) {
plugins.push(
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
}),
new webpack.optimize.DedupePlugin()
);
plugins.push(
new webpack.DefinePlugin({
"process.env": {
NODE_ENV: JSON.stringify("production")
}
}),
if(options.minimize) {
plugins.push(
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
}),
new webpack.optimize.DedupePlugin()
);
plugins.push(
new webpack.DefinePlugin({'process.env': { NODE_ENV: JSON.stringify('production')}}),
new webpack.NoErrorsPlugin()
);
}
}

return {
entry: entry,
output: output,
target: 'node',
module: { loaders: loaders },
devtool: options.devtool,
debug: options.debug,
resolveLoader: {
root: path.join(__dirname, "node_modules"),
alias: aliasLoader
},
externals: externals,
resolve: {
root: root,
modulesDirectories: modulesDirectories,
extensions: extensions,
alias: alias
},
plugins: plugins,
devServer: {
stats: {
cached: false,
exclude: excludeFromStats
}
}
};
return {
entry,
output,
target: 'node',
module: { loaders },
devtool: options.devtool,
debug: options.debug,
resolveLoader: {
root: path.join(__dirname, 'node_modules'),
alias: aliasLoader
},
externals,
resolve: {
root,
modulesDirectories,
extensions,
alias
},
plugins,
devServer: {
stats: {
cached: false,
exclude: excludeFromStats
}
}
};
};
28 changes: 26 additions & 2 deletions src/Provisioner.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ export default class Provisioner extends ProvisionerConfigurableBase {
invariant(data != null, 'Parameter \'data\' is not set');

let config = this.getTableConfig(data);
if (config.ReadCapacity.Increment == null) {
return false;
}

let adjustmentContext = this.getReadCapacityIncrementAdjustmentContext(data, config);
return this.isCapacityAdjustmentRequired(data, adjustmentContext);
}
Expand All @@ -63,8 +67,12 @@ export default class Provisioner extends ProvisionerConfigurableBase {
invariant(data != null, 'Parameter \'data\' is not set');

let config = this.getTableConfig(data);
if (config.ReadCapacity.Decrement == null) {
return false;
}

let adjustmentContext = this.getReadCapacityDecrementAdjustmentContext(data, config);
return this.isCapacityAdjustmentRequired(data, adjustmentContext, this.calculateDecrementedReadCapacityValue);
return this.isCapacityAdjustmentRequired(data, adjustmentContext, d => this.calculateDecrementedReadCapacityValue(d));
}

calculateDecrementedReadCapacityValue(data: TableProvisionedAndConsumedThroughput) {
Expand All @@ -79,6 +87,10 @@ export default class Provisioner extends ProvisionerConfigurableBase {
invariant(data != null, 'Parameter \'data\' is not set');

let config = this.getTableConfig(data);
if (config.WriteCapacity.Increment == null) {
return false;
}

let adjustmentContext = this.getWriteCapacityIncrementAdjustmentContext(data, config);
return this.isCapacityAdjustmentRequired(data, adjustmentContext);
}
Expand All @@ -95,6 +107,10 @@ export default class Provisioner extends ProvisionerConfigurableBase {
invariant(data != null, 'Parameter \'data\' is not set');

let config = this.getTableConfig(data);
if (config.WriteCapacity.Decrement == null) {
return false;
}

let adjustmentContext = this.getWriteCapacityDecrementAdjustmentContext(data, config);
return this.isCapacityAdjustmentRequired(data, adjustmentContext, this.calculateDecrementedWriteCapacityValue);
}
Expand All @@ -110,6 +126,8 @@ export default class Provisioner extends ProvisionerConfigurableBase {
getReadCapacityIncrementAdjustmentContext(
data: TableProvisionedAndConsumedThroughput,
config: ProvisionerConfig): AdjustmentContext {

invariant(config.ReadCapacity.Increment != null, 'Increment cannot be null');
return {
TableName: data.TableName,
IndexName: data.IndexName,
Expand All @@ -126,6 +144,8 @@ export default class Provisioner extends ProvisionerConfigurableBase {
getReadCapacityDecrementAdjustmentContext(
data: TableProvisionedAndConsumedThroughput,
config: ProvisionerConfig): AdjustmentContext {

invariant(config.ReadCapacity.Decrement != null, 'Decrement cannot be null');
return {
TableName: data.TableName,
IndexName: data.IndexName,
Expand All @@ -142,6 +162,8 @@ export default class Provisioner extends ProvisionerConfigurableBase {
getWriteCapacityIncrementAdjustmentContext(
data: TableProvisionedAndConsumedThroughput,
config: ProvisionerConfig): AdjustmentContext {

invariant(config.WriteCapacity.Increment != null, 'Increment cannot be null');
return {
TableName: data.TableName,
IndexName: data.IndexName,
Expand All @@ -158,6 +180,8 @@ export default class Provisioner extends ProvisionerConfigurableBase {
getWriteCapacityDecrementAdjustmentContext(
data: TableProvisionedAndConsumedThroughput,
config: ProvisionerConfig): AdjustmentContext {

invariant(config.WriteCapacity.Decrement != null, 'Decrement cannot be null');
return {
TableName: data.TableName,
IndexName: data.IndexName,
Expand Down Expand Up @@ -191,7 +215,7 @@ export default class Provisioner extends ProvisionerConfigurableBase {
adjustmentContext.CapacityAdjustmentConfig.When.AfterLastIncrementMinutes);

let isReadDecrementAllowed = adjustmentContext.AdjustmentType === 'decrement' ?
RateLimitedDecrement.isDecrementAllowed(data, adjustmentContext, this.calculateDecrementedReadCapacityValue) :
RateLimitedDecrement.isDecrementAllowed(data, adjustmentContext, d => this.calculateDecrementedReadCapacityValue(d)) :
true;

let isAdjustmentAllowed = isAfterLastDecreaseGracePeriod && isAfterLastIncreaseGracePeriod && isReadDecrementAllowed;
Expand Down
4 changes: 2 additions & 2 deletions src/flow/FlowTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ export type ProvisionerConfig = {
export type CapacityConfig = {
Min?: number,
Max?: number,
Increment: CapacityAdjustmentConfig,
Decrement: CapacityAdjustmentConfig,
Increment?: CapacityAdjustmentConfig,
Decrement?: CapacityAdjustmentConfig,
};

export type CapacityAdjustmentConfig = {
Expand Down
8 changes: 5 additions & 3 deletions src/utils/Stats.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
/* @flow */
import measured from 'measured';

export default class Stats {
_stats: any;
_stats: measured.MeasuredCollection;

constructor(stats: any) {
constructor(stats: measured.MeasuredCollection) {
this._stats = stats;
}

Expand All @@ -19,7 +21,7 @@ export default class Stats {
this._stats._metrics = {};
}

toJSON() {
toJSON(): any {
return this._stats.toJSON();
}

Expand Down

0 comments on commit a4fe356

Please sign in to comment.