Skip to content

Commit

Permalink
feat: add typescript support to bottender dev
Browse files Browse the repository at this point in the history
  • Loading branch information
jigsawye committed Feb 13, 2020
1 parent be2ae7a commit a1dcf5c
Show file tree
Hide file tree
Showing 10 changed files with 91 additions and 22 deletions.
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -50,6 +50,7 @@
"@types/lru-cache": "^5.1.0",
"@types/micro": "^7.3.3",
"@types/mongodb": "^3.3.10",
"@types/prettier": "^1.19.0",
"@types/restify": "^8.4.1",
"@types/shortid": "^0.0.29",
"@types/update-notifier": "^2.5.0",
Expand Down
14 changes: 13 additions & 1 deletion packages/bottender/src/cli/providers/sh/dev.ts
@@ -1,3 +1,6 @@
import fs from 'fs';
import path from 'path';

import ngrok from 'ngrok';
import nodemon from 'nodemon';

Expand All @@ -23,9 +26,18 @@ const dev = async (ctx: CliContext): Promise<void> => {

const { channels } = config;

const isTypescript = fs.statSync(path.resolve('tsconfig.json')).isFile;

// watch
nodemon(
`--exec "bottender start ${isConsole ? '--console' : ''} --port ${port}"`
[
isTypescript ? '--ext js,mjs,json,ts --ignore dist/ ' : '',
'--exec "',
isTypescript ? 'tsc && ' : '',
'bottender start',
isConsole ? ' --console' : '',
` --port ${port}"`,
].join('')
)
// TODO: improve messages
.on('start', () => {
Expand Down
1 change: 1 addition & 0 deletions packages/create-bottender-app/.eslintignore
@@ -0,0 +1 @@
*.test.{ts,js}
1 change: 1 addition & 0 deletions packages/create-bottender-app/package.json
Expand Up @@ -18,6 +18,7 @@
"figures": "^3.0.0",
"fs-extra": "^8.1.0",
"inquirer": "^7.0.0",
"prettier": "^1.19.1",
"validate-npm-package-name": "^3.0.0"
}
}
18 changes: 10 additions & 8 deletions packages/create-bottender-app/src/index.ts
Expand Up @@ -9,6 +9,7 @@ import inquirer from 'inquirer';
import spawn from 'cross-spawn';
import validateProjectName from 'validate-npm-package-name';

import generateAppEntry from './utils/generateAppEntry';
import generateConfig from './utils/generateConfig';
import { Answer, Platform, Session } from './types';
import { bold, error, print } from './shared/log';
Expand Down Expand Up @@ -264,7 +265,11 @@ const run = async (
),
root
);

const appEntry = generateAppEntry(useTypescript, platforms);
fs.writeFileSync(
path.join(root, 'src', useTypescript ? 'index.ts' : 'index.js'),
appEntry
);
fs.copySync(path.join(root, '.env.example'), path.join(root, '.env'));
fs.copySync(path.join(root, 'gitignore'), path.join(root, '.gitignore'));
fs.removeSync(path.join(root, 'gitignore'));
Expand All @@ -280,10 +285,12 @@ const run = async (
print('');

const knownGeneratedFiles = [
'bottender.config.js',
'package.json',
'npm-debug.log',
'yarn-error.log',
'yarn-debug.log',
'yarn.lock',
'node_modules',
];
const currentFiles = fs.readdirSync(path.join(root));
Expand Down Expand Up @@ -333,14 +340,9 @@ const createBot = async (
private: true,
scripts: {
dev: 'bottender dev',
lint: 'eslint .',
start: 'bottender start',
lint: `eslint . ${useTypescript ? '--ext=js,ts' : ''}`,
start: `${useTypescript ? 'tsc && ' : ''}bottender start`,
test: 'jest',
...(useTypescript
? {
build: 'tsc',
}
: {}),
},
};

Expand Down
46 changes: 46 additions & 0 deletions packages/create-bottender-app/src/utils/generateAppEntry.ts
@@ -0,0 +1,46 @@
import prettier from 'prettier';

import { Platform } from '../types';

const generateAppEntry = (
isTypescript: boolean,
platforms: Platform[]
): string => {
if (!isTypescript) {
return prettier.format(
`
module.exports = async function App(context) {
await context.sendText('Welcome to Bottender');
};
`,
{
trailingComma: 'es5',
singleQuote: true,
parser: 'babel',
}
);
}

const contexts = platforms.map(
platform => `${platform.charAt(0).toUpperCase()}${platform.slice(1)}Context`
);

return prettier.format(
`
import { ${contexts.join(', ')} } from 'bottender';
export default async function App(context: ${contexts.join(
' | '
)}): Promise<void> {
await context.sendText('Welcome to Bottender');
};
`,
{
trailingComma: 'es5',
singleQuote: true,
parser: 'typescript',
}
);
};

export default generateAppEntry;
17 changes: 12 additions & 5 deletions packages/create-bottender-app/src/utils/generateConfig.ts
@@ -1,9 +1,10 @@
import prettier from 'prettier';

import { Platform, Session } from '../types';

const generateConfig = (
session: Session,
platforms: Platform[]
): string => `module.exports = {
const generateConfig = (session: Session, platforms: Platform[]): string =>
prettier.format(
`module.exports = {
session: {
driver: '${session}',
stores: {
Expand Down Expand Up @@ -63,6 +64,12 @@ const generateConfig = (
},
},
};
`;
`,
{
trailingComma: 'es5',
singleQuote: true,
parser: 'babel',
}
);

export default generateConfig;

This file was deleted.

3 changes: 0 additions & 3 deletions packages/create-bottender-app/template/src/index.js

This file was deleted.

9 changes: 7 additions & 2 deletions yarn.lock
Expand Up @@ -1647,6 +1647,11 @@
resolved "https://registry.yarnpkg.com/@types/p-queue/-/p-queue-2.3.2.tgz#16bc5fece69ef85efaf2bce8b13f3ebe39c5a1c8"
integrity sha512-eKAv5Ql6k78dh3ULCsSBxX6bFNuGjTmof5Q/T6PiECDq0Yf8IIn46jCyp3RJvCi8owaEmm3DZH1PEImjBMd/vQ==

"@types/prettier@^1.19.0":
version "1.19.0"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.0.tgz#a2502fb7ce9b6626fdbfc2e2a496f472de1bdd05"
integrity sha512-gDE8JJEygpay7IjA/u3JiIURvwZW08f0cZSZLAzFoX/ZmeqvS0Sqv+97aKuHpNsalAMMhwPe+iAS6fQbfmbt7A==

"@types/range-parser@*":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
Expand Down Expand Up @@ -2564,9 +2569,9 @@ body-parser@1.19.0, body-parser@^1.19.0:
type-is "~1.6.17"

"bottender@file:packages/bottender":
version "1.2.0-alpha.4"
version "1.2.0"
dependencies:
"@bottender/express" "file:../../../Library/Caches/Yarn/v4/npm-bottender-1.2.0-alpha.4-10dad676-e608-46ef-b748-ac2b653a576e-1578631392477/node_modules/bottender-express"
"@bottender/express" "file:../../../Library/Caches/Yarn/v6/npm-bottender-1.2.0-acf426fb-4401-4201-9696-d4b0bae7adb6-1581571697417/node_modules/bottender-express"
"@hapi/joi" "^15.1.1"
"@slack/rtm-api" "^5.0.3"
arg "^4.1.1"
Expand Down

0 comments on commit a1dcf5c

Please sign in to comment.