@ducky7go/ducky-cli 0.0.4 → 0.0.5-dev.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 +47 -199
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/steam/index.d.ts +3 -0
- package/dist/commands/steam/index.d.ts.map +1 -0
- package/dist/commands/steam/index.js +21 -0
- package/dist/commands/steam/index.js.map +1 -0
- package/dist/commands/steam/push.d.ts +3 -0
- package/dist/commands/steam/push.d.ts.map +1 -0
- package/dist/commands/steam/push.js +29 -0
- package/dist/commands/steam/push.js.map +1 -0
- package/dist/commands/steam/validate.d.ts +3 -0
- package/dist/commands/steam/validate.d.ts.map +1 -0
- package/dist/commands/steam/validate.js +47 -0
- package/dist/commands/steam/validate.js.map +1 -0
- package/dist/formats/steam/config.d.ts +23 -0
- package/dist/formats/steam/config.d.ts.map +1 -0
- package/dist/formats/steam/config.js +32 -0
- package/dist/formats/steam/config.js.map +1 -0
- package/dist/formats/steam/metadata.d.ts +45 -0
- package/dist/formats/steam/metadata.d.ts.map +1 -0
- package/dist/formats/steam/metadata.js +293 -0
- package/dist/formats/steam/metadata.js.map +1 -0
- package/dist/formats/steam/parser.d.ts +20 -0
- package/dist/formats/steam/parser.d.ts.map +1 -0
- package/dist/formats/steam/parser.js +88 -0
- package/dist/formats/steam/parser.js.map +1 -0
- package/dist/formats/steam/progress-display.d.ts +38 -0
- package/dist/formats/steam/progress-display.d.ts.map +1 -0
- package/dist/formats/steam/progress-display.js +123 -0
- package/dist/formats/steam/progress-display.js.map +1 -0
- package/dist/formats/steam/progress.d.ts +79 -0
- package/dist/formats/steam/progress.d.ts.map +1 -0
- package/dist/formats/steam/progress.js +126 -0
- package/dist/formats/steam/progress.js.map +1 -0
- package/dist/formats/steam/push-handler.d.ts +22 -0
- package/dist/formats/steam/push-handler.d.ts.map +1 -0
- package/dist/formats/steam/push-handler.js +31 -0
- package/dist/formats/steam/push-handler.js.map +1 -0
- package/dist/formats/steam/upload-standalone.d.ts +20 -0
- package/dist/formats/steam/upload-standalone.d.ts.map +1 -0
- package/dist/formats/steam/upload-standalone.js +221 -0
- package/dist/formats/steam/upload-standalone.js.map +1 -0
- package/dist/formats/steam/validator.d.ts +58 -0
- package/dist/formats/steam/validator.d.ts.map +1 -0
- package/dist/formats/steam/validator.js +136 -0
- package/dist/formats/steam/validator.js.map +1 -0
- package/dist/formats/steam/workshop.d.ts +72 -0
- package/dist/formats/steam/workshop.d.ts.map +1 -0
- package/dist/formats/steam/workshop.js +221 -0
- package/dist/formats/steam/workshop.js.map +1 -0
- package/dist/utils/errors.d.ts +24 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +51 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/fs.d.ts +8 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +22 -0
- package/dist/utils/fs.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { fileExists, directoryExists } from '../../utils/fs.js';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { getSteamAppId } from './config.js';
|
|
4
|
+
/**
|
|
5
|
+
* Steam Workshop validator
|
|
6
|
+
*/
|
|
7
|
+
export class SteamValidator {
|
|
8
|
+
logger;
|
|
9
|
+
constructor(logger) {
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Validate all aspects of a mod for Steam Workshop publishing
|
|
14
|
+
*/
|
|
15
|
+
async validate(directory) {
|
|
16
|
+
const errors = [];
|
|
17
|
+
// Validate App ID
|
|
18
|
+
const appIdError = this.validateAppId(getSteamAppId());
|
|
19
|
+
if (appIdError) {
|
|
20
|
+
errors.push(appIdError);
|
|
21
|
+
}
|
|
22
|
+
// Validate mod directory exists
|
|
23
|
+
const dirError = await this.validateDirectoryExists(directory);
|
|
24
|
+
if (dirError) {
|
|
25
|
+
errors.push(dirError);
|
|
26
|
+
return { isValid: false, errors };
|
|
27
|
+
}
|
|
28
|
+
// Validate info.ini exists
|
|
29
|
+
const infoIniError = await this.validateInfoIniExists(directory);
|
|
30
|
+
if (infoIniError) {
|
|
31
|
+
errors.push(infoIniError);
|
|
32
|
+
}
|
|
33
|
+
// Validate preview.png exists
|
|
34
|
+
const previewError = await this.validatePreviewImage(directory);
|
|
35
|
+
if (previewError) {
|
|
36
|
+
errors.push(previewError);
|
|
37
|
+
}
|
|
38
|
+
// Validate mod structure
|
|
39
|
+
const structureErrors = await this.validateModStructure(directory);
|
|
40
|
+
errors.push(...structureErrors);
|
|
41
|
+
return {
|
|
42
|
+
isValid: errors.length === 0,
|
|
43
|
+
errors,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate Steam App ID
|
|
48
|
+
*/
|
|
49
|
+
validateAppId(appId) {
|
|
50
|
+
if (!appId || appId <= 0) {
|
|
51
|
+
return {
|
|
52
|
+
message: `Invalid Steam App ID: ${appId}`,
|
|
53
|
+
suggestions: [
|
|
54
|
+
'Set the STEAM_APP_ID environment variable to a valid App ID',
|
|
55
|
+
'Default App ID is 3167020',
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Validate directory exists
|
|
63
|
+
*/
|
|
64
|
+
async validateDirectoryExists(directory) {
|
|
65
|
+
if (!(await directoryExists(directory))) {
|
|
66
|
+
return {
|
|
67
|
+
message: `Directory does not exist: ${directory}`,
|
|
68
|
+
suggestions: [
|
|
69
|
+
'Ensure the mod directory path is correct',
|
|
70
|
+
'Create the directory if it does not exist',
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Validate info.ini exists
|
|
78
|
+
*/
|
|
79
|
+
async validateInfoIniExists(directory) {
|
|
80
|
+
const infoIniPath = join(directory, 'info.ini');
|
|
81
|
+
if (!(await fileExists(infoIniPath))) {
|
|
82
|
+
return {
|
|
83
|
+
message: 'info.ini not found in mod directory',
|
|
84
|
+
suggestions: [
|
|
85
|
+
'Create an info.ini file in the mod directory',
|
|
86
|
+
'Include required fields: name, version',
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Validate preview.png exists
|
|
94
|
+
*/
|
|
95
|
+
async validatePreviewImage(directory) {
|
|
96
|
+
const previewPath = join(directory, 'preview.png');
|
|
97
|
+
if (!(await fileExists(previewPath))) {
|
|
98
|
+
return {
|
|
99
|
+
message: 'preview.png not found in mod directory',
|
|
100
|
+
suggestions: [
|
|
101
|
+
'Add a preview.png image to the mod directory',
|
|
102
|
+
'Recommended size: 512x512 pixels or larger',
|
|
103
|
+
'Supported formats: PNG, JPG',
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Validate mod structure
|
|
111
|
+
*/
|
|
112
|
+
async validateModStructure(directory) {
|
|
113
|
+
const errors = [];
|
|
114
|
+
// Check for common mod structure files
|
|
115
|
+
// This is a basic check - can be extended based on specific requirements
|
|
116
|
+
// Check if directory is empty
|
|
117
|
+
const fs = await import('fs/promises');
|
|
118
|
+
try {
|
|
119
|
+
const files = await fs.readdir(directory);
|
|
120
|
+
if (files.length === 0) {
|
|
121
|
+
errors.push({
|
|
122
|
+
message: 'Mod directory is empty',
|
|
123
|
+
suggestions: [
|
|
124
|
+
'Add mod files to the directory',
|
|
125
|
+
'Include at least info.ini and some content',
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
// Already handled by validateDirectoryExists
|
|
132
|
+
}
|
|
133
|
+
return errors;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/formats/steam/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Steam Workshop client wrapper
|
|
3
|
+
* Wraps steamworks.js for Workshop operations
|
|
4
|
+
* Uses child process for proper cleanup of Steamworks proxy
|
|
5
|
+
*/
|
|
6
|
+
import type { Logger } from '../../utils/logger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Run Steam upload in a child process
|
|
9
|
+
* @param modPath - Path to the mod directory
|
|
10
|
+
* @param options - Upload options
|
|
11
|
+
* @param logger - Logger instance
|
|
12
|
+
* @returns Promise that resolves when upload completes
|
|
13
|
+
*/
|
|
14
|
+
export declare function runSteamUploadInChildProcess(modPath: string, options: {
|
|
15
|
+
updateDescription: boolean;
|
|
16
|
+
changelog?: string;
|
|
17
|
+
skipTail?: boolean;
|
|
18
|
+
}, logger: Logger, _onProgress?: (bytesProcessed: number, bytesTotal: number) => void): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Kill the current upload child process if running
|
|
21
|
+
*/
|
|
22
|
+
export declare function killSteamUploadProcess(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Initialize Steamworks
|
|
25
|
+
* @throws {SteamConfigError} If Steamworks initialization fails
|
|
26
|
+
*/
|
|
27
|
+
export declare function initSteamworks(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Shutdown Steamworks
|
|
30
|
+
* Note: steamworks.js doesn't have a shutdown method, so we just clear our references
|
|
31
|
+
*/
|
|
32
|
+
export declare function shutdownSteamworks(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Create a new Workshop item
|
|
35
|
+
* @returns The published file ID
|
|
36
|
+
* @throws {SteamUploadError} If creation fails
|
|
37
|
+
*/
|
|
38
|
+
export declare function createWorkshopItem(): Promise<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Workshop update details
|
|
41
|
+
*/
|
|
42
|
+
export interface WorkshopUpdateDetails {
|
|
43
|
+
title?: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
changeNote?: string;
|
|
46
|
+
previewPath?: string;
|
|
47
|
+
contentPath?: string;
|
|
48
|
+
tags?: Array<string>;
|
|
49
|
+
visibility?: number;
|
|
50
|
+
language?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Update a Workshop item (Promise-based)
|
|
54
|
+
* @param publishedFileId - The published file ID
|
|
55
|
+
* @param details - Update details
|
|
56
|
+
* @returns Promise that resolves when update completes
|
|
57
|
+
*/
|
|
58
|
+
export declare function updateWorkshopItem(publishedFileId: number, details: WorkshopUpdateDetails): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Update a Workshop item with progress tracking
|
|
61
|
+
* @param publishedFileId - The published file ID
|
|
62
|
+
* @param details - Update details
|
|
63
|
+
* @param logger - Logger instance
|
|
64
|
+
* @param onProgress - Progress callback
|
|
65
|
+
* @returns Promise that resolves when update completes
|
|
66
|
+
*/
|
|
67
|
+
export declare function updateWorkshopItemWithProgress(publishedFileId: number, details: WorkshopUpdateDetails, _logger: Logger, onProgress?: (bytesProcessed: number, bytesTotal: number) => void): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Check if Steamworks is available
|
|
70
|
+
*/
|
|
71
|
+
export declare function isSteamworksAvailable(): boolean;
|
|
72
|
+
//# sourceMappingURL=workshop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workshop.d.ts","sourceRoot":"","sources":["../../../src/formats/steam/workshop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQpD;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,EACD,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GACjE,OAAO,CAAC,IAAI,CAAC,CAsEf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAqBD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoB1D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;;;;GAOG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAChE,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Steam Workshop client wrapper
|
|
3
|
+
* Wraps steamworks.js for Workshop operations
|
|
4
|
+
* Uses child process for proper cleanup of Steamworks proxy
|
|
5
|
+
*/
|
|
6
|
+
import { SteamAuthError, SteamUploadError, SteamConfigError } from '../../utils/errors.js';
|
|
7
|
+
import { getSteamAppId } from './config.js';
|
|
8
|
+
import { spawn } from 'child_process';
|
|
9
|
+
import { resolve } from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = resolve(__filename, '..');
|
|
13
|
+
/**
|
|
14
|
+
* Run Steam upload in a child process
|
|
15
|
+
* @param modPath - Path to the mod directory
|
|
16
|
+
* @param options - Upload options
|
|
17
|
+
* @param logger - Logger instance
|
|
18
|
+
* @returns Promise that resolves when upload completes
|
|
19
|
+
*/
|
|
20
|
+
export async function runSteamUploadInChildProcess(modPath, options, logger, _onProgress) {
|
|
21
|
+
const args = [modPath];
|
|
22
|
+
if (options.updateDescription) {
|
|
23
|
+
args.push('--update-description');
|
|
24
|
+
}
|
|
25
|
+
if (options.changelog) {
|
|
26
|
+
args.push('--changelog', options.changelog);
|
|
27
|
+
}
|
|
28
|
+
if (options.skipTail) {
|
|
29
|
+
args.push('--skip-tail');
|
|
30
|
+
}
|
|
31
|
+
const scriptPath = resolve(__dirname, 'upload-standalone.js');
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
const child = spawn('node', [scriptPath, ...args], {
|
|
34
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
35
|
+
env: { ...process.env },
|
|
36
|
+
});
|
|
37
|
+
let stdout = '';
|
|
38
|
+
let stderr = '';
|
|
39
|
+
child.stdout?.on('data', (data) => {
|
|
40
|
+
const text = data.toString();
|
|
41
|
+
stdout += text;
|
|
42
|
+
// Log output line by line
|
|
43
|
+
text.split('\n').filter(Boolean).forEach((line) => {
|
|
44
|
+
if (line.includes('[SUCCESS]')) {
|
|
45
|
+
logger.success(line.replace(/\[SUCCESS\]\s*/g, ''));
|
|
46
|
+
}
|
|
47
|
+
else if (line.includes('[ERROR]')) {
|
|
48
|
+
logger.error(line.replace(/\[ERROR\]\s*/g, ''));
|
|
49
|
+
}
|
|
50
|
+
else if (line.includes('[INFO]')) {
|
|
51
|
+
logger.info(line.replace(/\[INFO\]\s*/g, ''));
|
|
52
|
+
}
|
|
53
|
+
else if (line.includes('[WARN]')) {
|
|
54
|
+
logger.warn(line.replace(/\[WARN\]\s*/g, ''));
|
|
55
|
+
}
|
|
56
|
+
else if (line.includes('[DEBUG]')) {
|
|
57
|
+
logger.debug(line.replace(/\[DEBUG\]\s*/g, ''));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
logger.info(line);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
child.stderr?.on('data', (data) => {
|
|
65
|
+
stderr += data;
|
|
66
|
+
});
|
|
67
|
+
child.on('close', (code) => {
|
|
68
|
+
if (code === 0) {
|
|
69
|
+
resolve();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
reject(new Error(`Upload process exited with code ${code}${stderr ? ': ' + stderr : ''}`));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
child.on('error', (err) => {
|
|
76
|
+
reject(new SteamUploadError(`Failed to spawn upload process: ${err.message}`, [
|
|
77
|
+
'Ensure Node.js is properly installed',
|
|
78
|
+
'Check that the upload script exists',
|
|
79
|
+
]));
|
|
80
|
+
});
|
|
81
|
+
// Store child process reference for cleanup
|
|
82
|
+
runSteamUploadInChildProcess.currentChild = child;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Kill the current upload child process if running
|
|
87
|
+
*/
|
|
88
|
+
export function killSteamUploadProcess() {
|
|
89
|
+
const child = runSteamUploadInChildProcess.currentChild;
|
|
90
|
+
if (child && !child.killed) {
|
|
91
|
+
child.kill('SIGKILL');
|
|
92
|
+
runSteamUploadInChildProcess.currentChild = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
let steamworks = null;
|
|
96
|
+
/**
|
|
97
|
+
* Initialize Steamworks
|
|
98
|
+
* @throws {SteamConfigError} If Steamworks initialization fails
|
|
99
|
+
*/
|
|
100
|
+
export async function initSteamworks() {
|
|
101
|
+
if (steamworks) {
|
|
102
|
+
return; // Already initialized
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
// Import steamworks.js
|
|
106
|
+
const steamworksModule = await import('@ducky7go/steamworks.js');
|
|
107
|
+
const appId = getSteamAppId();
|
|
108
|
+
// Initialize Steamworks - init is a named export, not default
|
|
109
|
+
// @ts-ignore - init exists on the module
|
|
110
|
+
const api = steamworksModule.init ? steamworksModule.init(appId) : steamworksModule.default.init(appId);
|
|
111
|
+
steamworks = api;
|
|
112
|
+
if (!steamworks) {
|
|
113
|
+
throw new SteamConfigError('Failed to initialize Steamworks', [
|
|
114
|
+
'Ensure Steam is running',
|
|
115
|
+
'Ensure you are logged into Steam',
|
|
116
|
+
'Check that the Steam App ID is correct',
|
|
117
|
+
'Try restarting Steam',
|
|
118
|
+
]);
|
|
119
|
+
}
|
|
120
|
+
// Wait a bit for Steam to fully initialize
|
|
121
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (error instanceof SteamConfigError || error instanceof SteamAuthError) {
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
throw new SteamConfigError(`Failed to load Steamworks: ${error instanceof Error ? error.message : String(error)}`, [
|
|
128
|
+
'Ensure @ducky7go/steamworks.js is installed',
|
|
129
|
+
'Try running: npm install',
|
|
130
|
+
'Ensure Steam is installed and running',
|
|
131
|
+
]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Shutdown Steamworks
|
|
136
|
+
* Note: steamworks.js doesn't have a shutdown method, so we just clear our references
|
|
137
|
+
*/
|
|
138
|
+
export function shutdownSteamworks() {
|
|
139
|
+
steamworks = null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Create a new Workshop item
|
|
143
|
+
* @returns The published file ID
|
|
144
|
+
* @throws {SteamUploadError} If creation fails
|
|
145
|
+
*/
|
|
146
|
+
export async function createWorkshopItem() {
|
|
147
|
+
if (!steamworks?.workshop) {
|
|
148
|
+
throw new SteamUploadError('Steamworks not initialized');
|
|
149
|
+
}
|
|
150
|
+
const appId = getSteamAppId();
|
|
151
|
+
const result = await steamworks.workshop.createItem(appId);
|
|
152
|
+
if (!result.itemId || result.itemId === 0n) {
|
|
153
|
+
throw new SteamUploadError('Failed to create Workshop item', [
|
|
154
|
+
'Ensure you have permission to create Workshop items',
|
|
155
|
+
'Check that your Steam account is in good standing',
|
|
156
|
+
'Try again later',
|
|
157
|
+
]);
|
|
158
|
+
}
|
|
159
|
+
return Number(result.itemId);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Update a Workshop item (Promise-based)
|
|
163
|
+
* @param publishedFileId - The published file ID
|
|
164
|
+
* @param details - Update details
|
|
165
|
+
* @returns Promise that resolves when update completes
|
|
166
|
+
*/
|
|
167
|
+
export async function updateWorkshopItem(publishedFileId, details) {
|
|
168
|
+
if (!steamworks?.workshop) {
|
|
169
|
+
throw new SteamUploadError('Steamworks not initialized');
|
|
170
|
+
}
|
|
171
|
+
const appId = getSteamAppId();
|
|
172
|
+
const itemId = BigInt(publishedFileId);
|
|
173
|
+
await steamworks.workshop.updateItem(itemId, details, appId);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Update a Workshop item with progress tracking
|
|
177
|
+
* @param publishedFileId - The published file ID
|
|
178
|
+
* @param details - Update details
|
|
179
|
+
* @param logger - Logger instance
|
|
180
|
+
* @param onProgress - Progress callback
|
|
181
|
+
* @returns Promise that resolves when update completes
|
|
182
|
+
*/
|
|
183
|
+
export async function updateWorkshopItemWithProgress(publishedFileId, details, _logger, onProgress) {
|
|
184
|
+
if (!steamworks?.workshop) {
|
|
185
|
+
throw new SteamUploadError('Steamworks not initialized');
|
|
186
|
+
}
|
|
187
|
+
const appId = getSteamAppId();
|
|
188
|
+
const itemId = BigInt(publishedFileId);
|
|
189
|
+
return new Promise((resolve, reject) => {
|
|
190
|
+
steamworks.workshop.updateItemWithCallback(itemId, details, appId,
|
|
191
|
+
// Success callback
|
|
192
|
+
() => {
|
|
193
|
+
resolve();
|
|
194
|
+
},
|
|
195
|
+
// Error callback
|
|
196
|
+
(err) => {
|
|
197
|
+
const errorMessage = err && typeof err === 'object' && 'message' in err
|
|
198
|
+
? String(err.message)
|
|
199
|
+
: String(err);
|
|
200
|
+
reject(new SteamUploadError(`Workshop upload failed: ${errorMessage}`, [
|
|
201
|
+
'Check your internet connection',
|
|
202
|
+
'Ensure Steam is running and logged in',
|
|
203
|
+
'Try again later',
|
|
204
|
+
]));
|
|
205
|
+
},
|
|
206
|
+
// Progress callback
|
|
207
|
+
onProgress ? (data) => {
|
|
208
|
+
const processed = Number(data.progress);
|
|
209
|
+
const total = Number(data.total);
|
|
210
|
+
onProgress(processed, total);
|
|
211
|
+
} : undefined, 100 // Progress callback interval in ms
|
|
212
|
+
);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Check if Steamworks is available
|
|
217
|
+
*/
|
|
218
|
+
export function isSteamworksAvailable() {
|
|
219
|
+
return steamworks !== null;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=workshop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workshop.js","sourceRoot":"","sources":["../../../src/formats/steam/workshop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAe,EACf,OAIC,EACD,MAAc,EACd,WAAkE;IAElE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAEvB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAE9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE;YACjD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,IAAI,CAAC;YACf,0BAA0B;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;gBACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtD,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClD,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;gBAChD,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;gBAChD,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,IAAI,gBAAgB,CACzB,mCAAmC,GAAG,CAAC,OAAO,EAAE,EAChD;gBACE,sCAAsC;gBACtC,qCAAqC;aACtC,CACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC3C,4BAAoC,CAAC,YAAY,GAAG,KAAK,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,KAAK,GAAI,4BAAoC,CAAC,YAAY,CAAC;IACjE,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,4BAAoC,CAAC,YAAY,GAAG,IAAI,CAAC;IAC5D,CAAC;AACH,CAAC;AAmBD,IAAI,UAAU,GAA4B,IAAI,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,sBAAsB;IAChC,CAAC;IAED,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;QAE9B,8DAA8D;QAC9D,yCAAyC;QACzC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxG,UAAU,GAAG,GAAuB,CAAC;QAErC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,gBAAgB,CACxB,iCAAiC,EACjC;gBACE,yBAAyB;gBACzB,kCAAkC;gBAClC,wCAAwC;gBACxC,sBAAsB;aACvB,CACF,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACzE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF;YACE,6CAA6C;YAC7C,0BAA0B;YAC1B,uCAAuC;SACxC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAE3D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,gBAAgB,CACxB,gCAAgC,EAChC;YACE,qDAAqD;YACrD,mDAAmD;YACnD,iBAAiB;SAClB,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,eAAuB,EACvB,OAA8B;IAE9B,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAEvC,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,eAAuB,EACvB,OAA8B,EAC9B,OAAe,EACf,UAAiE;IAEjE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,UAAW,CAAC,QAAS,CAAC,sBAAsB,CAC1C,MAAM,EACN,OAAO,EACP,KAAK;QACL,mBAAmB;QACnB,GAAG,EAAE;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,iBAAiB;QACjB,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,YAAY,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG;gBACrE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,gBAAgB,CACzB,2BAA2B,YAAY,EAAE,EACzC;gBACE,gCAAgC;gBAChC,uCAAuC;gBACvC,iBAAiB;aAClB,CACF,CAAC,CAAC;QACL,CAAC;QACD,oBAAoB;QACpB,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;YACpB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,CAAC,SAAS,EACb,GAAG,CAAC,mCAAmC;SACxC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,KAAK,IAAI,CAAC;AAC7B,CAAC"}
|
package/dist/utils/errors.d.ts
CHANGED
|
@@ -40,4 +40,28 @@ export declare class FileSystemError extends DuckyError {
|
|
|
40
40
|
export declare class NuGetError extends DuckyError {
|
|
41
41
|
constructor(message: string, suggestions?: string[]);
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Error raised when Steam operations fail
|
|
45
|
+
*/
|
|
46
|
+
export declare class SteamError extends DuckyError {
|
|
47
|
+
constructor(message: string, suggestions?: string[]);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Error raised when Steam authentication fails
|
|
51
|
+
*/
|
|
52
|
+
export declare class SteamAuthError extends SteamError {
|
|
53
|
+
constructor(message: string, suggestions?: string[]);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Error raised when Steam upload fails
|
|
57
|
+
*/
|
|
58
|
+
export declare class SteamUploadError extends SteamError {
|
|
59
|
+
constructor(message: string, suggestions?: string[]);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Error raised when Steam configuration is invalid
|
|
63
|
+
*/
|
|
64
|
+
export declare class SteamConfigError extends SteamError {
|
|
65
|
+
constructor(message: string, suggestions?: string[]);
|
|
66
|
+
}
|
|
43
67
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,IAAI,EAAE,MAAM;aACZ,WAAW,CAAC,EAAE,MAAM,EAAE;gBAFtC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EAAE,YAAA;IAOxC;;OAEG;IACH,MAAM,IAAI,MAAM;CAUjB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,IAAI,EAAE,MAAM;aACZ,WAAW,CAAC,EAAE,MAAM,EAAE;gBAFtC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EAAE,YAAA;IAOxC;;OAEG;IACH,MAAM,IAAI,MAAM;CAUjB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,UAAU;gBAC5B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CAIpD;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;gBAChC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CASpD;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CASpD;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;gBAClC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;CASpD"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -70,4 +70,55 @@ export class NuGetError extends DuckyError {
|
|
|
70
70
|
this.name = 'NuGetError';
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Error raised when Steam operations fail
|
|
75
|
+
*/
|
|
76
|
+
export class SteamError extends DuckyError {
|
|
77
|
+
constructor(message, suggestions) {
|
|
78
|
+
super(message, 'STEAM_ERROR', suggestions);
|
|
79
|
+
this.name = 'SteamError';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Error raised when Steam authentication fails
|
|
84
|
+
*/
|
|
85
|
+
export class SteamAuthError extends SteamError {
|
|
86
|
+
constructor(message, suggestions) {
|
|
87
|
+
super(message, suggestions);
|
|
88
|
+
Object.defineProperty(this, 'code', {
|
|
89
|
+
value: 'STEAM_AUTH_ERROR',
|
|
90
|
+
enumerable: true,
|
|
91
|
+
writable: false,
|
|
92
|
+
});
|
|
93
|
+
this.name = 'SteamAuthError';
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Error raised when Steam upload fails
|
|
98
|
+
*/
|
|
99
|
+
export class SteamUploadError extends SteamError {
|
|
100
|
+
constructor(message, suggestions) {
|
|
101
|
+
super(message, suggestions);
|
|
102
|
+
Object.defineProperty(this, 'code', {
|
|
103
|
+
value: 'STEAM_UPLOAD_ERROR',
|
|
104
|
+
enumerable: true,
|
|
105
|
+
writable: false,
|
|
106
|
+
});
|
|
107
|
+
this.name = 'SteamUploadError';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Error raised when Steam configuration is invalid
|
|
112
|
+
*/
|
|
113
|
+
export class SteamConfigError extends SteamError {
|
|
114
|
+
constructor(message, suggestions) {
|
|
115
|
+
super(message, suggestions);
|
|
116
|
+
Object.defineProperty(this, 'code', {
|
|
117
|
+
value: 'STEAM_CONFIG_ERROR',
|
|
118
|
+
enumerable: true,
|
|
119
|
+
writable: false,
|
|
120
|
+
});
|
|
121
|
+
this.name = 'SteamConfigError';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
73
124
|
//# sourceMappingURL=errors.js.map
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGjB;IACA;IAHlB,YACE,OAAe,EACC,IAAY,EACZ,WAAsB;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAW;QAGtC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,MAAM,GAAG,aAAa,IAAI,CAAC,OAAO,SAAS,CAAC;QAChD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,kBAAkB,CAAC;YAC7B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,MAAM,IAAI,SAAS,UAAU,EAAE,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,OAAe,EAAE,WAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,UAAU;IACzC,YAAY,OAAe,EAAE,WAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,YAAY,OAAe,EAAE,WAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,OAAe,EAAE,WAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,UAAU;IACxC,YAAY,OAAe,EAAE,WAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fs.d.ts
CHANGED
|
@@ -39,4 +39,12 @@ export declare function isDirectory(path: string): Promise<boolean>;
|
|
|
39
39
|
* Check if a path is a file
|
|
40
40
|
*/
|
|
41
41
|
export declare function isFile(path: string): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Write text to a file
|
|
44
|
+
*/
|
|
45
|
+
export declare function writeTextFile(filePath: string, content: string): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Format bytes to human-readable size
|
|
48
|
+
*/
|
|
49
|
+
export declare function formatBytes(bytes: number): string;
|
|
42
50
|
//# sourceMappingURL=fs.d.ts.map
|
package/dist/utils/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASpE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D"}
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASpE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUnE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}
|
package/dist/utils/fs.js
CHANGED
|
@@ -122,4 +122,26 @@ export async function isFile(path) {
|
|
|
122
122
|
return false;
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Write text to a file
|
|
127
|
+
*/
|
|
128
|
+
export async function writeTextFile(filePath, content) {
|
|
129
|
+
try {
|
|
130
|
+
await fsPromises.writeFile(filePath, content, 'utf-8');
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
throw new FileSystemError(`Failed to write file: ${filePath}`, [`Ensure you have permission to write to the file`]);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Format bytes to human-readable size
|
|
138
|
+
*/
|
|
139
|
+
export function formatBytes(bytes) {
|
|
140
|
+
if (bytes === 0)
|
|
141
|
+
return '0 B';
|
|
142
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
143
|
+
const k = 1024;
|
|
144
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
145
|
+
return `${(bytes / Math.pow(k, i)).toFixed(i > 0 ? 2 : 0)} ${units[i]}`;
|
|
146
|
+
}
|
|
125
147
|
//# sourceMappingURL=fs.js.map
|
package/dist/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ducky7go/ducky-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5-dev.1",
|
|
4
4
|
"description": "CLI tool for packaging and publishing game mods to NuGet",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"vitest": "^2.0.0"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
+
"@ducky7go/steamworks.js": "^0.1.3",
|
|
58
59
|
"chalk": "^5.3.0",
|
|
59
60
|
"commander": "^12.0.0",
|
|
60
61
|
"dotenv": "^17.2.3",
|