@taqueria/protocol 0.25.21-rc → 0.25.22-rc
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/EphemeralState.d.ts +208 -208
- package/ParsedPluginInfo.d.ts +542 -542
- package/PluginInfo.d.ts +661 -661
- package/PluginSchema.d.ts +1314 -1314
- package/TaqError.d.ts +1 -1
- package/TaqError.d.ts.map +1 -1
- package/TaqError.js.map +1 -1
- package/TaqError.mjs.map +1 -1
- package/i18n.js +1 -1
- package/i18n.js.map +1 -1
- package/i18n.mjs +1 -1
- package/i18n.mjs.map +1 -1
- package/out/types/Config.d.ts +318 -318
- package/out/types/ConfigAccount.d.js +19 -0
- package/out/types/ConfigAccount.d.js.map +1 -0
- package/out/types/ConfigAccount.d.mjs +1 -0
- package/out/types/ConfigAccount.d.mjs.map +1 -0
- package/out/types/ConfigAccount.d.ts +106 -0
- package/out/types/ConfigAccount.d.ts.map +1 -0
- package/out/types/ConfigAccount.js +80 -0
- package/out/types/ConfigAccount.js.map +1 -0
- package/out/types/ConfigAccount.mjs +49 -0
- package/out/types/ConfigAccount.mjs.map +1 -0
- package/out/types/ConfigEnvironmentFileV2.d.js +19 -0
- package/out/types/ConfigEnvironmentFileV2.d.js.map +1 -0
- package/out/types/ConfigEnvironmentFileV2.d.mjs +1 -0
- package/out/types/ConfigEnvironmentFileV2.d.mjs.map +1 -0
- package/out/types/ConfigEnvironmentFileV2.d.ts +153 -0
- package/out/types/ConfigEnvironmentFileV2.d.ts.map +1 -0
- package/out/types/ConfigEnvironmentFileV2.js +80 -0
- package/out/types/ConfigEnvironmentFileV2.js.map +1 -0
- package/out/types/ConfigEnvironmentFileV2.mjs +49 -0
- package/out/types/ConfigEnvironmentFileV2.mjs.map +1 -0
- package/out/types/ConfigFileV1.d.js +19 -0
- package/out/types/ConfigFileV1.d.js.map +1 -0
- package/out/types/ConfigFileV1.d.mjs +1 -0
- package/out/types/ConfigFileV1.d.mjs.map +1 -0
- package/out/types/ConfigFileV1.d.ts +1370 -0
- package/out/types/ConfigFileV1.d.ts.map +1 -0
- package/out/types/ConfigFileV1.js +80 -0
- package/out/types/ConfigFileV1.js.map +1 -0
- package/out/types/ConfigFileV1.mjs +49 -0
- package/out/types/ConfigFileV1.mjs.map +1 -0
- package/out/types/ConfigFileV2.d.js +19 -0
- package/out/types/ConfigFileV2.d.js.map +1 -0
- package/out/types/ConfigFileV2.d.mjs +1 -0
- package/out/types/ConfigFileV2.d.mjs.map +1 -0
- package/out/types/ConfigFileV2.d.ts +741 -0
- package/out/types/ConfigFileV2.d.ts.map +1 -0
- package/out/types/ConfigFileV2.js +80 -0
- package/out/types/ConfigFileV2.js.map +1 -0
- package/out/types/ConfigFileV2.mjs +49 -0
- package/out/types/ConfigFileV2.mjs.map +1 -0
- package/out/types/CurrencyAmountV2.d.js +19 -0
- package/out/types/CurrencyAmountV2.d.js.map +1 -0
- package/out/types/CurrencyAmountV2.d.mjs +1 -0
- package/out/types/CurrencyAmountV2.d.mjs.map +1 -0
- package/out/types/CurrencyAmountV2.d.ts +56 -0
- package/out/types/CurrencyAmountV2.d.ts.map +1 -0
- package/out/types/CurrencyAmountV2.js +80 -0
- package/out/types/CurrencyAmountV2.js.map +1 -0
- package/out/types/CurrencyAmountV2.mjs +49 -0
- package/out/types/CurrencyAmountV2.mjs.map +1 -0
- package/out/types/EphemeralState.d.ts +1743 -1743
- package/out/types/LoadedConfig.d.ts +318 -318
- package/out/types/Operation.d.ts +575 -575
- package/out/types/ParsedConfig.d.ts +318 -318
- package/out/types/ParsedOperation.d.ts +420 -420
- package/out/types/ParsedTemplate.d.ts +420 -420
- package/out/types/PluginInfo.d.ts +869 -869
- package/out/types/PluginSchema.d.ts +2985 -2985
- package/out/types/ProxyTaskArgs.d.ts +434 -434
- package/out/types/ProxyTemplateArgs.d.ts +434 -434
- package/out/types/RequestArgs.d.ts +434 -434
- package/out/types/Template.d.ts +575 -575
- package/out/types-strict.d.js.map +1 -1
- package/out/types-strict.d.ts +97 -9
- package/out/types-strict.d.ts.map +1 -1
- package/out/types-strict.js.map +1 -1
- package/out/types-zod.d.js.map +1 -1
- package/out/types-zod.d.ts +3119 -2557
- package/out/types-zod.d.ts.map +1 -1
- package/out/types-zod.js +62 -7
- package/out/types-zod.js.map +1 -1
- package/out/types-zod.mjs +57 -7
- package/out/types-zod.mjs.map +1 -1
- package/package.json +2 -2
- package/types-config-files.d.ts +12 -0
- package/types-config-files.d.ts.map +1 -0
- package/types-config-files.js +267 -0
- package/types-config-files.js.map +1 -0
- package/types-config-files.mjs +239 -0
- package/types-config-files.mjs.map +1 -0
- package/types.d.ts +85 -7
- package/types.d.ts.map +1 -1
- package/types.js.map +1 -1
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// types-config-files.ts
|
|
21
|
+
var types_config_files_exports = {};
|
|
22
|
+
__export(types_config_files_exports, {
|
|
23
|
+
readConfigFiles: () => readConfigFiles,
|
|
24
|
+
readJsonFileInterceptConfig: () => readJsonFileInterceptConfig,
|
|
25
|
+
writeConfigFiles: () => writeConfigFiles,
|
|
26
|
+
writeJsonFileInterceptConfig: () => writeJsonFileInterceptConfig
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(types_config_files_exports);
|
|
29
|
+
var readJsonFileInterceptConfig = (readJsonFile) => async (filePath) => {
|
|
30
|
+
if (filePath.endsWith(`.taq/config.json`)) {
|
|
31
|
+
return transformConfigFileV2ToConfig(await readConfigFiles(readJsonFile)(filePath));
|
|
32
|
+
}
|
|
33
|
+
return readJsonFile(filePath);
|
|
34
|
+
};
|
|
35
|
+
var readConfigFiles = (readJsonFile) => async (configFilePath) => {
|
|
36
|
+
const configFileObj = await readJsonFile(configFilePath);
|
|
37
|
+
if (configFileObj.version !== `v2`) {
|
|
38
|
+
const configFileSetV2 = transformConfigFileV1ToConfigFileSetV2(configFileObj);
|
|
39
|
+
return configFileSetV2;
|
|
40
|
+
}
|
|
41
|
+
const configFileV2 = configFileObj;
|
|
42
|
+
const envFiles = await Promise.all(
|
|
43
|
+
Object.keys(configFileV2.environments ?? {}).map(async (envName) => {
|
|
44
|
+
try {
|
|
45
|
+
return {
|
|
46
|
+
key: envName,
|
|
47
|
+
value: await readJsonFile(
|
|
48
|
+
configFilePath.replace(`config.json`, `config.local.${envName}.json`)
|
|
49
|
+
)
|
|
50
|
+
};
|
|
51
|
+
} catch {
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
return {
|
|
57
|
+
config: configFileV2,
|
|
58
|
+
environments: Object.fromEntries(envFiles.filter((x) => x.value).map((x) => [x.key, x.value]))
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
var writeJsonFileInterceptConfig = (writeJsonFile) => (filePath) => {
|
|
62
|
+
if (filePath.endsWith(`.taq/config.json`)) {
|
|
63
|
+
return async (config) => {
|
|
64
|
+
return await writeConfigFiles(writeJsonFile)(filePath)(transformConfigToConfigFileV2(config));
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return writeJsonFile(filePath);
|
|
68
|
+
};
|
|
69
|
+
var writeConfigFiles = (writeJsonFile) => (configFilePath) => async (configFileSetV2) => {
|
|
70
|
+
const configFileResult = await writeJsonFile(configFilePath)(configFileSetV2.config);
|
|
71
|
+
await Promise.all(
|
|
72
|
+
Object.entries(configFileSetV2.environments).map(async ([envName, value]) => {
|
|
73
|
+
await writeJsonFile(configFilePath.replace(`config.json`, `config.local.${envName}.json`))(value);
|
|
74
|
+
})
|
|
75
|
+
);
|
|
76
|
+
return configFileResult;
|
|
77
|
+
};
|
|
78
|
+
var removeUndefinedFields = (x) => {
|
|
79
|
+
return JSON.parse(JSON.stringify(x));
|
|
80
|
+
};
|
|
81
|
+
var transformConfigFileV1ToConfigFileSetV2 = (configFileV1) => {
|
|
82
|
+
var _a;
|
|
83
|
+
const config = configFileV1;
|
|
84
|
+
const configFileV2 = {
|
|
85
|
+
version: `v2`,
|
|
86
|
+
language: config.language,
|
|
87
|
+
metadata: config.metadata,
|
|
88
|
+
artifactsDir: config.artifactsDir,
|
|
89
|
+
contractsDir: config.contractsDir,
|
|
90
|
+
accounts: !config.accounts ? void 0 : Object.fromEntries(
|
|
91
|
+
Object.entries(config.accounts).map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }])
|
|
92
|
+
),
|
|
93
|
+
contracts: config.contracts,
|
|
94
|
+
environmentDefault: (_a = config.environment) == null ? void 0 : _a.default,
|
|
95
|
+
environments: Object.fromEntries(
|
|
96
|
+
Object.entries(config.environment ?? {}).filter(([k, v]) => k !== `default`).map(([k, v]) => [k, v]).map(([k, v]) => [k, {
|
|
97
|
+
type: v.sandboxes.length ? `flextesa` : `simple`,
|
|
98
|
+
...(() => {
|
|
99
|
+
const vClone = { ...v };
|
|
100
|
+
delete vClone.networks;
|
|
101
|
+
delete vClone.sandboxes;
|
|
102
|
+
return vClone;
|
|
103
|
+
})(),
|
|
104
|
+
networkName: v.networks[0],
|
|
105
|
+
sandboxName: v.sandboxes[0],
|
|
106
|
+
...[
|
|
107
|
+
...v.networks.map((k2) => {
|
|
108
|
+
var _a2;
|
|
109
|
+
return (_a2 = config.network) == null ? void 0 : _a2[k2];
|
|
110
|
+
}),
|
|
111
|
+
...v.sandboxes.map((k2) => {
|
|
112
|
+
var _a2;
|
|
113
|
+
return (_a2 = config.sandbox) == null ? void 0 : _a2[k2];
|
|
114
|
+
})
|
|
115
|
+
][0]
|
|
116
|
+
}])
|
|
117
|
+
),
|
|
118
|
+
plugins: config.plugins
|
|
119
|
+
};
|
|
120
|
+
const environmentsV2 = {};
|
|
121
|
+
return removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });
|
|
122
|
+
};
|
|
123
|
+
var transformConfigToConfigFileV2 = (config) => {
|
|
124
|
+
const configFileV2 = {
|
|
125
|
+
version: `v2`,
|
|
126
|
+
language: config.language,
|
|
127
|
+
metadata: config.metadata,
|
|
128
|
+
artifactsDir: config.artifactsDir,
|
|
129
|
+
contractsDir: config.contractsDir,
|
|
130
|
+
accounts: !config.accounts ? void 0 : Object.fromEntries(
|
|
131
|
+
Object.entries(config.accounts).map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }])
|
|
132
|
+
),
|
|
133
|
+
contracts: config.contracts,
|
|
134
|
+
environmentDefault: config.environment.default,
|
|
135
|
+
environments: Object.fromEntries(
|
|
136
|
+
Object.entries(config.environment).filter(([k, v]) => k !== `default`).map(([k, v]) => [k, v]).map(([k, v]) => [k, {
|
|
137
|
+
type: v.sandboxes.length ? `flextesa` : `simple`,
|
|
138
|
+
...(() => {
|
|
139
|
+
const vClone = { ...v };
|
|
140
|
+
delete vClone.networks;
|
|
141
|
+
delete vClone.sandboxes;
|
|
142
|
+
return vClone;
|
|
143
|
+
})(),
|
|
144
|
+
networkName: v.networks[0],
|
|
145
|
+
sandboxName: v.sandboxes[0],
|
|
146
|
+
...[
|
|
147
|
+
...v.networks.map((k2) => {
|
|
148
|
+
var _a;
|
|
149
|
+
return (_a = config.network) == null ? void 0 : _a[k2];
|
|
150
|
+
}),
|
|
151
|
+
...v.sandboxes.map((k2) => {
|
|
152
|
+
var _a;
|
|
153
|
+
return (_a = config.sandbox) == null ? void 0 : _a[k2];
|
|
154
|
+
})
|
|
155
|
+
][0]
|
|
156
|
+
}])
|
|
157
|
+
),
|
|
158
|
+
plugins: config.plugins
|
|
159
|
+
};
|
|
160
|
+
const environmentsV2 = {};
|
|
161
|
+
for (const [envName, eMain] of Object.entries(configFileV2.environments ?? {})) {
|
|
162
|
+
const eLocal = environmentsV2[envName] = { ...eMain };
|
|
163
|
+
for (const k of Object.keys(eMain)) {
|
|
164
|
+
const key = k;
|
|
165
|
+
if (key === `type`) {
|
|
166
|
+
delete eLocal[key];
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (eMain.type === "flextesa") {
|
|
170
|
+
if (k === "label" || k === "protocol") {
|
|
171
|
+
delete eLocal[key];
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (eMain.type === "simple") {
|
|
176
|
+
if (k === "label" || k === "protocol" || k === "rpcUrl") {
|
|
177
|
+
delete eLocal[key];
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
delete eMain[key];
|
|
182
|
+
}
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
return removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });
|
|
186
|
+
};
|
|
187
|
+
var transformConfigFileV2ToConfig = (configFileSetV2) => {
|
|
188
|
+
var _a;
|
|
189
|
+
const {
|
|
190
|
+
config: configFileV2,
|
|
191
|
+
environments: environmentFilesV2
|
|
192
|
+
} = configFileSetV2;
|
|
193
|
+
const environments = Object.entries(configFileV2.environments ?? {}).map(([k, v]) => ({
|
|
194
|
+
key: k,
|
|
195
|
+
value: {
|
|
196
|
+
...v,
|
|
197
|
+
...environmentFilesV2[k] ?? {}
|
|
198
|
+
}
|
|
199
|
+
}));
|
|
200
|
+
const getUnknownFields = (x, structure) => {
|
|
201
|
+
if (structure === "environment") {
|
|
202
|
+
return {};
|
|
203
|
+
}
|
|
204
|
+
const unknownFields = (() => {
|
|
205
|
+
const vClone = { ...x.value };
|
|
206
|
+
delete vClone.type;
|
|
207
|
+
delete vClone.networkName;
|
|
208
|
+
delete vClone.sandboxName;
|
|
209
|
+
delete vClone.label;
|
|
210
|
+
delete vClone.protocol;
|
|
211
|
+
delete vClone.rpcUrl;
|
|
212
|
+
delete vClone.storage;
|
|
213
|
+
delete vClone.aliases;
|
|
214
|
+
return vClone;
|
|
215
|
+
})();
|
|
216
|
+
return unknownFields;
|
|
217
|
+
};
|
|
218
|
+
const simpleEnvironments = environments.filter((x) => x.value.type === `simple`);
|
|
219
|
+
const sandboxEnvironments = environments.filter((x) => x.value.type === `flextesa`);
|
|
220
|
+
const config = {
|
|
221
|
+
...(() => {
|
|
222
|
+
const vClone = { ...configFileV2 };
|
|
223
|
+
delete vClone.version;
|
|
224
|
+
delete vClone.environmentDefault;
|
|
225
|
+
delete vClone.environments;
|
|
226
|
+
return vClone;
|
|
227
|
+
})(),
|
|
228
|
+
accounts: !configFileV2.accounts ? void 0 : Object.fromEntries(
|
|
229
|
+
Object.entries(configFileV2.accounts).map(([k, v]) => [k, `${v.balance.amount}`])
|
|
230
|
+
),
|
|
231
|
+
environment: {
|
|
232
|
+
default: configFileV2.environmentDefault ?? ((_a = environments[0]) == null ? void 0 : _a.key),
|
|
233
|
+
...Object.fromEntries(environments.map((x) => [x.key, {
|
|
234
|
+
networks: x.value.type !== `simple` ? [] : [
|
|
235
|
+
x.value.networkName ?? `${x.key}`
|
|
236
|
+
],
|
|
237
|
+
sandboxes: x.value.type !== `flextesa` ? [] : [
|
|
238
|
+
x.value.sandboxName ?? `${x.key}`
|
|
239
|
+
],
|
|
240
|
+
storage: x.value.storage,
|
|
241
|
+
aliases: x.value.aliases,
|
|
242
|
+
...getUnknownFields(x, "environment")
|
|
243
|
+
}]))
|
|
244
|
+
},
|
|
245
|
+
network: !simpleEnvironments.length ? void 0 : Object.fromEntries(simpleEnvironments.map((x) => [x.value.networkName ?? `${x.key}`, {
|
|
246
|
+
label: x.value.label ?? ``,
|
|
247
|
+
rpcUrl: x.value.rpcUrl ?? ``,
|
|
248
|
+
protocol: x.value.protocol ?? ``,
|
|
249
|
+
...getUnknownFields(x, "network")
|
|
250
|
+
}])),
|
|
251
|
+
sandbox: !sandboxEnvironments.length ? void 0 : Object.fromEntries(sandboxEnvironments.map((x) => [x.value.sandboxName ?? `${x.key}`, {
|
|
252
|
+
label: x.value.label ?? ``,
|
|
253
|
+
rpcUrl: x.value.rpcUrl ?? ``,
|
|
254
|
+
protocol: x.value.protocol ?? ``,
|
|
255
|
+
...getUnknownFields(x, "sandbox")
|
|
256
|
+
}]))
|
|
257
|
+
};
|
|
258
|
+
return removeUndefinedFields(config);
|
|
259
|
+
};
|
|
260
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
261
|
+
0 && (module.exports = {
|
|
262
|
+
readConfigFiles,
|
|
263
|
+
readJsonFileInterceptConfig,
|
|
264
|
+
writeConfigFiles,
|
|
265
|
+
writeJsonFileInterceptConfig
|
|
266
|
+
});
|
|
267
|
+
//# sourceMappingURL=types-config-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["types-config-files.ts"],"sourcesContent":["import type {\n\tConfig,\n\tConfigEnvironmentFileV2,\n\tConfigFileV1,\n\tConfigFileV2,\n\tEnvironment,\n} from '@taqueria/protocol/types';\n\nexport type ConfigFileSetV2 = {\n\tconfig: ConfigFileV2;\n\tenvironments: { [name: string]: ConfigEnvironmentFileV2 };\n};\n\nexport const readJsonFileInterceptConfig = (readJsonFile: <T>(filePath: string) => Promise<T>) =>\n\tasync <T>(filePath: string): Promise<T> => {\n\t\tif (filePath.endsWith(`.taq/config.json`)) {\n\t\t\treturn transformConfigFileV2ToConfig(await readConfigFiles(readJsonFile)(filePath)) as unknown as Promise<T>;\n\t\t}\n\n\t\treturn readJsonFile<T>(filePath);\n\t};\n\nexport const readConfigFiles = (readJsonFile: <T>(filePath: string) => Promise<T>) =>\n\tasync (configFilePath: string): Promise<ConfigFileSetV2> => {\n\t\tconst configFileObj = await readJsonFile(configFilePath);\n\n\t\tif ((configFileObj as ConfigFileV2).version !== `v2`) {\n\t\t\t// v1 - only file to load\n\t\t\tconst configFileSetV2 = transformConfigFileV1ToConfigFileSetV2(configFileObj as ConfigFileV1);\n\t\t\treturn configFileSetV2;\n\t\t}\n\n\t\t// Load env files\n\t\tconst configFileV2 = configFileObj as ConfigFileV2;\n\t\tconst envFiles = await Promise.all(\n\t\t\tObject.keys(configFileV2.environments ?? {}).map(async envName => {\n\t\t\t\ttry {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey: envName,\n\t\t\t\t\t\tvalue: await readJsonFile(\n\t\t\t\t\t\t\tconfigFilePath.replace(`config.json`, `config.local.${envName}.json`),\n\t\t\t\t\t\t) as ConfigEnvironmentFileV2,\n\t\t\t\t\t};\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore if file could not be read (no env file)\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\treturn {\n\t\t\tconfig: configFileV2,\n\t\t\tenvironments: Object.fromEntries(envFiles.filter(x => x.value).map(x => [x.key, x.value])),\n\t\t};\n\t};\n\nexport const writeJsonFileInterceptConfig = (writeJsonFile: (filePath: string) => (data: unknown) => Promise<string>) =>\n\t(filePath: string): ((data: unknown) => Promise<string>) => {\n\t\tif (filePath.endsWith(`.taq/config.json`)) {\n\t\t\treturn (async (config: Config) => {\n\t\t\t\t// DEBUG: write original file\n\t\t\t\t// await writeJsonFile(filePath.replace(`config.json`, `config.original-${Date.now()}.json`))(config);\n\n\t\t\t\treturn await writeConfigFiles(writeJsonFile)(filePath)(transformConfigToConfigFileV2(config));\n\t\t\t}) as (data: unknown) => Promise<string>;\n\t\t}\n\n\t\treturn writeJsonFile(filePath);\n\t};\n\nexport const writeConfigFiles = (writeJsonFile: (filePath: string) => (data: unknown) => Promise<string>) =>\n\t(configFilePath: string) =>\n\t\tasync (configFileSetV2: ConfigFileSetV2) => {\n\t\t\tconst configFileResult = await writeJsonFile(configFilePath)(configFileSetV2.config);\n\n\t\t\t// write the env files\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(configFileSetV2.environments).map(async ([envName, value]) => {\n\t\t\t\t\tawait writeJsonFile(configFilePath.replace(`config.json`, `config.local.${envName}.json`))(value);\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\treturn configFileResult;\n\t\t};\n\nconst removeUndefinedFields = <T>(x: T): T => {\n\treturn JSON.parse(JSON.stringify(x)) as T;\n};\n\n/** Migrate FileV1 to FileV2\n *\n * NOTE: Although this is nearly identical to transformConfigToConfigFileV2\n * This function should be sealed while the transformConfigToConfigFileV2\n * will change interatively to become move like V2\n */\nconst transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV1): ConfigFileSetV2 => {\n\tconst config = configFileV1;\n\tconst configFileV2: ConfigFileV2 = {\n\t\tversion: `v2`,\n\t\tlanguage: config.language,\n\t\tmetadata: config.metadata,\n\t\tartifactsDir: config.artifactsDir,\n\t\tcontractsDir: config.contractsDir,\n\t\taccounts: !config.accounts\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(config.accounts)\n\t\t\t\t\t.map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }]),\n\t\t\t),\n\t\tcontracts: config.contracts,\n\t\tenvironmentDefault: config.environment?.default as string,\n\t\tenvironments: Object.fromEntries(\n\t\t\tObject.entries(config.environment ?? {})\n\t\t\t\t.filter(([k, v]) => k !== `default`)\n\t\t\t\t.map(([k, v]) => [k, v] as [string, Environment])\n\t\t\t\t.map(([k, v]) => [k, {\n\t\t\t\t\t// Known fields\n\t\t\t\t\ttype: v.sandboxes.length ? `flextesa` : `simple`,\n\t\t\t\t\t// Unknown fields\n\t\t\t\t\t...((() => {\n\t\t\t\t\t\tconst vClone = { ...v } as Partial<typeof v>;\n\t\t\t\t\t\tdelete vClone.networks;\n\t\t\t\t\t\tdelete vClone.sandboxes;\n\t\t\t\t\t\treturn vClone;\n\t\t\t\t\t})()),\n\t\t\t\t\t// Preserve sandbox or network name\n\t\t\t\t\tnetworkName: v.networks[0],\n\t\t\t\t\tsandboxName: v.sandboxes[0],\n\t\t\t\t\t// Fields from the first sandbox or network (there should be only 1)\n\t\t\t\t\t// These overwrite fields in environment\n\t\t\t\t\t...[\n\t\t\t\t\t\t...v.networks.map(k => config.network?.[k]),\n\t\t\t\t\t\t...v.sandboxes.map(k => config.sandbox?.[k]),\n\t\t\t\t\t][0] as {},\n\t\t\t\t}]),\n\t\t),\n\t\tplugins: config.plugins,\n\t};\n\n\t// It is fine to leave everything in the main config V2 file since it will be parsed either way\n\tconst environmentsV2 = {};\n\treturn removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });\n};\n\n// Object to FileV2\nconst transformConfigToConfigFileV2 = (config: Config): ConfigFileSetV2 => {\n\tconst configFileV2: ConfigFileV2 = {\n\t\tversion: `v2`,\n\t\tlanguage: config.language,\n\t\tmetadata: config.metadata,\n\t\tartifactsDir: config.artifactsDir,\n\t\tcontractsDir: config.contractsDir,\n\t\taccounts: !config.accounts\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(config.accounts)\n\t\t\t\t\t.map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }]),\n\t\t\t),\n\t\tcontracts: config.contracts,\n\t\tenvironmentDefault: config.environment.default as string,\n\t\tenvironments: Object.fromEntries(\n\t\t\tObject.entries(config.environment)\n\t\t\t\t.filter(([k, v]) => k !== `default`)\n\t\t\t\t.map(([k, v]) => [k, v] as [string, Environment])\n\t\t\t\t.map(([k, v]) => [k, {\n\t\t\t\t\t// Known fields\n\t\t\t\t\ttype: v.sandboxes.length ? `flextesa` : `simple`,\n\t\t\t\t\t// Unknown fields\n\t\t\t\t\t...((() => {\n\t\t\t\t\t\tconst vClone = { ...v } as Partial<typeof v>;\n\t\t\t\t\t\tdelete vClone.networks;\n\t\t\t\t\t\tdelete vClone.sandboxes;\n\t\t\t\t\t\treturn vClone;\n\t\t\t\t\t})()),\n\t\t\t\t\t// Preserve sandbox or network name\n\t\t\t\t\tnetworkName: v.networks[0],\n\t\t\t\t\tsandboxName: v.sandboxes[0],\n\t\t\t\t\t// Fields from the first sandbox or network (there should be only 1)\n\t\t\t\t\t// These overwrite fields in environment\n\t\t\t\t\t...[\n\t\t\t\t\t\t...v.networks.map(k => config.network?.[k]),\n\t\t\t\t\t\t...v.sandboxes.map(k => config.sandbox?.[k]),\n\t\t\t\t\t][0] as {},\n\t\t\t\t}]),\n\t\t),\n\t\tplugins: config.plugins,\n\t};\n\n\t// extract local only fields to environment specific files\n\t// This should only include fields that the environment plugin will replace if missing\n\t// This is providing a default implementation for a few known environments\n\tconst environmentsV2 = {} as ConfigFileSetV2['environments'];\n\n\tfor (const [envName, eMain] of Object.entries(configFileV2.environments ?? {})) {\n\t\t// clone eMain and delete fields from either main config or local env config\n\t\tconst eLocal = environmentsV2[envName] = { ...eMain };\n\n\t\tfor (const k of Object.keys(eMain)) {\n\t\t\tconst key = k as keyof typeof eMain;\n\n\t\t\tif (key === `type`) {\n\t\t\t\tdelete eLocal[key];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Everything except label and protocol is local for sandbox\n\t\t\tif (eMain.type === 'flextesa') {\n\t\t\t\tif (\n\t\t\t\t\tk === 'label'\n\t\t\t\t\t|| k === 'protocol'\n\t\t\t\t) {\n\t\t\t\t\tdelete eLocal[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For simple networks, keep the rpcUrl also\n\t\t\tif (eMain.type === 'simple') {\n\t\t\t\tif (\n\t\t\t\t\tk === 'label'\n\t\t\t\t\t|| k === 'protocol'\n\t\t\t\t\t|| k === 'rpcUrl'\n\t\t\t\t) {\n\t\t\t\t\tdelete eLocal[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove from main by default\n\t\t\tdelete eMain[key];\n\t\t}\n\t\tcontinue;\n\t}\n\n\treturn removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });\n};\n\n// FileV2 to Object\nconst transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): Config => {\n\tconst {\n\t\tconfig: configFileV2,\n\t\tenvironments: environmentFilesV2,\n\t} = configFileSetV2;\n\n\tconst environments = Object.entries(configFileV2.environments ?? {})\n\t\t.map(([k, v]) => ({\n\t\t\tkey: k,\n\t\t\tvalue: {\n\t\t\t\t...v,\n\t\t\t\t// merge in the fields from the envFile\n\t\t\t\t...environmentFilesV2[k] ?? {},\n\t\t\t} as typeof v & {\n\t\t\t\t// custom named network or sandbox\n\t\t\t\tnetworkName?: string;\n\t\t\t\tsandboxName?: string;\n\t\t\t\t// Known network/sandbox fields\n\t\t\t\tlabel?: string;\n\t\t\t\tprotocol?: string;\n\t\t\t\trpcUrl?: string;\n\t\t\t\t// Known environment fields\n\t\t\t\tstorage?: unknown;\n\t\t\t\taliases?: unknown;\n\t\t\t},\n\t\t}));\n\n\tconst getUnknownFields = (x: typeof environments[number], structure: 'environment' | 'network' | 'sandbox') => {\n\t\tif (structure === 'environment') {\n\t\t\t// environment should only have known fields\n\t\t\treturn {};\n\t\t}\n\n\t\t// Let all the unknown fields be placed in the network or sandbox\n\t\tconst unknownFields = ((() => {\n\t\t\tconst vClone = { ...x.value } as Partial<typeof x.value>;\n\t\t\t// Remove known fields that have a known structure\n\t\t\tdelete vClone.type;\n\t\t\tdelete vClone.networkName;\n\t\t\tdelete vClone.sandboxName;\n\t\t\tdelete vClone.label;\n\t\t\tdelete vClone.protocol;\n\t\t\tdelete vClone.rpcUrl;\n\t\t\tdelete vClone.storage;\n\t\t\tdelete vClone.aliases;\n\t\t\treturn vClone;\n\t\t})());\n\n\t\treturn unknownFields;\n\t};\n\n\tconst simpleEnvironments = environments.filter(x => x.value.type === `simple`);\n\tconst sandboxEnvironments = environments.filter(x => x.value.type === `flextesa`);\n\n\tconst config: Config = {\n\t\t// Common fields\n\t\t...((() => {\n\t\t\tconst vClone = { ...configFileV2 } as Partial<typeof configFileV2>;\n\t\t\tdelete vClone.version;\n\t\t\tdelete vClone.environmentDefault;\n\t\t\tdelete vClone.environments;\n\t\t\treturn vClone;\n\t\t})()),\n\t\t// Transformed fields\n\t\taccounts: !configFileV2.accounts\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(configFileV2.accounts)\n\t\t\t\t\t.map(([k, v]) => [k, `${v.balance.amount}`]),\n\t\t\t),\n\t\tenvironment: {\n\t\t\tdefault: configFileV2.environmentDefault ?? environments[0]?.key,\n\t\t\t...Object.fromEntries(environments.map(x => [x.key, {\n\t\t\t\t// Network and sandbox\n\t\t\t\tnetworks: x.value.type !== `simple` ? [] : [\n\t\t\t\t\t// use same name as enviroment by default\n\t\t\t\t\tx.value.networkName ?? `${x.key}`,\n\t\t\t\t],\n\t\t\t\tsandboxes: x.value.type !== `flextesa` ? [] : [\n\t\t\t\t\t// use same name as enviroment by default\n\t\t\t\t\tx.value.sandboxName ?? `${x.key}`,\n\t\t\t\t],\n\t\t\t\t// Known environment fields\n\t\t\t\tstorage: x.value.storage,\n\t\t\t\taliases: x.value.aliases,\n\t\t\t\t// Unknown fields might need to be in the environment\n\t\t\t\t...getUnknownFields(x, 'environment'),\n\t\t\t}])),\n\t\t},\n\t\tnetwork: !simpleEnvironments.length\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(simpleEnvironments.map(x => [x.value.networkName ?? `${x.key}`, {\n\t\t\t\tlabel: x.value.label ?? ``,\n\t\t\t\trpcUrl: x.value.rpcUrl ?? ``,\n\t\t\t\tprotocol: x.value.protocol ?? ``,\n\t\t\t\t// Unknown fields might need to be in the network or sandbox\n\t\t\t\t...getUnknownFields(x, 'network') as {},\n\t\t\t}])),\n\t\tsandbox: !sandboxEnvironments.length\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(sandboxEnvironments.map(x => [x.value.sandboxName ?? `${x.key}`, {\n\t\t\t\tlabel: x.value.label ?? ``,\n\t\t\t\trpcUrl: x.value.rpcUrl ?? ``,\n\t\t\t\tprotocol: x.value.protocol ?? ``,\n\t\t\t\t// Unknown fields might need to be in the network or sandbox\n\t\t\t\t...getUnknownFields(x, 'sandbox') as {},\n\t\t\t}])),\n\t};\n\n\treturn removeUndefinedFields(config);\n};\n"],"mappings":"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","names":["k","_a"]}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
// types-config-files.ts
|
|
2
|
+
var readJsonFileInterceptConfig = (readJsonFile) => async (filePath) => {
|
|
3
|
+
if (filePath.endsWith(`.taq/config.json`)) {
|
|
4
|
+
return transformConfigFileV2ToConfig(await readConfigFiles(readJsonFile)(filePath));
|
|
5
|
+
}
|
|
6
|
+
return readJsonFile(filePath);
|
|
7
|
+
};
|
|
8
|
+
var readConfigFiles = (readJsonFile) => async (configFilePath) => {
|
|
9
|
+
const configFileObj = await readJsonFile(configFilePath);
|
|
10
|
+
if (configFileObj.version !== `v2`) {
|
|
11
|
+
const configFileSetV2 = transformConfigFileV1ToConfigFileSetV2(configFileObj);
|
|
12
|
+
return configFileSetV2;
|
|
13
|
+
}
|
|
14
|
+
const configFileV2 = configFileObj;
|
|
15
|
+
const envFiles = await Promise.all(
|
|
16
|
+
Object.keys(configFileV2.environments ?? {}).map(async (envName) => {
|
|
17
|
+
try {
|
|
18
|
+
return {
|
|
19
|
+
key: envName,
|
|
20
|
+
value: await readJsonFile(
|
|
21
|
+
configFilePath.replace(`config.json`, `config.local.${envName}.json`)
|
|
22
|
+
)
|
|
23
|
+
};
|
|
24
|
+
} catch {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
);
|
|
29
|
+
return {
|
|
30
|
+
config: configFileV2,
|
|
31
|
+
environments: Object.fromEntries(envFiles.filter((x) => x.value).map((x) => [x.key, x.value]))
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
var writeJsonFileInterceptConfig = (writeJsonFile) => (filePath) => {
|
|
35
|
+
if (filePath.endsWith(`.taq/config.json`)) {
|
|
36
|
+
return async (config) => {
|
|
37
|
+
return await writeConfigFiles(writeJsonFile)(filePath)(transformConfigToConfigFileV2(config));
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return writeJsonFile(filePath);
|
|
41
|
+
};
|
|
42
|
+
var writeConfigFiles = (writeJsonFile) => (configFilePath) => async (configFileSetV2) => {
|
|
43
|
+
const configFileResult = await writeJsonFile(configFilePath)(configFileSetV2.config);
|
|
44
|
+
await Promise.all(
|
|
45
|
+
Object.entries(configFileSetV2.environments).map(async ([envName, value]) => {
|
|
46
|
+
await writeJsonFile(configFilePath.replace(`config.json`, `config.local.${envName}.json`))(value);
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
return configFileResult;
|
|
50
|
+
};
|
|
51
|
+
var removeUndefinedFields = (x) => {
|
|
52
|
+
return JSON.parse(JSON.stringify(x));
|
|
53
|
+
};
|
|
54
|
+
var transformConfigFileV1ToConfigFileSetV2 = (configFileV1) => {
|
|
55
|
+
var _a;
|
|
56
|
+
const config = configFileV1;
|
|
57
|
+
const configFileV2 = {
|
|
58
|
+
version: `v2`,
|
|
59
|
+
language: config.language,
|
|
60
|
+
metadata: config.metadata,
|
|
61
|
+
artifactsDir: config.artifactsDir,
|
|
62
|
+
contractsDir: config.contractsDir,
|
|
63
|
+
accounts: !config.accounts ? void 0 : Object.fromEntries(
|
|
64
|
+
Object.entries(config.accounts).map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }])
|
|
65
|
+
),
|
|
66
|
+
contracts: config.contracts,
|
|
67
|
+
environmentDefault: (_a = config.environment) == null ? void 0 : _a.default,
|
|
68
|
+
environments: Object.fromEntries(
|
|
69
|
+
Object.entries(config.environment ?? {}).filter(([k, v]) => k !== `default`).map(([k, v]) => [k, v]).map(([k, v]) => [k, {
|
|
70
|
+
type: v.sandboxes.length ? `flextesa` : `simple`,
|
|
71
|
+
...(() => {
|
|
72
|
+
const vClone = { ...v };
|
|
73
|
+
delete vClone.networks;
|
|
74
|
+
delete vClone.sandboxes;
|
|
75
|
+
return vClone;
|
|
76
|
+
})(),
|
|
77
|
+
networkName: v.networks[0],
|
|
78
|
+
sandboxName: v.sandboxes[0],
|
|
79
|
+
...[
|
|
80
|
+
...v.networks.map((k2) => {
|
|
81
|
+
var _a2;
|
|
82
|
+
return (_a2 = config.network) == null ? void 0 : _a2[k2];
|
|
83
|
+
}),
|
|
84
|
+
...v.sandboxes.map((k2) => {
|
|
85
|
+
var _a2;
|
|
86
|
+
return (_a2 = config.sandbox) == null ? void 0 : _a2[k2];
|
|
87
|
+
})
|
|
88
|
+
][0]
|
|
89
|
+
}])
|
|
90
|
+
),
|
|
91
|
+
plugins: config.plugins
|
|
92
|
+
};
|
|
93
|
+
const environmentsV2 = {};
|
|
94
|
+
return removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });
|
|
95
|
+
};
|
|
96
|
+
var transformConfigToConfigFileV2 = (config) => {
|
|
97
|
+
const configFileV2 = {
|
|
98
|
+
version: `v2`,
|
|
99
|
+
language: config.language,
|
|
100
|
+
metadata: config.metadata,
|
|
101
|
+
artifactsDir: config.artifactsDir,
|
|
102
|
+
contractsDir: config.contractsDir,
|
|
103
|
+
accounts: !config.accounts ? void 0 : Object.fromEntries(
|
|
104
|
+
Object.entries(config.accounts).map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }])
|
|
105
|
+
),
|
|
106
|
+
contracts: config.contracts,
|
|
107
|
+
environmentDefault: config.environment.default,
|
|
108
|
+
environments: Object.fromEntries(
|
|
109
|
+
Object.entries(config.environment).filter(([k, v]) => k !== `default`).map(([k, v]) => [k, v]).map(([k, v]) => [k, {
|
|
110
|
+
type: v.sandboxes.length ? `flextesa` : `simple`,
|
|
111
|
+
...(() => {
|
|
112
|
+
const vClone = { ...v };
|
|
113
|
+
delete vClone.networks;
|
|
114
|
+
delete vClone.sandboxes;
|
|
115
|
+
return vClone;
|
|
116
|
+
})(),
|
|
117
|
+
networkName: v.networks[0],
|
|
118
|
+
sandboxName: v.sandboxes[0],
|
|
119
|
+
...[
|
|
120
|
+
...v.networks.map((k2) => {
|
|
121
|
+
var _a;
|
|
122
|
+
return (_a = config.network) == null ? void 0 : _a[k2];
|
|
123
|
+
}),
|
|
124
|
+
...v.sandboxes.map((k2) => {
|
|
125
|
+
var _a;
|
|
126
|
+
return (_a = config.sandbox) == null ? void 0 : _a[k2];
|
|
127
|
+
})
|
|
128
|
+
][0]
|
|
129
|
+
}])
|
|
130
|
+
),
|
|
131
|
+
plugins: config.plugins
|
|
132
|
+
};
|
|
133
|
+
const environmentsV2 = {};
|
|
134
|
+
for (const [envName, eMain] of Object.entries(configFileV2.environments ?? {})) {
|
|
135
|
+
const eLocal = environmentsV2[envName] = { ...eMain };
|
|
136
|
+
for (const k of Object.keys(eMain)) {
|
|
137
|
+
const key = k;
|
|
138
|
+
if (key === `type`) {
|
|
139
|
+
delete eLocal[key];
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (eMain.type === "flextesa") {
|
|
143
|
+
if (k === "label" || k === "protocol") {
|
|
144
|
+
delete eLocal[key];
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (eMain.type === "simple") {
|
|
149
|
+
if (k === "label" || k === "protocol" || k === "rpcUrl") {
|
|
150
|
+
delete eLocal[key];
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
delete eMain[key];
|
|
155
|
+
}
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
return removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });
|
|
159
|
+
};
|
|
160
|
+
var transformConfigFileV2ToConfig = (configFileSetV2) => {
|
|
161
|
+
var _a;
|
|
162
|
+
const {
|
|
163
|
+
config: configFileV2,
|
|
164
|
+
environments: environmentFilesV2
|
|
165
|
+
} = configFileSetV2;
|
|
166
|
+
const environments = Object.entries(configFileV2.environments ?? {}).map(([k, v]) => ({
|
|
167
|
+
key: k,
|
|
168
|
+
value: {
|
|
169
|
+
...v,
|
|
170
|
+
...environmentFilesV2[k] ?? {}
|
|
171
|
+
}
|
|
172
|
+
}));
|
|
173
|
+
const getUnknownFields = (x, structure) => {
|
|
174
|
+
if (structure === "environment") {
|
|
175
|
+
return {};
|
|
176
|
+
}
|
|
177
|
+
const unknownFields = (() => {
|
|
178
|
+
const vClone = { ...x.value };
|
|
179
|
+
delete vClone.type;
|
|
180
|
+
delete vClone.networkName;
|
|
181
|
+
delete vClone.sandboxName;
|
|
182
|
+
delete vClone.label;
|
|
183
|
+
delete vClone.protocol;
|
|
184
|
+
delete vClone.rpcUrl;
|
|
185
|
+
delete vClone.storage;
|
|
186
|
+
delete vClone.aliases;
|
|
187
|
+
return vClone;
|
|
188
|
+
})();
|
|
189
|
+
return unknownFields;
|
|
190
|
+
};
|
|
191
|
+
const simpleEnvironments = environments.filter((x) => x.value.type === `simple`);
|
|
192
|
+
const sandboxEnvironments = environments.filter((x) => x.value.type === `flextesa`);
|
|
193
|
+
const config = {
|
|
194
|
+
...(() => {
|
|
195
|
+
const vClone = { ...configFileV2 };
|
|
196
|
+
delete vClone.version;
|
|
197
|
+
delete vClone.environmentDefault;
|
|
198
|
+
delete vClone.environments;
|
|
199
|
+
return vClone;
|
|
200
|
+
})(),
|
|
201
|
+
accounts: !configFileV2.accounts ? void 0 : Object.fromEntries(
|
|
202
|
+
Object.entries(configFileV2.accounts).map(([k, v]) => [k, `${v.balance.amount}`])
|
|
203
|
+
),
|
|
204
|
+
environment: {
|
|
205
|
+
default: configFileV2.environmentDefault ?? ((_a = environments[0]) == null ? void 0 : _a.key),
|
|
206
|
+
...Object.fromEntries(environments.map((x) => [x.key, {
|
|
207
|
+
networks: x.value.type !== `simple` ? [] : [
|
|
208
|
+
x.value.networkName ?? `${x.key}`
|
|
209
|
+
],
|
|
210
|
+
sandboxes: x.value.type !== `flextesa` ? [] : [
|
|
211
|
+
x.value.sandboxName ?? `${x.key}`
|
|
212
|
+
],
|
|
213
|
+
storage: x.value.storage,
|
|
214
|
+
aliases: x.value.aliases,
|
|
215
|
+
...getUnknownFields(x, "environment")
|
|
216
|
+
}]))
|
|
217
|
+
},
|
|
218
|
+
network: !simpleEnvironments.length ? void 0 : Object.fromEntries(simpleEnvironments.map((x) => [x.value.networkName ?? `${x.key}`, {
|
|
219
|
+
label: x.value.label ?? ``,
|
|
220
|
+
rpcUrl: x.value.rpcUrl ?? ``,
|
|
221
|
+
protocol: x.value.protocol ?? ``,
|
|
222
|
+
...getUnknownFields(x, "network")
|
|
223
|
+
}])),
|
|
224
|
+
sandbox: !sandboxEnvironments.length ? void 0 : Object.fromEntries(sandboxEnvironments.map((x) => [x.value.sandboxName ?? `${x.key}`, {
|
|
225
|
+
label: x.value.label ?? ``,
|
|
226
|
+
rpcUrl: x.value.rpcUrl ?? ``,
|
|
227
|
+
protocol: x.value.protocol ?? ``,
|
|
228
|
+
...getUnknownFields(x, "sandbox")
|
|
229
|
+
}]))
|
|
230
|
+
};
|
|
231
|
+
return removeUndefinedFields(config);
|
|
232
|
+
};
|
|
233
|
+
export {
|
|
234
|
+
readConfigFiles,
|
|
235
|
+
readJsonFileInterceptConfig,
|
|
236
|
+
writeConfigFiles,
|
|
237
|
+
writeJsonFileInterceptConfig
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=types-config-files.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["types-config-files.ts"],"sourcesContent":["import type {\n\tConfig,\n\tConfigEnvironmentFileV2,\n\tConfigFileV1,\n\tConfigFileV2,\n\tEnvironment,\n} from '@taqueria/protocol/types';\n\nexport type ConfigFileSetV2 = {\n\tconfig: ConfigFileV2;\n\tenvironments: { [name: string]: ConfigEnvironmentFileV2 };\n};\n\nexport const readJsonFileInterceptConfig = (readJsonFile: <T>(filePath: string) => Promise<T>) =>\n\tasync <T>(filePath: string): Promise<T> => {\n\t\tif (filePath.endsWith(`.taq/config.json`)) {\n\t\t\treturn transformConfigFileV2ToConfig(await readConfigFiles(readJsonFile)(filePath)) as unknown as Promise<T>;\n\t\t}\n\n\t\treturn readJsonFile<T>(filePath);\n\t};\n\nexport const readConfigFiles = (readJsonFile: <T>(filePath: string) => Promise<T>) =>\n\tasync (configFilePath: string): Promise<ConfigFileSetV2> => {\n\t\tconst configFileObj = await readJsonFile(configFilePath);\n\n\t\tif ((configFileObj as ConfigFileV2).version !== `v2`) {\n\t\t\t// v1 - only file to load\n\t\t\tconst configFileSetV2 = transformConfigFileV1ToConfigFileSetV2(configFileObj as ConfigFileV1);\n\t\t\treturn configFileSetV2;\n\t\t}\n\n\t\t// Load env files\n\t\tconst configFileV2 = configFileObj as ConfigFileV2;\n\t\tconst envFiles = await Promise.all(\n\t\t\tObject.keys(configFileV2.environments ?? {}).map(async envName => {\n\t\t\t\ttry {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tkey: envName,\n\t\t\t\t\t\tvalue: await readJsonFile(\n\t\t\t\t\t\t\tconfigFilePath.replace(`config.json`, `config.local.${envName}.json`),\n\t\t\t\t\t\t) as ConfigEnvironmentFileV2,\n\t\t\t\t\t};\n\t\t\t\t} catch {\n\t\t\t\t\t// ignore if file could not be read (no env file)\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\treturn {\n\t\t\tconfig: configFileV2,\n\t\t\tenvironments: Object.fromEntries(envFiles.filter(x => x.value).map(x => [x.key, x.value])),\n\t\t};\n\t};\n\nexport const writeJsonFileInterceptConfig = (writeJsonFile: (filePath: string) => (data: unknown) => Promise<string>) =>\n\t(filePath: string): ((data: unknown) => Promise<string>) => {\n\t\tif (filePath.endsWith(`.taq/config.json`)) {\n\t\t\treturn (async (config: Config) => {\n\t\t\t\t// DEBUG: write original file\n\t\t\t\t// await writeJsonFile(filePath.replace(`config.json`, `config.original-${Date.now()}.json`))(config);\n\n\t\t\t\treturn await writeConfigFiles(writeJsonFile)(filePath)(transformConfigToConfigFileV2(config));\n\t\t\t}) as (data: unknown) => Promise<string>;\n\t\t}\n\n\t\treturn writeJsonFile(filePath);\n\t};\n\nexport const writeConfigFiles = (writeJsonFile: (filePath: string) => (data: unknown) => Promise<string>) =>\n\t(configFilePath: string) =>\n\t\tasync (configFileSetV2: ConfigFileSetV2) => {\n\t\t\tconst configFileResult = await writeJsonFile(configFilePath)(configFileSetV2.config);\n\n\t\t\t// write the env files\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(configFileSetV2.environments).map(async ([envName, value]) => {\n\t\t\t\t\tawait writeJsonFile(configFilePath.replace(`config.json`, `config.local.${envName}.json`))(value);\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\treturn configFileResult;\n\t\t};\n\nconst removeUndefinedFields = <T>(x: T): T => {\n\treturn JSON.parse(JSON.stringify(x)) as T;\n};\n\n/** Migrate FileV1 to FileV2\n *\n * NOTE: Although this is nearly identical to transformConfigToConfigFileV2\n * This function should be sealed while the transformConfigToConfigFileV2\n * will change interatively to become move like V2\n */\nconst transformConfigFileV1ToConfigFileSetV2 = (configFileV1: ConfigFileV1): ConfigFileSetV2 => {\n\tconst config = configFileV1;\n\tconst configFileV2: ConfigFileV2 = {\n\t\tversion: `v2`,\n\t\tlanguage: config.language,\n\t\tmetadata: config.metadata,\n\t\tartifactsDir: config.artifactsDir,\n\t\tcontractsDir: config.contractsDir,\n\t\taccounts: !config.accounts\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(config.accounts)\n\t\t\t\t\t.map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }]),\n\t\t\t),\n\t\tcontracts: config.contracts,\n\t\tenvironmentDefault: config.environment?.default as string,\n\t\tenvironments: Object.fromEntries(\n\t\t\tObject.entries(config.environment ?? {})\n\t\t\t\t.filter(([k, v]) => k !== `default`)\n\t\t\t\t.map(([k, v]) => [k, v] as [string, Environment])\n\t\t\t\t.map(([k, v]) => [k, {\n\t\t\t\t\t// Known fields\n\t\t\t\t\ttype: v.sandboxes.length ? `flextesa` : `simple`,\n\t\t\t\t\t// Unknown fields\n\t\t\t\t\t...((() => {\n\t\t\t\t\t\tconst vClone = { ...v } as Partial<typeof v>;\n\t\t\t\t\t\tdelete vClone.networks;\n\t\t\t\t\t\tdelete vClone.sandboxes;\n\t\t\t\t\t\treturn vClone;\n\t\t\t\t\t})()),\n\t\t\t\t\t// Preserve sandbox or network name\n\t\t\t\t\tnetworkName: v.networks[0],\n\t\t\t\t\tsandboxName: v.sandboxes[0],\n\t\t\t\t\t// Fields from the first sandbox or network (there should be only 1)\n\t\t\t\t\t// These overwrite fields in environment\n\t\t\t\t\t...[\n\t\t\t\t\t\t...v.networks.map(k => config.network?.[k]),\n\t\t\t\t\t\t...v.sandboxes.map(k => config.sandbox?.[k]),\n\t\t\t\t\t][0] as {},\n\t\t\t\t}]),\n\t\t),\n\t\tplugins: config.plugins,\n\t};\n\n\t// It is fine to leave everything in the main config V2 file since it will be parsed either way\n\tconst environmentsV2 = {};\n\treturn removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });\n};\n\n// Object to FileV2\nconst transformConfigToConfigFileV2 = (config: Config): ConfigFileSetV2 => {\n\tconst configFileV2: ConfigFileV2 = {\n\t\tversion: `v2`,\n\t\tlanguage: config.language,\n\t\tmetadata: config.metadata,\n\t\tartifactsDir: config.artifactsDir,\n\t\tcontractsDir: config.contractsDir,\n\t\taccounts: !config.accounts\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(config.accounts)\n\t\t\t\t\t.map(([k, v]) => [k, { balance: { amount: v, units: `mutez` } }]),\n\t\t\t),\n\t\tcontracts: config.contracts,\n\t\tenvironmentDefault: config.environment.default as string,\n\t\tenvironments: Object.fromEntries(\n\t\t\tObject.entries(config.environment)\n\t\t\t\t.filter(([k, v]) => k !== `default`)\n\t\t\t\t.map(([k, v]) => [k, v] as [string, Environment])\n\t\t\t\t.map(([k, v]) => [k, {\n\t\t\t\t\t// Known fields\n\t\t\t\t\ttype: v.sandboxes.length ? `flextesa` : `simple`,\n\t\t\t\t\t// Unknown fields\n\t\t\t\t\t...((() => {\n\t\t\t\t\t\tconst vClone = { ...v } as Partial<typeof v>;\n\t\t\t\t\t\tdelete vClone.networks;\n\t\t\t\t\t\tdelete vClone.sandboxes;\n\t\t\t\t\t\treturn vClone;\n\t\t\t\t\t})()),\n\t\t\t\t\t// Preserve sandbox or network name\n\t\t\t\t\tnetworkName: v.networks[0],\n\t\t\t\t\tsandboxName: v.sandboxes[0],\n\t\t\t\t\t// Fields from the first sandbox or network (there should be only 1)\n\t\t\t\t\t// These overwrite fields in environment\n\t\t\t\t\t...[\n\t\t\t\t\t\t...v.networks.map(k => config.network?.[k]),\n\t\t\t\t\t\t...v.sandboxes.map(k => config.sandbox?.[k]),\n\t\t\t\t\t][0] as {},\n\t\t\t\t}]),\n\t\t),\n\t\tplugins: config.plugins,\n\t};\n\n\t// extract local only fields to environment specific files\n\t// This should only include fields that the environment plugin will replace if missing\n\t// This is providing a default implementation for a few known environments\n\tconst environmentsV2 = {} as ConfigFileSetV2['environments'];\n\n\tfor (const [envName, eMain] of Object.entries(configFileV2.environments ?? {})) {\n\t\t// clone eMain and delete fields from either main config or local env config\n\t\tconst eLocal = environmentsV2[envName] = { ...eMain };\n\n\t\tfor (const k of Object.keys(eMain)) {\n\t\t\tconst key = k as keyof typeof eMain;\n\n\t\t\tif (key === `type`) {\n\t\t\t\tdelete eLocal[key];\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Everything except label and protocol is local for sandbox\n\t\t\tif (eMain.type === 'flextesa') {\n\t\t\t\tif (\n\t\t\t\t\tk === 'label'\n\t\t\t\t\t|| k === 'protocol'\n\t\t\t\t) {\n\t\t\t\t\tdelete eLocal[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For simple networks, keep the rpcUrl also\n\t\t\tif (eMain.type === 'simple') {\n\t\t\t\tif (\n\t\t\t\t\tk === 'label'\n\t\t\t\t\t|| k === 'protocol'\n\t\t\t\t\t|| k === 'rpcUrl'\n\t\t\t\t) {\n\t\t\t\t\tdelete eLocal[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove from main by default\n\t\t\tdelete eMain[key];\n\t\t}\n\t\tcontinue;\n\t}\n\n\treturn removeUndefinedFields({ config: configFileV2, environments: environmentsV2 });\n};\n\n// FileV2 to Object\nconst transformConfigFileV2ToConfig = (configFileSetV2: ConfigFileSetV2): Config => {\n\tconst {\n\t\tconfig: configFileV2,\n\t\tenvironments: environmentFilesV2,\n\t} = configFileSetV2;\n\n\tconst environments = Object.entries(configFileV2.environments ?? {})\n\t\t.map(([k, v]) => ({\n\t\t\tkey: k,\n\t\t\tvalue: {\n\t\t\t\t...v,\n\t\t\t\t// merge in the fields from the envFile\n\t\t\t\t...environmentFilesV2[k] ?? {},\n\t\t\t} as typeof v & {\n\t\t\t\t// custom named network or sandbox\n\t\t\t\tnetworkName?: string;\n\t\t\t\tsandboxName?: string;\n\t\t\t\t// Known network/sandbox fields\n\t\t\t\tlabel?: string;\n\t\t\t\tprotocol?: string;\n\t\t\t\trpcUrl?: string;\n\t\t\t\t// Known environment fields\n\t\t\t\tstorage?: unknown;\n\t\t\t\taliases?: unknown;\n\t\t\t},\n\t\t}));\n\n\tconst getUnknownFields = (x: typeof environments[number], structure: 'environment' | 'network' | 'sandbox') => {\n\t\tif (structure === 'environment') {\n\t\t\t// environment should only have known fields\n\t\t\treturn {};\n\t\t}\n\n\t\t// Let all the unknown fields be placed in the network or sandbox\n\t\tconst unknownFields = ((() => {\n\t\t\tconst vClone = { ...x.value } as Partial<typeof x.value>;\n\t\t\t// Remove known fields that have a known structure\n\t\t\tdelete vClone.type;\n\t\t\tdelete vClone.networkName;\n\t\t\tdelete vClone.sandboxName;\n\t\t\tdelete vClone.label;\n\t\t\tdelete vClone.protocol;\n\t\t\tdelete vClone.rpcUrl;\n\t\t\tdelete vClone.storage;\n\t\t\tdelete vClone.aliases;\n\t\t\treturn vClone;\n\t\t})());\n\n\t\treturn unknownFields;\n\t};\n\n\tconst simpleEnvironments = environments.filter(x => x.value.type === `simple`);\n\tconst sandboxEnvironments = environments.filter(x => x.value.type === `flextesa`);\n\n\tconst config: Config = {\n\t\t// Common fields\n\t\t...((() => {\n\t\t\tconst vClone = { ...configFileV2 } as Partial<typeof configFileV2>;\n\t\t\tdelete vClone.version;\n\t\t\tdelete vClone.environmentDefault;\n\t\t\tdelete vClone.environments;\n\t\t\treturn vClone;\n\t\t})()),\n\t\t// Transformed fields\n\t\taccounts: !configFileV2.accounts\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(\n\t\t\t\tObject.entries(configFileV2.accounts)\n\t\t\t\t\t.map(([k, v]) => [k, `${v.balance.amount}`]),\n\t\t\t),\n\t\tenvironment: {\n\t\t\tdefault: configFileV2.environmentDefault ?? environments[0]?.key,\n\t\t\t...Object.fromEntries(environments.map(x => [x.key, {\n\t\t\t\t// Network and sandbox\n\t\t\t\tnetworks: x.value.type !== `simple` ? [] : [\n\t\t\t\t\t// use same name as enviroment by default\n\t\t\t\t\tx.value.networkName ?? `${x.key}`,\n\t\t\t\t],\n\t\t\t\tsandboxes: x.value.type !== `flextesa` ? [] : [\n\t\t\t\t\t// use same name as enviroment by default\n\t\t\t\t\tx.value.sandboxName ?? `${x.key}`,\n\t\t\t\t],\n\t\t\t\t// Known environment fields\n\t\t\t\tstorage: x.value.storage,\n\t\t\t\taliases: x.value.aliases,\n\t\t\t\t// Unknown fields might need to be in the environment\n\t\t\t\t...getUnknownFields(x, 'environment'),\n\t\t\t}])),\n\t\t},\n\t\tnetwork: !simpleEnvironments.length\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(simpleEnvironments.map(x => [x.value.networkName ?? `${x.key}`, {\n\t\t\t\tlabel: x.value.label ?? ``,\n\t\t\t\trpcUrl: x.value.rpcUrl ?? ``,\n\t\t\t\tprotocol: x.value.protocol ?? ``,\n\t\t\t\t// Unknown fields might need to be in the network or sandbox\n\t\t\t\t...getUnknownFields(x, 'network') as {},\n\t\t\t}])),\n\t\tsandbox: !sandboxEnvironments.length\n\t\t\t? undefined\n\t\t\t: Object.fromEntries(sandboxEnvironments.map(x => [x.value.sandboxName ?? `${x.key}`, {\n\t\t\t\tlabel: x.value.label ?? ``,\n\t\t\t\trpcUrl: x.value.rpcUrl ?? ``,\n\t\t\t\tprotocol: x.value.protocol ?? ``,\n\t\t\t\t// Unknown fields might need to be in the network or sandbox\n\t\t\t\t...getUnknownFields(x, 'sandbox') as {},\n\t\t\t}])),\n\t};\n\n\treturn removeUndefinedFields(config);\n};\n"],"mappings":"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","names":["k","_a"]}
|