@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.
Files changed (67) hide show
  1. package/README.md +108 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +23 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/protocols/events.d.ts +114 -0
  7. package/dist/protocols/events.d.ts.map +1 -0
  8. package/dist/protocols/events.js +7 -0
  9. package/dist/protocols/events.js.map +1 -0
  10. package/dist/protocols/index.d.ts +3 -0
  11. package/dist/protocols/index.d.ts.map +1 -0
  12. package/dist/protocols/index.js +20 -0
  13. package/dist/protocols/index.js.map +1 -0
  14. package/dist/protocols/websocket.d.ts +110 -0
  15. package/dist/protocols/websocket.d.ts.map +1 -0
  16. package/dist/protocols/websocket.js +28 -0
  17. package/dist/protocols/websocket.js.map +1 -0
  18. package/dist/types/build.d.ts +76 -0
  19. package/dist/types/build.d.ts.map +1 -0
  20. package/dist/types/build.js +30 -0
  21. package/dist/types/build.js.map +1 -0
  22. package/dist/types/device.d.ts +45 -0
  23. package/dist/types/device.d.ts.map +1 -0
  24. package/dist/types/device.js +27 -0
  25. package/dist/types/device.js.map +1 -0
  26. package/dist/types/index.d.ts +5 -0
  27. package/dist/types/index.d.ts.map +1 -0
  28. package/dist/types/index.js +22 -0
  29. package/dist/types/index.js.map +1 -0
  30. package/dist/types/log.d.ts +47 -0
  31. package/dist/types/log.d.ts.map +1 -0
  32. package/dist/types/log.js +26 -0
  33. package/dist/types/log.js.map +1 -0
  34. package/dist/types/session.d.ts +51 -0
  35. package/dist/types/session.d.ts.map +1 -0
  36. package/dist/types/session.js +22 -0
  37. package/dist/types/session.js.map +1 -0
  38. package/dist/utils/constants.d.ts +105 -0
  39. package/dist/utils/constants.d.ts.map +1 -0
  40. package/dist/utils/constants.js +123 -0
  41. package/dist/utils/constants.js.map +1 -0
  42. package/dist/utils/index.d.ts +3 -0
  43. package/dist/utils/index.d.ts.map +1 -0
  44. package/dist/utils/index.js +20 -0
  45. package/dist/utils/index.js.map +1 -0
  46. package/dist/utils/validation.d.ts +50 -0
  47. package/dist/utils/validation.d.ts.map +1 -0
  48. package/dist/utils/validation.js +111 -0
  49. package/dist/utils/validation.js.map +1 -0
  50. package/package.json +63 -0
  51. package/src/index.ts +8 -0
  52. package/src/protocols/events.ts +50 -0
  53. package/src/protocols/index.ts +3 -0
  54. package/src/protocols/websocket.ts +149 -0
  55. package/src/types/build.ts +85 -0
  56. package/src/types/device.ts +50 -0
  57. package/src/types/index.ts +5 -0
  58. package/src/types/log.ts +51 -0
  59. package/src/types/session.ts +57 -0
  60. package/src/utils/constants.ts +135 -0
  61. package/src/utils/index.ts +3 -0
  62. package/src/utils/validation.ts +115 -0
  63. package/tests/protocols.test.ts +121 -0
  64. package/tests/setup.ts +16 -0
  65. package/tests/types.test.ts +103 -0
  66. package/tests/validation.test.ts +226 -0
  67. 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,3 @@
1
+ export * from './validation';
2
+ export * from './constants';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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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"}