diff --git a/Makefile b/Makefile
index ef8aaf6a..eefc2378 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
.PHONY: default setup clean vendor
default: setup
-# Put bower and tsd in path
+# Put tsc and typings in path
export PATH := node_modules/.bin:$(PATH)
# Fetch libraries
@@ -10,8 +10,7 @@ setup: vendor
vendor:
npm install
- rm -f typings/tsd.d.ts
- tsd reinstall -so
+ typings install
# Remove derived files
clean:
@@ -21,3 +20,4 @@ clean:
rm -rf otter
rm -rf zorilla
rm -rf marten
+ rm -rf typings
diff --git a/README.md b/README.md
index 1fc582d7..ec261a51 100644
--- a/README.md
+++ b/README.md
@@ -74,13 +74,13 @@ in `node_modules` (or via the symlink `vendor`).
Typings
-------
-TypeScript typings are installed via
-[TSD](https://github.com/DefinitelyTyped/tsd). To use, install TSD globally
-with `npm install tsd -g` or use the binary in the `node_modules/.bin`
-directory created after `make setup`.
-
-Do not modify d.ts files in `typings` directory directly. Modify
-typings in https://github.com/esperco/DefinitelyTyped (`tsd.json` is set
-to pull definitions from there instead of the official DefinitelyTyped repo).
-This makes it easier for us to merge upstream later if we want to open-source
-our definitions.
+TypeScript typings are installed via the Typings definition manager.
+[Typings](https://github.com/typings/typings). To use, install Typings
+globally with `npm install typings -g` or use the binary in the
+`node_modules/.bin` directory created after `make setup`.
+
+Do not modify d.ts files in the `typings` directory directly. Either modify
+typings in https://github.com/esperco/DefinitelyTyped (`typings.json` uses
+definitions from there instead of the official DefinitelyTyped repo), or
+fork or use definitions in a separate repo. This makes it easier for us to
+merge upstream later if we want to open-source our definitions.
diff --git a/build-helpers/typescript.js b/build-helpers/typescript.js
index 45f7ed39..cd52387f 100644
--- a/build-helpers/typescript.js
+++ b/build-helpers/typescript.js
@@ -4,7 +4,9 @@ var _ = require('lodash'),
exec = require('gulp-exec'),
filter = require('gulp-filter'),
fs = require('fs'),
+ glob = require("glob"),
merge = require('merge-stream'),
+ minimatch = require('minimatch'),
path = require('path'),
production = require('./production'),
remember = require('gulp-remember'),
@@ -21,65 +23,95 @@ var projects = {};
var OBLIVION_BIN = "setup/bin/oblivion";
/*
- Gulp stream for compiling TypeScript. Supports using Oblivion.
+ Returns functions for building and compiling TypeScript projects.
+ Supports using Oblivion.
- globs: string[] - Globs with source files
- tsConfigs: string[] - Paths to a config file (relative to CWD of gulpfile).
- Config file should be in the form of a tsconfig.json file with `outFile`,
- with the following optional extra vars:
+ tsConfigPaths: string[] - Paths to a config file (relative to CWD of
+ gulpfile). Config file should be in the form of a tsconfig.json file with
+ an `outFile` and no `files` attribue (all files in directory get globbed)
+ and with the following optional extra vars:
- devFiles?: string[] - Files used only in development
- prodFiles?: string[] - Files used only in production
+ devOnly?: string[] - Files used only in development
+ prodOnly?: string[] - Files used only in production
oblivion?: boolean - Pre-process with Oblivion?
+ commonGlobs?: string[] - "Common" glob paths to add to path for each tsConfig
outDir?: string - Path to output directory (modifies tsConfig.outFile path
for Gulp output)
*/
-module.exports = function(globs, tsConfigPaths, outDir) {
+module.exports = function(tsConfigPaths, commonGlobs, outDir) {
'use strict';
- return merge.apply(null,
- _.map(tsConfigPaths, function(p) {
- return build(globs, p, outDir);
- })
- );
+ var buildFns = _.map(tsConfigPaths, function(p) {
+ return function() { return buildOne(p, commonGlobs, outDir) };
+ });
+
+ var watchFns = _.map(tsConfigPaths, function(p) {
+ return watchOne(p, commonGlobs, outDir);
+ });
+
+ return {
+ build: gulp.parallel.apply(gulp, buildFns),
+ watch: gulp.parallel.apply(gulp, watchFns)
+ }
}
// Helper function for a single tsconfig.json file
-var build = function(globs, tsConfigPath, outDir) {
+var buildOne = function(tsConfigPath, commonGlobs, outDir) {
'use strict';
+ console.log("Building " + tsConfigPath);
+
var relPath = path.relative(__dirname, process.cwd());
var config = require(path.join(relPath, tsConfigPath));
var compilerOpts = config.compilerOptions || {};
var project = projects[tsConfigPath];
if (! project) {
project = projects[tsConfigPath] = ts.createProject(_.extend({
+ // In theory, noExternalResolve should be faster but it isn't for
+ // in practice. Disable for now.
noExternalResolve: false,
+
sortOutput: true,
typescript: typescript
}, compilerOpts));
}
- // Get entry points from config files
- var files = config.files || [];
- if (production.isSet()) {
- files = files.concat(config.prodFiles || []);
- } else {
- files = files.concat(config.devFiles || []);
- }
+ // Include all files in tsconfig dir
+ var base = path.dirname(tsConfigPath);
+ var baseGlob = path.join(base, "**", "*.{ts,tsx}");
+ var files = glob.sync(baseGlob);
// Files are relative to tsconfig.json file. Adjust paths so they're
- // relative to cwd
- var base = path.dirname(tsConfigPath);
- files = _.map(files, function(f) {
+ // relative to cwd before processing
+ function adjustPaths(f) {
f = path.join(base, f);
return path.relative(process.cwd(), f);
+ }
+
+ /*
+ Prod => Exclude dev files and explicitly add prod files
+ Dev => Exclude prod files and explicitly add dev files
+ Explicit add necessary because we may want to add files outside
+ the tsconfig base dir on a one-off basis.
+ */
+ var devFiles = _.map(config.devOnly, adjustPaths);
+ var prodFiles = _.map(config.prodOnly, adjustPaths);
+ var exclusions = [];
+ if (production.isSet()) {
+ exclusions = devFiles;
+ files = prodFiles.concat(files);
+ } else {
+ exclusions = prodFiles;
+ files = devFiles.concat(files);
+ }
+ _.remove(files, function(f) {
+ return !!_.find(exclusions, function(e) {
+ return minimatch(f, e);
+ });
});
- // Concatenate entry points to globs to ensure more consistent ordering
- globs = files.concat(globs);
- var ret = gulp.src(globs, { base: "." });
+ var ret = gulp.src(commonGlobs.concat(files), { base: "." });
/*
Oblivion is a custom JS/TS pre-processor that converts HTML-like code to
@@ -154,5 +186,19 @@ var build = function(globs, tsConfigPath, outDir) {
ret = ret.pipe(sourcemaps.write());
}
- return ret.pipe(gulp.dest(outDir));
+ return ret.pipe(gulp.dest(outDir))
+ .on('end', function() { console.log(tsConfigPath, 'done'); });
+}
+
+// Watch a single tsConfigFile
+var watchOne = function(tsConfigPath, commonGlobs, outDir) {
+ 'use strict';
+
+ var base = path.dirname(tsConfigPath);
+ var baseGlob = path.join(base, "**", "*.{ts,tsx}");
+ var tsGlobs = [baseGlob].concat(commonGlobs);
+
+ return watch(gulp)(tsGlobs, function() {
+ return buildOne(tsConfigPath, commonGlobs, outDir);
+ });
}
diff --git a/build-helpers/watch.js b/build-helpers/watch.js
index 92b423c8..281df124 100644
--- a/build-helpers/watch.js
+++ b/build-helpers/watch.js
@@ -1,4 +1,5 @@
"use strict";
+var _ = require("lodash");
/*
Short-hand for returning a function that creates a watcher based on an
@@ -11,14 +12,18 @@ function makeWatch(gulp) {
/*
globs: string[] - Globs to watch
- task: string - Name of Gulp task
+ task: string|function - Name of Gulp task, or task itself
*/
return function(globs, task) {
return function() {
// Set a var on this function so other code knows we're in watch mode
makeWatch.watchMode = true;
- return gulp.watch(globs, gulp.series(task));
+ if (! _.isFunction(task)) {
+ task = gulp.series(task);
+ }
+
+ return gulp.watch(globs, task);
};
};
};
diff --git a/esper.com/gulpfile.js b/esper.com/gulpfile.js
index 377f0d2d..c97b86e1 100644
--- a/esper.com/gulpfile.js
+++ b/esper.com/gulpfile.js
@@ -30,8 +30,9 @@ var config = {
jasmineDir: "pub/jasmine",
- tsGlobs: [
- "ts/**/*.{ts,tsx}"
+ tsCommonGlobs: [
+ "ts/common/**/*.{ts,tsx}",
+ "ts/lib/**/*.{ts,tsx}"
],
tsProjects: [
"ts/chrome-ext.js/tsconfig.json",
@@ -71,13 +72,11 @@ gulp.task("build-js", function() {
gulp.task("watch-js", watch(config.jsGlobs, "build-js"));
-gulp.task("build-ts", function() {
- return helpers.typescript(config.tsGlobs,
- config.tsProjects,
+var ts = helpers.typescript(config.tsProjects,
+ config.tsCommonGlobs,
config.jsOut);
-});
-
-gulp.task("watch-ts", watch(config.tsGlobs, "build-ts"));
+gulp.task("build-ts", ts.build);
+gulp.task("watch-ts", ts.watch);
gulp.task("build-assets", function() {
return helpers.assets(config.assetMap);
diff --git a/esper.com/ts/chrome-ext.js/chrome-ext.js.ts b/esper.com/ts/chrome-ext.js/chrome-ext.js.ts
index 57945971..bb253ed4 100644
--- a/esper.com/ts/chrome-ext.js/chrome-ext.js.ts
+++ b/esper.com/ts/chrome-ext.js/chrome-ext.js.ts
@@ -3,6 +3,7 @@
Chrome extension
*/
+///
///
///
diff --git a/esper.com/ts/chrome-ext.js/tsconfig.json b/esper.com/ts/chrome-ext.js/tsconfig.json
index 5ae45c72..fd5f1623 100644
--- a/esper.com/ts/chrome-ext.js/tsconfig.json
+++ b/esper.com/ts/chrome-ext.js/tsconfig.json
@@ -2,9 +2,5 @@
"compilerOptions": {
"noImplicitAny": true,
"outFile": "chrome-ext.js"
- },
-
- "files": [
- "chrome-ext.js.ts"
- ]
+ }
}
diff --git a/esper.com/ts/common/Analytics.Web.ts b/esper.com/ts/common/Analytics.Web.ts
index b281a5b8..07ecb778 100644
--- a/esper.com/ts/common/Analytics.Web.ts
+++ b/esper.com/ts/common/Analytics.Web.ts
@@ -4,8 +4,6 @@
or global scope.
*/
-///
-///
///
///
///
diff --git a/esper.com/ts/common/Layout.tsx b/esper.com/ts/common/Layout.tsx
index d41c2257..9ff6422a 100644
--- a/esper.com/ts/common/Layout.tsx
+++ b/esper.com/ts/common/Layout.tsx
@@ -2,7 +2,6 @@
Module for rendering things (mostly React components) into our HTML page
*/
-///
///
module Esper.Layout {
diff --git a/esper.com/ts/common/Login.ts b/esper.com/ts/common/Login.ts
index dca5c349..5ac8b9a9 100644
--- a/esper.com/ts/common/Login.ts
+++ b/esper.com/ts/common/Login.ts
@@ -2,7 +2,6 @@
Refactored login code for OAuth clients (Zorilla, Grison, Otter)
*/
-///
///
///
///
diff --git a/esper.com/ts/common/Route.ts b/esper.com/ts/common/Route.ts
index b79f41e1..301b56db 100644
--- a/esper.com/ts/common/Route.ts
+++ b/esper.com/ts/common/Route.ts
@@ -1,6 +1,5 @@
// Helpers for client-side router
-///
///
module Esper.Route {
diff --git a/esper.com/ts/common/tsconfig.json b/esper.com/ts/common/tsconfig.json
new file mode 100644
index 00000000..3f9bbb7e
--- /dev/null
+++ b/esper.com/ts/common/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "description": "Placeholder tsconfig so editor plugins recognize type defs",
+
+ "compilerOptions": {
+ "noImplicitAny": true,
+ "jsx": "react"
+ }
+}
diff --git a/esper.com/ts/common/typings.d.ts b/esper.com/ts/common/typings.d.ts
new file mode 100644
index 00000000..314bcdff
--- /dev/null
+++ b/esper.com/ts/common/typings.d.ts
@@ -0,0 +1,3 @@
+/* Include all typings for common */
+
+///
diff --git a/esper.com/ts/login.js/Login.OAuth.ts b/esper.com/ts/login.js/Login.OAuth.ts
index d5f61750..751c0f85 100644
--- a/esper.com/ts/login.js/Login.OAuth.ts
+++ b/esper.com/ts/login.js/Login.OAuth.ts
@@ -2,7 +2,6 @@
Refactored login code for OAuth clients (Zorilla, Grison, Otter)
*/
-///
///
///
///
diff --git a/esper.com/ts/login.js/login.js.tsx b/esper.com/ts/login.js/login.js.tsx
index 827aef87..2cabaa81 100644
--- a/esper.com/ts/login.js/login.js.tsx
+++ b/esper.com/ts/login.js/login.js.tsx
@@ -1,3 +1,4 @@
+///
///
///
///
diff --git a/esper.com/ts/login.js/tsconfig.json b/esper.com/ts/login.js/tsconfig.json
index c558b071..037b7540 100644
--- a/esper.com/ts/login.js/tsconfig.json
+++ b/esper.com/ts/login.js/tsconfig.json
@@ -5,11 +5,7 @@
"outFile": "login.js"
},
- "files": [
- "login.js.tsx"
- ],
-
- "devFiles": [
+ "devOnly": [
"../common/Login.Fake.ts"
]
}
diff --git a/esper.com/ts/settings.js/Esper.ts b/esper.com/ts/settings.js/Esper.ts
index 773a6b89..f64fe43a 100644
--- a/esper.com/ts/settings.js/Esper.ts
+++ b/esper.com/ts/settings.js/Esper.ts
@@ -4,15 +4,7 @@
Esper module.
*/
-///
-///
-///
-///
-///
-///
-///
-///
-///
+///
declare module Esper {
export var _: _.LoDashStatic;
diff --git a/esper.com/ts/settings.js/tsconfig.json b/esper.com/ts/settings.js/tsconfig.json
index 6a8485d5..c8792f66 100644
--- a/esper.com/ts/settings.js/tsconfig.json
+++ b/esper.com/ts/settings.js/tsconfig.json
@@ -6,45 +6,12 @@
"oblivion": true,
- "files": [
- "Esper.ts",
- "List.ts",
- "Deferred.ts",
- "Promise.ts",
- "Util.ts",
- "GmailCompose.ts",
- "Pay.ts",
- "Status.ts",
- "Cache.ts",
- "Svg.ts",
- "Show.ts",
- "ParseUrl.ts",
- "CalPicker.ts",
- "Settings.ts",
- "Footer.ts",
- "TeamSettings.ts",
- "Plan.ts",
- "AccountTab.ts",
- "Preferences.ts",
- "PreferencesTab.ts",
- "WorkflowsTab.ts",
- "CalendarsTab.ts",
- "LabelsTab.ts",
- "AboutTab.ts",
- "TemplateTab.ts",
- "Page.ts",
- "Route.ts",
- "Main.ts"
+ "devOnly": [
+ "DevConf.ts"
],
- "devFiles": [
- "DevConf.ts",
- "Test.ts"
- ],
-
- "prodFiles": [
- "ProdConf.ts",
- "Test.ts"
+ "prodOnly": [
+ "ProdConf.ts"
]
}
diff --git a/esper.com/ts/test.js/Integration.Login.ts b/esper.com/ts/test.js/Integration.Login.ts
index ec0d7cb1..4cc405e9 100644
--- a/esper.com/ts/test.js/Integration.Login.ts
+++ b/esper.com/ts/test.js/Integration.Login.ts
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/esper.com/ts/test.js/Integration.Time.ts b/esper.com/ts/test.js/Integration.Time.ts
index 4e72d2f2..1a29ac52 100644
--- a/esper.com/ts/test.js/Integration.Time.ts
+++ b/esper.com/ts/test.js/Integration.Time.ts
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/esper.com/ts/test.js/Integration.ts b/esper.com/ts/test.js/Integration.ts
index 8d2ddc48..adaf4571 100644
--- a/esper.com/ts/test.js/Integration.ts
+++ b/esper.com/ts/test.js/Integration.ts
@@ -1,6 +1,5 @@
// Integration test helpers
-///
///
///
diff --git a/esper.com/ts/test.js/test.js.ts b/esper.com/ts/test.js/test.js.ts
index 921b99b2..d9914a66 100644
--- a/esper.com/ts/test.js/test.js.ts
+++ b/esper.com/ts/test.js/test.js.ts
@@ -1,6 +1,6 @@
/* Define external libs used by test.js */
-///
+///
// React is a namespace, so we need a way to refer to its type
type ReactStatic = typeof React;
diff --git a/esper.com/ts/test.js/tsconfig.json b/esper.com/ts/test.js/tsconfig.json
index a9d4016e..ae33575e 100644
--- a/esper.com/ts/test.js/tsconfig.json
+++ b/esper.com/ts/test.js/tsconfig.json
@@ -5,9 +5,7 @@
"outFile": "test.js"
},
- "files": [],
-
- "devFiles": [
+ "devOnly": [
"test.js.ts",
"../lib/Test.ts",
"../lib/ApiC.Test.ts",
@@ -21,9 +19,10 @@
"../lib/JQStore.Test.ts",
"../lib/Queue.Test.ts",
"../lib/ReactHelpers.Test.ts",
+ "Integration.ts",
"Integration.Login.ts",
"Integration.Time.ts"
],
- "prodFiles": []
+ "prodOnly": []
}
diff --git a/esper.com/ts/time.js/Calendars.Test.ts b/esper.com/ts/time.js/Calendars.Test.ts
index 464f7f60..5452fe11 100644
--- a/esper.com/ts/time.js/Calendars.Test.ts
+++ b/esper.com/ts/time.js/Calendars.Test.ts
@@ -1,4 +1,3 @@
-///
///
module Esper.Calendars {
describe("defaultSelection", function() {
diff --git a/esper.com/ts/time.js/Colors.ts b/esper.com/ts/time.js/Colors.ts
index 28d34e24..46b45d9a 100644
--- a/esper.com/ts/time.js/Colors.ts
+++ b/esper.com/ts/time.js/Colors.ts
@@ -2,8 +2,6 @@
A module for assigning colors to labels
*/
-///
-
module Esper.Colors {
// Preset list of calendars -- these look pretty close to Google Calendar
diff --git a/esper.com/ts/time.js/Components.IntervalRangeSelector.tsx b/esper.com/ts/time.js/Components.IntervalRangeSelector.tsx
index 30b50b22..52077f29 100644
--- a/esper.com/ts/time.js/Components.IntervalRangeSelector.tsx
+++ b/esper.com/ts/time.js/Components.IntervalRangeSelector.tsx
@@ -2,7 +2,6 @@
Interface for selecting date and time ranges
*/
-///
///
///
///
diff --git a/esper.com/ts/time.js/Components.Login.tsx b/esper.com/ts/time.js/Components.Login.tsx
index 28516cf0..a3aa80ce 100644
--- a/esper.com/ts/time.js/Components.Login.tsx
+++ b/esper.com/ts/time.js/Components.Login.tsx
@@ -2,7 +2,6 @@
Displays login info or link to login via Otter
*/
-///
///
///
///
diff --git a/esper.com/ts/time.js/DailyStats.Test.ts b/esper.com/ts/time.js/DailyStats.Test.ts
index 16fbacfb..487b0a69 100644
--- a/esper.com/ts/time.js/DailyStats.Test.ts
+++ b/esper.com/ts/time.js/DailyStats.Test.ts
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/esper.com/ts/time.js/Esper.ts b/esper.com/ts/time.js/Esper.ts
index fd3a3bed..e299038b 100644
--- a/esper.com/ts/time.js/Esper.ts
+++ b/esper.com/ts/time.js/Esper.ts
@@ -1,14 +1,4 @@
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
+///
// React is a namespace, so we need a way to refer to its type
type ReactStatic = typeof React;
diff --git a/esper.com/ts/time.js/Partition.Test.ts b/esper.com/ts/time.js/Partition.Test.ts
index 7742ba20..634b69b0 100644
--- a/esper.com/ts/time.js/Partition.Test.ts
+++ b/esper.com/ts/time.js/Partition.Test.ts
@@ -1,4 +1,3 @@
-///
///
///
diff --git a/esper.com/ts/time.js/Route.Test.ts b/esper.com/ts/time.js/Route.Test.ts
index cad84ae3..83827101 100644
--- a/esper.com/ts/time.js/Route.Test.ts
+++ b/esper.com/ts/time.js/Route.Test.ts
@@ -1,6 +1,6 @@
-///
///
///
+///
module Esper.Route {
// Helper for testing Layout.render's arguments vs. React components
diff --git a/esper.com/ts/time.js/Teams.Test.ts b/esper.com/ts/time.js/Teams.Test.ts
index 46069167..69941e07 100644
--- a/esper.com/ts/time.js/Teams.Test.ts
+++ b/esper.com/ts/time.js/Teams.Test.ts
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/esper.com/ts/time.js/TestFixtures.ts b/esper.com/ts/time.js/TestFixtures.ts
index a5e915e4..88ee1468 100644
--- a/esper.com/ts/time.js/TestFixtures.ts
+++ b/esper.com/ts/time.js/TestFixtures.ts
@@ -2,7 +2,6 @@
Zorilla-specific test fixutres
*/
-///
///
///
///
diff --git a/esper.com/ts/time.js/TimeStats.Test.ts b/esper.com/ts/time.js/TimeStats.Test.ts
index 60f54e2c..58970de8 100644
--- a/esper.com/ts/time.js/TimeStats.Test.ts
+++ b/esper.com/ts/time.js/TimeStats.Test.ts
@@ -1,4 +1,3 @@
-///
///
///
diff --git a/esper.com/ts/time.js/Views.CalendarLabeling.Test.tsx b/esper.com/ts/time.js/Views.CalendarLabeling.Test.tsx
index 17bdaff9..1be89377 100644
--- a/esper.com/ts/time.js/Views.CalendarLabeling.Test.tsx
+++ b/esper.com/ts/time.js/Views.CalendarLabeling.Test.tsx
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/esper.com/ts/time.js/Views.Charts.Test.tsx b/esper.com/ts/time.js/Views.Charts.Test.tsx
index b25592db..64ccabae 100644
--- a/esper.com/ts/time.js/Views.Charts.Test.tsx
+++ b/esper.com/ts/time.js/Views.Charts.Test.tsx
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/esper.com/ts/time.js/tsconfig.json b/esper.com/ts/time.js/tsconfig.json
index 13ed09f4..b12261b7 100644
--- a/esper.com/ts/time.js/tsconfig.json
+++ b/esper.com/ts/time.js/tsconfig.json
@@ -5,23 +5,18 @@
"outFile": "time.js"
},
- "files": [
- "Main.ts"
- ],
-
- "devFiles": [
+ "devOnly": [
"../common/JasmineStub.ts",
"Calendars.Test.ts",
"DailyStats.Test.ts",
"Partition.Test.ts",
- "Route.Test.ts",
"Teams.Test.ts",
"TimeStats.Test.ts",
"Views.Charts.Test.tsx",
"Views.CalendarLabeling.Test.tsx"
],
- "prodFiles": [
+ "prodOnly": [
]
}
diff --git a/esper.com/ts/typings b/esper.com/ts/typings
deleted file mode 120000
index a019c6ec..00000000
--- a/esper.com/ts/typings
+++ /dev/null
@@ -1 +0,0 @@
-../../typings
\ No newline at end of file
diff --git a/lib-ts/Analytics.Iframe.ts b/lib-ts/Analytics.Iframe.ts
index 2b7a4919..8ac0cd53 100644
--- a/lib-ts/Analytics.Iframe.ts
+++ b/lib-ts/Analytics.Iframe.ts
@@ -3,8 +3,6 @@
via a hidden iFrame.
*/
-///
-///
///
///
diff --git a/lib-ts/Api.ts b/lib-ts/Api.ts
index 40161c4a..033f7990 100644
--- a/lib-ts/Api.ts
+++ b/lib-ts/Api.ts
@@ -3,8 +3,6 @@
in one module but less of a headache than keeping everything separate
*/
-///
-///
///
///
///
diff --git a/lib-ts/ApiC.Test.ts b/lib-ts/ApiC.Test.ts
index d05a1a9f..645c913f 100644
--- a/lib-ts/ApiC.Test.ts
+++ b/lib-ts/ApiC.Test.ts
@@ -1,4 +1,3 @@
-///
///
module Esper.ApiC {
var ApiTest = {
@@ -198,4 +197,4 @@ module Esper.ApiC {
});
});
});
-}
\ No newline at end of file
+}
diff --git a/lib-ts/ApiC.ts b/lib-ts/ApiC.ts
index 955220e3..c4878287 100644
--- a/lib-ts/ApiC.ts
+++ b/lib-ts/ApiC.ts
@@ -2,7 +2,6 @@
Caching for API calls
*/
-///
///
///
///
diff --git a/lib-ts/Components.Modal.tsx b/lib-ts/Components.Modal.tsx
index 65f0ef12..9c3d0b5f 100644
--- a/lib-ts/Components.Modal.tsx
+++ b/lib-ts/Components.Modal.tsx
@@ -2,7 +2,6 @@
Generic Bootstrap modal wrapper
*/
-///
///
module Esper.Components {
diff --git a/lib-ts/Emit.Test.ts b/lib-ts/Emit.Test.ts
index 1c4f6470..d9dc2fc4 100644
--- a/lib-ts/Emit.Test.ts
+++ b/lib-ts/Emit.Test.ts
@@ -1,4 +1,3 @@
-///
///
module Esper.Emit {
diff --git a/lib-ts/Emit.ts b/lib-ts/Emit.ts
index d234c395..caa72fd1 100644
--- a/lib-ts/Emit.ts
+++ b/lib-ts/Emit.ts
@@ -3,8 +3,6 @@
changes.
*/
-///
-///
declare module Esper {
export var EventEmitter: typeof EventEmitter3.EventEmitter;
}
@@ -125,4 +123,4 @@ module Esper.Emit {
protected onChange = (): void => this.emitChange();
}
-}
\ No newline at end of file
+}
diff --git a/lib-ts/JQStore.Test.ts b/lib-ts/JQStore.Test.ts
index 58288df6..cd4db789 100644
--- a/lib-ts/JQStore.Test.ts
+++ b/lib-ts/JQStore.Test.ts
@@ -1,6 +1,5 @@
// Tests for JQStore
-///
///
module Esper {
@@ -50,4 +49,4 @@ module Esper {
expect(this.store.get()).toBeUndefined();
});
});
-}
\ No newline at end of file
+}
diff --git a/lib-ts/JQStore.ts b/lib-ts/JQStore.ts
index af09975b..311a8d93 100644
--- a/lib-ts/JQStore.ts
+++ b/lib-ts/JQStore.ts
@@ -4,8 +4,6 @@
memory leaks.
*/
-///
-
module Esper {
// http://stackoverflow.com/a/10172676
@@ -36,4 +34,4 @@ module Esper {
delete this.elm;
}
}
-}
\ No newline at end of file
+}
diff --git a/lib-ts/JsonHttp.ts b/lib-ts/JsonHttp.ts
index 2de4454f..26f256c4 100644
--- a/lib-ts/JsonHttp.ts
+++ b/lib-ts/JsonHttp.ts
@@ -5,8 +5,6 @@
Assumes CryptoJS
*/
-///
-///
///
///
diff --git a/lib-ts/LocalStore.Test.ts b/lib-ts/LocalStore.Test.ts
index ca38cc1e..b5eea2b8 100644
--- a/lib-ts/LocalStore.Test.ts
+++ b/lib-ts/LocalStore.Test.ts
@@ -1,6 +1,5 @@
/* Test LocalStore */
-///
///
module Esper.LocalStore {
diff --git a/lib-ts/Log.ts b/lib-ts/Log.ts
index ad228a68..38e8e256 100644
--- a/lib-ts/Log.ts
+++ b/lib-ts/Log.ts
@@ -1,4 +1,3 @@
-///
///
declare module Esper {
diff --git a/lib-ts/Model.Batch.Test.ts b/lib-ts/Model.Batch.Test.ts
index 87c77f1d..b499b7b3 100644
--- a/lib-ts/Model.Batch.Test.ts
+++ b/lib-ts/Model.Batch.Test.ts
@@ -1,4 +1,3 @@
-///
///
module Esper.Model {
@@ -169,4 +168,4 @@ module Esper.Model {
});
});
});
-}
\ No newline at end of file
+}
diff --git a/lib-ts/Model.StoreOne.Test.ts b/lib-ts/Model.StoreOne.Test.ts
index f06e4f35..11ae51dc 100644
--- a/lib-ts/Model.StoreOne.Test.ts
+++ b/lib-ts/Model.StoreOne.Test.ts
@@ -1,6 +1,5 @@
/* Test StoreOne module */
-///
///
module Esper.Model {
@@ -197,4 +196,4 @@ module Esper.Model {
});
});
});
-}
\ No newline at end of file
+}
diff --git a/lib-ts/Model.Test.ts b/lib-ts/Model.Test.ts
index da0c6db4..1ece0f1a 100644
--- a/lib-ts/Model.Test.ts
+++ b/lib-ts/Model.Test.ts
@@ -1,6 +1,5 @@
/* Test Model.Store */
-///
///
module Esper.Model {
diff --git a/lib-ts/Model.ts b/lib-ts/Model.ts
index 372c17b6..c6e60bc3 100644
--- a/lib-ts/Model.ts
+++ b/lib-ts/Model.ts
@@ -8,7 +8,6 @@
the dispatcher so they're updated when Actions are dispatched.
*/
-///
///
///
diff --git a/lib-ts/Queue.Test.ts b/lib-ts/Queue.Test.ts
index adb4396d..a3a1812e 100644
--- a/lib-ts/Queue.Test.ts
+++ b/lib-ts/Queue.Test.ts
@@ -1,4 +1,3 @@
-///
///
module Esper.Queue {
describe("Queue.enqueue", function() {
diff --git a/lib-ts/Queue.ts b/lib-ts/Queue.ts
index d4f2c21b..bf4abfd8 100644
--- a/lib-ts/Queue.ts
+++ b/lib-ts/Queue.ts
@@ -3,7 +3,6 @@
order to avoid race conditions).
*/
-///
///
module Esper.Queue {
diff --git a/lib-ts/ReactHelpers.Test.ts b/lib-ts/ReactHelpers.Test.ts
index 43cc5be0..c7e8a007 100644
--- a/lib-ts/ReactHelpers.Test.ts
+++ b/lib-ts/ReactHelpers.Test.ts
@@ -3,7 +3,6 @@
being present.
*/
-///
///
///
///
@@ -303,4 +302,4 @@ module Esper.ReactHelpers {
expect(this.component.render.calls.count()).toEqual(3);
});
});
-}
\ No newline at end of file
+}
diff --git a/lib-ts/ReactHelpers.ts b/lib-ts/ReactHelpers.ts
index 25a553ed..cd54c415 100644
--- a/lib-ts/ReactHelpers.ts
+++ b/lib-ts/ReactHelpers.ts
@@ -3,7 +3,6 @@
being present.
*/
-///
///
///
///
diff --git a/lib-ts/Test.ts b/lib-ts/Test.ts
index 99a0e3ce..690221af 100644
--- a/lib-ts/Test.ts
+++ b/lib-ts/Test.ts
@@ -3,10 +3,6 @@
and React.
*/
-///
-///
-///
-///
///
module Esper.Test {
diff --git a/lib-ts/Util.Test.ts b/lib-ts/Util.Test.ts
index ccd9deef..d666c069 100644
--- a/lib-ts/Util.Test.ts
+++ b/lib-ts/Util.Test.ts
@@ -1,4 +1,3 @@
-///
///
module Esper.Util {
@@ -112,4 +111,4 @@ module Esper.Util {
});
});
});
-}
\ No newline at end of file
+}
diff --git a/lib-ts/Util.ts b/lib-ts/Util.ts
index f05ac2c4..e101b1f3 100644
--- a/lib-ts/Util.ts
+++ b/lib-ts/Util.ts
@@ -1,5 +1,3 @@
-///
-
module Esper.Util {
// Return a random alphanumeric string
export function randomString() {
diff --git a/lib-ts/Watchable.ts b/lib-ts/Watchable.ts
index 472d1f22..8028dfbf 100644
--- a/lib-ts/Watchable.ts
+++ b/lib-ts/Watchable.ts
@@ -139,7 +139,7 @@ module Esper.Watchable {
unwatch(watcherId: string) {
this.changeWatchers =
- List.filter(this.changeWatchers, function(watcher) {
+ _.filter(this.changeWatchers, function(watcher) {
return watcher.id !== watcherId;
});
}
diff --git a/lib-ts/tsconfig.json b/lib-ts/tsconfig.json
new file mode 100644
index 00000000..763b40b4
--- /dev/null
+++ b/lib-ts/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "description": "Placeholder tsconfig so editor plugins recognize defs",
+
+ "compilerOptions": {
+ "noImplicitAny": true,
+ "jsx": "react"
+ }
+}
diff --git a/lib-ts/typings.d.ts b/lib-ts/typings.d.ts
new file mode 100644
index 00000000..387ebfd1
--- /dev/null
+++ b/lib-ts/typings.d.ts
@@ -0,0 +1,6 @@
+/*
+ Placeholder typings file to help text editors recognize type defs for lib
+ code
+*/
+
+///
diff --git a/package.json b/package.json
index 7388ca18..962a7e67 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"del": "^1.2.0",
"ecstatic": "^0.8.0",
"envify": "^3.4.0",
+ "glob": "^6.0.4",
"gulp": "git://github.com/gulpjs/gulp.git#4.0",
"gulp-autoprefixer": "^2.3.1",
"gulp-cached": "^1.1.0",
@@ -20,14 +21,15 @@
"gulp-remember": "^0.3.0",
"gulp-rename": "^1.2.2",
"gulp-sourcemaps": "^1.5.2",
- "gulp-typescript": "^2.8.2",
+ "gulp-typescript": "^2.10.0",
"gulp-uglify": "^1.2.0",
"gulp-util": "^3.0.6",
"livereload": "^0.3.7",
"merge-stream": "^1.0.0",
+ "minimatch": "^3.0.0",
"sync-exec": "^0.6.2",
- "tsd": "^0.6.5",
"typescript": "~1.7.5",
+ "typings": "^0.6.3",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0",
"watchify": "^3.7.0"
diff --git a/stoat/common/Esper.ts b/stoat/common/Esper.ts
index 9021ae7c..25212a25 100644
--- a/stoat/common/Esper.ts
+++ b/stoat/common/Esper.ts
@@ -4,20 +4,7 @@
Esper module.
*/
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
-///
+///
// React is a namespace, so we need a way to refer to its type
type ReactStatic = typeof React;
diff --git a/stoat/common/ExtensionOptions.Storage.ts b/stoat/common/ExtensionOptions.Storage.ts
index 78c195a5..45fb3a1e 100644
--- a/stoat/common/ExtensionOptions.Storage.ts
+++ b/stoat/common/ExtensionOptions.Storage.ts
@@ -5,8 +5,6 @@
///
///
-///
-///
module Esper.ExtensionOptions {
diff --git a/stoat/common/Login.ts b/stoat/common/Login.ts
index e52d6445..22e9c553 100644
--- a/stoat/common/Login.ts
+++ b/stoat/common/Login.ts
@@ -1,4 +1,3 @@
-///
///
///
///
diff --git a/stoat/common/Makefile b/stoat/common/Makefile
index 47cbc081..03bfd79a 100644
--- a/stoat/common/Makefile
+++ b/stoat/common/Makefile
@@ -1,14 +1,14 @@
-.PHONY: clean
+.PHONY: clean DevConf.ts ProdConf.ts
default: DevConf.ts
# NB: Use NPM to build
# Makefile just here to set up Conf files and clean up
DevConf.ts: DevConf.ts.in ../VERSION
- sed -e "s:@@VERSION@@:`cat ../VERSION`:g" DevConf.ts.in > $@
+ sed -e "s:@@VERSION@@:`cat ../VERSION`:g" DevConf.ts.in > Conf.ts
ProdConf.ts: ProdConf.ts.in ../VERSION
- sed -e "s:@@VERSION@@:`cat ../VERSION`:g" ProdConf.ts.in > $@
+ sed -e "s:@@VERSION@@:`cat ../VERSION`:g" ProdConf.ts.in > Conf.ts
clean:
rm -f *~
diff --git a/stoat/common/Message.Chrome.ts b/stoat/common/Message.Chrome.ts
index aa6bc492..8a6617d4 100644
--- a/stoat/common/Message.Chrome.ts
+++ b/stoat/common/Message.Chrome.ts
@@ -4,7 +4,6 @@
*/
///
-///
module Esper.Message {
diff --git a/stoat/content-script/CalSidebar.Storage.ts b/stoat/content-script/CalSidebar.Storage.ts
index 8fb689e6..4ae32f59 100644
--- a/stoat/content-script/CalSidebar.Storage.ts
+++ b/stoat/content-script/CalSidebar.Storage.ts
@@ -4,7 +4,6 @@
TODO: Refactor against ThreadState.Storage.ts.
*/
-///
///
///
///
@@ -78,4 +77,4 @@ module Esper.CalSidebar {
initialized = true;
}
}
-}
\ No newline at end of file
+}
diff --git a/stoat/content-script/Main.ts b/stoat/content-script/Main.ts
index f86b66db..c507beba 100644
--- a/stoat/content-script/Main.ts
+++ b/stoat/content-script/Main.ts
@@ -5,17 +5,12 @@
https://developer.chrome.com/extensions/content_scripts
*/
-///
-///
-///
-///
-///
-
///
///
///
///
+///
///
///
///
diff --git a/stoat/content-script/ThreadState.Storage.ts b/stoat/content-script/ThreadState.Storage.ts
index 6febff12..6da7075f 100644
--- a/stoat/content-script/ThreadState.Storage.ts
+++ b/stoat/content-script/ThreadState.Storage.ts
@@ -1,6 +1,5 @@
// Sync ThreadState with local Chrome profile data
-///
///
///
///
@@ -91,4 +90,4 @@ module Esper.ThreadState {
initialized = true;
}
}
-}
\ No newline at end of file
+}
diff --git a/stoat/content-script/tsconfig.json b/stoat/content-script/tsconfig.json
index 73015bd8..198a63ed 100644
--- a/stoat/content-script/tsconfig.json
+++ b/stoat/content-script/tsconfig.json
@@ -5,18 +5,6 @@
"jsx": "react"
},
- "oblivion": true,
-
- "files": [
- "Main.ts"
- ],
-
- "devFiles": [
- "../common/DevConf.ts"
- ],
-
- "prodFiles": [
- "../common/ProdConf.ts"
- ]
+ "oblivion": true
}
diff --git a/stoat/event-page/Main.ts b/stoat/event-page/Main.ts
index 7fcf417d..f5baa2f3 100644
--- a/stoat/event-page/Main.ts
+++ b/stoat/event-page/Main.ts
@@ -11,14 +11,10 @@
CSPs (which occasionally affect Content Scripts for some reason)
*/
-///
-///
-///
-///
-
///
///
+///
///
///
///
diff --git a/stoat/event-page/Update.ts b/stoat/event-page/Update.ts
index 72574438..85366b47 100644
--- a/stoat/event-page/Update.ts
+++ b/stoat/event-page/Update.ts
@@ -2,7 +2,6 @@
Manually request updates to latest Chrome E
*/
-///
///
module Esper.Update {
diff --git a/stoat/event-page/tsconfig.json b/stoat/event-page/tsconfig.json
index e0016d91..321a0b9d 100644
--- a/stoat/event-page/tsconfig.json
+++ b/stoat/event-page/tsconfig.json
@@ -5,19 +5,6 @@
"jsx": "react"
},
- "oblivion": true,
-
- "files": [
- ],
-
- "devFiles": [
- "../common/DevConf.ts",
- "Main.ts"
- ],
-
- "prodFiles": [
- "../common/ProdConf.ts",
- "Main.ts"
- ]
+ "oblivion": true
}
diff --git a/stoat/gcal-is/CalSidebar.tsx b/stoat/gcal-is/CalSidebar.tsx
index f10b1522..366a3c39 100644
--- a/stoat/gcal-is/CalSidebar.tsx
+++ b/stoat/gcal-is/CalSidebar.tsx
@@ -2,7 +2,6 @@
Calendar sidebar (differs a bit from Gmail sidebar)
*/
-///
///
///
///
diff --git a/stoat/gcal-is/Main.ts b/stoat/gcal-is/Main.ts
index 5f6f2328..501f1522 100644
--- a/stoat/gcal-is/Main.ts
+++ b/stoat/gcal-is/Main.ts
@@ -4,11 +4,6 @@
as required by gmail.js.
*/
-///
-///
-///
-///
-
///
///
///
@@ -16,6 +11,7 @@
///
///
+///
///
///
///
diff --git a/stoat/gcal-is/tsconfig.json b/stoat/gcal-is/tsconfig.json
index f896c1c5..20a4de5d 100644
--- a/stoat/gcal-is/tsconfig.json
+++ b/stoat/gcal-is/tsconfig.json
@@ -5,18 +5,6 @@
"jsx": "react"
},
- "oblivion": true,
-
- "files": [
- "Main.ts"
- ],
-
- "devFiles": [
- "../common/DevConf.ts"
- ],
-
- "prodFiles": [
- "../common/ProdConf.ts"
- ]
+ "oblivion": true
}
diff --git a/stoat/gmail-is/Main.ts b/stoat/gmail-is/Main.ts
index 3d3379e0..559e4b79 100644
--- a/stoat/gmail-is/Main.ts
+++ b/stoat/gmail-is/Main.ts
@@ -11,6 +11,7 @@
///
///
+///
///
///
///
diff --git a/stoat/gmail-is/tsconfig.json b/stoat/gmail-is/tsconfig.json
index 39c8a03d..aa658395 100644
--- a/stoat/gmail-is/tsconfig.json
+++ b/stoat/gmail-is/tsconfig.json
@@ -5,18 +5,6 @@
"jsx": "react"
},
- "oblivion": true,
-
- "files": [
- "Main.ts"
- ],
-
- "devFiles": [
- "../common/DevConf.ts"
- ],
-
- "prodFiles": [
- "../common/ProdConf.ts"
- ]
+ "oblivion": true
}
diff --git a/stoat/gulpfile.js b/stoat/gulpfile.js
index 17610391..c8c36a17 100644
--- a/stoat/gulpfile.js
+++ b/stoat/gulpfile.js
@@ -21,15 +21,9 @@ var config = {
jsBundles: ["vendor.js"],
jsOut: "pub/js",
- tsGlobs: [
+ tsCommonGlobs: [
"common/**/*.{ts,tsx}",
- "lib/**/*.{ts,tsx}",
- "typings/**/*.d.ts",
- "content-script/**/*.{ts,tsx}",
- "event-page/**/*.{ts,tsx}",
- "gcal-is/**/*.{ts,tsx}",
- "gmail-is/**/*.{ts,tsx}",
- "options-page/**/*.{ts,tsx}"
+ "lib/**/*.{ts,tsx}"
],
tsProjects: [
"content-script/tsconfig.json",
@@ -55,13 +49,11 @@ gulp.task("build-less", function() {
gulp.task("watch-less", watch(config.lessGlobs, "build-less"));
-gulp.task("build-ts", function() {
- return helpers.typescript(config.tsGlobs,
- config.tsProjects,
+var ts = helpers.typescript(config.tsProjects,
+ config.tsCommonGlobs,
config.jsOut);
-});
-
-gulp.task("watch-ts", watch(config.tsGlobs, "build-ts"));
+gulp.task("build-ts", ts.build);
+gulp.task("watch-ts", ts.watch);
gulp.task("build-assets", function() {
return helpers.assets(config.assetMap);
diff --git a/stoat/options-page/Main.ts b/stoat/options-page/Main.ts
index 839b3aa9..16b59284 100644
--- a/stoat/options-page/Main.ts
+++ b/stoat/options-page/Main.ts
@@ -2,12 +2,8 @@
Entry point for the options.js script
*/
-///
-///
-///
-///
-
///
+///
///
///
diff --git a/stoat/options-page/tsconfig.json b/stoat/options-page/tsconfig.json
index 88b4374b..eb09788c 100644
--- a/stoat/options-page/tsconfig.json
+++ b/stoat/options-page/tsconfig.json
@@ -5,18 +5,6 @@
"jsx": "react"
},
- "oblivion": false,
-
- "files": [
- "Main.ts"
- ],
-
- "devFiles": [
- "../common/DevConf.ts"
- ],
-
- "prodFiles": [
- "../common/ProdConf.ts"
- ]
+ "oblivion": false
}
diff --git a/stoat/typings b/stoat/typings
deleted file mode 120000
index 4fe6a5e5..00000000
--- a/stoat/typings
+++ /dev/null
@@ -1 +0,0 @@
-../typings/
\ No newline at end of file
diff --git a/tsd.json b/tsd.json
deleted file mode 100644
index 7775427c..00000000
--- a/tsd.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "version": "v4",
- "repo": "esperco/DefinitelyTyped",
- "ref": "master",
- "path": "typings",
- "bundle": "typings/tsd.d.ts",
- "installed": {
- "jquery/jquery.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "segment-analytics/segment-analytics.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "fullCalendar/fullCalendar.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "jqueryui/jqueryui.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "chrome/chrome.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "webrtc/MediaStream.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "es6-promise/es6-promise.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "cryptojs/cryptojs.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "moment/moment.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "moment/moment-node.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "jasmine/jasmine.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "lodash/lodash.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "moment-timezone/moment-timezone.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "react/react.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-global.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "eventemitter3/eventemitter3.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "page/page.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "bootstrap/bootstrap.d.ts": {
- "commit": "f53108644c2f32b93de423d844650297fc415a8b"
- },
- "bootstrap-daterangepicker/bootstrap-daterangepicker.d.ts": {
- "commit": "95c9b8d2d4070c35f40295a45efef95af6913579"
- },
- "typeahead/typeahead.d.ts": {
- "commit": "7c749215797e4a18066f3a5e6fc99d82d7bf144e"
- },
- "ravenjs/ravenjs.d.ts": {
- "commit": "02bc2983507f9ae82fa67300848f070fd88fd11a"
- },
- "quill/quill.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-dom.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-create-fragment.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-css-transition-group.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-transition-group.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-linked-state-mixin.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-perf.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-pure-render-mixin.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-test-utils.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "react/react-addons-update.d.ts": {
- "commit": "b5000efa7905758a842aca9f3111d582cf030128"
- },
- "highcharts/highcharts.d.ts": {
- "commit": "7c749215797e4a18066f3a5e6fc99d82d7bf144e"
- }
- }
-}
diff --git a/typings.json b/typings.json
new file mode 100644
index 00000000..7c8a06bd
--- /dev/null
+++ b/typings.json
@@ -0,0 +1,36 @@
+{
+ "ambientDependencies": {
+ "MediaStream": "github:esperco/DefinitelyTyped/webrtc/MediaStream.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "bootstrap": "github:esperco/DefinitelyTyped/bootstrap/bootstrap.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "bootstrap-daterangepicker": "github:esperco/DefinitelyTyped/bootstrap-daterangepicker/bootstrap-daterangepicker.d.ts#95c9b8d2d4070c35f40295a45efef95af6913579",
+ "chrome": "github:esperco/DefinitelyTyped/chrome/chrome.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "cryptojs": "github:esperco/DefinitelyTyped/cryptojs/cryptojs.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "es6-promise": "github:esperco/DefinitelyTyped/es6-promise/es6-promise.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "eventemitter3": "github:esperco/DefinitelyTyped/eventemitter3/eventemitter3.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "fullCalendar": "github:esperco/DefinitelyTyped/fullCalendar/fullCalendar.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "highcharts": "github:esperco/DefinitelyTyped/highcharts/highcharts.d.ts#7c749215797e4a18066f3a5e6fc99d82d7bf144e",
+ "jasmine": "github:esperco/DefinitelyTyped/jasmine/jasmine.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "jquery": "github:esperco/DefinitelyTyped/jquery/jquery.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "jqueryui": "github:esperco/DefinitelyTyped/jqueryui/jqueryui.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "lodash": "github:esperco/DefinitelyTyped/lodash/lodash.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "moment": "github:esperco/DefinitelyTyped/moment/moment.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "moment-node": "github:esperco/DefinitelyTyped/moment/moment-node.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "moment-timezone": "github:esperco/DefinitelyTyped/moment-timezone/moment-timezone.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "page": "github:esperco/DefinitelyTyped/page/page.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "quill": "github:esperco/DefinitelyTyped/quill/quill.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "ravenjs": "github:esperco/DefinitelyTyped/ravenjs/ravenjs.d.ts#02bc2983507f9ae82fa67300848f070fd88fd11a",
+ "react": "github:esperco/DefinitelyTyped/react/react.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-create-fragment": "github:esperco/DefinitelyTyped/react/react-addons-create-fragment.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-css-transition-group": "github:esperco/DefinitelyTyped/react/react-addons-css-transition-group.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-linked-state-mixin": "github:esperco/DefinitelyTyped/react/react-addons-linked-state-mixin.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-perf": "github:esperco/DefinitelyTyped/react/react-addons-perf.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-pure-render-mixin": "github:esperco/DefinitelyTyped/react/react-addons-pure-render-mixin.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-test-utils": "github:esperco/DefinitelyTyped/react/react-addons-test-utils.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-transition-group": "github:esperco/DefinitelyTyped/react/react-addons-transition-group.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-addons-update": "github:esperco/DefinitelyTyped/react/react-addons-update.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-dom": "github:esperco/DefinitelyTyped/react/react-dom.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "react-global": "github:esperco/DefinitelyTyped/react/react-global.d.ts#b5000efa7905758a842aca9f3111d582cf030128",
+ "segment-analytics": "github:esperco/DefinitelyTyped/segment-analytics/segment-analytics.d.ts#f53108644c2f32b93de423d844650297fc415a8b",
+ "typeahead": "github:esperco/DefinitelyTyped/typeahead/typeahead.d.ts#7c749215797e4a18066f3a5e6fc99d82d7bf144e"
+ }
+}