@blocklet/sdk 1.16.7 → 1.16.8-beta-ca58a421

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,11 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getParentWebEndpoint = exports.getChildWebEndpoint = exports.getComponentWebEndpoint = exports.getComponentMountPoint = exports.call = void 0;
7
7
  const util_1 = require("@blocklet/meta/lib/util");
8
8
  const axios_1 = __importDefault(require("axios"));
9
- const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
10
9
  const get_1 = __importDefault(require("lodash/get"));
11
10
  const url_join_1 = __importDefault(require("url-join"));
12
11
  const config_1 = require("../config");
13
- const wallet_1 = __importDefault(require("../wallet"));
12
+ const verify_sign_1 = require("../util/verify-sign");
14
13
  const parseMountPoints = () => {
15
14
  const mountPoints = JSON.parse(process.env.BLOCKLET_MOUNT_POINTS) || [];
16
15
  mountPoints.forEach((x) => {
@@ -20,18 +19,15 @@ const parseMountPoints = () => {
20
19
  });
21
20
  return mountPoints;
22
21
  };
23
- const sign = (data) => {
24
- const wallet = (0, wallet_1.default)();
25
- const signData = typeof data === 'undefined' ? {} : data;
26
- return { 'x-component-sig': wallet.sign((0, json_stable_stringify_1.default)(signData)) };
27
- };
28
22
  const doCall = async ({ url, ...options }) => {
29
23
  try {
30
24
  const resp = await (0, axios_1.default)({
31
25
  url,
32
26
  ...options,
33
- headers: { ...sign(options.data ?? {}) },
34
- timeout: 60000,
27
+ headers: {
28
+ 'x-component-sig': (0, verify_sign_1.sign)(options.data),
29
+ },
30
+ timeout: 60 * 1000,
35
31
  });
36
32
  config_1.logger.info(`call ${url} api success`);
37
33
  return resp;
@@ -1,21 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.verifySig = void 0;
7
- const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
8
- const wallet_1 = __importDefault(require("../wallet"));
9
4
  const config_1 = require("../config");
5
+ const verify_sign_1 = require("../util/verify-sign");
10
6
  const verifySig = (req, res, next) => {
11
7
  try {
12
- const wallet = (0, wallet_1.default)();
13
8
  const sig = req.get('x-component-sig');
14
9
  if (!sig) {
15
10
  return res.status(400).json({ error: 'Bad Request' });
16
11
  }
17
12
  const data = typeof req.body === 'undefined' ? {} : req.body;
18
- const verified = wallet.verify((0, json_stable_stringify_1.default)(data), sig);
13
+ const verified = (0, verify_sign_1.verify)(data, sig);
19
14
  if (!verified) {
20
15
  return res.status(401).json({ error: 'verify sig failed' });
21
16
  }
@@ -7,6 +7,7 @@ declare class AuthService {
7
7
  constructor(httpEndpoint?: string);
8
8
  }
9
9
  interface AuthService {
10
+ login: (params: object) => Promise<string>;
10
11
  getUser(did: string, options?: {
11
12
  enableConnectedAccount?: boolean;
12
13
  enableNormalize?: boolean;
@@ -13,6 +13,7 @@ const constant_1 = __importDefault(require("@abtnode/constant"));
13
13
  const check_blocklet_env_1 = __importDefault(require("../util/check-blocklet-env"));
14
14
  const version_1 = require("../version");
15
15
  const wallet_2 = __importDefault(require("../wallet"));
16
+ const service_api_1 = __importDefault(require("../util/service-api"));
16
17
  const { NODE_SERVICES, WELLKNOWN_SERVICE_PATH_PREFIX, USER_AVATAR_URL_PREFIX, USER_AVATAR_PATH_PREFIX } = constant_1.default;
17
18
  const VERSION = version_1.version; // version of notification sdk
18
19
  const isNotNullOrUndefined = (x) => ![null, undefined].includes(x);
@@ -57,6 +58,7 @@ class AuthService {
57
58
  const client = new AuthClient(httpEndpoint);
58
59
  const apiList = [
59
60
  // user
61
+ 'login',
60
62
  'getUsers',
61
63
  'getUser',
62
64
  'getOwner',
@@ -126,6 +128,16 @@ class AuthService {
126
128
  const fn = client[api];
127
129
  this[api] = apiFnMap[api] ? apiFnMap[api](fn) : apiFallback(fn);
128
130
  });
131
+ this.login = async (data) => {
132
+ try {
133
+ const { data: resData } = await service_api_1.default.post('/user/login', data);
134
+ return resData;
135
+ }
136
+ catch (err) {
137
+ console.error(err.response ? err.response.data : err);
138
+ throw new Error(err.response ? err.response.data : err.message);
139
+ }
140
+ };
129
141
  // eslint-disable-next-line no-constructor-return
130
142
  return new Proxy(this, {
131
143
  get(target, propKey) {
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 用于在 SDK 中像 blocklet-service 发起 http 请求
3
+ * 该封装中,会在请求的 header 中增加签名信息,确保安全性(签名信息的验证由 blocklet-service 的接口去做验证)
4
+ */
5
+ declare const axios: import("axios").AxiosInstance;
6
+ export default axios;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * 用于在 SDK 中像 blocklet-service 发起 http 请求
4
+ * 该封装中,会在请求的 header 中增加签名信息,确保安全性(签名信息的验证由 blocklet-service 的接口去做验证)
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const version_1 = require("../version");
12
+ const constants_1 = require("./constants");
13
+ const verify_sign_1 = require("./verify-sign");
14
+ const axios = axios_1.default.create({
15
+ // 为当前机器的内部调用,必须禁止 proxy 配置
16
+ proxy: false,
17
+ baseURL: `http://127.0.0.1:${process.env.ABT_NODE_SERVICE_PORT}${constants_1.SERVICE_PREFIX}`,
18
+ // 内部调用,超时时间不用过长
19
+ timeout: 6 * 1000,
20
+ headers: {
21
+ 'User-Agent': `BlockletSDK/${version_1.version}`,
22
+ // TODO: @zhanghan 有上述 user-agent 应该就够了,应该不需要 x-blocklet-api-version 来指定版本号
23
+ 'x-blocklet-api-version': version_1.version,
24
+ // NOTICE: 需要注入以下两个 header,才能使 blocklet-service 中的代码识别到当前的 blocklet 环境
25
+ 'x-blocklet-did': process.env.BLOCKLET_DID,
26
+ 'x-blocklet-component-id': process.env.BLOCKLET_REAL_DID,
27
+ },
28
+ });
29
+ axios.interceptors.request.use((config) => {
30
+ // 同时对 post 和 get 参数做签名,确保同时支持 post get 请求的校验
31
+ const { data = {}, params = {} } = config;
32
+ // 签名使用的是当前 blocklet 的 appSk,固命名为 x-blocklet-sig,以后可做统一使用
33
+ config.headers['x-blocklet-sig'] = (0, verify_sign_1.sign)({ data, params });
34
+ return config;
35
+ });
36
+ exports.default = axios;
@@ -0,0 +1,10 @@
1
+ import { DIDTypeShortcut } from '@arcblock/did';
2
+ declare const verify: (data: object, sig: string, { type, appSk }?: {
3
+ type?: DIDTypeShortcut;
4
+ appSk?: string;
5
+ }) => boolean;
6
+ declare const sign: (data: object, { type, appSk }?: {
7
+ type?: DIDTypeShortcut;
8
+ appSk?: string;
9
+ }) => string;
10
+ export { verify, sign };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sign = exports.verify = void 0;
7
+ const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
8
+ const wallet_1 = __importDefault(require("../wallet"));
9
+ const verify = (data, sig, { type, appSk } = {}) => {
10
+ try {
11
+ if (!sig) {
12
+ throw new Error('empty sig');
13
+ }
14
+ const wallet = (0, wallet_1.default)(type, appSk);
15
+ const verified = wallet.verify((0, json_stable_stringify_1.default)(data || {}), sig);
16
+ return verified;
17
+ }
18
+ catch {
19
+ throw new Error('verify sig failed');
20
+ }
21
+ };
22
+ exports.verify = verify;
23
+ const sign = (data, { type, appSk } = {}) => {
24
+ const wallet = (0, wallet_1.default)(type, appSk);
25
+ return wallet.sign((0, json_stable_stringify_1.default)(data || {}));
26
+ };
27
+ exports.sign = sign;
package/lib/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare const version = "1.16.7";
1
+ declare const version = "1.16.8";
2
2
  export { version };
3
3
  declare const _default: {
4
4
  version: string;
package/lib/version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- const version = '1.16.7';
4
+ const version = '1.16.8';
5
5
  exports.version = version;
6
6
  exports.default = { version };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.16.7",
6
+ "version": "1.16.8-beta-ca58a421",
7
7
  "description": "graphql client to read/write data on abt node",
8
8
  "main": "lib/index.js",
9
9
  "typings": "lib/index.d.ts",
@@ -26,15 +26,15 @@
26
26
  "author": "linchen1987 <linchen.1987@foxmail.com> (http://github.com/linchen1987)",
27
27
  "license": "MIT",
28
28
  "dependencies": {
29
- "@abtnode/client": "1.16.7",
30
- "@abtnode/constant": "1.16.7",
29
+ "@abtnode/client": "1.16.8-beta-ca58a421",
30
+ "@abtnode/constant": "1.16.8-beta-ca58a421",
31
31
  "@arcblock/did": "1.18.78",
32
32
  "@arcblock/did-auth": "1.18.78",
33
33
  "@arcblock/jwt": "1.18.78",
34
34
  "@arcblock/ws": "1.18.78",
35
- "@blocklet/constant": "1.16.7",
36
- "@blocklet/env": "1.16.7",
37
- "@blocklet/meta": "1.16.7",
35
+ "@blocklet/constant": "1.16.8-beta-ca58a421",
36
+ "@blocklet/env": "1.16.8-beta-ca58a421",
37
+ "@blocklet/meta": "1.16.8-beta-ca58a421",
38
38
  "@did-connect/authenticator": "^2.1.54",
39
39
  "@did-connect/handler": "^2.1.54",
40
40
  "@nedb/core": "^2.1.5",
@@ -72,5 +72,5 @@
72
72
  "ts-node": "^10.9.1",
73
73
  "typescript": "^4.8.4"
74
74
  },
75
- "gitHead": "dadd7bfa319e2ee5144bdccb6e280ffe4b8d2679"
75
+ "gitHead": "d0f724c8082572a01b6e9287df6c3d0663ec9c57"
76
76
  }