@blocklet/meta 1.17.7-beta-20251224-045844-3c7f459a → 1.17.7-beta-20251227-001958-ea2ba3f5

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.
@@ -0,0 +1,12 @@
1
+ export declare const fromProperty2SecureConfigKey: (properties: object, result: Array<string>, prefix?: string) => void;
2
+ export declare const getSecureConfigKeys: (blocklet: {
3
+ env?: {
4
+ appDir?: string;
5
+ };
6
+ }) => any[];
7
+ export declare const removeSecureConfigs: (source: object, keysToRemove: Array<string>) => object;
8
+ export declare const formatEnv: (raw: any, stringifyObject?: boolean) => any;
9
+ export declare const getConfigs: (blocklet: object, componentId: string) => {
10
+ key: string;
11
+ value: unknown;
12
+ }[];
@@ -0,0 +1,112 @@
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.getConfigs = exports.formatEnv = exports.removeSecureConfigs = exports.getSecureConfigKeys = exports.fromProperty2SecureConfigKey = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const get_1 = __importDefault(require("lodash/get"));
10
+ const unset_1 = __importDefault(require("lodash/unset"));
11
+ const constant_1 = require("@blocklet/constant");
12
+ const util_1 = require("./util");
13
+ const fromProperty2SecureConfigKey = (properties, result, prefix = '') => {
14
+ Object.keys(properties || {}).forEach((key) => {
15
+ const prop = properties[key];
16
+ if (prop.items && ['ArrayTable', 'ArrayCards'].includes(prop['x-component'])) {
17
+ (0, exports.fromProperty2SecureConfigKey)(prop.items.properties, result, [prefix, prop.name, '[]'].filter(Boolean).join('.'));
18
+ }
19
+ else if (prop.properties && ['FormGrid'].includes(prop['x-component'])) {
20
+ (0, exports.fromProperty2SecureConfigKey)(prop.properties, result, prefix);
21
+ }
22
+ else if (prop.properties && ['ArrayTable.Column', 'FormGrid.GridColumn'].includes(prop['x-component'])) {
23
+ (0, exports.fromProperty2SecureConfigKey)(prop.properties, result, prefix);
24
+ }
25
+ else if (prop.name && ['FormItem'].includes(prop['x-decorator'])) {
26
+ const secure = prop['x-component'] === 'Password';
27
+ const shared = typeof prop.shared === 'undefined' ? true : !!prop.shared;
28
+ if (secure || !shared) {
29
+ result.push([prefix, prop.name].filter(Boolean).join('.'));
30
+ }
31
+ }
32
+ });
33
+ };
34
+ exports.fromProperty2SecureConfigKey = fromProperty2SecureConfigKey;
35
+ const getSecureConfigKeys = (blocklet) => {
36
+ const result = [];
37
+ if (!blocklet?.env?.appDir) {
38
+ return result;
39
+ }
40
+ const schemaFile = node_path_1.default.join(blocklet.env.appDir, constant_1.BLOCKLET_PREFERENCE_FILE);
41
+ if (fs_extra_1.default.existsSync(schemaFile)) {
42
+ try {
43
+ const schema = JSON.parse(fs_extra_1.default.readFileSync(schemaFile, 'utf8'));
44
+ (0, exports.fromProperty2SecureConfigKey)(schema.schema?.properties, result);
45
+ }
46
+ catch {
47
+ // do nothing
48
+ }
49
+ }
50
+ return result.map((x) => [constant_1.BLOCKLET_PREFERENCE_PREFIX, x].join(''));
51
+ };
52
+ exports.getSecureConfigKeys = getSecureConfigKeys;
53
+ const removeSecureConfigs = (source, keysToRemove) => {
54
+ keysToRemove.forEach((key) => {
55
+ if (key.includes('.[].')) {
56
+ const parts = key.split('.[].');
57
+ const list = (0, get_1.default)(source, parts[0]);
58
+ if (Array.isArray(list)) {
59
+ list.forEach((x) => (0, unset_1.default)(x, parts[1]));
60
+ }
61
+ }
62
+ else {
63
+ (0, unset_1.default)(source, key);
64
+ }
65
+ });
66
+ return source;
67
+ };
68
+ exports.removeSecureConfigs = removeSecureConfigs;
69
+ const formatEnv = (raw, stringifyObject = true) => {
70
+ let value = raw;
71
+ // ensure no
72
+ if (Array.isArray(value) && value.every((x) => x.originFileObj && x.url)) {
73
+ value = value.map((x) => x.url);
74
+ if (value.length === 1) {
75
+ [value] = value;
76
+ }
77
+ }
78
+ // ensure no objects
79
+ if (stringifyObject) {
80
+ if (value && typeof value === 'object') {
81
+ value = JSON.stringify(value);
82
+ }
83
+ }
84
+ // ensure no line breaks for environment variables
85
+ if (value && typeof value === 'string') {
86
+ value = value.replace(/(\r\n|\n|\r)/gm, ' ');
87
+ }
88
+ return value;
89
+ };
90
+ exports.formatEnv = formatEnv;
91
+ const getConfigs = (blocklet, componentId) => {
92
+ let res = {};
93
+ (0, util_1.forEachBlockletSync)(blocklet, (component, { id, ancestors }) => {
94
+ if (id !== componentId) {
95
+ return;
96
+ }
97
+ const configs = component.configs.filter((x) => (0, util_1.isEnvShareableToClient)(x));
98
+ const configObj = configs.reduce((o, x) => {
99
+ o[x.key] = (0, util_1.isPreferenceKey)(x) ? (0, exports.formatEnv)(x.value, false) : x.value;
100
+ return o;
101
+ }, {});
102
+ const secureKeys = (0, exports.getSecureConfigKeys)(component);
103
+ (0, exports.removeSecureConfigs)(configObj, secureKeys);
104
+ const sharedObj = (0, util_1.getSharedConfigObj)(ancestors[0], component);
105
+ for (const [key, value] of Object.entries(sharedObj)) {
106
+ configObj[key] = value;
107
+ }
108
+ res = configObj;
109
+ });
110
+ return Object.entries(res).map(([key, value]) => ({ key, value }));
111
+ };
112
+ exports.getConfigs = getConfigs;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.17.7-beta-20251224-045844-3c7f459a",
6
+ "version": "1.17.7-beta-20251227-001958-ea2ba3f5",
7
7
  "description": "Library to parse/validate/fix blocklet meta",
8
8
  "homepage": "https://www.arcblock.io/docs/blocklet-spec",
9
9
  "main": "./lib/index.js",
@@ -24,19 +24,19 @@
24
24
  "author": "wangshijun <wangshijun2020@gmail.com> (http://github.com/wangshijun)",
25
25
  "license": "Apache-2.0",
26
26
  "dependencies": {
27
- "@abtnode/constant": "1.17.7-beta-20251224-045844-3c7f459a",
28
- "@abtnode/db-cache": "1.17.7-beta-20251224-045844-3c7f459a",
29
- "@abtnode/docker-utils": "1.17.7-beta-20251224-045844-3c7f459a",
30
- "@arcblock/did": "^1.27.15",
31
- "@arcblock/did-ext": "^1.27.15",
32
- "@arcblock/did-util": "^1.27.15",
33
- "@arcblock/jwt": "^1.27.15",
34
- "@blocklet/constant": "1.17.7-beta-20251224-045844-3c7f459a",
35
- "@ocap/asset": "^1.27.15",
36
- "@ocap/mcrypto": "^1.27.15",
37
- "@ocap/types": "^1.27.15",
38
- "@ocap/util": "^1.27.15",
39
- "@ocap/wallet": "^1.27.15",
27
+ "@abtnode/constant": "1.17.7-beta-20251227-001958-ea2ba3f5",
28
+ "@abtnode/db-cache": "1.17.7-beta-20251227-001958-ea2ba3f5",
29
+ "@abtnode/docker-utils": "1.17.7-beta-20251227-001958-ea2ba3f5",
30
+ "@arcblock/did": "^1.27.16",
31
+ "@arcblock/did-ext": "^1.27.16",
32
+ "@arcblock/did-util": "^1.27.16",
33
+ "@arcblock/jwt": "^1.27.16",
34
+ "@blocklet/constant": "1.17.7-beta-20251227-001958-ea2ba3f5",
35
+ "@ocap/asset": "^1.27.16",
36
+ "@ocap/mcrypto": "^1.27.16",
37
+ "@ocap/types": "^1.27.16",
38
+ "@ocap/util": "^1.27.16",
39
+ "@ocap/wallet": "^1.27.16",
40
40
  "ajv": "^8.11.0",
41
41
  "axios": "^1.7.9",
42
42
  "cjk-length": "^1.0.0",
@@ -79,5 +79,5 @@
79
79
  "ts-node": "^10.9.1",
80
80
  "typescript": "^5.6.3"
81
81
  },
82
- "gitHead": "e30dc1736187fc9d8136f146badfd5b521af16f2"
82
+ "gitHead": "ec0a542fc2c66f2530d25884b43bddfa28d921a0"
83
83
  }