Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@imedx/ics-imedx-chromely-plugin-intf-platform

Package Overview
Dependencies
Maintainers
14
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@imedx/ics-imedx-chromely-plugin-intf-platform - npm Package Compare versions

Comparing version 0.0.1 to 0.0.2-beta.1

dist/index.html

226

dist/ics-imedx-chromely-plugin-intf-platform.es5.js
import icsChromelyRequest from '@icreate/ics-chromely-js-sdk';
/*
* @Author: 陶慧灵
* @Date: 2022-10-20 11:00:55
* @LastEditors: 陶慧灵
* @LastEditTime: 2022-10-20 17:55:44
* @Descripttion:
* @FilePath: \src\intf-platform.ts
/**
* 接口响应
*/
var IntfResponse = /** @class */ (function () {
function IntfResponse(code, message, data) {
if (code === void 0) { code = 200; }
if (message === void 0) { message = 'ok'; }
if (data === void 0) { data = null; }
this.code = code || 200;
this.message = message || 'ok';
this.data = data || null;
}
IntfResponse.success = new IntfResponse();
return IntfResponse;
}());
/**
* 抽象接口定义
*/
var BaseInterfaceCore = /** @class */ (function () {
function BaseInterfaceCore() {
}
/**
* 200成功返回
* @param data 成功数据
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.success = function (data) {
return new IntfResponse(200, 'ok', data);
};
/**
* 400错误
* @param message 错误消息
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.failure = function (message) {
return new IntfResponse(400, message);
};
/**
* 500错误
* @param message 错误消息
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.internalError = function (message) {
return new IntfResponse(500, message);
};
/**
* 404错误
* @param message 错误消息
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.notFound = function (message) {
return new IntfResponse(404, message);
};
return BaseInterfaceCore;
}());
/**
* 接口配置
*/
var intfParam = /** @class */ (function () {
function intfParam(name, type, options, defaultValue, remark, deprecated) {
this.name = name;
this.type = type;
this.options = options;
this.default = defaultValue;
this.remark = remark;
this.deprecated = deprecated;
}
return intfParam;
}());
/**
* 接口参数类型
*/
var InterfaceParamType;
(function (InterfaceParamType) {
// 输入框
InterfaceParamType[InterfaceParamType["input"] = 1] = "input";
// 选择框
InterfaceParamType[InterfaceParamType["select"] = 2] = "select";
})(InterfaceParamType || (InterfaceParamType = {}));
/**
* 接口模式 1表示C#接口 2表示js接口
*/
var InterfaceType;
(function (InterfaceType) {
// DLL接口
InterfaceType[InterfaceType["DLL"] = 1] = "DLL";
// js接口
InterfaceType[InterfaceType["JS"] = 2] = "JS";
})(InterfaceType || (InterfaceType = {}));
var IntfPlatform = /** @class */ (function () {
function IntfPlatform() {
}
/**
* 调用C#核心交互接口
* @param url 路由地址
* @param data 参数
* @returns
*/
IntfPlatform.OperateEx = function (url, data) {
// let opts =
return icsChromelyRequest.function({
url: "InteractionCore/" + url,
url: "InteractionCore/".concat(url),
method: 'POST',

@@ -23,2 +110,9 @@ data: data

/**
* 获取接口模式
* @returns 接口模式
*/
IntfPlatform.GetInterfaceType = function (intfCode) {
return InterfaceType.JS;
};
/**
*

@@ -45,17 +139,111 @@ * @returns 成功:{code: 200, data, message: 'ok'}

IntfPlatform.bussiness = function (intfCode, code, param) {
return this.OperateEx('Business', { intfCode: intfCode, code: code, param: JSON.stringify(param) });
var mode = this.GetInterfaceType(intfCode);
switch (mode) {
case InterfaceType.JS:
// 获取核心接口
var intfCoreInstance = IntfPlatform.getCoreInterface(intfCode);
// 判断核心接口是否存在
if (!intfCoreInstance) {
return Promise.reject("\u6838\u5FC3\u63A5\u53E3".concat(intfCode, "\u4E0D\u5B58\u5728\uFF01"));
}
// 返回接口结果
return Promise.resolve(intfCoreInstance.business(code, param));
default:
return this.OperateEx('Business', { intfCode: intfCode, code: code, param: JSON.stringify(param) });
}
};
/**
* 注册接口
* @param name 接口名称
* @param intfType 接口类型
* @param config 接口配置
*/
IntfPlatform.register = function (name, intfType, config) {
if (intfType.prototype instanceof BaseInterfaceCore) {
IntfPlatform.coreInterfaces[name] = intfType;
IntfPlatform.coreConfigs[name] = config;
}
else {
IntfPlatform.interfaces[name] = intfType;
IntfPlatform.configs[name] = config;
}
};
/**
* 获取所有核心接口
* @param name 核心接口名称
* @returns
*/
IntfPlatform.getAllCoreInterface = function () {
return IntfPlatform.coreInterfaces;
};
/**
* 获取核心接口
* @param name 接口名称
* @returns
*/
IntfPlatform.getCoreInterface = function (name) {
var intfCore = IntfPlatform.coreInterfaces[name];
return intfCore ? new intfCore() : null;
};
/**
* 获取核心接口配置
* @param name 接口名称
* @returns
*/
IntfPlatform.getCoreInterfaceConfig = function (name) {
return IntfPlatform.configs[name];
};
/**
* 获取所有实现接口
* @returns
*/
IntfPlatform.getAllInterface = function () {
return IntfPlatform.interfaces;
};
/**
* 获取实现接口
* @param name 接口名称
* @returns
*/
IntfPlatform.getInterface = function (name) {
var intf = IntfPlatform.interfaces[name];
return intf ? new intf() : null;
};
/**
* 获取实现接口配置
* @param name 接口名称
* @returns
*/
IntfPlatform.getInterfaceConfig = function (name) {
return IntfPlatform.configs[name];
};
/**
* 实现接口列表
*/
IntfPlatform.interfaces = {};
/**
* 核心接口列表
*/
IntfPlatform.coreInterfaces = {};
/**
* 实现接口配置
*/
IntfPlatform.configs = {};
/**
* 核心接口配置
*/
IntfPlatform.coreConfigs = {};
return IntfPlatform;
}());
/*
* @Author: 陶慧灵
* @Date: 2022-10-21 08:26:57
* @LastEditors: 陶慧灵
* @LastEditTime: 2022-10-21 08:32:11
* @Descripttion:
* @FilePath: \src\ics-imedx-chromely-plugin-intf-platform.ts
*/
var index = {
BaseInterfaceCore: BaseInterfaceCore,
InterfaceParamType: InterfaceParamType,
InterfaceType: InterfaceType,
IntfResponse: IntfResponse,
intfParam: intfParam,
IntfPlatform: IntfPlatform
};
export default IntfPlatform;
export { BaseInterfaceCore, InterfaceParamType, InterfaceType, IntfPlatform, IntfResponse, index as default, intfParam };
//# sourceMappingURL=ics-imedx-chromely-plugin-intf-platform.es5.js.map
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@icreate/ics-chromely-js-sdk')) :
typeof define === 'function' && define.amd ? define(['@icreate/ics-chromely-js-sdk'], factory) :
(global.icsImedxChromelyPluginIntfPlatform = factory(global.icsChromelyRequest));
}(this, (function (icsChromelyRequest) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@icreate/ics-chromely-js-sdk')) :
typeof define === 'function' && define.amd ? define(['exports', '@icreate/ics-chromely-js-sdk'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.icsImedxChromelyPluginIntfPlatform = {}, global.icsChromelyRequest));
})(this, (function (exports, icsChromelyRequest) { 'use strict';
icsChromelyRequest = icsChromelyRequest && icsChromelyRequest.hasOwnProperty('default') ? icsChromelyRequest['default'] : icsChromelyRequest;
/**
* 接口响应
*/
var IntfResponse = /** @class */ (function () {
function IntfResponse(code, message, data) {
if (code === void 0) { code = 200; }
if (message === void 0) { message = 'ok'; }
if (data === void 0) { data = null; }
this.code = code || 200;
this.message = message || 'ok';
this.data = data || null;
}
IntfResponse.success = new IntfResponse();
return IntfResponse;
}());
/**
* 抽象接口定义
*/
var BaseInterfaceCore = /** @class */ (function () {
function BaseInterfaceCore() {
}
/**
* 200成功返回
* @param data 成功数据
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.success = function (data) {
return new IntfResponse(200, 'ok', data);
};
/**
* 400错误
* @param message 错误消息
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.failure = function (message) {
return new IntfResponse(400, message);
};
/**
* 500错误
* @param message 错误消息
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.internalError = function (message) {
return new IntfResponse(500, message);
};
/**
* 404错误
* @param message 错误消息
* @returns 接口响应数据
*/
BaseInterfaceCore.prototype.notFound = function (message) {
return new IntfResponse(404, message);
};
return BaseInterfaceCore;
}());
/**
* 接口配置
*/
var intfParam = /** @class */ (function () {
function intfParam(name, type, options, defaultValue, remark, deprecated) {
this.name = name;
this.type = type;
this.options = options;
this.default = defaultValue;
this.remark = remark;
this.deprecated = deprecated;
}
return intfParam;
}());
/**
* 接口参数类型
*/
exports.InterfaceParamType = void 0;
(function (InterfaceParamType) {
// 输入框
InterfaceParamType[InterfaceParamType["input"] = 1] = "input";
// 选择框
InterfaceParamType[InterfaceParamType["select"] = 2] = "select";
})(exports.InterfaceParamType || (exports.InterfaceParamType = {}));
/**
* 接口模式 1表示C#接口 2表示js接口
*/
exports.InterfaceType = void 0;
(function (InterfaceType) {
// DLL接口
InterfaceType[InterfaceType["DLL"] = 1] = "DLL";
// js接口
InterfaceType[InterfaceType["JS"] = 2] = "JS";
})(exports.InterfaceType || (exports.InterfaceType = {}));
/*
* @Author: 陶慧灵
* @Date: 2022-10-20 11:00:55
* @LastEditors: 陶慧灵
* @LastEditTime: 2022-10-20 17:55:44
* @Descripttion:
* @FilePath: \src\intf-platform.ts
*/
var IntfPlatform = /** @class */ (function () {
function IntfPlatform() {
}
IntfPlatform.OperateEx = function (url, data) {
// let opts =
return icsChromelyRequest.function({
url: "InteractionCore/" + url,
method: 'POST',
data: data
});
};
/**
*
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.init = function () {
return this.OperateEx('Init');
};
/**
*
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.dispose = function () {
return this.OperateEx('Dispose');
};
/**
*
* @param intfCode: string
* @param code: string
* @param param: any
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.bussiness = function (intfCode, code, param) {
return this.OperateEx('Business', { intfCode: intfCode, code: code, param: JSON.stringify(param) });
};
return IntfPlatform;
}());
var IntfPlatform = /** @class */ (function () {
function IntfPlatform() {
}
/**
* 调用C#核心交互接口
* @param url 路由地址
* @param data 参数
* @returns
*/
IntfPlatform.OperateEx = function (url, data) {
return icsChromelyRequest.function({
url: "InteractionCore/".concat(url),
method: 'POST',
data: data
});
};
/**
* 获取接口模式
* @returns 接口模式
*/
IntfPlatform.GetInterfaceType = function (intfCode) {
return exports.InterfaceType.JS;
};
/**
*
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.init = function () {
return this.OperateEx('Init');
};
/**
*
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.dispose = function () {
return this.OperateEx('Dispose');
};
/**
*
* @param intfCode: string
* @param code: string
* @param param: any
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.bussiness = function (intfCode, code, param) {
var mode = this.GetInterfaceType(intfCode);
switch (mode) {
case exports.InterfaceType.JS:
// 获取核心接口
var intfCoreInstance = IntfPlatform.getCoreInterface(intfCode);
// 判断核心接口是否存在
if (!intfCoreInstance) {
return Promise.reject("\u6838\u5FC3\u63A5\u53E3".concat(intfCode, "\u4E0D\u5B58\u5728\uFF01"));
}
// 返回接口结果
return Promise.resolve(intfCoreInstance.business(code, param));
default:
return this.OperateEx('Business', { intfCode: intfCode, code: code, param: JSON.stringify(param) });
}
};
/**
* 注册接口
* @param name 接口名称
* @param intfType 接口类型
* @param config 接口配置
*/
IntfPlatform.register = function (name, intfType, config) {
if (intfType.prototype instanceof BaseInterfaceCore) {
IntfPlatform.coreInterfaces[name] = intfType;
IntfPlatform.coreConfigs[name] = config;
}
else {
IntfPlatform.interfaces[name] = intfType;
IntfPlatform.configs[name] = config;
}
};
/**
* 获取所有核心接口
* @param name 核心接口名称
* @returns
*/
IntfPlatform.getAllCoreInterface = function () {
return IntfPlatform.coreInterfaces;
};
/**
* 获取核心接口
* @param name 接口名称
* @returns
*/
IntfPlatform.getCoreInterface = function (name) {
var intfCore = IntfPlatform.coreInterfaces[name];
return intfCore ? new intfCore() : null;
};
/**
* 获取核心接口配置
* @param name 接口名称
* @returns
*/
IntfPlatform.getCoreInterfaceConfig = function (name) {
return IntfPlatform.configs[name];
};
/**
* 获取所有实现接口
* @returns
*/
IntfPlatform.getAllInterface = function () {
return IntfPlatform.interfaces;
};
/**
* 获取实现接口
* @param name 接口名称
* @returns
*/
IntfPlatform.getInterface = function (name) {
var intf = IntfPlatform.interfaces[name];
return intf ? new intf() : null;
};
/**
* 获取实现接口配置
* @param name 接口名称
* @returns
*/
IntfPlatform.getInterfaceConfig = function (name) {
return IntfPlatform.configs[name];
};
/**
* 实现接口列表
*/
IntfPlatform.interfaces = {};
/**
* 核心接口列表
*/
IntfPlatform.coreInterfaces = {};
/**
* 实现接口配置
*/
IntfPlatform.configs = {};
/**
* 核心接口配置
*/
IntfPlatform.coreConfigs = {};
return IntfPlatform;
}());
/*
* @Author: 陶慧灵
* @Date: 2022-10-21 08:26:57
* @LastEditors: 陶慧灵
* @LastEditTime: 2022-10-21 08:32:11
* @Descripttion:
* @FilePath: \src\ics-imedx-chromely-plugin-intf-platform.ts
*/
var index = {
BaseInterfaceCore: BaseInterfaceCore,
InterfaceParamType: exports.InterfaceParamType,
InterfaceType: exports.InterfaceType,
IntfResponse: IntfResponse,
intfParam: intfParam,
IntfPlatform: IntfPlatform
};
return IntfPlatform;
exports.BaseInterfaceCore = BaseInterfaceCore;
exports.IntfPlatform = IntfPlatform;
exports.IntfResponse = IntfResponse;
exports.default = index;
exports.intfParam = intfParam;
})));
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=ics-imedx-chromely-plugin-intf-platform.umd.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/*
* @Author: 陶慧灵
* @Date: 2022-10-20 11:00:55
* @LastEditors: 陶慧灵
* @LastEditTime: 2022-10-20 17:55:44
* @Descripttion:
* @FilePath: \src\intf-platform.ts
*/
var ics_chromely_js_sdk_1 = require("@icreate/ics-chromely-js-sdk");
var InterfaceCore_1 = require("./interfaces/InterfaceCore");
var IntfPlatform = /** @class */ (function () {
function IntfPlatform() {
}
/**
* 调用C#核心交互接口
* @param url 路由地址
* @param data 参数
* @returns
*/
IntfPlatform.OperateEx = function (url, data) {
// let opts =
return ics_chromely_js_sdk_1.default.function({
url: "InteractionCore/" + url,
url: "InteractionCore/".concat(url),
method: 'POST',

@@ -24,2 +22,9 @@ data: data

/**
* 获取接口模式
* @returns 接口模式
*/
IntfPlatform.GetInterfaceType = function (intfCode) {
return InterfaceCore_1.InterfaceType.JS;
};
/**
*

@@ -46,4 +51,98 @@ * @returns 成功:{code: 200, data, message: 'ok'}

IntfPlatform.bussiness = function (intfCode, code, param) {
return this.OperateEx('Business', { intfCode: intfCode, code: code, param: JSON.stringify(param) });
var mode = this.GetInterfaceType(intfCode);
switch (mode) {
case InterfaceCore_1.InterfaceType.JS:
// 获取核心接口
var intfCoreInstance = IntfPlatform.getCoreInterface(intfCode);
// 判断核心接口是否存在
if (!intfCoreInstance) {
return Promise.reject("\u6838\u5FC3\u63A5\u53E3".concat(intfCode, "\u4E0D\u5B58\u5728\uFF01"));
}
// 返回接口结果
return Promise.resolve(intfCoreInstance.business(code, param));
default:
return this.OperateEx('Business', { intfCode: intfCode, code: code, param: JSON.stringify(param) });
}
};
/**
* 注册接口
* @param name 接口名称
* @param intfType 接口类型
* @param config 接口配置
*/
IntfPlatform.register = function (name, intfType, config) {
if (intfType.prototype instanceof InterfaceCore_1.BaseInterfaceCore) {
IntfPlatform.coreInterfaces[name] = intfType;
IntfPlatform.coreConfigs[name] = config;
}
else {
IntfPlatform.interfaces[name] = intfType;
IntfPlatform.configs[name] = config;
}
};
/**
* 获取所有核心接口
* @param name 核心接口名称
* @returns
*/
IntfPlatform.getAllCoreInterface = function () {
return IntfPlatform.coreInterfaces;
};
/**
* 获取核心接口
* @param name 接口名称
* @returns
*/
IntfPlatform.getCoreInterface = function (name) {
var intfCore = IntfPlatform.coreInterfaces[name];
return intfCore ? new intfCore() : null;
};
/**
* 获取核心接口配置
* @param name 接口名称
* @returns
*/
IntfPlatform.getCoreInterfaceConfig = function (name) {
return IntfPlatform.configs[name];
};
/**
* 获取所有实现接口
* @returns
*/
IntfPlatform.getAllInterface = function () {
return IntfPlatform.interfaces;
};
/**
* 获取实现接口
* @param name 接口名称
* @returns
*/
IntfPlatform.getInterface = function (name) {
var intf = IntfPlatform.interfaces[name];
return intf ? new intf() : null;
};
/**
* 获取实现接口配置
* @param name 接口名称
* @returns
*/
IntfPlatform.getInterfaceConfig = function (name) {
return IntfPlatform.configs[name];
};
/**
* 实现接口列表
*/
IntfPlatform.interfaces = {};
/**
* 核心接口列表
*/
IntfPlatform.coreInterfaces = {};
/**
* 实现接口配置
*/
IntfPlatform.configs = {};
/**
* 核心接口配置
*/
IntfPlatform.coreConfigs = {};
return IntfPlatform;

@@ -50,0 +149,0 @@ }());

@@ -0,4 +1,32 @@

import { ConfigRecord, IInterfaceCore } from './interfaces/InterfaceCore';
export default class IntfPlatform {
/**
* 实现接口列表
*/
private static interfaces;
/**
* 核心接口列表
*/
private static coreInterfaces;
/**
* 实现接口配置
*/
private static configs;
/**
* 核心接口配置
*/
private static coreConfigs;
/**
* 调用C#核心交互接口
* @param url 路由地址
* @param data 参数
* @returns
*/
private static OperateEx;
/**
* 获取接口模式
* @returns 接口模式
*/
private static GetInterfaceType;
/**
*

@@ -21,2 +49,44 @@ * @returns 成功:{code: 200, data, message: 'ok'}

static bussiness(intfCode: string, code: string, param: any): Promise<any>;
/**
* 注册接口
* @param name 接口名称
* @param intfType 接口类型
* @param config 接口配置
*/
static register(name: string, intfType: any, config: ConfigRecord): void;
/**
* 获取所有核心接口
* @param name 核心接口名称
* @returns
*/
static getAllCoreInterface(): Record<string, IInterfaceCore>;
/**
* 获取核心接口
* @param name 接口名称
* @returns
*/
static getCoreInterface(name: string): IInterfaceCore | undefined;
/**
* 获取核心接口配置
* @param name 接口名称
* @returns
*/
static getCoreInterfaceConfig(name: string): ConfigRecord | undefined;
/**
* 获取所有实现接口
* @returns
*/
static getAllInterface(): Record<string, any>;
/**
* 获取实现接口
* @param name 接口名称
* @returns
*/
static getInterface(name: string): any | undefined;
/**
* 获取实现接口配置
* @param name 接口名称
* @returns
*/
static getInterfaceConfig(name: string): ConfigRecord | undefined;
}

41

package.json
{
"name": "@imedx/ics-imedx-chromely-plugin-intf-platform",
"version": "0.0.1",
"version": "0.0.2-beta.1",
"description": "",

@@ -8,7 +8,8 @@ "keywords": [],

"module": "dist/ics-imedx-chromely-plugin-intf-platform.es5.js",
"typings": "dist/types/ics-imedx-chromely-plugin-intf-platform.d.ts",
"typings": "dist/types/index.d.ts",
"type": "module",
"files": [
"dist"
],
"author": "1428815164@qq.com <hling_tao@163.com>",
"author": "34692730@qq.com <wenbei421@163.com>",
"repository": {

@@ -25,4 +26,4 @@ "type": "git",

"prebuild": "rimraf dist",
"build": "tsc --module commonjs && rollup -c rollup.config.ts",
"start": "rollup -c rollup.config.ts -w",
"build": "tsc --module commonjs && rollup -c rollup.config.js",
"start": "rollup -c rollup.config.js -w",
"test": "jest --coverage",

@@ -89,4 +90,11 @@ "test:watch": "jest --coverage --watch",

"@commitlint/config-conventional": "^7.1.2",
"@rollup/plugin-commonjs": "^24.1.0",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "^15.0.2",
"@rollup/plugin-terser": "^0.4.1",
"@rollup/plugin-typescript": "^11.1.0",
"@types/jest": "^23.3.2",
"@types/node": "^10.11.0",
"@typescript-eslint/eslint-plugin": "^4.10.0",
"@typescript-eslint/parser": "^4.10.0",
"colors": "^1.3.2",

@@ -97,2 +105,3 @@ "commitizen": "^3.0.0",

"cz-conventional-changelog": "^2.1.0",
"eslint": "^7.15.0",
"husky": "^1.0.1",

@@ -103,2 +112,4 @@ "jest": "^23.6.0",

"lodash.camelcase": "^4.3.0",
"package-tls": "^1.2.2",
"path": "^0.12.7",
"prettier": "^1.14.3",

@@ -108,8 +119,4 @@ "prompt": "^1.0.0",

"rimraf": "^2.6.2",
"rollup": "^0.67.0",
"rollup-plugin-commonjs": "^9.1.8",
"rollup-plugin-json": "^3.1.0",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-sourcemaps": "^0.4.2",
"rollup-plugin-typescript2": "^0.18.0",
"rollup": "^3.20.6",
"rollup-plugin-sourcemaps": "^0.6.3",
"semantic-release": "^15.9.16",

@@ -119,3 +126,4 @@ "shelljs": "^0.8.3",

"ts-jest": "^23.10.2",
"ts-node": "^7.0.1",
"ts-node": "^9.1.1",
"tslib": "^2.0.3",
"tslint": "^5.11.0",

@@ -125,7 +133,12 @@ "tslint-config-prettier": "^1.15.0",

"typedoc": "^0.12.0",
"typescript": "^3.0.3"
"typescript": "^4.1.3"
},
"dependencies": {
"@icreate/ics-chromely-js-sdk": "^0.0.4"
"@icreate/ics-chromely-js-sdk": "^0.0.4-beta.1",
"@imedx/ics-imedx-chromely-plugin-intf-platform": "^0.0.1-beta.13",
"@rollup/plugin-html": "^1.0.2",
"rollup-plugin-livereload": "^2.0.5",
"rollup-plugin-sass": "^1.12.19",
"rollup-plugin-serve": "^2.0.2"
}
}

@@ -1,169 +0,82 @@

# TypeScript library starter
### 引入
[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Greenkeeper badge](https://badges.greenkeeper.io/alexjoverm/typescript-library-starter.svg)](https://greenkeeper.io/)
[![Travis](https://img.shields.io/travis/alexjoverm/typescript-library-starter.svg)](https://travis-ci.org/alexjoverm/typescript-library-starter)
[![Coveralls](https://img.shields.io/coveralls/alexjoverm/typescript-library-starter.svg)](https://coveralls.io/github/alexjoverm/typescript-library-starter)
[![Dev Dependencies](https://david-dm.org/alexjoverm/typescript-library-starter/dev-status.svg)](https://david-dm.org/alexjoverm/typescript-library-starter?type=dev)
[![Donate](https://img.shields.io/badge/donate-paypal-blue.svg)](https://paypal.me/AJoverMorales)
A starter project that makes creating a TypeScript library extremely easy.
![](https://i.imgur.com/opUmHp0.png)
### Usage
```bash
git clone https://github.com/alexjoverm/typescript-library-starter.git YOURFOLDERNAME
cd YOURFOLDERNAME
# Run npm install and write your library name when asked. That's all!
npm install
```javascript
import IntfPlatform from '@imedx/ics-imedx-chromely-plugin-intf-platform'
```
**Start coding!** `package.json` and entry files are already set up for you, so don't worry about linking to your main file, typings, etc. Just keep those files with the same name.
### Features
- Zero-setup. After running `npm install` things will setup for you :wink:
- **[RollupJS](https://rollupjs.org/)** for multiple optimized bundles following the [standard convention](http://2ality.com/2017/04/setting-up-multi-platform-packages.html) and [Tree-shaking](https://alexjoverm.github.io/2017/03/06/Tree-shaking-with-Webpack-2-TypeScript-and-Babel/)
- Tests, coverage and interactive watch mode using **[Jest](http://facebook.github.io/jest/)**
- **[Prettier](https://github.com/prettier/prettier)** and **[TSLint](https://palantir.github.io/tslint/)** for code formatting and consistency
- **Docs automatic generation and deployment** to `gh-pages`, using **[TypeDoc](http://typedoc.org/)**
- Automatic types `(*.d.ts)` file generation
- **[Travis](https://travis-ci.org)** integration and **[Coveralls](https://coveralls.io/)** report
- (Optional) **Automatic releases and changelog**, using [Semantic release](https://github.com/semantic-release/semantic-release), [Commitizen](https://github.com/commitizen/cz-cli), [Conventional changelog](https://github.com/conventional-changelog/conventional-changelog) and [Husky](https://github.com/typicode/husky) (for the git hooks)
### Importing library
You can import the generated bundle to use the whole library generated by this starter:
### 使用方法
> init 初始化接口
```javascript
import myLib from 'mylib'
/**
*
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.init()
```
Additionally, you can import the transpiled modules from `dist/lib` in case you have a modular library:
> dispose 释放核心接口
```javascript
import something from 'mylib/dist/lib/something'
/**
*
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.dispose()
```
### NPM scripts
- `npm t`: Run test suite
- `npm start`: Run `npm run build` in watch mode
- `npm run test:watch`: Run test suite in [interactive watch mode](http://facebook.github.io/jest/docs/cli.html#watch)
- `npm run test:prod`: Run linting and generate coverage
- `npm run build`: Generate bundles and typings, create docs
- `npm run lint`: Lints code
- `npm run commit`: Commit using conventional commit style ([husky](https://github.com/typicode/husky) will tell you to use it if you haven't :wink:)
### Excluding peerDependencies
On library development, one might want to set some peer dependencies, and thus remove those from the final bundle. You can see in [Rollup docs](https://rollupjs.org/#peer-dependencies) how to do that.
Good news: the setup is here for you, you must only include the dependency name in `external` property within `rollup.config.js`. For example, if you want to exclude `lodash`, just write there `external: ['lodash']`.
### Automatic releases
_**Prerequisites**: you need to create/login accounts and add your project to:_
- [npm](https://www.npmjs.com/)
- [Travis CI](https://travis-ci.org)
- [Coveralls](https://coveralls.io)
_**Prerequisite for Windows**: Semantic-release uses
**[node-gyp](https://github.com/nodejs/node-gyp)** so you will need to
install
[Microsoft's windows-build-tools](https://github.com/felixrieseberg/windows-build-tools)
using this command:_
```bash
npm install --global --production windows-build-tools
> bussiness 业务交互接口
```javascript
/**
*
* @param intfCode: string
* @param code: string
* @param param: any
* @returns 成功:{code: 200, data, message: 'ok'}
*/
IntfPlatform.bussiness(intfCode, code, param)
```
#### Setup steps
Follow the console instructions to install semantic release and run it (answer NO to "Do you want a `.travis.yml` file with semantic-release setup?").
_Note: make sure you've setup `repository.url` in your `package.json` file_
```bash
npm install -g semantic-release-cli
semantic-release-cli setup
# IMPORTANT!! Answer NO to "Do you want a `.travis.yml` file with semantic-release setup?" question. It is already prepared for you :P
> register 注册接口
```javascript
/**
* 注册接口
* @param name 接口名称
* @param intfType 接口类型
* @param config 接口配置
*/
public static register(name: string, intfType: any, config: ConfigRecord)
```
> getCoreInterface 获取核心接口
```javascript
/**
* 获取核心接口
* @param name 接口名称
* @returns
*/
public static getCoreInterface(name: string): IInterfaceCore | undefined
```
> getInterface 获取实现接口
```javascript
/**
* 获取实现接口
* @param name 接口名称
* @returns
*/
public static getInterface(name: string): any | undefined
```
> getInterfaceConfig 获取实现接口配置
```javascript
/**
* 获取实现接口配置
* @param name 接口名称
* @returns
*/
public static getInterfaceConfig(name: string): ConfigRecord | undefined
```
From now on, you'll need to use `npm run commit`, which is a convenient way to create conventional commits.
Automatic releases are possible thanks to [semantic release](https://github.com/semantic-release/semantic-release), which publishes your code automatically on [github](https://github.com/) and [npm](https://www.npmjs.com/), plus generates automatically a changelog. This setup is highly influenced by [Kent C. Dodds course on egghead.io](https://egghead.io/courses/how-to-write-an-open-source-javascript-library)
### Git Hooks
There is already set a `precommit` hook for formatting your code with Prettier :nail_care:
By default, there are two disabled git hooks. They're set up when you run the `npm run semantic-release-prepare` script. They make sure:
- You follow a [conventional commit message](https://github.com/conventional-changelog/conventional-changelog)
- Your build is not going to fail in [Travis](https://travis-ci.org) (or your CI server), since it's runned locally before `git push`
This makes more sense in combination with [automatic releases](#automatic-releases)
### FAQ
#### `Array.prototype.from`, `Promise`, `Map`... is undefined?
TypeScript or Babel only provides down-emits on syntactical features (`class`, `let`, `async/await`...), but not on functional features (`Array.prototype.find`, `Set`, `Promise`...), . For that, you need Polyfills, such as [`core-js`](https://github.com/zloirock/core-js) or [`babel-polyfill`](https://babeljs.io/docs/usage/polyfill/) (which extends `core-js`).
For a library, `core-js` plays very nicely, since you can import just the polyfills you need:
> getCoreInterfaceConfig 获取核心接口配置
```javascript
import "core-js/fn/array/find"
import "core-js/fn/string/includes"
import "core-js/fn/promise"
...
/**
* 获取核心接口配置
* @param name 接口名称
* @returns
*/
public static getCoreInterfaceConfig(name: string): ConfigRecord | undefined
```
#### What is `npm install` doing on first run?
It runs the script `tools/init` which sets up everything for you. In short, it:
- Configures RollupJS for the build, which creates the bundles
- Configures `package.json` (typings file, main file, etc)
- Renames main src and test files
#### What if I don't want git-hooks, automatic releases or semantic-release?
Then you may want to:
- Remove `commitmsg`, `postinstall` scripts from `package.json`. That will not use those git hooks to make sure you make a conventional commit
- Remove `npm run semantic-release` from `.travis.yml`
#### What if I don't want to use coveralls or report my coverage?
Remove `npm run report-coverage` from `.travis.yml`
## Resources
- [Write a library using TypeScript library starter](https://dev.to/alexjoverm/write-a-library-using-typescript-library-starter) by [@alexjoverm](https://github.com/alexjoverm/)
- [📺 Create a TypeScript Library using typescript-library-starter](https://egghead.io/lessons/typescript-create-a-typescript-library-using-typescript-library-starter) by [@alexjoverm](https://github.com/alexjoverm/)
- [Introducing TypeScript Library Starter Lite](https://blog.tonysneed.com/2017/09/15/introducing-typescript-library-starter-lite/) by [@tonysneed](https://github.com/tonysneed)
## Projects using `typescript-library-starter`
Here are some projects that use `typescript-library-starter`:
- [NOEL - A universal, human-centric, replayable event emitter](https://github.com/lifenautjoe/noel)
- [droppable - A library to give file dropping super-powers to any HTML element.](https://github.com/lifenautjoe/droppable)
- [redis-messaging-manager - Pubsub messaging library, using redis and rxjs](https://github.com/tomyitav/redis-messaging-manager)
## Credits
Made with :heart: by [@alexjoverm](https://twitter.com/alexjoverm) and all these wonderful contributors ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore -->
| [<img src="https://avatars.githubusercontent.com/u/6052309?v=3" width="100px;"/><br /><sub><b>Ciro</b></sub>](https://www.linkedin.com/in/ciro-ivan-agulló-guarinos-42109376)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=k1r0s "Code") [🔧](#tool-k1r0s "Tools") | [<img src="https://avatars.githubusercontent.com/u/947523?v=3" width="100px;"/><br /><sub><b>Marius Schulz</b></sub>](https://blog.mariusschulz.com)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=mariusschulz "Documentation") | [<img src="https://avatars.githubusercontent.com/u/4152819?v=3" width="100px;"/><br /><sub><b>Alexander Odell</b></sub>](https://github.com/alextrastero)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=alextrastero "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/8728882?v=3" width="100px;"/><br /><sub><b>Ryan Ham</b></sub>](https://github.com/superamadeus)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=superamadeus "Code") | [<img src="https://avatars1.githubusercontent.com/u/8458838?v=3" width="100px;"/><br /><sub><b>Chi</b></sub>](https://consiiii.me)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=ChinW "Code") [🔧](#tool-ChinW "Tools") [📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=ChinW "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/2856501?v=3" width="100px;"/><br /><sub><b>Matt Mazzola</b></sub>](https://github.com/mattmazzola)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=mattmazzola "Code") [🔧](#tool-mattmazzola "Tools") | [<img src="https://avatars0.githubusercontent.com/u/2664047?v=3" width="100px;"/><br /><sub><b>Sergii Lischuk</b></sub>](http://leefrost.github.io)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=Leefrost "Code") |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| [<img src="https://avatars1.githubusercontent.com/u/618922?v=3" width="100px;"/><br /><sub><b>Steve Lee</b></sub>](http;//opendirective.com)<br />[🔧](#tool-SteveALee "Tools") | [<img src="https://avatars0.githubusercontent.com/u/5127501?v=3" width="100px;"/><br /><sub><b>Flavio Corpa</b></sub>](http://flaviocorpa.com)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=kutyel "Code") | [<img src="https://avatars2.githubusercontent.com/u/22561997?v=3" width="100px;"/><br /><sub><b>Dom</b></sub>](https://github.com/foreggs)<br />[🔧](#tool-foreggs "Tools") | [<img src="https://avatars1.githubusercontent.com/u/755?v=4" width="100px;"/><br /><sub><b>Alex Coles</b></sub>](http://alexbcoles.com)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=myabc "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/1093738?v=4" width="100px;"/><br /><sub><b>David Khourshid</b></sub>](https://github.com/davidkpiano)<br />[🔧](#tool-davidkpiano "Tools") | [<img src="https://avatars0.githubusercontent.com/u/7225802?v=4" width="100px;"/><br /><sub><b>Aarón García Hervás</b></sub>](https://aarongarciah.com)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=aarongarciah "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/13683986?v=4" width="100px;"/><br /><sub><b>Jonathan Hart</b></sub>](https://www.stuajnht.co.uk)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=stuajnht "Code") |
| [<img src="https://avatars0.githubusercontent.com/u/13509204?v=4" width="100px;"/><br /><sub><b>Sanjiv Lobo</b></sub>](https://github.com/Xndr7)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=Xndr7 "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/7473800?v=4" width="100px;"/><br /><sub><b>Stefan Aleksovski</b></sub>](https://github.com/sAleksovski)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=sAleksovski "Code") | [<img src="https://avatars2.githubusercontent.com/u/8853426?v=4" width="100px;"/><br /><sub><b>dev.peerapong</b></sub>](https://github.com/devpeerapong)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=devpeerapong "Code") | [<img src="https://avatars0.githubusercontent.com/u/22260722?v=4" width="100px;"/><br /><sub><b>Aaron Groome</b></sub>](http://twitter.com/Racing5372)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=Racing5372 "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/180963?v=4" width="100px;"/><br /><sub><b>Aaron Reisman</b></sub>](https://github.com/lifeiscontent)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=lifeiscontent "Code") | [<img src="https://avatars1.githubusercontent.com/u/32557482?v=4" width="100px;"/><br /><sub><b>kid-sk</b></sub>](https://github.com/kid-sk)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=kid-sk "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/1503089?v=4" width="100px;"/><br /><sub><b>Andrea Gottardi</b></sub>](http://about.me/andreagot)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=AndreaGot "Documentation") |
| [<img src="https://avatars3.githubusercontent.com/u/1375860?v=4" width="100px;"/><br /><sub><b>Yogendra Sharma</b></sub>](http://TechiesEyes.com)<br />[📖](https://github.com/alexjoverm/typescript-library-starter/commits?author=Yogendra0Sharma "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/7407177?v=4" width="100px;"/><br /><sub><b>Rayan Salhab</b></sub>](http://linkedin.com/in/rayan-salhab/)<br />[💻](https://github.com/alexjoverm/typescript-library-starter/commits?author=cyphercodes "Code") |
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind are welcome!

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc