@5ive-tech/cli 1.0.4
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 +226 -0
- package/dist/assets/vm/five_vm_wasm.d.ts +762 -0
- package/dist/assets/vm/five_vm_wasm.js +3754 -0
- package/dist/assets/vm/five_vm_wasm_bg.wasm +0 -0
- package/dist/assets/vm/five_vm_wasm_bg.wasm.d.ts +247 -0
- package/dist/assets/vm/package.json +11 -0
- package/dist/cli.d.ts +47 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +343 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/analyze.d.ts +3 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +435 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +66 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/compile.d.ts +3 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +872 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +431 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy-and-execute.d.ts +3 -0
- package/dist/commands/deploy-and-execute.d.ts.map +1 -0
- package/dist/commands/deploy-and-execute.js +317 -0
- package/dist/commands/deploy-and-execute.js.map +1 -0
- package/dist/commands/deploy.d.ts +21 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +806 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/donate.d.ts +4 -0
- package/dist/commands/donate.d.ts.map +1 -0
- package/dist/commands/donate.js +104 -0
- package/dist/commands/donate.js.map +1 -0
- package/dist/commands/execute.d.ts +6 -0
- package/dist/commands/execute.d.ts.map +1 -0
- package/dist/commands/execute.js +749 -0
- package/dist/commands/execute.js.map +1 -0
- package/dist/commands/fmt.d.ts +3 -0
- package/dist/commands/fmt.d.ts.map +1 -0
- package/dist/commands/fmt.js +327 -0
- package/dist/commands/fmt.js.map +1 -0
- package/dist/commands/help.d.ts +6 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +224 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/index.d.ts +45 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +119 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +887 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/local.d.ts +3 -0
- package/dist/commands/local.d.ts.map +1 -0
- package/dist/commands/local.js +703 -0
- package/dist/commands/local.js.map +1 -0
- package/dist/commands/namespace.d.ts +3 -0
- package/dist/commands/namespace.d.ts.map +1 -0
- package/dist/commands/namespace.js +328 -0
- package/dist/commands/namespace.js.map +1 -0
- package/dist/commands/template.d.ts +4 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +486 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/test.d.ts +6 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +890 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/version.d.ts +6 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +339 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +69 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +261 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +21 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/types.d.ts +35 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +105 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/project/ProjectLoader.d.ts +12 -0
- package/dist/project/ProjectLoader.d.ts.map +1 -0
- package/dist/project/ProjectLoader.js +115 -0
- package/dist/project/ProjectLoader.js.map +1 -0
- package/dist/types.d.ts +334 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/AccountFixtureGenerator.d.ts +48 -0
- package/dist/utils/AccountFixtureGenerator.d.ts.map +1 -0
- package/dist/utils/AccountFixtureGenerator.js +265 -0
- package/dist/utils/AccountFixtureGenerator.js.map +1 -0
- package/dist/utils/FiveFileManager.d.ts +96 -0
- package/dist/utils/FiveFileManager.d.ts.map +1 -0
- package/dist/utils/FiveFileManager.js +329 -0
- package/dist/utils/FiveFileManager.js.map +1 -0
- package/dist/utils/ascii-art.d.ts +72 -0
- package/dist/utils/ascii-art.d.ts.map +1 -0
- package/dist/utils/ascii-art.js +314 -0
- package/dist/utils/ascii-art.js.map +1 -0
- package/dist/utils/cli-ui.d.ts +39 -0
- package/dist/utils/cli-ui.d.ts.map +1 -0
- package/dist/utils/cli-ui.js +75 -0
- package/dist/utils/cli-ui.js.map +1 -0
- package/dist/utils/fileUtils.d.ts +25 -0
- package/dist/utils/fileUtils.d.ts.map +1 -0
- package/dist/utils/fileUtils.js +50 -0
- package/dist/utils/fileUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +53 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +287 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wasm/compiler.d.ts +101 -0
- package/dist/wasm/compiler.d.ts.map +1 -0
- package/dist/wasm/compiler.js +906 -0
- package/dist/wasm/compiler.js.map +1 -0
- package/dist/wasm/loader.d.ts +2 -0
- package/dist/wasm/loader.d.ts.map +1 -0
- package/dist/wasm/loader.js +90 -0
- package/dist/wasm/loader.js.map +1 -0
- package/dist/wasm/vm.d.ts +32 -0
- package/dist/wasm/vm.d.ts.map +1 -0
- package/dist/wasm/vm.js +440 -0
- package/dist/wasm/vm.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
// Five CLI configuration manager.
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { homedir } from 'os';
|
|
5
|
+
import { DEFAULT_CONFIG, CONFIG_VALIDATORS } from './types.js';
|
|
6
|
+
export class ConfigError extends Error {
|
|
7
|
+
cause;
|
|
8
|
+
constructor(message, cause) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.cause = cause;
|
|
11
|
+
this.name = 'ConfigError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class ConfigManager {
|
|
15
|
+
static instance;
|
|
16
|
+
config;
|
|
17
|
+
configPath;
|
|
18
|
+
initialized = false;
|
|
19
|
+
constructor() {
|
|
20
|
+
this.config = { ...DEFAULT_CONFIG };
|
|
21
|
+
this.configPath = this.getConfigPath();
|
|
22
|
+
}
|
|
23
|
+
static getInstance() {
|
|
24
|
+
if (!ConfigManager.instance) {
|
|
25
|
+
ConfigManager.instance = new ConfigManager();
|
|
26
|
+
}
|
|
27
|
+
return ConfigManager.instance;
|
|
28
|
+
}
|
|
29
|
+
getConfigPath() {
|
|
30
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME;
|
|
31
|
+
const configDir = xdgConfigHome
|
|
32
|
+
? join(xdgConfigHome, 'five')
|
|
33
|
+
: join(homedir(), '.config', 'five');
|
|
34
|
+
return join(configDir, 'config.json');
|
|
35
|
+
}
|
|
36
|
+
async init() {
|
|
37
|
+
try {
|
|
38
|
+
const configDir = this.configPath.replace('/config.json', '');
|
|
39
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
40
|
+
try {
|
|
41
|
+
await this.load();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof ConfigError && error.message.includes('not found')) {
|
|
45
|
+
await this.save();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this.initialized = true;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw new ConfigError(`Failed to initialize configuration: ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async load() {
|
|
58
|
+
try {
|
|
59
|
+
const configData = await fs.readFile(this.configPath, 'utf8');
|
|
60
|
+
let parsedConfig;
|
|
61
|
+
try {
|
|
62
|
+
parsedConfig = JSON.parse(configData);
|
|
63
|
+
}
|
|
64
|
+
catch (parseError) {
|
|
65
|
+
throw new ConfigError(`Invalid JSON in config file: ${this.configPath}`, parseError instanceof Error ? parseError : undefined);
|
|
66
|
+
}
|
|
67
|
+
if (!CONFIG_VALIDATORS.isValidConfig(parsedConfig)) {
|
|
68
|
+
throw new ConfigError(`Invalid configuration structure in: ${this.configPath}`);
|
|
69
|
+
}
|
|
70
|
+
this.config = {
|
|
71
|
+
...DEFAULT_CONFIG,
|
|
72
|
+
...parsedConfig,
|
|
73
|
+
networks: {
|
|
74
|
+
...DEFAULT_CONFIG.networks,
|
|
75
|
+
...parsedConfig.networks,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
return this.config;
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error instanceof ConfigError) {
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
if (error?.code === 'ENOENT') {
|
|
85
|
+
throw new ConfigError(`Config file not found: ${this.configPath}`);
|
|
86
|
+
}
|
|
87
|
+
throw new ConfigError(`Failed to load configuration: ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async save() {
|
|
91
|
+
try {
|
|
92
|
+
if (!CONFIG_VALIDATORS.isValidConfig(this.config)) {
|
|
93
|
+
throw new ConfigError('Cannot save invalid configuration');
|
|
94
|
+
}
|
|
95
|
+
const configDir = this.configPath.replace('/config.json', '');
|
|
96
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
97
|
+
const configData = JSON.stringify(this.config, null, 2);
|
|
98
|
+
await fs.writeFile(this.configPath, configData, 'utf8');
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
throw new ConfigError(`Failed to save configuration: ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async get() {
|
|
105
|
+
if (!this.initialized) {
|
|
106
|
+
await this.init();
|
|
107
|
+
}
|
|
108
|
+
return { ...this.config };
|
|
109
|
+
}
|
|
110
|
+
async set(updates) {
|
|
111
|
+
if (!this.initialized) {
|
|
112
|
+
await this.init();
|
|
113
|
+
}
|
|
114
|
+
const updatedConfig = {
|
|
115
|
+
...this.config,
|
|
116
|
+
...updates,
|
|
117
|
+
};
|
|
118
|
+
// If networks are being updated, merge with existing networks
|
|
119
|
+
if (updates.networks) {
|
|
120
|
+
updatedConfig.networks = {
|
|
121
|
+
...this.config.networks,
|
|
122
|
+
...updates.networks,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
// Validate the updated configuration
|
|
126
|
+
if (!CONFIG_VALIDATORS.isValidConfig(updatedConfig)) {
|
|
127
|
+
throw new ConfigError('Invalid configuration update');
|
|
128
|
+
}
|
|
129
|
+
this.config = updatedConfig;
|
|
130
|
+
await this.save();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Set the target network
|
|
134
|
+
* @param target The target network to set
|
|
135
|
+
*/
|
|
136
|
+
async setTarget(target) {
|
|
137
|
+
if (!CONFIG_VALIDATORS.isValidTarget(target)) {
|
|
138
|
+
throw new ConfigError(`Invalid target: ${target}`);
|
|
139
|
+
}
|
|
140
|
+
await this.set({ target });
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Set the keypair file path
|
|
144
|
+
* @param keypairPath Path to the keypair file
|
|
145
|
+
*/
|
|
146
|
+
async setKeypair(keypairPath) {
|
|
147
|
+
await this.set({ keypair: keypairPath });
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Toggle config display in command output
|
|
151
|
+
* @param show Whether to show config details
|
|
152
|
+
*/
|
|
153
|
+
async setShowConfig(show) {
|
|
154
|
+
await this.set({ showConfig: show });
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get the current target network
|
|
158
|
+
*/
|
|
159
|
+
async getTarget() {
|
|
160
|
+
const config = await this.get();
|
|
161
|
+
return config.target;
|
|
162
|
+
}
|
|
163
|
+
async getCurrentNetworkEndpoint() {
|
|
164
|
+
const config = await this.get();
|
|
165
|
+
return config.networks[config.target];
|
|
166
|
+
}
|
|
167
|
+
async reset() {
|
|
168
|
+
this.config = { ...DEFAULT_CONFIG };
|
|
169
|
+
await this.save();
|
|
170
|
+
}
|
|
171
|
+
isInitialized() {
|
|
172
|
+
return this.initialized;
|
|
173
|
+
}
|
|
174
|
+
async applyOverrides(overrides) {
|
|
175
|
+
const baseConfig = await this.get();
|
|
176
|
+
const mergedConfig = {
|
|
177
|
+
...baseConfig,
|
|
178
|
+
target: overrides.target || baseConfig.target,
|
|
179
|
+
keypairPath: overrides.keypair || baseConfig.keypair || this.getDefaultKeypairPath()
|
|
180
|
+
};
|
|
181
|
+
if (overrides.network) {
|
|
182
|
+
mergedConfig.networks = {
|
|
183
|
+
...baseConfig.networks,
|
|
184
|
+
[mergedConfig.target]: {
|
|
185
|
+
...baseConfig.networks[mergedConfig.target],
|
|
186
|
+
rpcUrl: overrides.network
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return mergedConfig;
|
|
191
|
+
}
|
|
192
|
+
static getTargetPrefix(target) {
|
|
193
|
+
const colors = {
|
|
194
|
+
wasm: '\x1b[36m', // cyan
|
|
195
|
+
local: '\x1b[90m', // gray
|
|
196
|
+
devnet: '\x1b[33m', // yellow
|
|
197
|
+
testnet: '\x1b[35m', // magenta
|
|
198
|
+
mainnet: '\x1b[31m' // red
|
|
199
|
+
};
|
|
200
|
+
const reset = '\x1b[0m';
|
|
201
|
+
const color = colors[target] || colors.devnet;
|
|
202
|
+
return `${color}[${target}]${reset}`;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Set program ID for a target
|
|
206
|
+
* @param programId The Five VM program ID
|
|
207
|
+
* @param target The target to set it for (uses current target if not specified)
|
|
208
|
+
*/
|
|
209
|
+
async setProgramId(programId, target) {
|
|
210
|
+
const config = await this.get();
|
|
211
|
+
const t = target || config.target;
|
|
212
|
+
if (!CONFIG_VALIDATORS.isValidTarget(t)) {
|
|
213
|
+
throw new ConfigError(`Invalid target: ${t}`);
|
|
214
|
+
}
|
|
215
|
+
const programIds = {
|
|
216
|
+
...(config.programIds || {}),
|
|
217
|
+
[t]: programId
|
|
218
|
+
};
|
|
219
|
+
await this.set({ programIds });
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get program ID for a target
|
|
223
|
+
* @param target The target to get it for (uses current target if not specified)
|
|
224
|
+
*/
|
|
225
|
+
async getProgramId(target) {
|
|
226
|
+
const config = await this.get();
|
|
227
|
+
const t = target || config.target;
|
|
228
|
+
if (!CONFIG_VALIDATORS.isValidTarget(t)) {
|
|
229
|
+
throw new ConfigError(`Invalid target: ${t}`);
|
|
230
|
+
}
|
|
231
|
+
return config.programIds?.[t];
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Clear program ID for a target
|
|
235
|
+
* @param target The target to clear it for (uses current target if not specified)
|
|
236
|
+
*/
|
|
237
|
+
async clearProgramId(target) {
|
|
238
|
+
const config = await this.get();
|
|
239
|
+
const t = target || config.target;
|
|
240
|
+
if (!CONFIG_VALIDATORS.isValidTarget(t)) {
|
|
241
|
+
throw new ConfigError(`Invalid target: ${t}`);
|
|
242
|
+
}
|
|
243
|
+
if (config.programIds?.[t]) {
|
|
244
|
+
const programIds = { ...config.programIds };
|
|
245
|
+
delete programIds[t];
|
|
246
|
+
await this.set({ programIds: Object.keys(programIds).length > 0 ? programIds : undefined });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get all program IDs
|
|
251
|
+
*/
|
|
252
|
+
async getAllProgramIds() {
|
|
253
|
+
const config = await this.get();
|
|
254
|
+
return config.programIds || {};
|
|
255
|
+
}
|
|
256
|
+
getDefaultKeypairPath() {
|
|
257
|
+
return join(homedir(), '.config', 'solana', 'id.json');
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
export const configManager = ConfigManager.getInstance();
|
|
261
|
+
//# sourceMappingURL=ConfigManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type { FiveConfig, ConfigTarget, NetworkEndpoint, } from './types.js';
|
|
2
|
+
export { DEFAULT_NETWORKS, DEFAULT_CONFIG, CONFIG_VALIDATORS, } from './types.js';
|
|
3
|
+
export { ConfigManager, ConfigError, configManager, } from './ConfigManager.js';
|
|
4
|
+
import type { FiveConfig } from './types.js';
|
|
5
|
+
import { ConfigManager } from './ConfigManager.js';
|
|
6
|
+
export declare function getConfigManager(): ConfigManager;
|
|
7
|
+
export declare function initConfig(): Promise<void>;
|
|
8
|
+
export declare function getConfig(): Promise<FiveConfig>;
|
|
9
|
+
export declare function setConfig(updates: Partial<FiveConfig>): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,UAAU,EACV,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAGrD;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Configuration constants and defaults
|
|
2
|
+
export { DEFAULT_NETWORKS, DEFAULT_CONFIG, CONFIG_VALIDATORS, } from './types.js';
|
|
3
|
+
// Configuration manager class and instance
|
|
4
|
+
export { ConfigManager, ConfigError, configManager, } from './ConfigManager.js';
|
|
5
|
+
import { ConfigManager } from './ConfigManager.js';
|
|
6
|
+
export function getConfigManager() {
|
|
7
|
+
return ConfigManager.getInstance();
|
|
8
|
+
}
|
|
9
|
+
export async function initConfig() {
|
|
10
|
+
const manager = ConfigManager.getInstance();
|
|
11
|
+
await manager.init();
|
|
12
|
+
}
|
|
13
|
+
export async function getConfig() {
|
|
14
|
+
const manager = ConfigManager.getInstance();
|
|
15
|
+
return await manager.get();
|
|
16
|
+
}
|
|
17
|
+
export async function setConfig(updates) {
|
|
18
|
+
const manager = ConfigManager.getInstance();
|
|
19
|
+
await manager.set(updates);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAOA,uCAAuC;AACvC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,2CAA2C;AAC3C,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,WAAW,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA4B;IAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type ConfigTarget = 'wasm' | 'local' | 'devnet' | 'testnet' | 'mainnet';
|
|
2
|
+
export interface NetworkEndpoint {
|
|
3
|
+
rpcUrl: string;
|
|
4
|
+
wsUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FiveConfig {
|
|
7
|
+
target: ConfigTarget;
|
|
8
|
+
networks: Record<ConfigTarget, NetworkEndpoint>;
|
|
9
|
+
keypair?: string;
|
|
10
|
+
showConfig: boolean;
|
|
11
|
+
programIds?: Partial<Record<ConfigTarget, string>>;
|
|
12
|
+
wasm?: {
|
|
13
|
+
loader?: 'auto' | 'node' | 'bundler';
|
|
14
|
+
modulePaths?: string[];
|
|
15
|
+
};
|
|
16
|
+
logging?: {
|
|
17
|
+
auditLogDir?: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare const DEFAULT_NETWORKS: Record<ConfigTarget, NetworkEndpoint>;
|
|
21
|
+
export declare const DEFAULT_CONFIG: FiveConfig;
|
|
22
|
+
export interface ConfigOverrides {
|
|
23
|
+
target?: ConfigTarget;
|
|
24
|
+
network?: string;
|
|
25
|
+
keypair?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare const CONFIG_VALIDATORS: {
|
|
28
|
+
isValidTarget(target: string): target is ConfigTarget;
|
|
29
|
+
isValidNetworkEndpoint(endpoint: any): endpoint is NetworkEndpoint;
|
|
30
|
+
/**
|
|
31
|
+
* Validates if a complete config object is valid
|
|
32
|
+
*/
|
|
33
|
+
isValidConfig(config: any): config is FiveConfig;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IAEF,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,CAqBlE,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAS5B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB;0BACN,MAAM,GAAG,MAAM,IAAI,YAAY;qCAIpB,GAAG,GAAG,QAAQ,IAAI,eAAe;IAUlE;;OAEG;0BACmB,GAAG,GAAG,MAAM,IAAI,UAAU;CAyDjD,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export const DEFAULT_NETWORKS = {
|
|
2
|
+
wasm: {
|
|
3
|
+
rpcUrl: 'wasm://local-execution',
|
|
4
|
+
wsUrl: undefined,
|
|
5
|
+
},
|
|
6
|
+
local: {
|
|
7
|
+
rpcUrl: 'http://127.0.0.1:8899',
|
|
8
|
+
wsUrl: 'ws://127.0.0.1:8900',
|
|
9
|
+
},
|
|
10
|
+
devnet: {
|
|
11
|
+
rpcUrl: 'https://api.devnet.solana.com',
|
|
12
|
+
wsUrl: 'wss://api.devnet.solana.com',
|
|
13
|
+
},
|
|
14
|
+
testnet: {
|
|
15
|
+
rpcUrl: 'https://api.testnet.solana.com',
|
|
16
|
+
wsUrl: 'wss://api.testnet.solana.com',
|
|
17
|
+
},
|
|
18
|
+
mainnet: {
|
|
19
|
+
rpcUrl: 'https://api.mainnet-beta.solana.com',
|
|
20
|
+
wsUrl: 'wss://api.mainnet-beta.solana.com',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export const DEFAULT_CONFIG = {
|
|
24
|
+
target: 'devnet',
|
|
25
|
+
networks: DEFAULT_NETWORKS,
|
|
26
|
+
showConfig: false,
|
|
27
|
+
wasm: {
|
|
28
|
+
loader: 'auto',
|
|
29
|
+
modulePaths: [],
|
|
30
|
+
},
|
|
31
|
+
logging: {}
|
|
32
|
+
};
|
|
33
|
+
export const CONFIG_VALIDATORS = {
|
|
34
|
+
isValidTarget(target) {
|
|
35
|
+
return ['wasm', 'local', 'devnet', 'testnet', 'mainnet'].includes(target);
|
|
36
|
+
},
|
|
37
|
+
isValidNetworkEndpoint(endpoint) {
|
|
38
|
+
return (typeof endpoint === 'object' &&
|
|
39
|
+
endpoint !== null &&
|
|
40
|
+
typeof endpoint.rpcUrl === 'string' &&
|
|
41
|
+
endpoint.rpcUrl.length > 0 &&
|
|
42
|
+
(endpoint.wsUrl === undefined || typeof endpoint.wsUrl === 'string'));
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Validates if a complete config object is valid
|
|
46
|
+
*/
|
|
47
|
+
isValidConfig(config) {
|
|
48
|
+
if (typeof config !== 'object' || config === null) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
// Validate target
|
|
52
|
+
if (!this.isValidTarget(config.target)) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
// Validate networks
|
|
56
|
+
if (typeof config.networks !== 'object' || config.networks === null) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
for (const [target, endpoint] of Object.entries(config.networks)) {
|
|
60
|
+
if (!this.isValidTarget(target) || !this.isValidNetworkEndpoint(endpoint)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Validate optional fields
|
|
65
|
+
if (config.keypair !== undefined && typeof config.keypair !== 'string') {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
// Validate program IDs
|
|
69
|
+
if (config.programIds !== undefined) {
|
|
70
|
+
if (typeof config.programIds !== 'object' || config.programIds === null)
|
|
71
|
+
return false;
|
|
72
|
+
for (const [target, programId] of Object.entries(config.programIds)) {
|
|
73
|
+
if (!this.isValidTarget(target))
|
|
74
|
+
return false;
|
|
75
|
+
if (typeof programId !== 'string' || programId.length === 0)
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Optional wasm config
|
|
80
|
+
if (config.wasm !== undefined) {
|
|
81
|
+
if (typeof config.wasm !== 'object' || config.wasm === null)
|
|
82
|
+
return false;
|
|
83
|
+
if (config.wasm.loader !== undefined && !['auto', 'node', 'bundler'].includes(config.wasm.loader))
|
|
84
|
+
return false;
|
|
85
|
+
if (config.wasm.modulePaths !== undefined) {
|
|
86
|
+
if (!Array.isArray(config.wasm.modulePaths))
|
|
87
|
+
return false;
|
|
88
|
+
if (!config.wasm.modulePaths.every((p) => typeof p === 'string'))
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Optional logging
|
|
93
|
+
if (config.logging !== undefined) {
|
|
94
|
+
if (typeof config.logging !== 'object' || config.logging === null)
|
|
95
|
+
return false;
|
|
96
|
+
if (config.logging.auditLogDir !== undefined && typeof config.logging.auditLogDir !== 'string')
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
if (typeof config.showConfig !== 'boolean') {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,wBAAsB,IAAI,kBAYzB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Five CLI entrypoint.
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { createCLI } from './cli.js';
|
|
5
|
+
export async function main() {
|
|
6
|
+
try {
|
|
7
|
+
const cli = createCLI({
|
|
8
|
+
verbose: process.argv.includes('--verbose') || process.argv.includes('-v'),
|
|
9
|
+
debug: process.argv.includes('--debug')
|
|
10
|
+
});
|
|
11
|
+
await cli.run(process.argv);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
console.error(chalk.red('Fatal error:'), error);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Execute main when run directly (npx/global installs included).
|
|
19
|
+
const isMainModule = (import.meta.url === `file://${process.argv[1]}` ||
|
|
20
|
+
process.argv[1].endsWith('dist/index.js') ||
|
|
21
|
+
process.argv[1].endsWith('/five') ||
|
|
22
|
+
process.argv[1].includes('five-cli'));
|
|
23
|
+
if (isMainModule) {
|
|
24
|
+
main().catch(error => {
|
|
25
|
+
console.error('Fatal CLI error:', error);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,uBAAuB;AAEvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1E,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;SACxC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,YAAY,GAAG,CACnB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrC,CAAC;AAEF,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BuildManifest, ProjectConfig } from '../types.js';
|
|
2
|
+
export interface LoadedProjectConfig {
|
|
3
|
+
config: ProjectConfig;
|
|
4
|
+
configPath: string;
|
|
5
|
+
rootDir: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadProjectConfig(projectPath?: string, cwd?: string): Promise<LoadedProjectConfig | null>;
|
|
8
|
+
export declare function findConfigPath(projectPath?: string, cwd?: string): Promise<string | null>;
|
|
9
|
+
export declare function loadBuildManifest(rootDir: string): Promise<BuildManifest | null>;
|
|
10
|
+
export declare function writeBuildManifest(rootDir: string, manifest: BuildManifest): Promise<string>;
|
|
11
|
+
export declare function computeHash(data: Buffer | Uint8Array): string;
|
|
12
|
+
//# sourceMappingURL=ProjectLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectLoader.d.ts","sourceRoot":"","sources":["../../src/project/ProjectLoader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAqB,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,EACpB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAmDrC;AAED,wBAAsB,cAAc,CAClC,WAAW,CAAC,EAAE,MAAM,EACpB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoBxB;AAsBD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAQtF;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAI7D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { readFile, access, mkdir, writeFile } from 'fs/promises';
|
|
2
|
+
import { dirname, isAbsolute, join, resolve } from 'path';
|
|
3
|
+
import { createHash } from 'crypto';
|
|
4
|
+
import { parse as parseToml } from '@iarna/toml';
|
|
5
|
+
export async function loadProjectConfig(projectPath, cwd = process.cwd()) {
|
|
6
|
+
const configPath = await findConfigPath(projectPath, cwd);
|
|
7
|
+
if (!configPath) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const fileContent = await readFile(configPath, 'utf8');
|
|
11
|
+
let parsed;
|
|
12
|
+
try {
|
|
13
|
+
parsed = parseToml(fileContent);
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
throw new Error(`Failed to parse five.toml at ${configPath}: ${e}`);
|
|
17
|
+
}
|
|
18
|
+
const rootDir = dirname(configPath);
|
|
19
|
+
const project = parsed.project ?? {};
|
|
20
|
+
const build = parsed.build ?? {};
|
|
21
|
+
const optimizations = parsed.optimizations ?? {};
|
|
22
|
+
const deploy = parsed.deploy ?? {};
|
|
23
|
+
const modules = parsed.modules ?? {};
|
|
24
|
+
const name = project.name ?? 'five-project';
|
|
25
|
+
const target = (project.target ?? 'vm');
|
|
26
|
+
const config = {
|
|
27
|
+
name,
|
|
28
|
+
version: project.version ?? '0.1.0',
|
|
29
|
+
description: project.description,
|
|
30
|
+
sourceDir: project.source_dir ?? 'src',
|
|
31
|
+
buildDir: project.build_dir ?? 'build',
|
|
32
|
+
target,
|
|
33
|
+
entryPoint: project.entry_point ?? build.entry_point,
|
|
34
|
+
outputArtifactName: build.output_artifact_name ?? name,
|
|
35
|
+
cluster: deploy.cluster ?? deploy.network,
|
|
36
|
+
commitment: deploy.commitment,
|
|
37
|
+
rpcUrl: deploy.rpc_url,
|
|
38
|
+
programId: deploy.program_id,
|
|
39
|
+
namespaceManager: deploy.namespace_manager ?? deploy.namespace_manager_script,
|
|
40
|
+
keypairPath: deploy.keypair_path,
|
|
41
|
+
multiFileMode: build.multi_file_mode ?? false,
|
|
42
|
+
optimizations: {
|
|
43
|
+
enableCompression: optimizations.enable_compression ?? true,
|
|
44
|
+
enableConstraintOptimization: optimizations.enable_constraint_optimization ?? true,
|
|
45
|
+
optimizationLevel: 'production'
|
|
46
|
+
},
|
|
47
|
+
dependencies: [],
|
|
48
|
+
modules: modules
|
|
49
|
+
};
|
|
50
|
+
return { config, configPath, rootDir };
|
|
51
|
+
}
|
|
52
|
+
export async function findConfigPath(projectPath, cwd = process.cwd()) {
|
|
53
|
+
if (projectPath) {
|
|
54
|
+
const candidate = isAbsolute(projectPath) ? projectPath : resolve(cwd, projectPath);
|
|
55
|
+
// If a directory is provided, look for five.toml inside
|
|
56
|
+
try {
|
|
57
|
+
await access(candidate);
|
|
58
|
+
const asToml = candidate.endsWith('.toml') ? candidate : join(candidate, 'five.toml');
|
|
59
|
+
try {
|
|
60
|
+
await access(asToml);
|
|
61
|
+
return asToml;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// fallthrough to upward search from candidate dir
|
|
65
|
+
return await searchUpwards(candidate);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return await searchUpwards(cwd);
|
|
73
|
+
}
|
|
74
|
+
async function searchUpwards(startDir) {
|
|
75
|
+
let current = resolve(startDir);
|
|
76
|
+
while (true) {
|
|
77
|
+
const candidate = join(current, 'five.toml');
|
|
78
|
+
try {
|
|
79
|
+
await access(candidate);
|
|
80
|
+
return candidate;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// continue
|
|
84
|
+
}
|
|
85
|
+
const parent = dirname(current);
|
|
86
|
+
if (parent === current) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
current = parent;
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
export async function loadBuildManifest(rootDir) {
|
|
94
|
+
const manifestPath = join(rootDir, '.five', 'build.json');
|
|
95
|
+
try {
|
|
96
|
+
const content = await readFile(manifestPath, 'utf8');
|
|
97
|
+
return JSON.parse(content);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export async function writeBuildManifest(rootDir, manifest) {
|
|
104
|
+
const manifestDir = join(rootDir, '.five');
|
|
105
|
+
await mkdir(manifestDir, { recursive: true });
|
|
106
|
+
const manifestPath = join(manifestDir, 'build.json');
|
|
107
|
+
await writeFile(manifestPath, JSON.stringify(manifest, null, 2));
|
|
108
|
+
return manifestPath;
|
|
109
|
+
}
|
|
110
|
+
export function computeHash(data) {
|
|
111
|
+
const hash = createHash('sha256');
|
|
112
|
+
hash.update(data);
|
|
113
|
+
return hash.digest('hex');
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=ProjectLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectLoader.js","sourceRoot":"","sources":["../../src/project/ProjectLoader.ts"],"names":[],"mappings":"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"}
|