From d9dae77dceba6024d0501f2e619d72b0c36410a4 Mon Sep 17 00:00:00 2001 From: Neko <38586112+neko1101@users.noreply.github.com> Date: Thu, 10 Nov 2022 23:37:29 +0800 Subject: [PATCH] chore: linting (#25) * feat(repo): adding npm skel files * feat(class): core function * feat(deps): update packages * Update README.md * feat(core): finished initial commit * Update tslint.json * Create npm-publish.yml * Update npm-publish.yml * Update package.json * Update package.json * Update package-lock.json * Update npm-publish.yml * Update README.md * chore: remove test package * Update package.json * Update package.json * feat(test): added jest test and test ci * chore(deps): update package * chore(core): refactored * chore(test): fix error * Update tsconfig.json * Update tsconfig.json * Update package.json * Update tsconfig.json * Update jest-test.yml * Update jest-test.yml * Update index.test.ts * Update jest-test.yml * Update jest-test.yml * Update jest-test.yml * Update jest-test.yml * Update jest-test.yml * Update jest-test.yml * chore(workflows): updated ci * Update jest-test.yml * Update jest-test.yml * chore(workflows): add coverage * Update jest-test.yml * Update jest-test.yml * Update jest-test.yml * Update jest-test.yml * feat(workflow): separate coverage ci * Update index.test.ts * Create CODE_OF_CONDUCT.md * Update package.json * Update README.md * Update index.ts * Update npm-publish.yml - fix typo * Update package.json - bump version * fix: exclude dist file on test * bump: v0.0.8 * bump: version 0.1.0 - rename to adasms-sdk * fix: package.json - update main and types * fix: exports - bump v0.1.2 * chore: update lock * fix: tests * chore: redefine exports * bump: v0.1.3 * Update tsconfig.json * bump: v0.1.4 * bump: v0.1.4 * fix: fix import issue - remove type - bump version * chore: linting - update tsconfig - bump v0.1.6 - update format script --- .prettierrc | 3 +- package.json | 4 +- src/index.ts | 10 +- src/main.ts | 307 ++++++++++++++++++++++---------------------------- src/types.ts | 108 +++++++++--------- tsconfig.json | 4 +- tslint.json | 9 +- 7 files changed, 206 insertions(+), 239 deletions(-) diff --git a/.prettierrc b/.prettierrc index 482552f..6384a62 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "printWidth": 120, "trailingComma": "all", - "singleQuote": true + "singleQuote": true, + "tabWidth": 4 } \ No newline at end of file diff --git a/package.json b/package.json index 21f6595..d5d3531 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "adasms-sdk", "homepage": "https://adasms.com/", - "version": "0.1.5", + "version": "0.1.6", "description": "Non-Official ADASMS Client SDK", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -14,7 +14,7 @@ }, "scripts": { "test": "jest", - "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"", + "format": "prettier --write \"src/**/*.ts\"", "lint": "tslint -p tsconfig.json", "build": "tsc" }, diff --git a/src/index.ts b/src/index.ts index d317b61..92f3655 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ -import Client from "./main" -export * from "./main" -export * from "./types" -export * as types from "./types" -export default Client +import Client from './main'; +export * from './main'; +export * from './types'; +export * as types from './types'; +export default Client; diff --git a/src/main.ts b/src/main.ts index 6d6093c..b11d872 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,22 +1,22 @@ -import fetch from 'node-fetch' -import * as type from './types' -import querystring from 'querystring' -import axios from 'axios' +import fetch from 'node-fetch'; +import * as type from './types'; +import querystring from 'querystring'; +import axios from 'axios'; export default class Client { - private token: string - private apiUrl: string + private token: string; + private apiUrl: string; /** * Client constructor * @param option type.ClientOption */ constructor(option: type.ClientOption) { - this.apiUrl = "https://terminal.adasms.com/api" - if(process.env.ADASMS_APPLICATION_SECRET) { - this.token = process.env.ADASMS_APPLICATION_SECRET + this.apiUrl = 'https://terminal.adasms.com/api'; + if (process.env.ADASMS_APPLICATION_SECRET) { + this.token = process.env.ADASMS_APPLICATION_SECRET; } else { - this.token = option.token + this.token = option.token; } } @@ -26,59 +26,56 @@ export default class Client { * @returns Promise */ public async sendSMS(params: type.SendSMSObject): Promise { - let query: string - query = "?_token=" + this.token + let query: string; + query = '?_token=' + this.token; if (params.phone) { - query = query + "&phone=" + params.phone!.toString() + query = query + '&phone=' + params.phone!.toString(); } if (params.message) { - query = query + "&message=" + querystring.escape(params.message.toString()) + query = query + '&message=' + querystring.escape(params.message.toString()); } else { - query = query + "&message=" + querystring.escape("Sent from adasms-client.") + query = query + '&message=' + querystring.escape('Sent from adasms-client.'); } - if(params.callbackUrl) { - query = query + "&callback_url=" + params.callbackUrl.toString() + if (params.callbackUrl) { + query = query + '&callback_url=' + params.callbackUrl.toString(); } - if(params.previewMode) { - query = query + "&preview=1" + if (params.previewMode) { + query = query + '&preview=1'; } - if(params.lead_id) { - query = query + "&lead_id=" + params.lead_id.toString() + if (params.lead_id) { + query = query + '&lead_id=' + params.lead_id.toString(); } - if(params.send_at) { - query = query + "&send_at=" + params.send_at.toString() + if (params.send_at) { + query = query + '&send_at=' + params.send_at.toString(); } // console.log(query) - const response = await fetch(this.apiUrl - + "/v1/send" + query, - { - "method": "GET" - } - ) + const response = await fetch(this.apiUrl + '/v1/send' + query, { + method: 'GET', + }); - const data = await response.json() + const data = await response.json(); // console.log(data) - if(response.ok) { + if (response.ok) { const ok: type.SendSMSResponse = { success: data.success, message: data.message, error: data.error, - explain: data.explain - } - return ok + explain: data.explain, + }; + return ok; } else { const err: type.SendSMSResponse = { success: false, error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -87,26 +84,22 @@ export default class Client { * @returns Promise */ public async getCreditBalance(): Promise { - const response = await fetch(this.apiUrl - + "/v1/balance" - + "?_token=" + this.token, - { - "method": "GET" - } - ) + const response = await fetch(this.apiUrl + '/v1/balance' + '?_token=' + this.token, { + method: 'GET', + }); - const data = await response.json() - if(response.ok) { + const data = await response.json(); + if (response.ok) { const ok: type.BalanceResponse = { - balance: data.balance - } - return ok + balance: data.balance, + }; + return ok; } else { const err: type.BalanceResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -115,21 +108,18 @@ export default class Client { * @returns Promise */ public async listScheduledMessage(): Promise { - const response = await axios.get(this.apiUrl - + "/v1/scheduled" - + "?_token=" + this.token - ) + const response = await axios.get(this.apiUrl + '/v1/scheduled' + '?_token=' + this.token); - const data = await response.data as type.ListScheduledMessageResponse - if(data.length > 0) { - const ok: type.ScheduledMessage[] = data - return ok + const data = (await response.data) as type.ListScheduledMessageResponse; + if (data.length > 0) { + const ok: type.ScheduledMessage[] = data; + return ok; } else { const err: type.ErrorResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -138,27 +128,23 @@ export default class Client { * @param params type.DeleteMessageObject * @returns Promise */ - public async deleteScheduledMessage(params : type.DeleteMessageObject): Promise { - const response = await fetch(this.apiUrl - + "/v1/scheduled/" - + params.message_id - + "?_token=" - + this.token, - { - "method": "DELETE" - } - ) - - const data = await response.json() - if(response.ok) { - const ok: type.DeleteScheduledMessageResponse = data - return ok + public async deleteScheduledMessage( + params: type.DeleteMessageObject, + ): Promise { + const response = await fetch(this.apiUrl + '/v1/scheduled/' + params.message_id + '?_token=' + this.token, { + method: 'DELETE', + }); + + const data = await response.json(); + if (response.ok) { + const ok: type.DeleteScheduledMessageResponse = data; + return ok; } else { const err: type.DeleteScheduledMessageResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -169,24 +155,19 @@ export default class Client { */ public async createLead(params: type.CreateLeadOption): Promise { const form = new URLSearchParams({ - name: params.name.toString() - }) - const response = await axios.post(this.apiUrl - + "/v1/leads" - + "?_token=" - + this.token, - form - ) - const data = await response.data as type.CreateLeadResponse - if(!data.error) { - const ok: type.CreateLeadResponse = data - return ok + name: params.name.toString(), + }); + const response = await axios.post(this.apiUrl + '/v1/leads' + '?_token=' + this.token, form); + const data = (await response.data) as type.CreateLeadResponse; + if (!data.error) { + const ok: type.CreateLeadResponse = data; + return ok; } else { const err: type.CreateLeadResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -195,25 +176,20 @@ export default class Client { * @returns Promise */ public async getLeads(): Promise { - const response = await fetch( - this.apiUrl - + "/v1/leads?_token=" - + this.token, - { - "method": "GET" - } - ) - const data = await response.json() + const response = await fetch(this.apiUrl + '/v1/leads?_token=' + this.token, { + method: 'GET', + }); + const data = await response.json(); - if(response.ok) { - const ok: type.GetLeadResponse[] = data - return ok + if (response.ok) { + const ok: type.GetLeadResponse[] = data; + return ok; } else { const err: type.ErrorResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -224,26 +200,20 @@ export default class Client { */ public async createContact(params: type.CreateContactOption): Promise { const form = new URLSearchParams({ - phone: params.phone.toString() - }) + phone: params.phone.toString(), + }); - const response = await axios.post(this.apiUrl - + "/v1/leads/" - + params.lead_id - + "?_token=" - + this.token, - form - ) - const data = response.data as type.CreateContactResponse - if(!data.error) { - const ok: type.CreateContactResponse = data - return ok + const response = await axios.post(this.apiUrl + '/v1/leads/' + params.lead_id + '?_token=' + this.token, form); + const data = response.data as type.CreateContactResponse; + if (!data.error) { + const ok: type.CreateContactResponse = data; + return ok; } else { const err: type.CreateContactResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -252,26 +222,23 @@ export default class Client { * @param params type.GetContactListOption * @returns Promise */ - public async getContactList(params: type.GetContactListOption): Promise { - const response = await fetch(this.apiUrl - + "/v1/leads/" - + params.lead_id - + "?_token=" + this.token, - { - "method": "GET" - } - ) + public async getContactList( + params: type.GetContactListOption, + ): Promise { + const response = await fetch(this.apiUrl + '/v1/leads/' + params.lead_id + '?_token=' + this.token, { + method: 'GET', + }); - const data = await response.json() - if(response.ok) { - const ok: type.GetContactListResponse = data - return ok + const data = await response.json(); + if (response.ok) { + const ok: type.GetContactListResponse = data; + return ok; } else { const err: type.ErrorResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -281,25 +248,20 @@ export default class Client { * @returns Promise */ public async deleteLead(params: type.DeleteLeadOption): Promise { - const response = await fetch(this.apiUrl - + "/v1/leads/" - + params.lead_id - + "?_token=" + this.token, - { - "method": "DELETE" - } - ) + const response = await fetch(this.apiUrl + '/v1/leads/' + params.lead_id + '?_token=' + this.token, { + method: 'DELETE', + }); - const data = await response.json() - if(response.ok) { - const ok: type.DeleteLeadResponse = data - return ok + const data = await response.json(); + if (response.ok) { + const ok: type.DeleteLeadResponse = data; + return ok; } else { const err: type.DeleteLeadResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } @@ -309,28 +271,25 @@ export default class Client { * @returns Promise */ public async deleteContact(params: type.DeleteContactOption): Promise { - const response = await fetch(this.apiUrl - + "/v1/leads/" - + params.lead_id - + "/" + params.contact_id - + "?_token=" + this.token, + const response = await fetch( + this.apiUrl + '/v1/leads/' + params.lead_id + '/' + params.contact_id + '?_token=' + this.token, { - "method": "DELETE" - } - ) + method: 'DELETE', + }, + ); - const data = await response.json() - if(response.ok) { - const ok: type.DeleteContactResponse = data - return ok + const data = await response.json(); + if (response.ok) { + const ok: type.DeleteContactResponse = data; + return ok; } else { const err: type.DeleteContactResponse = { error: data.error, - explain: data.explain - } - return err + explain: data.explain, + }; + return err; } } } -export { Client } +export { Client }; diff --git a/src/types.ts b/src/types.ts index fcf564c..ddd7de6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,133 +1,133 @@ export interface SendSMSObject { - phone?: string - message?: string - callbackUrl?: string - previewMode?: boolean - lead_id?: number - send_at?: string + phone?: string; + message?: string; + callbackUrl?: string; + previewMode?: boolean; + lead_id?: number; + send_at?: string; } export interface ClientOption { - token: string + token: string; } export interface ErrorResponse { - error?: string - explain?: string + error?: string; + explain?: string; } export interface SendSMSResponse extends ErrorResponse { - success?: boolean - message?: SendSMSAPIMessage + success?: boolean; + message?: SendSMSAPIMessage; } -export interface SendSMSAPIResponse extends ErrorResponse{ - success?: boolean - message?: SendSMSAPIMessage +export interface SendSMSAPIResponse extends ErrorResponse { + success?: boolean; + message?: SendSMSAPIMessage; } export interface SendSMSAPIMessage { - price: number - total_sent: number - recipients: number - message_per_recipient: number - send_at: string - scheduled_message_id: number - priority_mode: boolean - preview: boolean - lead_id: number + price: number; + total_sent: number; + recipients: number; + message_per_recipient: number; + send_at: string; + scheduled_message_id: number; + priority_mode: boolean; + preview: boolean; + lead_id: number; } export interface ScheduledMessage { - id: number - send_at: string - recipients: number - content: string - sent: number + id: number; + send_at: string; + recipients: number; + content: string; + sent: number; } -export interface ListScheduledMessageResponse extends Array{ - error?: string - explain?: string +export interface ListScheduledMessageResponse extends Array { + error?: string; + explain?: string; } export interface BalanceAPIResponse extends ErrorResponse { - balance?: string + balance?: string; } export interface BalanceResponse extends BalanceAPIResponse {} export interface DeleteMessageObject { - message_id: number + message_id: number; } export interface DeleteScheduledMessageResponse extends ErrorResponse { - success?: boolean + success?: boolean; } export interface CreateLeadOption { - name: string + name: string; } -export interface CreateLeadAPIResponse extends ErrorResponse{ - id?: number, - name?: string +export interface CreateLeadAPIResponse extends ErrorResponse { + id?: number; + name?: string; } export interface CreateLeadResponse extends CreateLeadAPIResponse {} export interface GetLeadAPIResponse { - id: number - name: string + id: number; + name: string; } export interface GetLeadResponse extends GetLeadAPIResponse {} export interface CreateContactOption { - phone: string - lead_id: number + phone: string; + lead_id: number; } export interface CreateContactAPIResponse extends ErrorResponse { - lead_id?: number - contact_id?: number - phone?: string + lead_id?: number; + contact_id?: number; + phone?: string; } export interface CreateContactResponse extends CreateContactAPIResponse {} export interface GetContactListOption { - lead_id: number + lead_id: number; } export interface Contacts { - [key: string] : string + [key: string]: string; } export interface GetContactListAPIResponse extends ErrorResponse { - lead?: GetLeadResponse, - contacts?: Contacts + lead?: GetLeadResponse; + contacts?: Contacts; } export interface GetContactListResponse extends GetContactListAPIResponse {} export interface DeleteLeadOption { - lead_id: number + lead_id: number; } export interface DeleteLeadAPIResponse extends ErrorResponse { - success?: boolean + success?: boolean; } export interface DeleteLeadResponse extends DeleteLeadAPIResponse {} export interface DeleteContactOption { - contact_id: number - lead_id: number + contact_id: number; + lead_id: number; } export interface DeleteContactAPIResponse extends ErrorResponse { - success?: boolean + success?: boolean; } export interface DeleteContactResponse extends DeleteContactAPIResponse {} diff --git a/tsconfig.json b/tsconfig.json index 371d1b0..39277cf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,8 @@ { "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "target": "ES2021", - "module": "CommonJS", + "target": "ES5", + "module": "ES2015", "lib": ["es2021", "dom"], "isolatedModules": true, "declaration": true, diff --git a/tslint.json b/tslint.json index 263850b..4bc3cc4 100644 --- a/tslint.json +++ b/tslint.json @@ -1,4 +1,11 @@ { "extends": ["tslint:recommended", "tslint-config-prettier"], - "rules": { "no-empty-interface": false } + "rules": { + "no-empty-interface": false, + "indent": [ + true, + "spaces", + 4 + ] + } } \ No newline at end of file