@taqueria/protocol 0.14.4 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/Alias.d.ts +48 -0
  2. package/Alias.js +70 -0
  3. package/Alias.js.map +1 -0
  4. package/Alias.mjs +34 -0
  5. package/Alias.mjs.map +1 -0
  6. package/Base.d.ts +50 -0
  7. package/Base.js +83 -0
  8. package/Base.js.map +1 -0
  9. package/Base.mjs +57 -0
  10. package/Base.mjs.map +1 -0
  11. package/Command.d.ts +30 -0
  12. package/Command.js +61 -0
  13. package/Command.js.map +1 -0
  14. package/Command.mjs +25 -0
  15. package/Command.mjs.map +1 -0
  16. package/Config.d.ts +2062 -0
  17. package/Config.js +175 -0
  18. package/Config.js.map +1 -0
  19. package/Config.mjs +135 -0
  20. package/Config.mjs.map +1 -0
  21. package/Contract.d.ts +88 -0
  22. package/Contract.js +68 -0
  23. package/Contract.js.map +1 -0
  24. package/Contract.mjs +32 -0
  25. package/Contract.mjs.map +1 -0
  26. package/Crypto.d.ts +5 -0
  27. package/Crypto.js +35 -0
  28. package/Crypto.js.map +1 -0
  29. package/Crypto.mjs +10 -0
  30. package/Crypto.mjs.map +1 -0
  31. package/EconomicalProtocolHash.d.ts +48 -0
  32. package/EconomicalProtocolHash.js +64 -0
  33. package/EconomicalProtocolHash.js.map +1 -0
  34. package/EconomicalProtocolHash.mjs +27 -0
  35. package/EconomicalProtocolHash.mjs.map +1 -0
  36. package/Environment.d.ts +142 -0
  37. package/Environment.js +78 -0
  38. package/Environment.js.map +1 -0
  39. package/Environment.mjs +40 -0
  40. package/Environment.mjs.map +1 -0
  41. package/EphemeralState.d.ts +4561 -0
  42. package/EphemeralState.js +268 -0
  43. package/EphemeralState.js.map +1 -0
  44. package/EphemeralState.mjs +228 -0
  45. package/EphemeralState.mjs.map +1 -0
  46. package/Faucet.d.ts +210 -0
  47. package/Faucet.js +84 -0
  48. package/Faucet.js.map +1 -0
  49. package/Faucet.mjs +47 -0
  50. package/Faucet.mjs.map +1 -0
  51. package/HumanReadableIdentifier.d.ts +30 -0
  52. package/HumanReadableIdentifier.js +61 -0
  53. package/HumanReadableIdentifier.js.map +1 -0
  54. package/HumanReadableIdentifier.mjs +25 -0
  55. package/HumanReadableIdentifier.mjs.map +1 -0
  56. package/InstalledPlugin.d.ts +99 -0
  57. package/InstalledPlugin.js +67 -0
  58. package/InstalledPlugin.js.map +1 -0
  59. package/InstalledPlugin.mjs +30 -0
  60. package/InstalledPlugin.mjs.map +1 -0
  61. package/LoadedConfig.d.ts +2325 -0
  62. package/LoadedConfig.js +80 -0
  63. package/LoadedConfig.js.map +1 -0
  64. package/LoadedConfig.mjs +41 -0
  65. package/LoadedConfig.mjs.map +1 -0
  66. package/MetadataConfig.d.ts +162 -0
  67. package/MetadataConfig.js +75 -0
  68. package/MetadataConfig.js.map +1 -0
  69. package/MetadataConfig.mjs +38 -0
  70. package/MetadataConfig.mjs.map +1 -0
  71. package/NetworkConfig.d.ts +431 -0
  72. package/NetworkConfig.js +77 -0
  73. package/NetworkConfig.js.map +1 -0
  74. package/NetworkConfig.mjs +40 -0
  75. package/NetworkConfig.mjs.map +1 -0
  76. package/Operation.d.ts +1476 -0
  77. package/Operation.js +98 -0
  78. package/Operation.js.map +1 -0
  79. package/Operation.mjs +60 -0
  80. package/Operation.mjs.map +1 -0
  81. package/Option.d.ts +316 -0
  82. package/Option.js +103 -0
  83. package/Option.js.map +1 -0
  84. package/Option.mjs +65 -0
  85. package/Option.mjs.map +1 -0
  86. package/ParsedOperation.d.ts +888 -0
  87. package/ParsedOperation.js +63 -0
  88. package/ParsedOperation.js.map +1 -0
  89. package/ParsedOperation.mjs +26 -0
  90. package/ParsedOperation.mjs.map +1 -0
  91. package/ParsedTemplate.d.ts +1032 -0
  92. package/ParsedTemplate.js +71 -0
  93. package/ParsedTemplate.js.map +1 -0
  94. package/ParsedTemplate.mjs +34 -0
  95. package/ParsedTemplate.mjs.map +1 -0
  96. package/PersistentState.d.ts +581 -0
  97. package/PersistentState.js +98 -0
  98. package/PersistentState.js.map +1 -0
  99. package/PersistentState.mjs +60 -0
  100. package/PersistentState.mjs.map +1 -0
  101. package/PluginActionName.d.ts +23 -0
  102. package/PluginActionName.js +48 -0
  103. package/PluginActionName.js.map +1 -0
  104. package/PluginActionName.mjs +23 -0
  105. package/PluginActionName.mjs.map +1 -0
  106. package/PluginDependenciesResponse.d.ts +158 -0
  107. package/PluginDependenciesResponse.js +63 -0
  108. package/PluginDependenciesResponse.js.map +1 -0
  109. package/PluginDependenciesResponse.mjs +28 -0
  110. package/PluginDependenciesResponse.mjs.map +1 -0
  111. package/PluginInfo.d.ts +3425 -0
  112. package/PluginInfo.js +113 -0
  113. package/PluginInfo.js.map +1 -0
  114. package/PluginInfo.mjs +76 -0
  115. package/PluginInfo.mjs.map +1 -0
  116. package/PluginJsonResponse.d.ts +104 -0
  117. package/PluginJsonResponse.js +59 -0
  118. package/PluginJsonResponse.js.map +1 -0
  119. package/PluginJsonResponse.mjs +25 -0
  120. package/PluginJsonResponse.mjs.map +1 -0
  121. package/PluginProxyResponse.d.ts +23 -0
  122. package/PluginProxyResponse.js +61 -0
  123. package/PluginProxyResponse.js.map +1 -0
  124. package/PluginProxyResponse.mjs +25 -0
  125. package/PluginProxyResponse.mjs.map +1 -0
  126. package/PluginResponseEncoding.d.ts +39 -0
  127. package/PluginResponseEncoding.js +63 -0
  128. package/PluginResponseEncoding.js.map +1 -0
  129. package/PluginResponseEncoding.mjs +27 -0
  130. package/PluginResponseEncoding.mjs.map +1 -0
  131. package/PluginSchema.d.ts +7332 -0
  132. package/PluginSchema.js +107 -0
  133. package/PluginSchema.js.map +1 -0
  134. package/PluginSchema.mjs +70 -0
  135. package/PluginSchema.mjs.map +1 -0
  136. package/PositionalArg.d.ts +190 -0
  137. package/PositionalArg.js +78 -0
  138. package/PositionalArg.js.map +1 -0
  139. package/PositionalArg.mjs +41 -0
  140. package/PositionalArg.mjs.map +1 -0
  141. package/Provisioner.d.ts +276 -0
  142. package/Provisioner.js +86 -0
  143. package/Provisioner.js.map +1 -0
  144. package/Provisioner.mjs +48 -0
  145. package/Provisioner.mjs.map +1 -0
  146. package/ProvisionerID.d.ts +48 -0
  147. package/ProvisionerID.js +61 -0
  148. package/ProvisionerID.js.map +1 -0
  149. package/ProvisionerID.mjs +24 -0
  150. package/ProvisionerID.mjs.map +1 -0
  151. package/Provisions.d.ts +244 -0
  152. package/Provisions.js +93 -0
  153. package/Provisions.js.map +1 -0
  154. package/Provisions.mjs +57 -0
  155. package/Provisions.mjs.map +1 -0
  156. package/PublicKeyHash.d.ts +49 -0
  157. package/PublicKeyHash.js +65 -0
  158. package/PublicKeyHash.js.map +1 -0
  159. package/PublicKeyHash.mjs +28 -0
  160. package/PublicKeyHash.mjs.map +1 -0
  161. package/RequestArgs.d.ts +5557 -0
  162. package/RequestArgs.js +136 -0
  163. package/RequestArgs.js.map +1 -0
  164. package/RequestArgs.mjs +89 -0
  165. package/RequestArgs.mjs.map +1 -0
  166. package/SHA256.d.ts +33 -0
  167. package/SHA256.js +79 -0
  168. package/SHA256.js.map +1 -0
  169. package/SHA256.mjs +42 -0
  170. package/SHA256.mjs.map +1 -0
  171. package/SandboxAccountConfig.d.ts +152 -0
  172. package/SandboxAccountConfig.js +72 -0
  173. package/SandboxAccountConfig.js.map +1 -0
  174. package/SandboxAccountConfig.mjs +35 -0
  175. package/SandboxAccountConfig.mjs.map +1 -0
  176. package/SandboxConfig.d.ts +550 -0
  177. package/SandboxConfig.js +103 -0
  178. package/SandboxConfig.js.map +1 -0
  179. package/SandboxConfig.mjs +66 -0
  180. package/SandboxConfig.mjs.map +1 -0
  181. package/SanitizedAbsPath.d.ts +48 -0
  182. package/SanitizedAbsPath.js +64 -0
  183. package/SanitizedAbsPath.js.map +1 -0
  184. package/SanitizedAbsPath.mjs +27 -0
  185. package/SanitizedAbsPath.mjs.map +1 -0
  186. package/SanitizedArgs.d.ts +2907 -0
  187. package/SanitizedArgs.js +269 -0
  188. package/SanitizedArgs.js.map +1 -0
  189. package/SanitizedArgs.mjs +197 -0
  190. package/SanitizedArgs.mjs.map +1 -0
  191. package/SanitizedPath.d.ts +30 -0
  192. package/SanitizedPath.js +64 -0
  193. package/SanitizedPath.js.map +1 -0
  194. package/SanitizedPath.mjs +28 -0
  195. package/SanitizedPath.mjs.map +1 -0
  196. package/ScaffoldConfig.d.ts +6 -0
  197. package/ScaffoldConfig.js +19 -0
  198. package/ScaffoldConfig.js.map +1 -0
  199. package/ScaffoldConfig.mjs +1 -0
  200. package/ScaffoldConfig.mjs.map +1 -0
  201. package/Settings.d.ts +82 -0
  202. package/Settings.js +66 -0
  203. package/Settings.js.map +1 -0
  204. package/Settings.mjs +29 -0
  205. package/Settings.mjs.map +1 -0
  206. package/SingleChar.d.ts +48 -0
  207. package/SingleChar.js +62 -0
  208. package/SingleChar.js.map +1 -0
  209. package/SingleChar.mjs +25 -0
  210. package/SingleChar.mjs.map +1 -0
  211. package/TaqError.d.ts +24 -0
  212. package/TaqError.js +65 -0
  213. package/TaqError.js.map +1 -0
  214. package/TaqError.mjs +35 -0
  215. package/TaqError.mjs.map +1 -0
  216. package/Task.d.ts +825 -0
  217. package/Task.js +95 -0
  218. package/Task.js.map +1 -0
  219. package/Task.mjs +58 -0
  220. package/Task.mjs.map +1 -0
  221. package/Template.d.ts +1746 -0
  222. package/Template.js +117 -0
  223. package/Template.js.map +1 -0
  224. package/Template.mjs +79 -0
  225. package/Template.mjs.map +1 -0
  226. package/Timestamp.d.ts +51 -0
  227. package/Timestamp.js +65 -0
  228. package/Timestamp.js.map +1 -0
  229. package/Timestamp.mjs +27 -0
  230. package/Timestamp.mjs.map +1 -0
  231. package/Tz.d.ts +47 -0
  232. package/Tz.js +62 -0
  233. package/Tz.js.map +1 -0
  234. package/Tz.mjs +25 -0
  235. package/Tz.mjs.map +1 -0
  236. package/Url.d.ts +49 -0
  237. package/Url.js +68 -0
  238. package/Url.js.map +1 -0
  239. package/Url.mjs +30 -0
  240. package/Url.mjs.map +1 -0
  241. package/Verb.d.ts +48 -0
  242. package/Verb.js +62 -0
  243. package/Verb.js.map +1 -0
  244. package/Verb.mjs +25 -0
  245. package/Verb.mjs.map +1 -0
  246. package/VersionNumber.d.ts +30 -0
  247. package/VersionNumber.js +61 -0
  248. package/VersionNumber.js.map +1 -0
  249. package/VersionNumber.mjs +25 -0
  250. package/VersionNumber.mjs.map +1 -0
  251. package/i18n.d.ts +7 -0
  252. package/i18n.js +96 -0
  253. package/i18n.js.map +1 -0
  254. package/i18n.mjs +67 -0
  255. package/i18n.mjs.map +1 -0
  256. package/package.json +31 -3
  257. package/taqueria-protocol-types.d.ts +72 -0
  258. package/taqueria-protocol-types.js +142 -0
  259. package/taqueria-protocol-types.js.map +1 -0
  260. package/taqueria-protocol-types.mjs +76 -0
  261. package/taqueria-protocol-types.mjs.map +1 -0
  262. package/tzkt-config.d.ts +116 -0
  263. package/tzkt-config.js +65 -0
  264. package/tzkt-config.js.map +1 -0
  265. package/tzkt-config.mjs +28 -0
  266. package/tzkt-config.mjs.map +1 -0
  267. package/Alias.ts +0 -38
  268. package/Base.ts +0 -105
  269. package/Command.ts +0 -26
  270. package/Config.ts +0 -163
  271. package/Contract.ts +0 -35
  272. package/Crypto.ts +0 -3
  273. package/EconomicalProtocolHash.ts +0 -26
  274. package/Environment.ts +0 -40
  275. package/EphemeralState.ts +0 -282
  276. package/Faucet.ts +0 -46
  277. package/HumanReadableIdentifier.ts +0 -26
  278. package/InstalledPlugin.ts +0 -28
  279. package/LoadedConfig.ts +0 -45
  280. package/MetadataConfig.ts +0 -37
  281. package/NetworkConfig.ts +0 -39
  282. package/Operation.ts +0 -70
  283. package/Option.ts +0 -64
  284. package/ParsedOperation.ts +0 -33
  285. package/ParsedTemplate.ts +0 -40
  286. package/PersistentState.ts +0 -69
  287. package/PluginActionName.ts +0 -28
  288. package/PluginDependenciesResponse.ts +0 -33
  289. package/PluginInfo.ts +0 -76
  290. package/PluginJsonResponse.ts +0 -26
  291. package/PluginProxyResponse.ts +0 -24
  292. package/PluginResponseEncoding.ts +0 -27
  293. package/PluginSchema.ts +0 -81
  294. package/PositionalArg.ts +0 -41
  295. package/Provisioner.ts +0 -61
  296. package/ProvisionerID.ts +0 -25
  297. package/Provisions.ts +0 -70
  298. package/PublicKeyHash.ts +0 -28
  299. package/RequestArgs.ts +0 -97
  300. package/SHA256.ts +0 -42
  301. package/SandboxAccountConfig.ts +0 -35
  302. package/SandboxConfig.ts +0 -63
  303. package/SanitizedAbsPath.ts +0 -23
  304. package/SanitizedArgs.ts +0 -213
  305. package/SanitizedPath.ts +0 -28
  306. package/ScaffoldConfig.ts +0 -6
  307. package/Settings.ts +0 -27
  308. package/SingleChar.ts +0 -23
  309. package/TaqError.ts +0 -78
  310. package/Task.ts +0 -57
  311. package/Template.ts +0 -77
  312. package/Timestamp.ts +0 -25
  313. package/Tz.ts +0 -22
  314. package/Url.ts +0 -28
  315. package/Verb.ts +0 -23
  316. package/VersionNumber.ts +0 -25
  317. package/i18n.ts +0 -74
  318. package/taqueria-protocol-types.ts +0 -36
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+
26
+ // EphemeralState.ts
27
+ var EphemeralState_exports = {};
28
+ __export(EphemeralState_exports, {
29
+ create: () => create2,
30
+ factory: () => factory,
31
+ generatedSchemas: () => generatedSchemas,
32
+ getTasks: () => getTasks,
33
+ make: () => make7,
34
+ mapOperationsToPlugins: () => mapOperationsToPlugins,
35
+ mapTasksToPlugins: () => mapTasksToPlugins,
36
+ mapTemplatesToPlugins: () => mapTemplatesToPlugins,
37
+ of: () => of,
38
+ schemas: () => schemas6
39
+ });
40
+ module.exports = __toCommonJS(EphemeralState_exports);
41
+ var import_Base = __toESM(require("@taqueria/protocol/Base"));
42
+ var Command = __toESM(require("@taqueria/protocol/Command"));
43
+ var InstalledPlugin = __toESM(require("@taqueria/protocol/InstalledPlugin"));
44
+ var Option = __toESM(require("@taqueria/protocol/Option"));
45
+ var ParsedOperation = __toESM(require("@taqueria/protocol/ParsedOperation"));
46
+ var ParsedTemplate = __toESM(require("@taqueria/protocol/ParsedTemplate"));
47
+ var PluginInfo = __toESM(require("@taqueria/protocol/PluginInfo"));
48
+ var PluginResponseEncoding = __toESM(require("@taqueria/protocol/PluginResponseEncoding"));
49
+ var import_TaqError = require("@taqueria/protocol/TaqError");
50
+ var Task = __toESM(require("@taqueria/protocol/Task"));
51
+ var Verb = __toESM(require("@taqueria/protocol/Verb"));
52
+ var import_fluture = require("fluture");
53
+ var import_zod = require("zod");
54
+ var eager = (f) => (0, import_fluture.promise)(
55
+ (0, import_fluture.mapRej)((err) => new import_TaqError.E_TaqError(err))(f)
56
+ );
57
+ var taskToPluginMap = import_zod.z.record(
58
+ import_zod.z.union([
59
+ InstalledPlugin.schemas.schema,
60
+ Task.schemas.schema
61
+ ], { description: "Task/Plugin Mapping" })
62
+ );
63
+ var operationToPluginMap = import_zod.z.record(
64
+ import_zod.z.union([
65
+ InstalledPlugin.schemas.schema,
66
+ ParsedOperation.schemas.schema
67
+ ], { description: "Operation/Plugin Mapping" })
68
+ );
69
+ var templateToPluginMap = import_zod.z.record(
70
+ import_zod.z.union([
71
+ InstalledPlugin.schemas.schema,
72
+ ParsedTemplate.schemas.schema
73
+ ])
74
+ );
75
+ var rawSchema = import_zod.z.object({
76
+ build: import_zod.z.string({ description: "cache.build" }),
77
+ configHash: import_zod.z.string({ description: "cache.configHash" }),
78
+ tasks: taskToPluginMap,
79
+ operations: operationToPluginMap,
80
+ templates: templateToPluginMap,
81
+ plugins: import_zod.z.array(PluginInfo.schemas.schema, { description: "cache.plugins" })
82
+ }).describe("Ephemeral State");
83
+ var { schemas: generatedSchemas, factory } = (0, import_Base.default)({
84
+ rawSchema,
85
+ parseErrMsg: (value) => `${value} is not a valid representation of ephemeral state`,
86
+ unknownErrMsg: "Something went wrong when parsing the ephemeral state"
87
+ });
88
+ var { create: create2, of, make: make7 } = factory;
89
+ var schemas6 = {
90
+ ...generatedSchemas,
91
+ schema: generatedSchemas.schema.transform((val) => val)
92
+ };
93
+ var getTaskCounts = (pluginInfo) => {
94
+ return pluginInfo.reduce(
95
+ (retval, pluginInfo2) => pluginInfo2.tasks === void 0 ? {} : pluginInfo2.tasks.reduce(
96
+ (retval2, task) => {
97
+ const taskName = task.task;
98
+ const providers = retval2[taskName] ? [...retval2[taskName], pluginInfo2] : [pluginInfo2];
99
+ const mapping = {};
100
+ mapping[taskName] = providers.filter((provider) => provider !== void 0);
101
+ return { ...retval2, ...mapping };
102
+ },
103
+ retval
104
+ ),
105
+ {}
106
+ );
107
+ };
108
+ var getTemplateCounts = (pluginInfo) => {
109
+ return pluginInfo.reduce(
110
+ (retval, pluginInfo2) => !pluginInfo2.templates ? retval : pluginInfo2.templates.reduce(
111
+ (retval2, template) => {
112
+ const templateName = template.template;
113
+ const providers = retval2[templateName] ? [...retval2[templateName], pluginInfo2] : [pluginInfo2];
114
+ const mapping = {};
115
+ mapping[templateName] = providers.filter((provider) => provider !== void 0);
116
+ return { ...retval2, ...mapping };
117
+ },
118
+ retval
119
+ ),
120
+ {}
121
+ );
122
+ };
123
+ var getOperationCounts = (pluginInfo) => {
124
+ return pluginInfo.reduce(
125
+ (retval, pluginInfo2) => pluginInfo2.operations === void 0 ? retval : pluginInfo2.operations.reduce(
126
+ (retval2, operation) => {
127
+ const operationName = operation.operation;
128
+ const providers = retval2[operationName] ? [...retval2[operationName], pluginInfo2] : [pluginInfo2];
129
+ const mapping = {};
130
+ mapping[operationName] = providers.filter((provider) => provider !== void 0);
131
+ return { ...retval2, ...mapping };
132
+ },
133
+ retval
134
+ ),
135
+ {}
136
+ );
137
+ };
138
+ var toChoices = (plugins) => plugins.reduce(
139
+ (retval, pluginInfo) => {
140
+ return [...retval, pluginInfo.name, pluginInfo.alias];
141
+ },
142
+ []
143
+ );
144
+ var isComposite = (name, counts) => counts[name] && counts[name].length > 1;
145
+ var getInstalledPlugin = (config, name) => {
146
+ var _a;
147
+ return (_a = config.plugins) == null ? void 0 : _a.find(
148
+ (plugin) => [`taqueria-plugin-${name}`, name].includes(plugin.name)
149
+ );
150
+ };
151
+ var mapTasksToPlugins = (config, pluginInfo, i18n) => {
152
+ const taskCounts = getTaskCounts(pluginInfo);
153
+ return (0, import_fluture.attemptP)(
154
+ async () => await pluginInfo.reduce(
155
+ async (retval, pluginInfo2) => !pluginInfo2.tasks ? Promise.resolve({}) : await pluginInfo2.tasks.reduce(
156
+ async (retval2, { task }) => {
157
+ if (isComposite(task, taskCounts)) {
158
+ const command = await eager(Command.make(task));
159
+ const compositeTask = await eager(Task.make({
160
+ task,
161
+ command,
162
+ description: i18n.__("providedByMany"),
163
+ hidden: false,
164
+ options: [
165
+ await eager(Option.make({
166
+ flag: await eager(Verb.make("plugin")),
167
+ description: "Specify which plugin should be used to execute this task",
168
+ choices: toChoices(taskCounts[task]),
169
+ required: true
170
+ }))
171
+ ],
172
+ handler: "proxy"
173
+ }));
174
+ return { ...await retval2, [task]: compositeTask };
175
+ }
176
+ const installedPlugin = getInstalledPlugin(config, pluginInfo2.name);
177
+ return installedPlugin ? { ...await retval2, [task]: installedPlugin } : retval2;
178
+ },
179
+ retval
180
+ ),
181
+ Promise.resolve({})
182
+ )
183
+ ).pipe((0, import_fluture.mapRej)((rej) => rej));
184
+ };
185
+ var mapOperationsToPlugins = (config, pluginInfo, i18n) => {
186
+ const opCounts = getOperationCounts(pluginInfo);
187
+ return (0, import_fluture.attemptP)(
188
+ async () => await pluginInfo.reduce(
189
+ async (retval, pluginInfo2) => !pluginInfo2.operations ? Promise.resolve({}) : await pluginInfo2.operations.reduce(
190
+ async (retval2, { operation }) => {
191
+ if (isComposite(operation, opCounts)) {
192
+ const command = await eager(Command.make(operation));
193
+ const compositeOp = await eager(ParsedOperation.make({
194
+ operation,
195
+ command,
196
+ description: i18n.__("providedByMany"),
197
+ options: [
198
+ await eager(Option.make({
199
+ flag: await eager(Verb.make("plugin")),
200
+ description: "Specify which plugin should be used to execute this operation",
201
+ choices: toChoices(opCounts[operation]),
202
+ required: true
203
+ }))
204
+ ]
205
+ }));
206
+ return { ...await retval2, [operation]: compositeOp };
207
+ }
208
+ const installedPlugin = getInstalledPlugin(config, pluginInfo2.name);
209
+ return installedPlugin ? { ...await retval2, [operation]: installedPlugin } : retval2;
210
+ },
211
+ retval
212
+ ),
213
+ Promise.resolve({})
214
+ )
215
+ ).pipe((0, import_fluture.mapRej)((rej) => rej));
216
+ };
217
+ var mapTemplatesToPlugins = (config, pluginInfo, i18n) => {
218
+ const tmplCounts = getTemplateCounts(pluginInfo);
219
+ return (0, import_fluture.attemptP)(
220
+ async () => await pluginInfo.reduce(
221
+ async (retval, pluginInfo2) => !pluginInfo2.templates ? Promise.resolve({}) : await pluginInfo2.templates.reduce(
222
+ async (retval2, { template }) => {
223
+ if (isComposite(template, tmplCounts)) {
224
+ const command = await eager(Command.make(template));
225
+ const compositeTmpl = await eager(ParsedTemplate.make({
226
+ template,
227
+ command,
228
+ description: i18n.__("providedByMany"),
229
+ options: [
230
+ await eager(Option.make({
231
+ flag: await eager(Verb.make("plugin")),
232
+ description: "Specify which plugin should be used to execute this task",
233
+ choices: toChoices(tmplCounts[template]),
234
+ required: true
235
+ }))
236
+ ],
237
+ handler: "proxy",
238
+ encoding: PluginResponseEncoding.create("none")
239
+ }));
240
+ return { ...await retval2, [template]: compositeTmpl };
241
+ }
242
+ const installedPlugin = getInstalledPlugin(config, pluginInfo2.name);
243
+ return installedPlugin ? { ...await retval2, [template]: installedPlugin } : retval2;
244
+ },
245
+ retval
246
+ ),
247
+ Promise.resolve({})
248
+ )
249
+ ).pipe((0, import_fluture.mapRej)((rej) => rej));
250
+ };
251
+ var getTasks = (pluginInfo) => pluginInfo.reduce(
252
+ (retval, pluginInfo2) => [...retval, ...pluginInfo2.tasks ?? []],
253
+ []
254
+ );
255
+ // Annotate the CommonJS export names for ESM import in node:
256
+ 0 && (module.exports = {
257
+ create,
258
+ factory,
259
+ generatedSchemas,
260
+ getTasks,
261
+ make,
262
+ mapOperationsToPlugins,
263
+ mapTasksToPlugins,
264
+ mapTemplatesToPlugins,
265
+ of,
266
+ schemas
267
+ });
268
+ //# sourceMappingURL=EphemeralState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["EphemeralState.ts"],"sourcesContent":["import createType from '@taqueria/protocol/Base';\nimport * as Command from '@taqueria/protocol/Command';\nimport * as Config from '@taqueria/protocol/Config';\nimport type { i18n } from '@taqueria/protocol/i18n';\nimport * as InstalledPlugin from '@taqueria/protocol/InstalledPlugin';\nimport * as Option from '@taqueria/protocol/Option';\nimport * as ParsedOperation from '@taqueria/protocol/ParsedOperation';\nimport * as ParsedTemplate from '@taqueria/protocol/ParsedTemplate';\nimport * as PluginInfo from '@taqueria/protocol/PluginInfo';\nimport * as PluginResponseEncoding from '@taqueria/protocol/PluginResponseEncoding';\nimport { E_TaqError, TaqError } from '@taqueria/protocol/TaqError';\nimport * as Task from '@taqueria/protocol/Task';\nimport * as Verb from '@taqueria/protocol/Verb';\nimport { attemptP, FutureInstance as Future, mapRej, promise } from 'fluture';\nimport { z } from 'zod';\n\nconst eager = <T>(f: Future<TaqError, T>) =>\n\tpromise(\n\t\tmapRej((err: TaqError) => new E_TaqError(err))(f),\n\t);\n\nconst taskToPluginMap = z.record(\n\tz.union([\n\t\tInstalledPlugin.schemas.schema,\n\t\tTask.schemas.schema,\n\t], { description: 'Task/Plugin Mapping' }),\n);\nconst operationToPluginMap = z.record(\n\tz.union([\n\t\tInstalledPlugin.schemas.schema,\n\t\tParsedOperation.schemas.schema,\n\t], { description: 'Operation/Plugin Mapping' }),\n);\n\nconst templateToPluginMap = z.record(\n\tz.union([\n\t\tInstalledPlugin.schemas.schema,\n\t\tParsedTemplate.schemas.schema,\n\t]),\n);\n\nconst rawSchema = z.object({\n\tbuild: z.string({ description: 'cache.build' }),\n\tconfigHash: z.string({ description: 'cache.configHash' }),\n\ttasks: taskToPluginMap,\n\toperations: operationToPluginMap,\n\ttemplates: templateToPluginMap,\n\tplugins: z.array(PluginInfo.schemas.schema, { description: 'cache.plugins' }),\n}).describe('Ephemeral State');\n\ntype RawInput = z.infer<typeof rawSchema>;\n\nexport const { schemas: generatedSchemas, factory } = createType<RawInput, RawInput>({\n\trawSchema,\n\tparseErrMsg: (value: unknown) => `${value} is not a valid representation of ephemeral state`,\n\tunknownErrMsg: 'Something went wrong when parsing the ephemeral state',\n});\n\nexport type EphemeralState = z.infer<typeof generatedSchemas.schema>;\nexport type t = EphemeralState;\nexport type TaskToPluginMap = z.infer<typeof taskToPluginMap>;\nexport type OpToPluginMap = z.infer<typeof operationToPluginMap>;\nexport type TemplateToPluginMap = z.infer<typeof templateToPluginMap>;\n\nexport const { create, of, make } = factory;\n\nexport const schemas = {\n\t...generatedSchemas,\n\tschema: generatedSchemas.schema.transform(val => val as EphemeralState),\n};\n\n/**\n * Private functions\n */\ntype Counts = Record<Verb.t, PluginInfo.t[]>;\nconst getTaskCounts = (pluginInfo: PluginInfo.t[]): Counts => {\n\treturn pluginInfo.reduce(\n\t\t(retval, pluginInfo) =>\n\t\t\tpluginInfo.tasks === undefined\n\t\t\t\t? {}\n\t\t\t\t: pluginInfo.tasks.reduce(\n\t\t\t\t\t(retval: Counts, task: Task.t) => {\n\t\t\t\t\t\tconst taskName = task.task;\n\t\t\t\t\t\tconst providers: PluginInfo.t[] = retval[taskName]\n\t\t\t\t\t\t\t? [...retval[taskName], pluginInfo]\n\t\t\t\t\t\t\t: [pluginInfo];\n\t\t\t\t\t\tconst mapping: Counts = {};\n\t\t\t\t\t\tmapping[taskName] = providers.filter(provider => provider !== undefined);\n\t\t\t\t\t\treturn { ...retval, ...mapping };\n\t\t\t\t\t},\n\t\t\t\t\tretval,\n\t\t\t\t),\n\t\t{} as Counts,\n\t);\n};\n\nconst getTemplateCounts = (pluginInfo: PluginInfo.t[]): Counts => {\n\treturn pluginInfo.reduce(\n\t\t(retval, pluginInfo) =>\n\t\t\t!pluginInfo.templates\n\t\t\t\t? retval\n\t\t\t\t: pluginInfo.templates.reduce(\n\t\t\t\t\t(retval: Counts, template: ParsedTemplate.t) => {\n\t\t\t\t\t\tconst templateName = template.template;\n\t\t\t\t\t\tconst providers = retval[templateName]\n\t\t\t\t\t\t\t? [...retval[templateName], pluginInfo]\n\t\t\t\t\t\t\t: [pluginInfo];\n\t\t\t\t\t\tconst mapping: Counts = {};\n\t\t\t\t\t\tmapping[templateName] = providers.filter(provider => provider !== undefined);\n\t\t\t\t\t\treturn { ...retval, ...mapping };\n\t\t\t\t\t},\n\t\t\t\t\tretval,\n\t\t\t\t),\n\t\t{} as Counts,\n\t);\n};\n\nconst getOperationCounts = (pluginInfo: PluginInfo.t[]): Counts => {\n\treturn pluginInfo.reduce(\n\t\t(retval, pluginInfo) =>\n\t\t\tpluginInfo.operations === undefined\n\t\t\t\t? retval\n\t\t\t\t: pluginInfo.operations.reduce(\n\t\t\t\t\t(retval: Counts, operation: ParsedOperation.t) => {\n\t\t\t\t\t\tconst operationName = operation.operation;\n\t\t\t\t\t\tconst providers = retval[operationName]\n\t\t\t\t\t\t\t? [...retval[operationName], pluginInfo]\n\t\t\t\t\t\t\t: [pluginInfo];\n\t\t\t\t\t\tconst mapping: Counts = {};\n\t\t\t\t\t\tmapping[operationName] = providers.filter(provider => provider !== undefined);\n\t\t\t\t\t\treturn { ...retval, ...mapping };\n\t\t\t\t\t},\n\t\t\t\t\tretval,\n\t\t\t\t),\n\t\t{} as Counts,\n\t);\n};\n\nconst toChoices = (plugins: PluginInfo.t[]) =>\n\tplugins.reduce(\n\t\t(retval, pluginInfo) => {\n\t\t\treturn [...retval, pluginInfo.name as string, pluginInfo.alias as string];\n\t\t},\n\t\t[] as string[],\n\t);\n\nconst isComposite = (name: Verb.t, counts: Counts) => counts[name] && counts[name].length > 1;\n\nconst getInstalledPlugin = (config: Config.t, name: string) =>\n\tconfig.plugins?.find(\n\t\t(plugin: InstalledPlugin.t) => [`taqueria-plugin-${name}`, name].includes(plugin.name),\n\t);\n\nexport const mapTasksToPlugins = (config: Config.t, pluginInfo: PluginInfo.t[], i18n: i18n) => {\n\tconst taskCounts = getTaskCounts(pluginInfo);\n\treturn attemptP<TaqError, TaskToPluginMap>(async () =>\n\t\tawait pluginInfo.reduce(\n\t\t\tasync (retval, pluginInfo) =>\n\t\t\t\t!pluginInfo.tasks\n\t\t\t\t\t? Promise.resolve({} as TaskToPluginMap)\n\t\t\t\t\t: await pluginInfo.tasks.reduce(\n\t\t\t\t\t\tasync (retval, { task }) => {\n\t\t\t\t\t\t\tif (isComposite(task, taskCounts)) {\n\t\t\t\t\t\t\t\tconst command = await eager(Command.make(task));\n\t\t\t\t\t\t\t\tconst compositeTask = await eager(Task.make({\n\t\t\t\t\t\t\t\t\ttask,\n\t\t\t\t\t\t\t\t\tcommand,\n\t\t\t\t\t\t\t\t\tdescription: i18n.__('providedByMany'),\n\t\t\t\t\t\t\t\t\thidden: false,\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\tawait eager(Option.make({\n\t\t\t\t\t\t\t\t\t\t\tflag: await eager(Verb.make('plugin')),\n\t\t\t\t\t\t\t\t\t\t\tdescription: 'Specify which plugin should be used to execute this task',\n\t\t\t\t\t\t\t\t\t\t\tchoices: toChoices(taskCounts[task]),\n\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\thandler: 'proxy',\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\treturn { ...await retval, [task]: compositeTask };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Task is provided by just a single plugin\n\t\t\t\t\t\t\tconst installedPlugin = getInstalledPlugin(config, pluginInfo.name);\n\t\t\t\t\t\t\treturn installedPlugin\n\t\t\t\t\t\t\t\t? { ...await retval, [task]: installedPlugin }\n\t\t\t\t\t\t\t\t: retval;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tretval,\n\t\t\t\t\t),\n\t\t\tPromise.resolve({} as TaskToPluginMap),\n\t\t)\n\t).pipe(mapRej(rej => rej as TaqError));\n};\n\nexport const mapOperationsToPlugins = (config: Config.t, pluginInfo: PluginInfo.t[], i18n: i18n) => {\n\tconst opCounts = getOperationCounts(pluginInfo);\n\treturn attemptP(async () =>\n\t\tawait pluginInfo.reduce(\n\t\t\tasync (retval, pluginInfo) =>\n\t\t\t\t!pluginInfo.operations\n\t\t\t\t\t? Promise.resolve({} as OpToPluginMap)\n\t\t\t\t\t: await pluginInfo.operations.reduce(\n\t\t\t\t\t\tasync (retval, { operation }) => {\n\t\t\t\t\t\t\tif (isComposite(operation, opCounts)) {\n\t\t\t\t\t\t\t\tconst command = await eager(Command.make(operation));\n\t\t\t\t\t\t\t\tconst compositeOp = await eager(ParsedOperation.make({\n\t\t\t\t\t\t\t\t\toperation,\n\t\t\t\t\t\t\t\t\tcommand,\n\t\t\t\t\t\t\t\t\tdescription: i18n.__('providedByMany'),\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\tawait eager(Option.make({\n\t\t\t\t\t\t\t\t\t\t\tflag: await eager(Verb.make('plugin')),\n\t\t\t\t\t\t\t\t\t\t\tdescription: 'Specify which plugin should be used to execute this operation',\n\t\t\t\t\t\t\t\t\t\t\tchoices: toChoices(opCounts[operation]),\n\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\treturn { ...await retval, [operation]: compositeOp };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Operation is provided by just a single plugin\n\t\t\t\t\t\t\tconst installedPlugin = getInstalledPlugin(config, pluginInfo.name);\n\t\t\t\t\t\t\treturn installedPlugin\n\t\t\t\t\t\t\t\t? { ...await retval, [operation]: installedPlugin }\n\t\t\t\t\t\t\t\t: retval;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tretval,\n\t\t\t\t\t),\n\t\t\tPromise.resolve({} as OpToPluginMap),\n\t\t)\n\t).pipe(mapRej(rej => rej as TaqError));\n};\n\nexport const mapTemplatesToPlugins = (config: Config.t, pluginInfo: PluginInfo.t[], i18n: i18n) => {\n\tconst tmplCounts = getTemplateCounts(pluginInfo);\n\treturn attemptP<TaqError, TemplateToPluginMap>(async () =>\n\t\tawait pluginInfo.reduce(\n\t\t\tasync (retval, pluginInfo) =>\n\t\t\t\t!pluginInfo.templates\n\t\t\t\t\t? Promise.resolve({} as TemplateToPluginMap)\n\t\t\t\t\t: await pluginInfo.templates!.reduce(\n\t\t\t\t\t\tasync (retval, { template }) => {\n\t\t\t\t\t\t\tif (isComposite(template, tmplCounts)) {\n\t\t\t\t\t\t\t\tconst command = await eager(Command.make(template));\n\t\t\t\t\t\t\t\tconst compositeTmpl = await eager(ParsedTemplate.make({\n\t\t\t\t\t\t\t\t\ttemplate,\n\t\t\t\t\t\t\t\t\tcommand,\n\t\t\t\t\t\t\t\t\tdescription: i18n.__('providedByMany'),\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\tawait eager(Option.make({\n\t\t\t\t\t\t\t\t\t\t\tflag: await eager(Verb.make('plugin')),\n\t\t\t\t\t\t\t\t\t\t\tdescription: 'Specify which plugin should be used to execute this task',\n\t\t\t\t\t\t\t\t\t\t\tchoices: toChoices(tmplCounts[template]),\n\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\thandler: 'proxy',\n\t\t\t\t\t\t\t\t\tencoding: PluginResponseEncoding.create('none'),\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\treturn { ...await retval, [template]: compositeTmpl };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Template is provided by just a single plugin\n\t\t\t\t\t\t\tconst installedPlugin = getInstalledPlugin(config, pluginInfo.name);\n\t\t\t\t\t\t\treturn installedPlugin\n\t\t\t\t\t\t\t\t? { ...await retval, [template]: installedPlugin }\n\t\t\t\t\t\t\t\t: retval;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tretval,\n\t\t\t\t\t),\n\t\t\tPromise.resolve({} as TemplateToPluginMap),\n\t\t)\n\t).pipe(mapRej(rej => rej as TaqError));\n};\n\nexport const getTasks = (pluginInfo: PluginInfo.t[]) =>\n\tpluginInfo.reduce(\n\t\t(retval: Task.t[], pluginInfo) => [...retval, ...(pluginInfo.tasks ?? [])],\n\t\t[],\n\t);\n"],"mappings":"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","names":["create","make","schemas","createType","pluginInfo","retval"]}
@@ -0,0 +1,228 @@
1
+ // EphemeralState.ts
2
+ import createType from "@taqueria/protocol/Base";
3
+ import * as Command from "@taqueria/protocol/Command";
4
+ import * as InstalledPlugin from "@taqueria/protocol/InstalledPlugin";
5
+ import * as Option from "@taqueria/protocol/Option";
6
+ import * as ParsedOperation from "@taqueria/protocol/ParsedOperation";
7
+ import * as ParsedTemplate from "@taqueria/protocol/ParsedTemplate";
8
+ import * as PluginInfo from "@taqueria/protocol/PluginInfo";
9
+ import * as PluginResponseEncoding from "@taqueria/protocol/PluginResponseEncoding";
10
+ import { E_TaqError } from "@taqueria/protocol/TaqError";
11
+ import * as Task from "@taqueria/protocol/Task";
12
+ import * as Verb from "@taqueria/protocol/Verb";
13
+ import { attemptP, mapRej, promise } from "fluture";
14
+ import { z } from "zod";
15
+ var eager = (f) => promise(
16
+ mapRej((err) => new E_TaqError(err))(f)
17
+ );
18
+ var taskToPluginMap = z.record(
19
+ z.union([
20
+ InstalledPlugin.schemas.schema,
21
+ Task.schemas.schema
22
+ ], { description: "Task/Plugin Mapping" })
23
+ );
24
+ var operationToPluginMap = z.record(
25
+ z.union([
26
+ InstalledPlugin.schemas.schema,
27
+ ParsedOperation.schemas.schema
28
+ ], { description: "Operation/Plugin Mapping" })
29
+ );
30
+ var templateToPluginMap = z.record(
31
+ z.union([
32
+ InstalledPlugin.schemas.schema,
33
+ ParsedTemplate.schemas.schema
34
+ ])
35
+ );
36
+ var rawSchema = z.object({
37
+ build: z.string({ description: "cache.build" }),
38
+ configHash: z.string({ description: "cache.configHash" }),
39
+ tasks: taskToPluginMap,
40
+ operations: operationToPluginMap,
41
+ templates: templateToPluginMap,
42
+ plugins: z.array(PluginInfo.schemas.schema, { description: "cache.plugins" })
43
+ }).describe("Ephemeral State");
44
+ var { schemas: generatedSchemas, factory } = createType({
45
+ rawSchema,
46
+ parseErrMsg: (value) => `${value} is not a valid representation of ephemeral state`,
47
+ unknownErrMsg: "Something went wrong when parsing the ephemeral state"
48
+ });
49
+ var { create: create2, of, make: make7 } = factory;
50
+ var schemas6 = {
51
+ ...generatedSchemas,
52
+ schema: generatedSchemas.schema.transform((val) => val)
53
+ };
54
+ var getTaskCounts = (pluginInfo) => {
55
+ return pluginInfo.reduce(
56
+ (retval, pluginInfo2) => pluginInfo2.tasks === void 0 ? {} : pluginInfo2.tasks.reduce(
57
+ (retval2, task) => {
58
+ const taskName = task.task;
59
+ const providers = retval2[taskName] ? [...retval2[taskName], pluginInfo2] : [pluginInfo2];
60
+ const mapping = {};
61
+ mapping[taskName] = providers.filter((provider) => provider !== void 0);
62
+ return { ...retval2, ...mapping };
63
+ },
64
+ retval
65
+ ),
66
+ {}
67
+ );
68
+ };
69
+ var getTemplateCounts = (pluginInfo) => {
70
+ return pluginInfo.reduce(
71
+ (retval, pluginInfo2) => !pluginInfo2.templates ? retval : pluginInfo2.templates.reduce(
72
+ (retval2, template) => {
73
+ const templateName = template.template;
74
+ const providers = retval2[templateName] ? [...retval2[templateName], pluginInfo2] : [pluginInfo2];
75
+ const mapping = {};
76
+ mapping[templateName] = providers.filter((provider) => provider !== void 0);
77
+ return { ...retval2, ...mapping };
78
+ },
79
+ retval
80
+ ),
81
+ {}
82
+ );
83
+ };
84
+ var getOperationCounts = (pluginInfo) => {
85
+ return pluginInfo.reduce(
86
+ (retval, pluginInfo2) => pluginInfo2.operations === void 0 ? retval : pluginInfo2.operations.reduce(
87
+ (retval2, operation) => {
88
+ const operationName = operation.operation;
89
+ const providers = retval2[operationName] ? [...retval2[operationName], pluginInfo2] : [pluginInfo2];
90
+ const mapping = {};
91
+ mapping[operationName] = providers.filter((provider) => provider !== void 0);
92
+ return { ...retval2, ...mapping };
93
+ },
94
+ retval
95
+ ),
96
+ {}
97
+ );
98
+ };
99
+ var toChoices = (plugins) => plugins.reduce(
100
+ (retval, pluginInfo) => {
101
+ return [...retval, pluginInfo.name, pluginInfo.alias];
102
+ },
103
+ []
104
+ );
105
+ var isComposite = (name, counts) => counts[name] && counts[name].length > 1;
106
+ var getInstalledPlugin = (config, name) => {
107
+ var _a;
108
+ return (_a = config.plugins) == null ? void 0 : _a.find(
109
+ (plugin) => [`taqueria-plugin-${name}`, name].includes(plugin.name)
110
+ );
111
+ };
112
+ var mapTasksToPlugins = (config, pluginInfo, i18n) => {
113
+ const taskCounts = getTaskCounts(pluginInfo);
114
+ return attemptP(
115
+ async () => await pluginInfo.reduce(
116
+ async (retval, pluginInfo2) => !pluginInfo2.tasks ? Promise.resolve({}) : await pluginInfo2.tasks.reduce(
117
+ async (retval2, { task }) => {
118
+ if (isComposite(task, taskCounts)) {
119
+ const command = await eager(Command.make(task));
120
+ const compositeTask = await eager(Task.make({
121
+ task,
122
+ command,
123
+ description: i18n.__("providedByMany"),
124
+ hidden: false,
125
+ options: [
126
+ await eager(Option.make({
127
+ flag: await eager(Verb.make("plugin")),
128
+ description: "Specify which plugin should be used to execute this task",
129
+ choices: toChoices(taskCounts[task]),
130
+ required: true
131
+ }))
132
+ ],
133
+ handler: "proxy"
134
+ }));
135
+ return { ...await retval2, [task]: compositeTask };
136
+ }
137
+ const installedPlugin = getInstalledPlugin(config, pluginInfo2.name);
138
+ return installedPlugin ? { ...await retval2, [task]: installedPlugin } : retval2;
139
+ },
140
+ retval
141
+ ),
142
+ Promise.resolve({})
143
+ )
144
+ ).pipe(mapRej((rej) => rej));
145
+ };
146
+ var mapOperationsToPlugins = (config, pluginInfo, i18n) => {
147
+ const opCounts = getOperationCounts(pluginInfo);
148
+ return attemptP(
149
+ async () => await pluginInfo.reduce(
150
+ async (retval, pluginInfo2) => !pluginInfo2.operations ? Promise.resolve({}) : await pluginInfo2.operations.reduce(
151
+ async (retval2, { operation }) => {
152
+ if (isComposite(operation, opCounts)) {
153
+ const command = await eager(Command.make(operation));
154
+ const compositeOp = await eager(ParsedOperation.make({
155
+ operation,
156
+ command,
157
+ description: i18n.__("providedByMany"),
158
+ options: [
159
+ await eager(Option.make({
160
+ flag: await eager(Verb.make("plugin")),
161
+ description: "Specify which plugin should be used to execute this operation",
162
+ choices: toChoices(opCounts[operation]),
163
+ required: true
164
+ }))
165
+ ]
166
+ }));
167
+ return { ...await retval2, [operation]: compositeOp };
168
+ }
169
+ const installedPlugin = getInstalledPlugin(config, pluginInfo2.name);
170
+ return installedPlugin ? { ...await retval2, [operation]: installedPlugin } : retval2;
171
+ },
172
+ retval
173
+ ),
174
+ Promise.resolve({})
175
+ )
176
+ ).pipe(mapRej((rej) => rej));
177
+ };
178
+ var mapTemplatesToPlugins = (config, pluginInfo, i18n) => {
179
+ const tmplCounts = getTemplateCounts(pluginInfo);
180
+ return attemptP(
181
+ async () => await pluginInfo.reduce(
182
+ async (retval, pluginInfo2) => !pluginInfo2.templates ? Promise.resolve({}) : await pluginInfo2.templates.reduce(
183
+ async (retval2, { template }) => {
184
+ if (isComposite(template, tmplCounts)) {
185
+ const command = await eager(Command.make(template));
186
+ const compositeTmpl = await eager(ParsedTemplate.make({
187
+ template,
188
+ command,
189
+ description: i18n.__("providedByMany"),
190
+ options: [
191
+ await eager(Option.make({
192
+ flag: await eager(Verb.make("plugin")),
193
+ description: "Specify which plugin should be used to execute this task",
194
+ choices: toChoices(tmplCounts[template]),
195
+ required: true
196
+ }))
197
+ ],
198
+ handler: "proxy",
199
+ encoding: PluginResponseEncoding.create("none")
200
+ }));
201
+ return { ...await retval2, [template]: compositeTmpl };
202
+ }
203
+ const installedPlugin = getInstalledPlugin(config, pluginInfo2.name);
204
+ return installedPlugin ? { ...await retval2, [template]: installedPlugin } : retval2;
205
+ },
206
+ retval
207
+ ),
208
+ Promise.resolve({})
209
+ )
210
+ ).pipe(mapRej((rej) => rej));
211
+ };
212
+ var getTasks = (pluginInfo) => pluginInfo.reduce(
213
+ (retval, pluginInfo2) => [...retval, ...pluginInfo2.tasks ?? []],
214
+ []
215
+ );
216
+ export {
217
+ create2 as create,
218
+ factory,
219
+ generatedSchemas,
220
+ getTasks,
221
+ make7 as make,
222
+ mapOperationsToPlugins,
223
+ mapTasksToPlugins,
224
+ mapTemplatesToPlugins,
225
+ of,
226
+ schemas6 as schemas
227
+ };
228
+ //# sourceMappingURL=EphemeralState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["EphemeralState.ts"],"sourcesContent":["import createType from '@taqueria/protocol/Base';\nimport * as Command from '@taqueria/protocol/Command';\nimport * as Config from '@taqueria/protocol/Config';\nimport type { i18n } from '@taqueria/protocol/i18n';\nimport * as InstalledPlugin from '@taqueria/protocol/InstalledPlugin';\nimport * as Option from '@taqueria/protocol/Option';\nimport * as ParsedOperation from '@taqueria/protocol/ParsedOperation';\nimport * as ParsedTemplate from '@taqueria/protocol/ParsedTemplate';\nimport * as PluginInfo from '@taqueria/protocol/PluginInfo';\nimport * as PluginResponseEncoding from '@taqueria/protocol/PluginResponseEncoding';\nimport { E_TaqError, TaqError } from '@taqueria/protocol/TaqError';\nimport * as Task from '@taqueria/protocol/Task';\nimport * as Verb from '@taqueria/protocol/Verb';\nimport { attemptP, FutureInstance as Future, mapRej, promise } from 'fluture';\nimport { z } from 'zod';\n\nconst eager = <T>(f: Future<TaqError, T>) =>\n\tpromise(\n\t\tmapRej((err: TaqError) => new E_TaqError(err))(f),\n\t);\n\nconst taskToPluginMap = z.record(\n\tz.union([\n\t\tInstalledPlugin.schemas.schema,\n\t\tTask.schemas.schema,\n\t], { description: 'Task/Plugin Mapping' }),\n);\nconst operationToPluginMap = z.record(\n\tz.union([\n\t\tInstalledPlugin.schemas.schema,\n\t\tParsedOperation.schemas.schema,\n\t], { description: 'Operation/Plugin Mapping' }),\n);\n\nconst templateToPluginMap = z.record(\n\tz.union([\n\t\tInstalledPlugin.schemas.schema,\n\t\tParsedTemplate.schemas.schema,\n\t]),\n);\n\nconst rawSchema = z.object({\n\tbuild: z.string({ description: 'cache.build' }),\n\tconfigHash: z.string({ description: 'cache.configHash' }),\n\ttasks: taskToPluginMap,\n\toperations: operationToPluginMap,\n\ttemplates: templateToPluginMap,\n\tplugins: z.array(PluginInfo.schemas.schema, { description: 'cache.plugins' }),\n}).describe('Ephemeral State');\n\ntype RawInput = z.infer<typeof rawSchema>;\n\nexport const { schemas: generatedSchemas, factory } = createType<RawInput, RawInput>({\n\trawSchema,\n\tparseErrMsg: (value: unknown) => `${value} is not a valid representation of ephemeral state`,\n\tunknownErrMsg: 'Something went wrong when parsing the ephemeral state',\n});\n\nexport type EphemeralState = z.infer<typeof generatedSchemas.schema>;\nexport type t = EphemeralState;\nexport type TaskToPluginMap = z.infer<typeof taskToPluginMap>;\nexport type OpToPluginMap = z.infer<typeof operationToPluginMap>;\nexport type TemplateToPluginMap = z.infer<typeof templateToPluginMap>;\n\nexport const { create, of, make } = factory;\n\nexport const schemas = {\n\t...generatedSchemas,\n\tschema: generatedSchemas.schema.transform(val => val as EphemeralState),\n};\n\n/**\n * Private functions\n */\ntype Counts = Record<Verb.t, PluginInfo.t[]>;\nconst getTaskCounts = (pluginInfo: PluginInfo.t[]): Counts => {\n\treturn pluginInfo.reduce(\n\t\t(retval, pluginInfo) =>\n\t\t\tpluginInfo.tasks === undefined\n\t\t\t\t? {}\n\t\t\t\t: pluginInfo.tasks.reduce(\n\t\t\t\t\t(retval: Counts, task: Task.t) => {\n\t\t\t\t\t\tconst taskName = task.task;\n\t\t\t\t\t\tconst providers: PluginInfo.t[] = retval[taskName]\n\t\t\t\t\t\t\t? [...retval[taskName], pluginInfo]\n\t\t\t\t\t\t\t: [pluginInfo];\n\t\t\t\t\t\tconst mapping: Counts = {};\n\t\t\t\t\t\tmapping[taskName] = providers.filter(provider => provider !== undefined);\n\t\t\t\t\t\treturn { ...retval, ...mapping };\n\t\t\t\t\t},\n\t\t\t\t\tretval,\n\t\t\t\t),\n\t\t{} as Counts,\n\t);\n};\n\nconst getTemplateCounts = (pluginInfo: PluginInfo.t[]): Counts => {\n\treturn pluginInfo.reduce(\n\t\t(retval, pluginInfo) =>\n\t\t\t!pluginInfo.templates\n\t\t\t\t? retval\n\t\t\t\t: pluginInfo.templates.reduce(\n\t\t\t\t\t(retval: Counts, template: ParsedTemplate.t) => {\n\t\t\t\t\t\tconst templateName = template.template;\n\t\t\t\t\t\tconst providers = retval[templateName]\n\t\t\t\t\t\t\t? [...retval[templateName], pluginInfo]\n\t\t\t\t\t\t\t: [pluginInfo];\n\t\t\t\t\t\tconst mapping: Counts = {};\n\t\t\t\t\t\tmapping[templateName] = providers.filter(provider => provider !== undefined);\n\t\t\t\t\t\treturn { ...retval, ...mapping };\n\t\t\t\t\t},\n\t\t\t\t\tretval,\n\t\t\t\t),\n\t\t{} as Counts,\n\t);\n};\n\nconst getOperationCounts = (pluginInfo: PluginInfo.t[]): Counts => {\n\treturn pluginInfo.reduce(\n\t\t(retval, pluginInfo) =>\n\t\t\tpluginInfo.operations === undefined\n\t\t\t\t? retval\n\t\t\t\t: pluginInfo.operations.reduce(\n\t\t\t\t\t(retval: Counts, operation: ParsedOperation.t) => {\n\t\t\t\t\t\tconst operationName = operation.operation;\n\t\t\t\t\t\tconst providers = retval[operationName]\n\t\t\t\t\t\t\t? [...retval[operationName], pluginInfo]\n\t\t\t\t\t\t\t: [pluginInfo];\n\t\t\t\t\t\tconst mapping: Counts = {};\n\t\t\t\t\t\tmapping[operationName] = providers.filter(provider => provider !== undefined);\n\t\t\t\t\t\treturn { ...retval, ...mapping };\n\t\t\t\t\t},\n\t\t\t\t\tretval,\n\t\t\t\t),\n\t\t{} as Counts,\n\t);\n};\n\nconst toChoices = (plugins: PluginInfo.t[]) =>\n\tplugins.reduce(\n\t\t(retval, pluginInfo) => {\n\t\t\treturn [...retval, pluginInfo.name as string, pluginInfo.alias as string];\n\t\t},\n\t\t[] as string[],\n\t);\n\nconst isComposite = (name: Verb.t, counts: Counts) => counts[name] && counts[name].length > 1;\n\nconst getInstalledPlugin = (config: Config.t, name: string) =>\n\tconfig.plugins?.find(\n\t\t(plugin: InstalledPlugin.t) => [`taqueria-plugin-${name}`, name].includes(plugin.name),\n\t);\n\nexport const mapTasksToPlugins = (config: Config.t, pluginInfo: PluginInfo.t[], i18n: i18n) => {\n\tconst taskCounts = getTaskCounts(pluginInfo);\n\treturn attemptP<TaqError, TaskToPluginMap>(async () =>\n\t\tawait pluginInfo.reduce(\n\t\t\tasync (retval, pluginInfo) =>\n\t\t\t\t!pluginInfo.tasks\n\t\t\t\t\t? Promise.resolve({} as TaskToPluginMap)\n\t\t\t\t\t: await pluginInfo.tasks.reduce(\n\t\t\t\t\t\tasync (retval, { task }) => {\n\t\t\t\t\t\t\tif (isComposite(task, taskCounts)) {\n\t\t\t\t\t\t\t\tconst command = await eager(Command.make(task));\n\t\t\t\t\t\t\t\tconst compositeTask = await eager(Task.make({\n\t\t\t\t\t\t\t\t\ttask,\n\t\t\t\t\t\t\t\t\tcommand,\n\t\t\t\t\t\t\t\t\tdescription: i18n.__('providedByMany'),\n\t\t\t\t\t\t\t\t\thidden: false,\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\tawait eager(Option.make({\n\t\t\t\t\t\t\t\t\t\t\tflag: await eager(Verb.make('plugin')),\n\t\t\t\t\t\t\t\t\t\t\tdescription: 'Specify which plugin should be used to execute this task',\n\t\t\t\t\t\t\t\t\t\t\tchoices: toChoices(taskCounts[task]),\n\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\thandler: 'proxy',\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\treturn { ...await retval, [task]: compositeTask };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Task is provided by just a single plugin\n\t\t\t\t\t\t\tconst installedPlugin = getInstalledPlugin(config, pluginInfo.name);\n\t\t\t\t\t\t\treturn installedPlugin\n\t\t\t\t\t\t\t\t? { ...await retval, [task]: installedPlugin }\n\t\t\t\t\t\t\t\t: retval;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tretval,\n\t\t\t\t\t),\n\t\t\tPromise.resolve({} as TaskToPluginMap),\n\t\t)\n\t).pipe(mapRej(rej => rej as TaqError));\n};\n\nexport const mapOperationsToPlugins = (config: Config.t, pluginInfo: PluginInfo.t[], i18n: i18n) => {\n\tconst opCounts = getOperationCounts(pluginInfo);\n\treturn attemptP(async () =>\n\t\tawait pluginInfo.reduce(\n\t\t\tasync (retval, pluginInfo) =>\n\t\t\t\t!pluginInfo.operations\n\t\t\t\t\t? Promise.resolve({} as OpToPluginMap)\n\t\t\t\t\t: await pluginInfo.operations.reduce(\n\t\t\t\t\t\tasync (retval, { operation }) => {\n\t\t\t\t\t\t\tif (isComposite(operation, opCounts)) {\n\t\t\t\t\t\t\t\tconst command = await eager(Command.make(operation));\n\t\t\t\t\t\t\t\tconst compositeOp = await eager(ParsedOperation.make({\n\t\t\t\t\t\t\t\t\toperation,\n\t\t\t\t\t\t\t\t\tcommand,\n\t\t\t\t\t\t\t\t\tdescription: i18n.__('providedByMany'),\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\tawait eager(Option.make({\n\t\t\t\t\t\t\t\t\t\t\tflag: await eager(Verb.make('plugin')),\n\t\t\t\t\t\t\t\t\t\t\tdescription: 'Specify which plugin should be used to execute this operation',\n\t\t\t\t\t\t\t\t\t\t\tchoices: toChoices(opCounts[operation]),\n\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\treturn { ...await retval, [operation]: compositeOp };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Operation is provided by just a single plugin\n\t\t\t\t\t\t\tconst installedPlugin = getInstalledPlugin(config, pluginInfo.name);\n\t\t\t\t\t\t\treturn installedPlugin\n\t\t\t\t\t\t\t\t? { ...await retval, [operation]: installedPlugin }\n\t\t\t\t\t\t\t\t: retval;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tretval,\n\t\t\t\t\t),\n\t\t\tPromise.resolve({} as OpToPluginMap),\n\t\t)\n\t).pipe(mapRej(rej => rej as TaqError));\n};\n\nexport const mapTemplatesToPlugins = (config: Config.t, pluginInfo: PluginInfo.t[], i18n: i18n) => {\n\tconst tmplCounts = getTemplateCounts(pluginInfo);\n\treturn attemptP<TaqError, TemplateToPluginMap>(async () =>\n\t\tawait pluginInfo.reduce(\n\t\t\tasync (retval, pluginInfo) =>\n\t\t\t\t!pluginInfo.templates\n\t\t\t\t\t? Promise.resolve({} as TemplateToPluginMap)\n\t\t\t\t\t: await pluginInfo.templates!.reduce(\n\t\t\t\t\t\tasync (retval, { template }) => {\n\t\t\t\t\t\t\tif (isComposite(template, tmplCounts)) {\n\t\t\t\t\t\t\t\tconst command = await eager(Command.make(template));\n\t\t\t\t\t\t\t\tconst compositeTmpl = await eager(ParsedTemplate.make({\n\t\t\t\t\t\t\t\t\ttemplate,\n\t\t\t\t\t\t\t\t\tcommand,\n\t\t\t\t\t\t\t\t\tdescription: i18n.__('providedByMany'),\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\tawait eager(Option.make({\n\t\t\t\t\t\t\t\t\t\t\tflag: await eager(Verb.make('plugin')),\n\t\t\t\t\t\t\t\t\t\t\tdescription: 'Specify which plugin should be used to execute this task',\n\t\t\t\t\t\t\t\t\t\t\tchoices: toChoices(tmplCounts[template]),\n\t\t\t\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\thandler: 'proxy',\n\t\t\t\t\t\t\t\t\tencoding: PluginResponseEncoding.create('none'),\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\treturn { ...await retval, [template]: compositeTmpl };\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Template is provided by just a single plugin\n\t\t\t\t\t\t\tconst installedPlugin = getInstalledPlugin(config, pluginInfo.name);\n\t\t\t\t\t\t\treturn installedPlugin\n\t\t\t\t\t\t\t\t? { ...await retval, [template]: installedPlugin }\n\t\t\t\t\t\t\t\t: retval;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tretval,\n\t\t\t\t\t),\n\t\t\tPromise.resolve({} as TemplateToPluginMap),\n\t\t)\n\t).pipe(mapRej(rej => rej as TaqError));\n};\n\nexport const getTasks = (pluginInfo: PluginInfo.t[]) =>\n\tpluginInfo.reduce(\n\t\t(retval: Task.t[], pluginInfo) => [...retval, ...(pluginInfo.tasks ?? [])],\n\t\t[],\n\t);\n"],"mappings":"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","names":["create","make","schemas","pluginInfo","retval"]}