diff --git a/browserify/.gitignore b/browserify/.gitignore new file mode 100644 index 0000000..4c43fe6 --- /dev/null +++ b/browserify/.gitignore @@ -0,0 +1 @@ +*.js \ No newline at end of file diff --git a/browserify/README.md b/browserify/README.md new file mode 100644 index 0000000..092fe7d --- /dev/null +++ b/browserify/README.md @@ -0,0 +1,45 @@ +**Install Browserify** +``` +npm install -g browserify +``` + +**Fetch dependencies** +``` +npm install +``` + +**Compile .ts files** +``` +node node_modules/typescript/bin/tsc.js +``` +shortcut for this command +``` +npm run tsc +``` + +**Run Browserify** +``` +browserify src/app.js -o bundle.js -s app +``` +shortcut for this command +``` +npm run browserify + +``` + +**Start http-server** +``` +node node_modules/http-server/bin/http-server -o +``` +shortcut for this command +``` +npm run listen +``` + +By default http-server listens on port 8080. If this port is taken use '-p' to specify free port. + + +**Shortcut for running all steps in a batch** +``` +npm run all +``` \ No newline at end of file diff --git a/browserify/app.css b/browserify/app.css new file mode 100644 index 0000000..eb24fc6 --- /dev/null +++ b/browserify/app.css @@ -0,0 +1,8 @@ +body +{ + font-family: 'Segoe UI', sans-serif +} + +span { + font-style: italic +} \ No newline at end of file diff --git a/browserify/index.html b/browserify/index.html new file mode 100644 index 0000000..bacd21a --- /dev/null +++ b/browserify/index.html @@ -0,0 +1,22 @@ + + + + + + TypeScript HTML App + + + + +

Browserify/TypeScript sample

+
+ + + + + \ No newline at end of file diff --git a/browserify/package.json b/browserify/package.json new file mode 100644 index 0000000..fc11a8e --- /dev/null +++ b/browserify/package.json @@ -0,0 +1,21 @@ +{ + "name": "typescript-browserify", + "version": "1.0.0", + "description": "Browserify/TypeScript demo", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/TypeScriptSamples.git" + }, + "dependencies": { + "http-server": "0.8.0" + }, + "devDependencies": { + "typescript": "^1.5.3" + }, + "scripts": { + "tsc": "node node_modules/typescript/bin/tsc.js", + "browserify": "browserify src/app.js -o bundle.js -s app", + "listen": "node node_modules/http-server/bin/http-server", + "all": "npm run tsc && npm run browserify && npm run listen" + } +} \ No newline at end of file diff --git a/browserify/src/app.ts b/browserify/src/app.ts new file mode 100644 index 0000000..76779fb --- /dev/null +++ b/browserify/src/app.ts @@ -0,0 +1,8 @@ +import { TimeReporter, Printer } from './timeReporter' +import { EOL } from 'os'; + + +export function start(printer: Printer) { + let timeReporter = new TimeReporter(printer); + timeReporter.start(); +} \ No newline at end of file diff --git a/browserify/src/node.d.ts b/browserify/src/node.d.ts new file mode 100644 index 0000000..eee9af5 --- /dev/null +++ b/browserify/src/node.d.ts @@ -0,0 +1,7 @@ +declare module "os" { + export var EOL: string; +} + +declare module "util" { + export function format(format: string, ...args: any[]): string; +} diff --git a/browserify/src/timeReporter.ts b/browserify/src/timeReporter.ts new file mode 100644 index 0000000..afe930f --- /dev/null +++ b/browserify/src/timeReporter.ts @@ -0,0 +1,27 @@ +import {format} from "util"; + +export type Printer = (s: string) => void; + +export class TimeReporter +{ + timerToken: number; + + constructor (private printer: Printer) + { + this.reportDate(); + } + + start() + { + this.timerToken = setInterval(() => this.reportDate(), 500); + } + + stop() + { + clearTimeout(this.timerToken); + } + + reportDate() { + this.printer(format("Date is %s", new Date().toUTCString())); + } +} diff --git a/browserify/tsconfig.json b/browserify/tsconfig.json new file mode 100644 index 0000000..2a07991 --- /dev/null +++ b/browserify/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "CommonJS", + "target": "es5" + }, + "files": [ + "src/node.d.ts", + "src/timeReporter.ts", + "src/app.ts" + ] +} \ No newline at end of file