@wocker/core 1.1.4 → 1.1.5-beta.1
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.
- package/lib/env.d.ts +1 -1
- package/lib/env.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/makes/AppConfig.d.ts +9 -1
- package/lib/makes/AppConfig.js +71 -1
- package/lib/services/AppService.d.ts +1 -0
- package/lib/services/AppService.js +3 -0
- package/lib/types/Permissions.d.ts +6 -0
- package/lib/types/Permissions.js +2 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +1 -0
- package/lib/utils/isPathAllowed.d.ts +1 -0
- package/lib/utils/isPathAllowed.js +18 -0
- package/lib/utils/isSensitivePath.d.ts +1 -0
- package/lib/utils/isSensitivePath.js +20 -0
- package/package.json +1 -1
package/lib/env.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const WOCKER_VERSION = "1.1.
|
|
1
|
+
export declare const WOCKER_VERSION = "1.1.5";
|
|
2
2
|
export declare const WOCKER_VERSION_KEY = "__WOCKER_VERSION__";
|
|
3
3
|
export declare const WOCKER_DATA_DIR: string;
|
|
4
4
|
export declare const WOCKER_DATA_DIR_KEY = "__WOCKER_DATA_DIR__";
|
package/lib/env.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.MODULE_METADATA = exports.PLUGIN_NAME_METADATA = exports.INJECT_TOKEN_METADATA = exports.SELF_DECLARED_DEPS_METADATA = exports.PARAMTYPES_METADATA = exports.ALIAS_METADATA = exports.ARGS_OLD_METADATA = exports.ARGS_METADATA = exports.LISTENER_METADATA = exports.COMPLETION_METADATA = exports.COMMAND_METADATA = exports.DESCRIPTION_METADATA = exports.INJECTABLE_WATERMARK = exports.IS_MODULE_METADATA = exports.IS_GLOBAL_METADATA = exports.IS_CONTROLLER_METADATA = exports.PLUGIN_DIR_KEY = exports.FILE_SYSTEM_DRIVER_KEY = exports.WOCKER_DATA_DIR_KEY = exports.WOCKER_DATA_DIR = exports.WOCKER_VERSION_KEY = exports.WOCKER_VERSION = void 0;
|
|
7
7
|
const os_1 = __importDefault(require("os"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
exports.WOCKER_VERSION = "1.1.
|
|
9
|
+
exports.WOCKER_VERSION = "1.1.5";
|
|
10
10
|
exports.WOCKER_VERSION_KEY = "__WOCKER_VERSION__";
|
|
11
11
|
exports.WOCKER_DATA_DIR = process.env.WS_DIR || path_1.default.join(os_1.default.homedir(), ".workspace");
|
|
12
12
|
exports.WOCKER_DATA_DIR_KEY = "__WOCKER_DATA_DIR__";
|
package/lib/index.d.ts
CHANGED
|
@@ -14,4 +14,5 @@ export {
|
|
|
14
14
|
*/
|
|
15
15
|
EventService as AppEventsService } from "./services";
|
|
16
16
|
export * from "./types";
|
|
17
|
+
export { isSensitivePath } from "./utils/isSensitivePath";
|
|
17
18
|
export { IS_MODULE_METADATA, MODULE_METADATA, FILE_SYSTEM_DRIVER_KEY, PLUGIN_NAME_METADATA, PLUGIN_DIR_KEY, WOCKER_VERSION_KEY, WOCKER_VERSION, WOCKER_DATA_DIR_KEY } from "./env";
|
package/lib/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.WOCKER_DATA_DIR_KEY = exports.WOCKER_VERSION = exports.WOCKER_VERSION_KEY = exports.PLUGIN_DIR_KEY = exports.PLUGIN_NAME_METADATA = exports.FILE_SYSTEM_DRIVER_KEY = exports.MODULE_METADATA = exports.IS_MODULE_METADATA = exports.AppEventsService = exports.CommandNotFoundError = exports.Cli = void 0;
|
|
17
|
+
exports.WOCKER_DATA_DIR_KEY = exports.WOCKER_VERSION = exports.WOCKER_VERSION_KEY = exports.PLUGIN_DIR_KEY = exports.PLUGIN_NAME_METADATA = exports.FILE_SYSTEM_DRIVER_KEY = exports.MODULE_METADATA = exports.IS_MODULE_METADATA = exports.isSensitivePath = exports.AppEventsService = exports.CommandNotFoundError = exports.Cli = void 0;
|
|
18
18
|
require("reflect-metadata");
|
|
19
19
|
var cli_1 = require("@kearisp/cli");
|
|
20
20
|
Object.defineProperty(exports, "Cli", { enumerable: true, get: function () { return cli_1.Cli; } });
|
|
@@ -33,6 +33,8 @@ var services_1 = require("./services");
|
|
|
33
33
|
*/
|
|
34
34
|
Object.defineProperty(exports, "AppEventsService", { enumerable: true, get: function () { return services_1.EventService; } });
|
|
35
35
|
__exportStar(require("./types"), exports);
|
|
36
|
+
var isSensitivePath_1 = require("./utils/isSensitivePath");
|
|
37
|
+
Object.defineProperty(exports, "isSensitivePath", { enumerable: true, get: function () { return isSensitivePath_1.isSensitivePath; } });
|
|
36
38
|
var env_1 = require("./env");
|
|
37
39
|
Object.defineProperty(exports, "IS_MODULE_METADATA", { enumerable: true, get: function () { return env_1.IS_MODULE_METADATA; } });
|
|
38
40
|
Object.defineProperty(exports, "MODULE_METADATA", { enumerable: true, get: function () { return env_1.MODULE_METADATA; } });
|
package/lib/makes/AppConfig.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FileSystem } from "./FileSystem";
|
|
2
|
-
import { EnvConfig, PackageManagerType, PluginRef, PresetRef, ProjectRef, ProjectOldRef } from "../types";
|
|
2
|
+
import { EnvConfig, PackageManagerType, Permissions, PluginRef, PresetRef, ProjectRef, ProjectOldRef } from "../types";
|
|
3
3
|
export declare abstract class AppConfig {
|
|
4
4
|
debug?: boolean;
|
|
5
5
|
pm?: PackageManagerType;
|
|
@@ -9,6 +9,7 @@ export declare abstract class AppConfig {
|
|
|
9
9
|
projects: ProjectRef[];
|
|
10
10
|
meta?: EnvConfig;
|
|
11
11
|
env?: EnvConfig;
|
|
12
|
+
permissions?: Permissions;
|
|
12
13
|
constructor(data: AppConfig.Data);
|
|
13
14
|
addPlugin(name: string, env?: PluginRef["env"]): void;
|
|
14
15
|
removePlugin(name: string): void;
|
|
@@ -27,6 +28,12 @@ export declare abstract class AppConfig {
|
|
|
27
28
|
getEnv(key: string, byDefault: string): string;
|
|
28
29
|
setEnv(name: string, value: string): void;
|
|
29
30
|
unsetEnv(name: string): void;
|
|
31
|
+
isMountAllowed(path: string): boolean;
|
|
32
|
+
addMountAllow(path: string): void;
|
|
33
|
+
removeMountAllow(path: string): void;
|
|
34
|
+
addMountDeny(path: string): void;
|
|
35
|
+
removeMountDeny(path: string): void;
|
|
36
|
+
protected prunePermissions(): void;
|
|
30
37
|
abstract save(): void;
|
|
31
38
|
toObject(): AppConfig.Data;
|
|
32
39
|
toJsString(): string;
|
|
@@ -42,5 +49,6 @@ export declare namespace AppConfig {
|
|
|
42
49
|
projects?: ProjectOldRef[];
|
|
43
50
|
meta?: EnvConfig;
|
|
44
51
|
env?: EnvConfig;
|
|
52
|
+
permissions?: Permissions;
|
|
45
53
|
};
|
|
46
54
|
}
|
package/lib/makes/AppConfig.js
CHANGED
|
@@ -12,6 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.AppConfig = void 0;
|
|
15
|
+
const isPathAllowed_1 = require("../utils/isPathAllowed");
|
|
15
16
|
class AppConfig {
|
|
16
17
|
constructor(data) {
|
|
17
18
|
const { plugins = [], presets = [], projects = [] } = data, rest = __rest(data, ["plugins", "presets", "projects"]);
|
|
@@ -159,6 +160,74 @@ class AppConfig {
|
|
|
159
160
|
delete this.env;
|
|
160
161
|
}
|
|
161
162
|
}
|
|
163
|
+
isMountAllowed(path) {
|
|
164
|
+
var _a, _b, _c, _d;
|
|
165
|
+
return (0, isPathAllowed_1.isPathAllowed)(path, (_b = (_a = this.permissions) === null || _a === void 0 ? void 0 : _a.mounts) === null || _b === void 0 ? void 0 : _b.allow, (_d = (_c = this.permissions) === null || _c === void 0 ? void 0 : _c.mounts) === null || _d === void 0 ? void 0 : _d.deny);
|
|
166
|
+
}
|
|
167
|
+
addMountAllow(path) {
|
|
168
|
+
if (!this.permissions) {
|
|
169
|
+
this.permissions = {};
|
|
170
|
+
}
|
|
171
|
+
if (!this.permissions.mounts) {
|
|
172
|
+
this.permissions.mounts = {};
|
|
173
|
+
}
|
|
174
|
+
if (!this.permissions.mounts.allow) {
|
|
175
|
+
this.permissions.mounts.allow = [];
|
|
176
|
+
}
|
|
177
|
+
if (!this.permissions.mounts.allow.includes(path)) {
|
|
178
|
+
this.permissions.mounts.allow.push(path);
|
|
179
|
+
}
|
|
180
|
+
this.removeMountDeny(path);
|
|
181
|
+
}
|
|
182
|
+
removeMountAllow(path) {
|
|
183
|
+
var _a, _b;
|
|
184
|
+
if (!((_b = (_a = this.permissions) === null || _a === void 0 ? void 0 : _a.mounts) === null || _b === void 0 ? void 0 : _b.allow)) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.permissions.mounts.allow = this.permissions.mounts.allow.filter((entry) => entry !== path);
|
|
188
|
+
this.prunePermissions();
|
|
189
|
+
}
|
|
190
|
+
addMountDeny(path) {
|
|
191
|
+
if (!this.permissions) {
|
|
192
|
+
this.permissions = {};
|
|
193
|
+
}
|
|
194
|
+
if (!this.permissions.mounts) {
|
|
195
|
+
this.permissions.mounts = {};
|
|
196
|
+
}
|
|
197
|
+
if (!this.permissions.mounts.deny) {
|
|
198
|
+
this.permissions.mounts.deny = [];
|
|
199
|
+
}
|
|
200
|
+
if (!this.permissions.mounts.deny.includes(path)) {
|
|
201
|
+
this.permissions.mounts.deny.push(path);
|
|
202
|
+
}
|
|
203
|
+
this.removeMountAllow(path);
|
|
204
|
+
}
|
|
205
|
+
removeMountDeny(path) {
|
|
206
|
+
var _a, _b;
|
|
207
|
+
if (!((_b = (_a = this.permissions) === null || _a === void 0 ? void 0 : _a.mounts) === null || _b === void 0 ? void 0 : _b.deny)) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
this.permissions.mounts.deny = this.permissions.mounts.deny.filter((entry) => entry !== path);
|
|
211
|
+
this.prunePermissions();
|
|
212
|
+
}
|
|
213
|
+
prunePermissions() {
|
|
214
|
+
var _a, _b, _c;
|
|
215
|
+
if (!((_a = this.permissions) === null || _a === void 0 ? void 0 : _a.mounts)) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (((_b = this.permissions.mounts.allow) === null || _b === void 0 ? void 0 : _b.length) === 0) {
|
|
219
|
+
delete this.permissions.mounts.allow;
|
|
220
|
+
}
|
|
221
|
+
if (((_c = this.permissions.mounts.deny) === null || _c === void 0 ? void 0 : _c.length) === 0) {
|
|
222
|
+
delete this.permissions.mounts.deny;
|
|
223
|
+
}
|
|
224
|
+
if (Object.keys(this.permissions.mounts).length === 0) {
|
|
225
|
+
delete this.permissions.mounts;
|
|
226
|
+
}
|
|
227
|
+
if (Object.keys(this.permissions).length === 0) {
|
|
228
|
+
delete this.permissions;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
162
231
|
toObject() {
|
|
163
232
|
return {
|
|
164
233
|
debug: this.debug,
|
|
@@ -168,7 +237,8 @@ class AppConfig {
|
|
|
168
237
|
presets: this.presets.length > 0 ? this.presets : undefined,
|
|
169
238
|
projects: this.projects.length > 0 ? this.projects : undefined,
|
|
170
239
|
env: this.env,
|
|
171
|
-
meta: this.meta
|
|
240
|
+
meta: this.meta,
|
|
241
|
+
permissions: this.permissions
|
|
172
242
|
};
|
|
173
243
|
}
|
|
174
244
|
toJsString() {
|
|
@@ -126,6 +126,9 @@ let AppService = class AppService {
|
|
|
126
126
|
isExperimentalEnabled(key) {
|
|
127
127
|
return this.config.getMeta(`experimental.${key}`) === "enabled";
|
|
128
128
|
}
|
|
129
|
+
isAllowedPath(path) {
|
|
130
|
+
return this.config.isMountAllowed(path);
|
|
131
|
+
}
|
|
129
132
|
save() {
|
|
130
133
|
this.config.save();
|
|
131
134
|
}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./LogLevel";
|
|
|
7
7
|
export * from "./ModuleMetadata";
|
|
8
8
|
export * from "./PackageManagerType";
|
|
9
9
|
export * from "./PickProperties";
|
|
10
|
+
export * from "./Permissions";
|
|
10
11
|
export * from "./PluginMetadata";
|
|
11
12
|
export * from "./ProjectConfigScope";
|
|
12
13
|
export * from "./PluginRef";
|
package/lib/types/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./LogLevel"), exports);
|
|
|
23
23
|
__exportStar(require("./ModuleMetadata"), exports);
|
|
24
24
|
__exportStar(require("./PackageManagerType"), exports);
|
|
25
25
|
__exportStar(require("./PickProperties"), exports);
|
|
26
|
+
__exportStar(require("./Permissions"), exports);
|
|
26
27
|
__exportStar(require("./PluginMetadata"), exports);
|
|
27
28
|
__exportStar(require("./ProjectConfigScope"), exports);
|
|
28
29
|
__exportStar(require("./PluginRef"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isPathAllowed: (target: string, allow?: string[], deny?: string[]) => boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
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.isPathAllowed = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const isPathAllowed = (target, allow = [], deny = []) => {
|
|
9
|
+
const matches = (list) => list.some((entry) => {
|
|
10
|
+
const normalized = path_1.default.resolve(entry);
|
|
11
|
+
return target === normalized || target.startsWith(normalized + path_1.default.sep);
|
|
12
|
+
});
|
|
13
|
+
if (matches(deny)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return matches(allow);
|
|
17
|
+
};
|
|
18
|
+
exports.isPathAllowed = isPathAllowed;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isSensitivePath: (path: string) => boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
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.isSensitivePath = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const isSensitivePath = (path) => {
|
|
10
|
+
const resolved = path_1.default.resolve(path);
|
|
11
|
+
const root = path_1.default.parse(resolved).root;
|
|
12
|
+
if (resolved === root) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
if (path_1.default.dirname(resolved) === root) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return resolved === path_1.default.resolve(os_1.default.homedir());
|
|
19
|
+
};
|
|
20
|
+
exports.isSensitivePath = isSensitivePath;
|