@jetstart/shared 1.1.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/README.md +108 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/events.d.ts +114 -0
- package/dist/protocols/events.d.ts.map +1 -0
- package/dist/protocols/events.js +7 -0
- package/dist/protocols/events.js.map +1 -0
- package/dist/protocols/index.d.ts +3 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +20 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/protocols/websocket.d.ts +110 -0
- package/dist/protocols/websocket.d.ts.map +1 -0
- package/dist/protocols/websocket.js +28 -0
- package/dist/protocols/websocket.js.map +1 -0
- package/dist/types/build.d.ts +76 -0
- package/dist/types/build.d.ts.map +1 -0
- package/dist/types/build.js +30 -0
- package/dist/types/build.js.map +1 -0
- package/dist/types/device.d.ts +45 -0
- package/dist/types/device.d.ts.map +1 -0
- package/dist/types/device.js +27 -0
- package/dist/types/device.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +22 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/log.d.ts +47 -0
- package/dist/types/log.d.ts.map +1 -0
- package/dist/types/log.js +26 -0
- package/dist/types/log.js.map +1 -0
- package/dist/types/session.d.ts +51 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +22 -0
- package/dist/types/session.js.map +1 -0
- package/dist/utils/constants.d.ts +105 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +123 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/validation.d.ts +50 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +111 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +63 -0
- package/src/index.ts +8 -0
- package/src/protocols/events.ts +50 -0
- package/src/protocols/index.ts +3 -0
- package/src/protocols/websocket.ts +149 -0
- package/src/types/build.ts +85 -0
- package/src/types/device.ts +50 -0
- package/src/types/index.ts +5 -0
- package/src/types/log.ts +51 -0
- package/src/types/session.ts +57 -0
- package/src/utils/constants.ts +135 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/validation.ts +115 -0
- package/tests/protocols.test.ts +121 -0
- package/tests/setup.ts +16 -0
- package/tests/types.test.ts +103 -0
- package/tests/validation.test.ts +226 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Re-export all type definitions
|
|
18
|
+
__exportStar(require("./session"), exports);
|
|
19
|
+
__exportStar(require("./build"), exports);
|
|
20
|
+
__exportStar(require("./device"), exports);
|
|
21
|
+
__exportStar(require("./log"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,4CAA0B;AAC1B,0CAAwB;AACxB,2CAAyB;AACzB,wCAAsB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging Types
|
|
3
|
+
* Types for the logging system
|
|
4
|
+
*/
|
|
5
|
+
export interface LogEntry {
|
|
6
|
+
id: string;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
level: LogLevel;
|
|
9
|
+
tag: string;
|
|
10
|
+
message: string;
|
|
11
|
+
source: LogSource;
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
metadata?: Record<string, any>;
|
|
14
|
+
}
|
|
15
|
+
export declare enum LogLevel {
|
|
16
|
+
VERBOSE = "verbose",
|
|
17
|
+
DEBUG = "debug",
|
|
18
|
+
INFO = "info",
|
|
19
|
+
WARN = "warn",
|
|
20
|
+
ERROR = "error",
|
|
21
|
+
FATAL = "fatal"
|
|
22
|
+
}
|
|
23
|
+
export declare enum LogSource {
|
|
24
|
+
CLI = "cli",
|
|
25
|
+
CORE = "core",
|
|
26
|
+
CLIENT = "client",
|
|
27
|
+
BUILD = "build",
|
|
28
|
+
NETWORK = "network",
|
|
29
|
+
SYSTEM = "system"
|
|
30
|
+
}
|
|
31
|
+
export interface LogFilter {
|
|
32
|
+
levels?: LogLevel[];
|
|
33
|
+
sources?: LogSource[];
|
|
34
|
+
tags?: string[];
|
|
35
|
+
searchQuery?: string;
|
|
36
|
+
startTime?: number;
|
|
37
|
+
endTime?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface LogStats {
|
|
40
|
+
totalLogs: number;
|
|
41
|
+
errorCount: number;
|
|
42
|
+
warningCount: number;
|
|
43
|
+
lastLogTime: number;
|
|
44
|
+
logsByLevel: Record<LogLevel, number>;
|
|
45
|
+
logsBySource: Record<LogSource, number>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/types/log.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACzC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Logging Types
|
|
4
|
+
* Types for the logging system
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.LogSource = exports.LogLevel = void 0;
|
|
8
|
+
var LogLevel;
|
|
9
|
+
(function (LogLevel) {
|
|
10
|
+
LogLevel["VERBOSE"] = "verbose";
|
|
11
|
+
LogLevel["DEBUG"] = "debug";
|
|
12
|
+
LogLevel["INFO"] = "info";
|
|
13
|
+
LogLevel["WARN"] = "warn";
|
|
14
|
+
LogLevel["ERROR"] = "error";
|
|
15
|
+
LogLevel["FATAL"] = "fatal";
|
|
16
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
17
|
+
var LogSource;
|
|
18
|
+
(function (LogSource) {
|
|
19
|
+
LogSource["CLI"] = "cli";
|
|
20
|
+
LogSource["CORE"] = "core";
|
|
21
|
+
LogSource["CLIENT"] = "client";
|
|
22
|
+
LogSource["BUILD"] = "build";
|
|
23
|
+
LogSource["NETWORK"] = "network";
|
|
24
|
+
LogSource["SYSTEM"] = "system";
|
|
25
|
+
})(LogSource || (exports.LogSource = LogSource = {}));
|
|
26
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/types/log.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,2BAAe,CAAA;IACf,2BAAe,CAAA;AACjB,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;AAED,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;IACb,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,gCAAmB,CAAA;IACnB,8BAAiB,CAAA;AACnB,CAAC,EAPW,SAAS,yBAAT,SAAS,QAOpB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Management Types
|
|
3
|
+
* Used for tracking and managing development sessions between Core and Client
|
|
4
|
+
*/
|
|
5
|
+
import { DeviceInfo } from "./device";
|
|
6
|
+
export interface Session {
|
|
7
|
+
id: string;
|
|
8
|
+
projectName: string;
|
|
9
|
+
projectPath: string;
|
|
10
|
+
deviceId: string;
|
|
11
|
+
deviceInfo: DeviceInfo;
|
|
12
|
+
createdAt: number;
|
|
13
|
+
lastActivity: number;
|
|
14
|
+
status: SessionStatus;
|
|
15
|
+
connectionType: ConnectionType;
|
|
16
|
+
}
|
|
17
|
+
export declare enum SessionStatus {
|
|
18
|
+
PENDING = "pending",
|
|
19
|
+
CONNECTED = "connected",
|
|
20
|
+
BUILDING = "building",
|
|
21
|
+
READY = "ready",
|
|
22
|
+
ERROR = "error",
|
|
23
|
+
DISCONNECTED = "disconnected"
|
|
24
|
+
}
|
|
25
|
+
export declare enum ConnectionType {
|
|
26
|
+
MINIMAL = "minimal",// Manual APK installation
|
|
27
|
+
FASTER = "faster"
|
|
28
|
+
}
|
|
29
|
+
export interface SessionConfig {
|
|
30
|
+
enableHotReload: boolean;
|
|
31
|
+
enableLogs: boolean;
|
|
32
|
+
autoReconnect: boolean;
|
|
33
|
+
buildOnSave: boolean;
|
|
34
|
+
port: number;
|
|
35
|
+
}
|
|
36
|
+
export interface SessionToken {
|
|
37
|
+
sessionId: string;
|
|
38
|
+
token: string;
|
|
39
|
+
expiresAt: number;
|
|
40
|
+
serverUrl: string;
|
|
41
|
+
wsUrl: string;
|
|
42
|
+
}
|
|
43
|
+
export interface QRCodeData {
|
|
44
|
+
sessionId: string;
|
|
45
|
+
serverUrl: string;
|
|
46
|
+
wsUrl: string;
|
|
47
|
+
token: string;
|
|
48
|
+
projectName: string;
|
|
49
|
+
version: string;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,YAAY,iBAAiB;CAC9B;AAED,oBAAY,cAAc;IACxB,OAAO,YAAY,CAAE,0BAA0B;IAC/C,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session Management Types
|
|
4
|
+
* Used for tracking and managing development sessions between Core and Client
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ConnectionType = exports.SessionStatus = void 0;
|
|
8
|
+
var SessionStatus;
|
|
9
|
+
(function (SessionStatus) {
|
|
10
|
+
SessionStatus["PENDING"] = "pending";
|
|
11
|
+
SessionStatus["CONNECTED"] = "connected";
|
|
12
|
+
SessionStatus["BUILDING"] = "building";
|
|
13
|
+
SessionStatus["READY"] = "ready";
|
|
14
|
+
SessionStatus["ERROR"] = "error";
|
|
15
|
+
SessionStatus["DISCONNECTED"] = "disconnected";
|
|
16
|
+
})(SessionStatus || (exports.SessionStatus = SessionStatus = {}));
|
|
17
|
+
var ConnectionType;
|
|
18
|
+
(function (ConnectionType) {
|
|
19
|
+
ConnectionType["MINIMAL"] = "minimal";
|
|
20
|
+
ConnectionType["FASTER"] = "faster";
|
|
21
|
+
})(ConnectionType || (exports.ConnectionType = ConnectionType = {}));
|
|
22
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAgBH,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,8CAA6B,CAAA;AAC/B,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACnB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants and Configuration
|
|
3
|
+
* Shared constants used across all packages
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default ports
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_CORE_PORT = 8765;
|
|
9
|
+
export declare const DEFAULT_WS_PORT = 8766;
|
|
10
|
+
export declare const DEFAULT_LOGS_PORT = 8767;
|
|
11
|
+
/**
|
|
12
|
+
* Network configuration
|
|
13
|
+
*/
|
|
14
|
+
export declare const WS_HEARTBEAT_INTERVAL = 30000;
|
|
15
|
+
export declare const WS_RECONNECT_DELAY = 5000;
|
|
16
|
+
export declare const WS_MAX_RECONNECT_ATTEMPTS = 5;
|
|
17
|
+
export declare const REQUEST_TIMEOUT = 30000;
|
|
18
|
+
/**
|
|
19
|
+
* Session configuration
|
|
20
|
+
*/
|
|
21
|
+
export declare const SESSION_TOKEN_EXPIRY = 3600000;
|
|
22
|
+
export declare const SESSION_CLEANUP_INTERVAL = 60000;
|
|
23
|
+
export declare const SESSION_IDLE_TIMEOUT = 1800000;
|
|
24
|
+
/**
|
|
25
|
+
* Build configuration
|
|
26
|
+
*/
|
|
27
|
+
export declare const BUILD_CACHE_SIZE_LIMIT = 1073741824;
|
|
28
|
+
export declare const BUILD_TIMEOUT = 300000;
|
|
29
|
+
export declare const MAX_CONCURRENT_BUILDS = 3;
|
|
30
|
+
/**
|
|
31
|
+
* File size limits
|
|
32
|
+
*/
|
|
33
|
+
export declare const MAX_APK_SIZE = 104857600;
|
|
34
|
+
export declare const MAX_LOG_FILE_SIZE = 10485760;
|
|
35
|
+
export declare const MAX_LOG_ENTRIES = 10000;
|
|
36
|
+
/**
|
|
37
|
+
* Version information
|
|
38
|
+
*/
|
|
39
|
+
export declare const JETSTART_VERSION = "0.1.0";
|
|
40
|
+
export declare const MIN_ANDROID_API_LEVEL = 24;
|
|
41
|
+
export declare const TARGET_ANDROID_API_LEVEL = 34;
|
|
42
|
+
/**
|
|
43
|
+
* URLs and paths
|
|
44
|
+
*/
|
|
45
|
+
export declare const JETSTART_CONFIG_FILE = "jetstart.config.json";
|
|
46
|
+
export declare const JETSTART_CACHE_DIR = ".jetstart/cache";
|
|
47
|
+
export declare const JETSTART_SESSIONS_DIR = ".jetstart/sessions";
|
|
48
|
+
export declare const JETSTART_LOGS_DIR = ".jetstart/logs";
|
|
49
|
+
/**
|
|
50
|
+
* Error codes
|
|
51
|
+
*/
|
|
52
|
+
export declare const ERROR_CODES: {
|
|
53
|
+
readonly INVALID_COMMAND: 1001;
|
|
54
|
+
readonly INVALID_PROJECT_NAME: 1002;
|
|
55
|
+
readonly PROJECT_ALREADY_EXISTS: 1003;
|
|
56
|
+
readonly PROJECT_NOT_FOUND: 1004;
|
|
57
|
+
readonly SERVER_START_FAILED: 2001;
|
|
58
|
+
readonly BUILD_FAILED: 2002;
|
|
59
|
+
readonly SESSION_CREATION_FAILED: 2003;
|
|
60
|
+
readonly INVALID_SESSION: 2004;
|
|
61
|
+
readonly CONNECTION_FAILED: 3001;
|
|
62
|
+
readonly DOWNLOAD_FAILED: 3002;
|
|
63
|
+
readonly INSTALLATION_FAILED: 3003;
|
|
64
|
+
readonly LAUNCH_FAILED: 3004;
|
|
65
|
+
readonly WEBSOCKET_ERROR: 4001;
|
|
66
|
+
readonly NETWORK_TIMEOUT: 4002;
|
|
67
|
+
readonly AUTHENTICATION_FAILED: 4003;
|
|
68
|
+
readonly COMPILATION_ERROR: 5001;
|
|
69
|
+
readonly PACKAGING_ERROR: 5002;
|
|
70
|
+
readonly SIGNING_ERROR: 5003;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Success messages
|
|
74
|
+
*/
|
|
75
|
+
export declare const SUCCESS_MESSAGES: {
|
|
76
|
+
readonly PROJECT_CREATED: "Project created successfully";
|
|
77
|
+
readonly BUILD_COMPLETE: "Build completed successfully";
|
|
78
|
+
readonly CONNECTION_ESTABLISHED: "Connection established";
|
|
79
|
+
readonly APK_INSTALLED: "APK installed successfully";
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Log tags
|
|
83
|
+
*/
|
|
84
|
+
export declare const LOG_TAGS: {
|
|
85
|
+
readonly CLI: "jetstart:cli";
|
|
86
|
+
readonly CORE: "jetstart:core";
|
|
87
|
+
readonly CLIENT: "jetstart:client";
|
|
88
|
+
readonly BUILD: "jetstart:build";
|
|
89
|
+
readonly NETWORK: "jetstart:network";
|
|
90
|
+
readonly WEBSOCKET: "jetstart:ws";
|
|
91
|
+
readonly LOGS: "jetstart:logs";
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* File patterns
|
|
95
|
+
*/
|
|
96
|
+
export declare const IGNORE_PATTERNS: string[];
|
|
97
|
+
/**
|
|
98
|
+
* MIME types
|
|
99
|
+
*/
|
|
100
|
+
export declare const MIME_TYPES: {
|
|
101
|
+
readonly APK: "application/vnd.android.package-archive";
|
|
102
|
+
readonly JSON: "application/json";
|
|
103
|
+
readonly TEXT: "text/plain";
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,YAAY,YAAY,CAAC;AACtC,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AACpD,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAC1D,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;CA4Bd,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe,UAU3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;CAIb,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Constants and Configuration
|
|
4
|
+
* Shared constants used across all packages
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MIME_TYPES = exports.IGNORE_PATTERNS = exports.LOG_TAGS = exports.SUCCESS_MESSAGES = exports.ERROR_CODES = exports.JETSTART_LOGS_DIR = exports.JETSTART_SESSIONS_DIR = exports.JETSTART_CACHE_DIR = exports.JETSTART_CONFIG_FILE = exports.TARGET_ANDROID_API_LEVEL = exports.MIN_ANDROID_API_LEVEL = exports.JETSTART_VERSION = exports.MAX_LOG_ENTRIES = exports.MAX_LOG_FILE_SIZE = exports.MAX_APK_SIZE = exports.MAX_CONCURRENT_BUILDS = exports.BUILD_TIMEOUT = exports.BUILD_CACHE_SIZE_LIMIT = exports.SESSION_IDLE_TIMEOUT = exports.SESSION_CLEANUP_INTERVAL = exports.SESSION_TOKEN_EXPIRY = exports.REQUEST_TIMEOUT = exports.WS_MAX_RECONNECT_ATTEMPTS = exports.WS_RECONNECT_DELAY = exports.WS_HEARTBEAT_INTERVAL = exports.DEFAULT_LOGS_PORT = exports.DEFAULT_WS_PORT = exports.DEFAULT_CORE_PORT = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Default ports
|
|
10
|
+
*/
|
|
11
|
+
exports.DEFAULT_CORE_PORT = 8765;
|
|
12
|
+
exports.DEFAULT_WS_PORT = 8766;
|
|
13
|
+
exports.DEFAULT_LOGS_PORT = 8767;
|
|
14
|
+
/**
|
|
15
|
+
* Network configuration
|
|
16
|
+
*/
|
|
17
|
+
exports.WS_HEARTBEAT_INTERVAL = 30000; // 30 seconds
|
|
18
|
+
exports.WS_RECONNECT_DELAY = 5000; // 5 seconds
|
|
19
|
+
exports.WS_MAX_RECONNECT_ATTEMPTS = 5;
|
|
20
|
+
exports.REQUEST_TIMEOUT = 30000; // 30 seconds
|
|
21
|
+
/**
|
|
22
|
+
* Session configuration
|
|
23
|
+
*/
|
|
24
|
+
exports.SESSION_TOKEN_EXPIRY = 3600000; // 1 hour
|
|
25
|
+
exports.SESSION_CLEANUP_INTERVAL = 60000; // 1 minute
|
|
26
|
+
exports.SESSION_IDLE_TIMEOUT = 1800000; // 30 minutes
|
|
27
|
+
/**
|
|
28
|
+
* Build configuration
|
|
29
|
+
*/
|
|
30
|
+
exports.BUILD_CACHE_SIZE_LIMIT = 1073741824; // 1 GB
|
|
31
|
+
exports.BUILD_TIMEOUT = 300000; // 5 minutes
|
|
32
|
+
exports.MAX_CONCURRENT_BUILDS = 3;
|
|
33
|
+
/**
|
|
34
|
+
* File size limits
|
|
35
|
+
*/
|
|
36
|
+
exports.MAX_APK_SIZE = 104857600; // 100 MB
|
|
37
|
+
exports.MAX_LOG_FILE_SIZE = 10485760; // 10 MB
|
|
38
|
+
exports.MAX_LOG_ENTRIES = 10000;
|
|
39
|
+
/**
|
|
40
|
+
* Version information
|
|
41
|
+
*/
|
|
42
|
+
exports.JETSTART_VERSION = '0.1.0';
|
|
43
|
+
exports.MIN_ANDROID_API_LEVEL = 24; // Android 7.0
|
|
44
|
+
exports.TARGET_ANDROID_API_LEVEL = 34; // Android 14
|
|
45
|
+
/**
|
|
46
|
+
* URLs and paths
|
|
47
|
+
*/
|
|
48
|
+
exports.JETSTART_CONFIG_FILE = 'jetstart.config.json';
|
|
49
|
+
exports.JETSTART_CACHE_DIR = '.jetstart/cache';
|
|
50
|
+
exports.JETSTART_SESSIONS_DIR = '.jetstart/sessions';
|
|
51
|
+
exports.JETSTART_LOGS_DIR = '.jetstart/logs';
|
|
52
|
+
/**
|
|
53
|
+
* Error codes
|
|
54
|
+
*/
|
|
55
|
+
exports.ERROR_CODES = {
|
|
56
|
+
// CLI errors (1xxx)
|
|
57
|
+
INVALID_COMMAND: 1001,
|
|
58
|
+
INVALID_PROJECT_NAME: 1002,
|
|
59
|
+
PROJECT_ALREADY_EXISTS: 1003,
|
|
60
|
+
PROJECT_NOT_FOUND: 1004,
|
|
61
|
+
// Core errors (2xxx)
|
|
62
|
+
SERVER_START_FAILED: 2001,
|
|
63
|
+
BUILD_FAILED: 2002,
|
|
64
|
+
SESSION_CREATION_FAILED: 2003,
|
|
65
|
+
INVALID_SESSION: 2004,
|
|
66
|
+
// Client errors (3xxx)
|
|
67
|
+
CONNECTION_FAILED: 3001,
|
|
68
|
+
DOWNLOAD_FAILED: 3002,
|
|
69
|
+
INSTALLATION_FAILED: 3003,
|
|
70
|
+
LAUNCH_FAILED: 3004,
|
|
71
|
+
// Network errors (4xxx)
|
|
72
|
+
WEBSOCKET_ERROR: 4001,
|
|
73
|
+
NETWORK_TIMEOUT: 4002,
|
|
74
|
+
AUTHENTICATION_FAILED: 4003,
|
|
75
|
+
// Build errors (5xxx)
|
|
76
|
+
COMPILATION_ERROR: 5001,
|
|
77
|
+
PACKAGING_ERROR: 5002,
|
|
78
|
+
SIGNING_ERROR: 5003,
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Success messages
|
|
82
|
+
*/
|
|
83
|
+
exports.SUCCESS_MESSAGES = {
|
|
84
|
+
PROJECT_CREATED: 'Project created successfully',
|
|
85
|
+
BUILD_COMPLETE: 'Build completed successfully',
|
|
86
|
+
CONNECTION_ESTABLISHED: 'Connection established',
|
|
87
|
+
APK_INSTALLED: 'APK installed successfully',
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Log tags
|
|
91
|
+
*/
|
|
92
|
+
exports.LOG_TAGS = {
|
|
93
|
+
CLI: 'jetstart:cli',
|
|
94
|
+
CORE: 'jetstart:core',
|
|
95
|
+
CLIENT: 'jetstart:client',
|
|
96
|
+
BUILD: 'jetstart:build',
|
|
97
|
+
NETWORK: 'jetstart:network',
|
|
98
|
+
WEBSOCKET: 'jetstart:ws',
|
|
99
|
+
LOGS: 'jetstart:logs',
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* File patterns
|
|
103
|
+
*/
|
|
104
|
+
exports.IGNORE_PATTERNS = [
|
|
105
|
+
'node_modules',
|
|
106
|
+
'.git',
|
|
107
|
+
'.gradle',
|
|
108
|
+
'build',
|
|
109
|
+
'dist',
|
|
110
|
+
'.idea',
|
|
111
|
+
'*.iml',
|
|
112
|
+
'.DS_Store',
|
|
113
|
+
'local.properties',
|
|
114
|
+
];
|
|
115
|
+
/**
|
|
116
|
+
* MIME types
|
|
117
|
+
*/
|
|
118
|
+
exports.MIME_TYPES = {
|
|
119
|
+
APK: 'application/vnd.android.package-archive',
|
|
120
|
+
JSON: 'application/json',
|
|
121
|
+
TEXT: 'text/plain',
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Re-export all utilities
|
|
18
|
+
__exportStar(require("./validation"), exports);
|
|
19
|
+
__exportStar(require("./constants"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,+CAA6B;AAC7B,8CAA4B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation Utilities
|
|
3
|
+
* Common validation functions used across packages
|
|
4
|
+
*/
|
|
5
|
+
import { QRCodeData, SessionToken, DeviceInfo } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Validate session ID format
|
|
8
|
+
*/
|
|
9
|
+
export declare function isValidSessionId(sessionId: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Validate token format
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValidToken(token: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Validate project name
|
|
16
|
+
*/
|
|
17
|
+
export declare function isValidProjectName(name: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Validate package name (Android)
|
|
20
|
+
*/
|
|
21
|
+
export declare function isValidPackageName(packageName: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Validate port number
|
|
24
|
+
*/
|
|
25
|
+
export declare function isValidPort(port: number): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Validate URL format
|
|
28
|
+
*/
|
|
29
|
+
export declare function isValidUrl(url: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Validate QR code data structure
|
|
32
|
+
*/
|
|
33
|
+
export declare function isValidQRCodeData(data: any): data is QRCodeData;
|
|
34
|
+
/**
|
|
35
|
+
* Validate session token structure
|
|
36
|
+
*/
|
|
37
|
+
export declare function isValidSessionToken(token: any): token is SessionToken;
|
|
38
|
+
/**
|
|
39
|
+
* Validate device info structure
|
|
40
|
+
*/
|
|
41
|
+
export declare function isValidDeviceInfo(info: any): info is DeviceInfo;
|
|
42
|
+
/**
|
|
43
|
+
* Sanitize user input
|
|
44
|
+
*/
|
|
45
|
+
export declare function sanitizeInput(input: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Validate version string (semver)
|
|
48
|
+
*/
|
|
49
|
+
export declare function isValidVersion(version: string): boolean;
|
|
50
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEhE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,UAAU,CAW/D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,YAAY,CAUrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,UAAU,CAY/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validation Utilities
|
|
4
|
+
* Common validation functions used across packages
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isValidSessionId = isValidSessionId;
|
|
8
|
+
exports.isValidToken = isValidToken;
|
|
9
|
+
exports.isValidProjectName = isValidProjectName;
|
|
10
|
+
exports.isValidPackageName = isValidPackageName;
|
|
11
|
+
exports.isValidPort = isValidPort;
|
|
12
|
+
exports.isValidUrl = isValidUrl;
|
|
13
|
+
exports.isValidQRCodeData = isValidQRCodeData;
|
|
14
|
+
exports.isValidSessionToken = isValidSessionToken;
|
|
15
|
+
exports.isValidDeviceInfo = isValidDeviceInfo;
|
|
16
|
+
exports.sanitizeInput = sanitizeInput;
|
|
17
|
+
exports.isValidVersion = isValidVersion;
|
|
18
|
+
/**
|
|
19
|
+
* Validate session ID format
|
|
20
|
+
*/
|
|
21
|
+
function isValidSessionId(sessionId) {
|
|
22
|
+
return /^[a-zA-Z0-9-_]{8,64}$/.test(sessionId);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validate token format
|
|
26
|
+
*/
|
|
27
|
+
function isValidToken(token) {
|
|
28
|
+
return /^[a-zA-Z0-9-_]{16,128}$/.test(token);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate project name
|
|
32
|
+
*/
|
|
33
|
+
function isValidProjectName(name) {
|
|
34
|
+
return /^[a-zA-Z][a-zA-Z0-9-_]{0,63}$/.test(name);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Validate package name (Android)
|
|
38
|
+
*/
|
|
39
|
+
function isValidPackageName(packageName) {
|
|
40
|
+
return /^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$/.test(packageName);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Validate port number
|
|
44
|
+
*/
|
|
45
|
+
function isValidPort(port) {
|
|
46
|
+
return Number.isInteger(port) && port >= 1024 && port <= 65535;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate URL format
|
|
50
|
+
*/
|
|
51
|
+
function isValidUrl(url) {
|
|
52
|
+
try {
|
|
53
|
+
new URL(url);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validate QR code data structure
|
|
62
|
+
*/
|
|
63
|
+
function isValidQRCodeData(data) {
|
|
64
|
+
return (data !== null &&
|
|
65
|
+
typeof data === 'object' &&
|
|
66
|
+
isValidSessionId(data.sessionId) &&
|
|
67
|
+
isValidUrl(data.serverUrl) &&
|
|
68
|
+
isValidUrl(data.wsUrl) &&
|
|
69
|
+
isValidToken(data.token) &&
|
|
70
|
+
typeof data.projectName === 'string' &&
|
|
71
|
+
typeof data.version === 'string');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validate session token structure
|
|
75
|
+
*/
|
|
76
|
+
function isValidSessionToken(token) {
|
|
77
|
+
return (token !== null &&
|
|
78
|
+
typeof token === 'object' &&
|
|
79
|
+
isValidSessionId(token.sessionId) &&
|
|
80
|
+
isValidToken(token.token) &&
|
|
81
|
+
typeof token.expiresAt === 'number' &&
|
|
82
|
+
isValidUrl(token.serverUrl) &&
|
|
83
|
+
isValidUrl(token.wsUrl));
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Validate device info structure
|
|
87
|
+
*/
|
|
88
|
+
function isValidDeviceInfo(info) {
|
|
89
|
+
return (info !== null &&
|
|
90
|
+
typeof info === 'object' &&
|
|
91
|
+
typeof info.id === 'string' &&
|
|
92
|
+
typeof info.name === 'string' &&
|
|
93
|
+
typeof info.model === 'string' &&
|
|
94
|
+
typeof info.manufacturer === 'string' &&
|
|
95
|
+
typeof info.platform === 'string' &&
|
|
96
|
+
typeof info.osVersion === 'string' &&
|
|
97
|
+
typeof info.apiLevel === 'number');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Sanitize user input
|
|
101
|
+
*/
|
|
102
|
+
function sanitizeInput(input) {
|
|
103
|
+
return input.trim().replace(/[<>]/g, '');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validate version string (semver)
|
|
107
|
+
*/
|
|
108
|
+
function isValidVersion(version) {
|
|
109
|
+
return /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?$/.test(version);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|