@decohere/forge 0.0.1-dev.74 → 0.0.1-dev.76

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.
@@ -73,10 +73,13 @@ class Docker {
73
73
  const envTags = this.parseJsonEnv("FORGE_DOCKER_EXTRA_TAGS_JSON", []);
74
74
  const image = dockerConfig.image ?? this.defaultImageName(project.name, workspacePackageJson);
75
75
  const dockerfile = dockerConfig.dockerfile ?? "Dockerfile";
76
- const tags = [
77
- `${image}:${version}`,
76
+ const extraTags = this.extraTagsForImage(image, [
78
77
  ...dockerConfig.tags ?? [],
79
78
  ...envTags
79
+ ]);
80
+ const tags = [
81
+ `${image}:${version}`,
82
+ ...extraTags
80
83
  ];
81
84
  const buildArgs = this.interpolateBuildArgs({
82
85
  ...dockerConfig.buildArgs ?? {},
@@ -132,6 +135,23 @@ class Docker {
132
135
  }
133
136
  return result;
134
137
  }
138
+ /**
139
+ * Keep FORGE_DOCKER_EXTRA_TAGS_JSON scoped to this image so multi-image
140
+ * publishes do not stamp create:latest onto the app Dev Container (and vice versa).
141
+ */ extraTagsForImage(image, tags) {
142
+ const prefix = `${image}:`;
143
+ const seen = new Set();
144
+ const result = [];
145
+ for (const tag of tags){
146
+ if (tag === image || tag.startsWith(prefix)) {
147
+ if (!seen.has(tag)) {
148
+ seen.add(tag);
149
+ result.push(tag);
150
+ }
151
+ }
152
+ }
153
+ return result;
154
+ }
135
155
  defaultImageName(projectName, workspacePackageJson) {
136
156
  const repositoryPath = process.env.FORGE_DOCKER_NAMESPACE?.trim() || workspacePackageJson.getRepositoryFullName() || this.normalizeDockerRepository(projectName);
137
157
  const projectSlug = this.normalizeProjectSlug(projectName);
@@ -175,4 +195,4 @@ Docker = _ts_decorate([
175
195
  ])
176
196
  ], Docker);
177
197
 
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RvY2tlci5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlSnNvbiwgUHJvamVjdCB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiwgUmVzdWx0U3RhdHVzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IERvY2tlciBhcyBEb2NrZXJJbnRlcm9wIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBGb3JnZUVycm9yLCBmb3JtYXRVbmtub3duRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIERvY2tlck9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0ZHJ5UnVuPzogYm9vbGVhbjtcblx0cHVzaD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEb2NrZXJSZXNwb25zZSA9IFJlc3VsdFN0YXR1cyAmIHtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcblx0aW1hZ2U6IHN0cmluZztcblx0dGFnczogc3RyaW5nW107XG5cdG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb2NrZXIgaW1wbGVtZW50cyBBY3Rpb248RG9ja2VyT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihEb2NrZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyID0gbmV3IERvY2tlckludGVyb3AoKTtcblx0cmVhZG9ubHkgI2RlZmF1bHRSZWdpc3RyeSA9IHByb2Nlc3MuZW52LkZPUkdFX0RPQ0tFUl9SRUdJU1RSWT8udHJpbSgpIHx8IFwiZ2hjci5pb1wiO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlKSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogRG9ja2VyT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U8RG9ja2VyUmVzcG9uc2U+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSBhd2FpdCB0aGlzLmdldERvY2tlclByb2plY3RzKFxuXHRcdFx0dGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKSxcblx0XHQpO1xuXHRcdGlmIChwcm9qZWN0cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiTm8gcHJvamVjdHMgZm91bmQgd2l0aCBhIERvY2tlcmZpbGUg4oCUIG5vdGhpbmcgdG8gZG9ja2VyaXplXCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIFtdKTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VQYWNrYWdlSnNvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VKc29uKCk7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFZlcnNpb24oKTtcblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChcblx0XHRcdFx0YXN5bmMgKHByb2plY3QpID0+XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5idWlsZFByb2plY3QocHJvamVjdCwgd29ya3NwYWNlUGFja2FnZUpzb24sIHZlcnNpb24sIG9wdGlvbnMpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHRcdGNvbnN0IGZhaWxlZCA9IHJlc3BvbnNlcy5maWx0ZXIoKHJlc3BvbnNlKSA9PiAhcmVzcG9uc2Uuc3VjY2VlZGVkKTtcblx0XHRpZiAoZmFpbGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5FcnJvcihEb2NrZXIubmFtZSwgcmVzcG9uc2VzKTtcblx0XHR9XG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIHJlc3BvbnNlcyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGdldERvY2tlclByb2plY3RzKHByb2plY3RzOiByZWFkb25seSBQcm9qZWN0W10pIHtcblx0XHRjb25zdCByZXN1bHQ6IFByb2plY3RbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykge1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZSA9IHByb2plY3QuZG9ja2VyQ29uZmlnPy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSk7XG5cdFx0XHRpZiAoIShhd2FpdCBpby5maWxlRXhpc3RzKGRvY2tlcmZpbGVQYXRoKSkpIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFNraXBwaW5nICR7cHJvamVjdC5uYW1lfTogbWlzc2luZyAke2RvY2tlcmZpbGV9YCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXN1bHQucHVzaChwcm9qZWN0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgYnVpbGRQcm9qZWN0KFxuXHRcdHByb2plY3Q6IFByb2plY3QsXG5cdFx0d29ya3NwYWNlUGFja2FnZUpzb246IFBhY2thZ2VKc29uLFxuXHRcdHZlcnNpb246IHN0cmluZyxcblx0XHRvcHRpb25zOiBEb2NrZXJPcHRpb25zLFxuXHQpOiBQcm9taXNlPERvY2tlclJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgZG9ja2VyQ29uZmlnID0gcHJvamVjdC5kb2NrZXJDb25maWcgPz8ge307XG5cdFx0Y29uc3QgZW52QnVpbGRBcmdzID0gdGhpcy5wYXJzZUpzb25FbnY8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG5cdFx0XHRcIkZPUkdFX0RPQ0tFUl9CVUlMRF9BUkdTX0pTT05cIixcblx0XHRcdHt9LFxuXHRcdCk7XG5cdFx0Y29uc3QgZW52U2VjcmV0cyA9IHRoaXMucGFyc2VKc29uRW52PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuXHRcdFx0XCJGT1JHRV9ET0NLRVJfU0VDUkVUU19KU09OXCIsXG5cdFx0XHR7fSxcblx0XHQpO1xuXHRcdGNvbnN0IGVudlRhZ3MgPSB0aGlzLnBhcnNlSnNvbkVudjxzdHJpbmdbXT4oXCJGT1JHRV9ET0NLRVJfRVhUUkFfVEFHU19KU09OXCIsIFtdKTtcblxuXHRcdGNvbnN0IGltYWdlID1cblx0XHRcdGRvY2tlckNvbmZpZy5pbWFnZSA/PyB0aGlzLmRlZmF1bHRJbWFnZU5hbWUocHJvamVjdC5uYW1lLCB3b3Jrc3BhY2VQYWNrYWdlSnNvbik7XG5cdFx0Y29uc3QgZG9ja2VyZmlsZSA9IGRvY2tlckNvbmZpZy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdGNvbnN0IHRhZ3MgPSBbYCR7aW1hZ2V9OiR7dmVyc2lvbn1gLCAuLi4oZG9ja2VyQ29uZmlnLnRhZ3MgPz8gW10pLCAuLi5lbnZUYWdzXTtcblx0XHRjb25zdCBidWlsZEFyZ3MgPSB0aGlzLmludGVycG9sYXRlQnVpbGRBcmdzKFxuXHRcdFx0eyAuLi4oZG9ja2VyQ29uZmlnLmJ1aWxkQXJncyA/PyB7fSksIC4uLmVudkJ1aWxkQXJncyB9LFxuXHRcdFx0dmVyc2lvbixcblx0XHQpO1xuXHRcdGNvbnN0IHNlY3JldHMgPSB7IC4uLihkb2NrZXJDb25maWcuc2VjcmV0cyA/PyB7fSksIC4uLmVudlNlY3JldHMgfTtcblxuXHRcdHRoaXMuI2xvZ2dlci5pbmZvKGAke29wdGlvbnMuZHJ5UnVuID8gXCJbZHJ5LXJ1bl0gXCIgOiBcIlwifUJ1aWxkaW5nICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLmRvY2tlci5idWlsZChwcm9qZWN0LnByb2plY3RSb290LCB7XG5cdFx0XHRcdGN3ZDogcHJvamVjdC5wcm9qZWN0Um9vdCxcblx0XHRcdFx0ZG9ja2VyZmlsZTogcGF0aC5qb2luKHByb2plY3QucHJvamVjdFJvb3QsIGRvY2tlcmZpbGUpLFxuXHRcdFx0XHR0YWdzLFxuXHRcdFx0XHRidWlsZEFyZ3MsXG5cdFx0XHRcdHNlY3JldHMsXG5cdFx0XHR9KTtcblxuXHRcdFx0Y29uc3Qgc2hvdWxkUHVzaCA9IG9wdGlvbnMucHVzaCB8fCBkb2NrZXJDb25maWcucHVzaDtcblx0XHRcdGlmIChzaG91bGRQdXNoICYmICFvcHRpb25zLmRyeVJ1bikge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5kb2NrZXIucHVzaCh0YWcsIHsgY3dkOiBwcm9qZWN0LnByb2plY3RSb290IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHNob3VsZFB1c2ggJiYgb3B0aW9ucy5kcnlSdW4pIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFtkcnktcnVuXSBTa2lwcGluZyBwdXNoIGZvciAke3Byb2plY3QubmFtZX1gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvamVjdE5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdFx0aW1hZ2UsXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdHN1Y2NlZWRlZDogdHJ1ZSxcblx0XHRcdFx0bWVzc2FnZTogb3B0aW9ucy5kcnlSdW4gPyBgQnVpbHQgJHtpbWFnZX0gKG5vdCBwdXNoZWQpYCA6IGBCdWlsdCAke2ltYWdlfWAsXG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKHJlYXNvbikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGZvcm1hdFVua25vd25FcnJvcihyZWFzb24pO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvamVjdE5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdFx0aW1hZ2UsXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdHN1Y2NlZWRlZDogZmFsc2UsXG5cdFx0XHRcdG1lc3NhZ2UsXG5cdFx0XHRcdGVycm9yOiBgJHtwcm9qZWN0Lm5hbWV9OiAke21lc3NhZ2V9YCxcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbnRlcnBvbGF0ZUJ1aWxkQXJncyhcblx0XHRidWlsZEFyZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQsXG5cdFx0dmVyc2lvbjogc3RyaW5nLFxuXHQpIHtcblx0XHRjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0XHRjb25zdCB2ZXJzaW9uUGxhY2Vob2xkZXIgPSBcIiRcIiArIFwie3ZlcnNpb259XCI7XG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYnVpbGRBcmdzID8/IHt9KSkge1xuXHRcdFx0cmVzdWx0W2tleV0gPSB2YWx1ZS5zcGxpdCh2ZXJzaW9uUGxhY2Vob2xkZXIpLmpvaW4odmVyc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwcml2YXRlIGRlZmF1bHRJbWFnZU5hbWUocHJvamVjdE5hbWU6IHN0cmluZywgd29ya3NwYWNlUGFja2FnZUpzb246IFBhY2thZ2VKc29uKSB7XG5cdFx0Y29uc3QgcmVwb3NpdG9yeVBhdGggPVxuXHRcdFx0cHJvY2Vzcy5lbnYuRk9SR0VfRE9DS0VSX05BTUVTUEFDRT8udHJpbSgpIHx8XG5cdFx0XHR3b3Jrc3BhY2VQYWNrYWdlSnNvbi5nZXRSZXBvc2l0b3J5RnVsbE5hbWUoKSB8fFxuXHRcdFx0dGhpcy5ub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5KHByb2plY3ROYW1lKTtcblx0XHRjb25zdCBwcm9qZWN0U2x1ZyA9IHRoaXMubm9ybWFsaXplUHJvamVjdFNsdWcocHJvamVjdE5hbWUpO1xuXHRcdGlmIChyZXBvc2l0b3J5UGF0aC5pbmNsdWRlcyhcIi9cIikgJiYgcHJvamVjdFNsdWcgIT09IFwiXCIpIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLiNkZWZhdWx0UmVnaXN0cnl9LyR7cmVwb3NpdG9yeVBhdGh9LyR7cHJvamVjdFNsdWd9YDtcblx0XHR9XG5cdFx0cmV0dXJuIGAke3RoaXMuI2RlZmF1bHRSZWdpc3RyeX0vJHtyZXBvc2l0b3J5UGF0aH1gO1xuXHR9XG5cblx0cHJpdmF0ZSBub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5KG5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHJlcG9zaXRvcnkgPSBuYW1lXG5cdFx0XHQucmVwbGFjZSgvXkAvLCBcIlwiKVxuXHRcdFx0LnNwbGl0KFwiL1wiKVxuXHRcdFx0Lm1hcCgoc2VnbWVudCkgPT5cblx0XHRcdFx0c2VnbWVudFxuXHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL1teYS16MC05XSsvZywgXCItXCIpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIiksXG5cdFx0XHQpXG5cdFx0XHQuZmlsdGVyKEJvb2xlYW4pXG5cdFx0XHQuam9pbihcIi9cIik7XG5cblx0XHRpZiAocmVwb3NpdG9yeSA9PT0gXCJcIikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYENvdWxkIG5vdCBkZXJpdmUgYSBEb2NrZXIgcmVwb3NpdG9yeSBmcm9tIHByb2plY3QgbmFtZSBcIiR7bmFtZX1cImApO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXBvc2l0b3J5O1xuXHR9XG5cblx0cHJpdmF0ZSBub3JtYWxpemVQcm9qZWN0U2x1ZyhuYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCB1bnNjb3BlZCA9IG5hbWUuaW5jbHVkZXMoXCIvXCIpID8gKG5hbWUuc3BsaXQoXCIvXCIpLmF0KC0xKSA/PyBuYW1lKSA6IG5hbWU7XG5cdFx0Y29uc3Qgc2x1ZyA9IHVuc2NvcGVkXG5cdFx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdFx0LnJlcGxhY2UoL1teYS16MC05XSsvZywgXCItXCIpXG5cdFx0XHQucmVwbGFjZSgvXi0rfC0rJC9nLCBcIlwiKTtcblx0XHRpZiAoc2x1ZyA9PT0gXCJcIikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoXG5cdFx0XHRcdGBDb3VsZCBub3QgZGVyaXZlIGEgRG9ja2VyIHByb2plY3Qgc2x1ZyBmcm9tIHByb2plY3QgbmFtZSBcIiR7bmFtZX1cImAsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2x1Zztcblx0fVxuXG5cdHByaXZhdGUgcGFyc2VKc29uRW52PFQ+KG5hbWU6IHN0cmluZywgZmFsbGJhY2s6IFQpOiBUIHtcblx0XHRjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLnRyaW0oKSA9PT0gXCJcIikge1xuXHRcdFx0cmV0dXJuIGZhbGxiYWNrO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgVDtcblx0XHR9IGNhdGNoIChyZWFzb24pIHtcblx0XHRcdHRocm93IG5ldyBGb3JnZUVycm9yKGBJbnZhbGlkIEpTT04gaW4gJHtuYW1lfTogJHtmb3JtYXRVbmtub3duRXJyb3IocmVhc29uKX1gKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJEb2NrZXIiLCJzY3JpYmUiLCJsb2dnZXIiLCJuYW1lIiwiZG9ja2VyIiwiRG9ja2VySW50ZXJvcCIsInByb2Nlc3MiLCJlbnYiLCJGT1JHRV9ET0NLRVJfUkVHSVNUUlkiLCJ0cmltIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsInByb2plY3RzIiwiZ2V0RG9ja2VyUHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsImNvbmZpZ3VyYXRpb24iLCJsZW5ndGgiLCJpbmZvIiwiQWN0aW9uUmVzcG9uc2UiLCJTdWNjZXNzIiwid29ya3NwYWNlUGFja2FnZUpzb24iLCJnZXRQYWNrYWdlSnNvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwicmVzcG9uc2VzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsInByb2plY3QiLCJidWlsZFByb2plY3QiLCJmYWlsZWQiLCJmaWx0ZXIiLCJyZXNwb25zZSIsInN1Y2NlZWRlZCIsIkVycm9yIiwicmVzdWx0IiwiZG9ja2VyZmlsZSIsImRvY2tlckNvbmZpZyIsImRvY2tlcmZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJwcm9qZWN0Um9vdCIsImlvIiwiZmlsZUV4aXN0cyIsInB1c2giLCJlbnZCdWlsZEFyZ3MiLCJwYXJzZUpzb25FbnYiLCJlbnZTZWNyZXRzIiwiZW52VGFncyIsImltYWdlIiwiZGVmYXVsdEltYWdlTmFtZSIsInRhZ3MiLCJidWlsZEFyZ3MiLCJpbnRlcnBvbGF0ZUJ1aWxkQXJncyIsInNlY3JldHMiLCJkcnlSdW4iLCJidWlsZCIsImN3ZCIsInNob3VsZFB1c2giLCJ0YWciLCJwcm9qZWN0TmFtZSIsIm1lc3NhZ2UiLCJyZWFzb24iLCJmb3JtYXRVbmtub3duRXJyb3IiLCJlcnJvciIsInZlcnNpb25QbGFjZWhvbGRlciIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsInNwbGl0IiwicmVwb3NpdG9yeVBhdGgiLCJGT1JHRV9ET0NLRVJfTkFNRVNQQUNFIiwiZ2V0UmVwb3NpdG9yeUZ1bGxOYW1lIiwibm9ybWFsaXplRG9ja2VyUmVwb3NpdG9yeSIsInByb2plY3RTbHVnIiwibm9ybWFsaXplUHJvamVjdFNsdWciLCJpbmNsdWRlcyIsInJlcG9zaXRvcnkiLCJyZXBsYWNlIiwic2VnbWVudCIsInRvTG93ZXJDYXNlIiwiQm9vbGVhbiIsIkZvcmdlRXJyb3IiLCJ1bnNjb3BlZCIsImF0Iiwic2x1ZyIsImZhbGxiYWNrIiwiSlNPTiIsInBhcnNlIl0sIm1hcHBpbmdzIjoiOzs7OytCQTBCYUE7OztlQUFBQTs7O2lFQTFCSTs0QkFDVTtzQkFHRDtxQkFFSzt5QkFDUztvQkFDckI7d0JBQ0k7d0JBQ3dCOzs7Ozs7Ozs7Ozs7Ozs7QUFnQnhDLE1BQU1BOztJQUNaLENBQUEsTUFBTyxHQUFHQyxjQUFNLENBQUNDLE1BQU0sQ0FBQ0YsT0FBT0csSUFBSSxFQUFFO0lBQ3BCQyxTQUFTLElBQUlDLGVBQWEsR0FBRztJQUNyQyxDQUFBLGVBQWdCLEdBQUdDLFFBQVFDLEdBQUcsQ0FBQ0MscUJBQXFCLEVBQUVDLFVBQVUsVUFBVTtJQUVuRixZQUFtQixBQUFpQkMsU0FBb0IsQ0FBRTthQUF0QkEsWUFBQUE7SUFBdUI7SUFFM0QsTUFBYUMsSUFBSUMsT0FBc0IsRUFBMkM7UUFDakYsTUFBTUMsV0FBVyxNQUFNLElBQUksQ0FBQ0MsaUJBQWlCLENBQzVDLElBQUksQ0FBQ0osU0FBUyxDQUFDSyxXQUFXLENBQUNILFFBQVFJLGFBQWE7UUFFakQsSUFBSUgsU0FBU0ksTUFBTSxLQUFLLEdBQUc7WUFDMUIsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDQyxJQUFJLENBQUM7WUFDbEIsT0FBT0MsbUJBQWMsQ0FBQ0MsT0FBTyxDQUFDcEIsT0FBT0csSUFBSSxFQUFFLEVBQUU7UUFDOUM7UUFFQSxNQUFNa0IsdUJBQXVCLE1BQU0sSUFBSSxDQUFDWCxTQUFTLENBQUNZLGNBQWM7UUFDaEUsTUFBTUMsVUFBVSxNQUFNLElBQUksQ0FBQ2IsU0FBUyxDQUFDYyxVQUFVO1FBQy9DLE1BQU1DLFlBQVksTUFBTUMsUUFBUUMsR0FBRyxDQUNs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
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RvY2tlci5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlSnNvbiwgUHJvamVjdCB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiwgUmVzdWx0U3RhdHVzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IERvY2tlciBhcyBEb2NrZXJJbnRlcm9wIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBGb3JnZUVycm9yLCBmb3JtYXRVbmtub3duRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIERvY2tlck9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0ZHJ5UnVuPzogYm9vbGVhbjtcblx0cHVzaD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEb2NrZXJSZXNwb25zZSA9IFJlc3VsdFN0YXR1cyAmIHtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcblx0aW1hZ2U6IHN0cmluZztcblx0dGFnczogc3RyaW5nW107XG5cdG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb2NrZXIgaW1wbGVtZW50cyBBY3Rpb248RG9ja2VyT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihEb2NrZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyID0gbmV3IERvY2tlckludGVyb3AoKTtcblx0cmVhZG9ubHkgI2RlZmF1bHRSZWdpc3RyeSA9IHByb2Nlc3MuZW52LkZPUkdFX0RPQ0tFUl9SRUdJU1RSWT8udHJpbSgpIHx8IFwiZ2hjci5pb1wiO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlKSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogRG9ja2VyT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U8RG9ja2VyUmVzcG9uc2U+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSBhd2FpdCB0aGlzLmdldERvY2tlclByb2plY3RzKFxuXHRcdFx0dGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKSxcblx0XHQpO1xuXHRcdGlmIChwcm9qZWN0cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiTm8gcHJvamVjdHMgZm91bmQgd2l0aCBhIERvY2tlcmZpbGUg4oCUIG5vdGhpbmcgdG8gZG9ja2VyaXplXCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIFtdKTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VQYWNrYWdlSnNvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VKc29uKCk7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFZlcnNpb24oKTtcblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChcblx0XHRcdFx0YXN5bmMgKHByb2plY3QpID0+XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5idWlsZFByb2plY3QocHJvamVjdCwgd29ya3NwYWNlUGFja2FnZUpzb24sIHZlcnNpb24sIG9wdGlvbnMpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHRcdGNvbnN0IGZhaWxlZCA9IHJlc3BvbnNlcy5maWx0ZXIoKHJlc3BvbnNlKSA9PiAhcmVzcG9uc2Uuc3VjY2VlZGVkKTtcblx0XHRpZiAoZmFpbGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5FcnJvcihEb2NrZXIubmFtZSwgcmVzcG9uc2VzKTtcblx0XHR9XG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIHJlc3BvbnNlcyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGdldERvY2tlclByb2plY3RzKHByb2plY3RzOiByZWFkb25seSBQcm9qZWN0W10pIHtcblx0XHRjb25zdCByZXN1bHQ6IFByb2plY3RbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykge1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZSA9IHByb2plY3QuZG9ja2VyQ29uZmlnPy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSk7XG5cdFx0XHRpZiAoIShhd2FpdCBpby5maWxlRXhpc3RzKGRvY2tlcmZpbGVQYXRoKSkpIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFNraXBwaW5nICR7cHJvamVjdC5uYW1lfTogbWlzc2luZyAke2RvY2tlcmZpbGV9YCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXN1bHQucHVzaChwcm9qZWN0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgYnVpbGRQcm9qZWN0KFxuXHRcdHByb2plY3Q6IFByb2plY3QsXG5cdFx0d29ya3NwYWNlUGFja2FnZUpzb246IFBhY2thZ2VKc29uLFxuXHRcdHZlcnNpb246IHN0cmluZyxcblx0XHRvcHRpb25zOiBEb2NrZXJPcHRpb25zLFxuXHQpOiBQcm9taXNlPERvY2tlclJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgZG9ja2VyQ29uZmlnID0gcHJvamVjdC5kb2NrZXJDb25maWcgPz8ge307XG5cdFx0Y29uc3QgZW52QnVpbGRBcmdzID0gdGhpcy5wYXJzZUpzb25FbnY8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG5cdFx0XHRcIkZPUkdFX0RPQ0tFUl9CVUlMRF9BUkdTX0pTT05cIixcblx0XHRcdHt9LFxuXHRcdCk7XG5cdFx0Y29uc3QgZW52U2VjcmV0cyA9IHRoaXMucGFyc2VKc29uRW52PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuXHRcdFx0XCJGT1JHRV9ET0NLRVJfU0VDUkVUU19KU09OXCIsXG5cdFx0XHR7fSxcblx0XHQpO1xuXHRcdGNvbnN0IGVudlRhZ3MgPSB0aGlzLnBhcnNlSnNvbkVudjxzdHJpbmdbXT4oXCJGT1JHRV9ET0NLRVJfRVhUUkFfVEFHU19KU09OXCIsIFtdKTtcblxuXHRcdGNvbnN0IGltYWdlID1cblx0XHRcdGRvY2tlckNvbmZpZy5pbWFnZSA/PyB0aGlzLmRlZmF1bHRJbWFnZU5hbWUocHJvamVjdC5uYW1lLCB3b3Jrc3BhY2VQYWNrYWdlSnNvbik7XG5cdFx0Y29uc3QgZG9ja2VyZmlsZSA9IGRvY2tlckNvbmZpZy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdGNvbnN0IGV4dHJhVGFncyA9IHRoaXMuZXh0cmFUYWdzRm9ySW1hZ2UoaW1hZ2UsIFtcblx0XHRcdC4uLihkb2NrZXJDb25maWcudGFncyA/PyBbXSksXG5cdFx0XHQuLi5lbnZUYWdzLFxuXHRcdF0pO1xuXHRcdGNvbnN0IHRhZ3MgPSBbYCR7aW1hZ2V9OiR7dmVyc2lvbn1gLCAuLi5leHRyYVRhZ3NdO1xuXHRcdGNvbnN0IGJ1aWxkQXJncyA9IHRoaXMuaW50ZXJwb2xhdGVCdWlsZEFyZ3MoXG5cdFx0XHR7IC4uLihkb2NrZXJDb25maWcuYnVpbGRBcmdzID8/IHt9KSwgLi4uZW52QnVpbGRBcmdzIH0sXG5cdFx0XHR2ZXJzaW9uLFxuXHRcdCk7XG5cdFx0Y29uc3Qgc2VjcmV0cyA9IHsgLi4uKGRvY2tlckNvbmZpZy5zZWNyZXRzID8/IHt9KSwgLi4uZW52U2VjcmV0cyB9O1xuXG5cdFx0dGhpcy4jbG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5kcnlSdW4gPyBcIltkcnktcnVuXSBcIiA6IFwiXCJ9QnVpbGRpbmcgJHtwcm9qZWN0Lm5hbWV9YCk7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMuZG9ja2VyLmJ1aWxkKHByb2plY3QucHJvamVjdFJvb3QsIHtcblx0XHRcdFx0Y3dkOiBwcm9qZWN0LnByb2plY3RSb290LFxuXHRcdFx0XHRkb2NrZXJmaWxlOiBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSksXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdGJ1aWxkQXJncyxcblx0XHRcdFx0c2VjcmV0cyxcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25zdCBzaG91bGRQdXNoID0gb3B0aW9ucy5wdXNoIHx8IGRvY2tlckNvbmZpZy5wdXNoO1xuXHRcdFx0aWYgKHNob3VsZFB1c2ggJiYgIW9wdGlvbnMuZHJ5UnVuKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLmRvY2tlci5wdXNoKHRhZywgeyBjd2Q6IHByb2plY3QucHJvamVjdFJvb3QgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoc2hvdWxkUHVzaCAmJiBvcHRpb25zLmRyeVJ1bikge1xuXHRcdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgW2RyeS1ydW5dIFNraXBwaW5nIHB1c2ggZm9yICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lLFxuXHRcdFx0XHRpbWFnZSxcblx0XHRcdFx0dGFncyxcblx0XHRcdFx0c3VjY2VlZGVkOiB0cnVlLFxuXHRcdFx0XHRtZXNzYWdlOiBvcHRpb25zLmRyeVJ1biA/IGBCdWlsdCAke2ltYWdlfSAobm90IHB1c2hlZClgIDogYEJ1aWx0ICR7aW1hZ2V9YCxcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAocmVhc29uKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZm9ybWF0VW5rbm93bkVycm9yKHJlYXNvbik7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lLFxuXHRcdFx0XHRpbWFnZSxcblx0XHRcdFx0dGFncyxcblx0XHRcdFx0c3VjY2VlZGVkOiBmYWxzZSxcblx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0ZXJyb3I6IGAke3Byb2plY3QubmFtZX06ICR7bWVzc2FnZX1gLFxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGludGVycG9sYXRlQnVpbGRBcmdzKFxuXHRcdGJ1aWxkQXJnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCxcblx0XHR2ZXJzaW9uOiBzdHJpbmcsXG5cdCkge1xuXHRcdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRcdGNvbnN0IHZlcnNpb25QbGFjZWhvbGRlciA9IFwiJFwiICsgXCJ7dmVyc2lvbn1cIjtcblx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MgPz8ge30pKSB7XG5cdFx0XHRyZXN1bHRba2V5XSA9IHZhbHVlLnNwbGl0KHZlcnNpb25QbGFjZWhvbGRlcikuam9pbih2ZXJzaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBLZWVwIEZPUkdFX0RPQ0tFUl9FWFRSQV9UQUdTX0pTT04gc2NvcGVkIHRvIHRoaXMgaW1hZ2Ugc28gbXVsdGktaW1hZ2Vcblx0ICogcHVibGlzaGVzIGRvIG5vdCBzdGFtcCBjcmVhdGU6bGF0ZXN0IG9udG8gdGhlIGFwcCBEZXYgQ29udGFpbmVyIChhbmQgdmljZSB2ZXJzYSkuXG5cdCAqL1xuXHRwcml2YXRlIGV4dHJhVGFnc0ZvckltYWdlKGltYWdlOiBzdHJpbmcsIHRhZ3M6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHByZWZpeCA9IGAke2ltYWdlfTpgO1xuXHRcdGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcblx0XHRjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0aWYgKHRhZyA9PT0gaW1hZ2UgfHwgdGFnLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuXHRcdFx0XHRpZiAoIXNlZW4uaGFzKHRhZykpIHtcblx0XHRcdFx0XHRzZWVuLmFkZCh0YWcpO1xuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKHRhZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgZGVmYXVsdEltYWdlTmFtZShwcm9qZWN0TmFtZTogc3RyaW5nLCB3b3Jrc3BhY2VQYWNrYWdlSnNvbjogUGFja2FnZUpzb24pIHtcblx0XHRjb25zdCByZXBvc2l0b3J5UGF0aCA9XG5cdFx0XHRwcm9jZXNzLmVudi5GT1JHRV9ET0NLRVJfTkFNRVNQQUNFPy50cmltKCkgfHxcblx0XHRcdHdvcmtzcGFjZVBhY2thZ2VKc29uLmdldFJlcG9zaXRvcnlGdWxsTmFtZSgpIHx8XG5cdFx0XHR0aGlzLm5vcm1hbGl6ZURvY2tlclJlcG9zaXRvcnkocHJvamVjdE5hbWUpO1xuXHRcdGNvbnN0IHByb2plY3RTbHVnID0gdGhpcy5ub3JtYWxpemVQcm9qZWN0U2x1Zyhwcm9qZWN0TmFtZSk7XG5cdFx0aWYgKHJlcG9zaXRvcnlQYXRoLmluY2x1ZGVzKFwiL1wiKSAmJiBwcm9qZWN0U2x1ZyAhPT0gXCJcIikge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuI2RlZmF1bHRSZWdpc3RyeX0vJHtyZXBvc2l0b3J5UGF0aH0vJHtwcm9qZWN0U2x1Z31gO1xuXHRcdH1cblx0XHRyZXR1cm4gYCR7dGhpcy4jZGVmYXVsdFJlZ2lzdHJ5fS8ke3JlcG9zaXRvcnlQYXRofWA7XG5cdH1cblxuXHRwcml2YXRlIG5vcm1hbGl6ZURvY2tlclJlcG9zaXRvcnkobmFtZTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgcmVwb3NpdG9yeSA9IG5hbWVcblx0XHRcdC5yZXBsYWNlKC9eQC8sIFwiXCIpXG5cdFx0XHQuc3BsaXQoXCIvXCIpXG5cdFx0XHQubWFwKChzZWdtZW50KSA9PlxuXHRcdFx0XHRzZWdtZW50XG5cdFx0XHRcdFx0LnRvTG93ZXJDYXNlKClcblx0XHRcdFx0XHQucmVwbGFjZSgvW15hLXowLTldKy9nLCBcIi1cIilcblx0XHRcdFx0XHQucmVwbGFjZSgvXi0rfC0rJC9nLCBcIlwiKSxcblx0XHRcdClcblx0XHRcdC5maWx0ZXIoQm9vbGVhbilcblx0XHRcdC5qb2luKFwiL1wiKTtcblxuXHRcdGlmIChyZXBvc2l0b3J5ID09PSBcIlwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihgQ291bGQgbm90IGRlcml2ZSBhIERvY2tlciByZXBvc2l0b3J5IGZyb20gcHJvamVjdCBuYW1lIFwiJHtuYW1lfVwiYCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlcG9zaXRvcnk7XG5cdH1cblxuXHRwcml2YXRlIG5vcm1hbGl6ZVByb2plY3RTbHVnKG5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHVuc2NvcGVkID0gbmFtZS5pbmNsdWRlcyhcIi9cIikgPyAobmFtZS5zcGxpdChcIi9cIikuYXQoLTEpID8/IG5hbWUpIDogbmFtZTtcblx0XHRjb25zdCBzbHVnID0gdW5zY29wZWRcblx0XHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0XHQucmVwbGFjZSgvW15hLXowLTldKy9nLCBcIi1cIilcblx0XHRcdC5yZXBsYWNlKC9eLSt8LSskL2csIFwiXCIpO1xuXHRcdGlmIChzbHVnID09PSBcIlwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihcblx0XHRcdFx0YENvdWxkIG5vdCBkZXJpdmUgYSBEb2NrZXIgcHJvamVjdCBzbHVnIGZyb20gcHJvamVjdCBuYW1lIFwiJHtuYW1lfVwiYCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBzbHVnO1xuXHR9XG5cblx0cHJpdmF0ZSBwYXJzZUpzb25FbnY8VD4obmFtZTogc3RyaW5nLCBmYWxsYmFjazogVCk6IFQge1xuXHRcdGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV07XG5cdFx0aWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUudHJpbSgpID09PSBcIlwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsbGJhY2s7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyBUO1xuXHRcdH0gY2F0Y2ggKHJlYXNvbikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYEludmFsaWQgSlNPTiBpbiAke25hbWV9OiAke2Zvcm1hdFVua25vd25FcnJvcihyZWFzb24pfWApO1xuXHRcdH1cblx0fVxufVxuIl0sIm5hbWVzIjpbIkRvY2tlciIsInNjcmliZSIsImxvZ2dlciIsIm5hbWUiLCJkb2NrZXIiLCJEb2NrZXJJbnRlcm9wIiwicHJvY2VzcyIsImVudiIsIkZPUkdFX0RPQ0tFUl9SRUdJU1RSWSIsInRyaW0iLCJ3b3Jrc3BhY2UiLCJydW4iLCJvcHRpb25zIiwicHJvamVjdHMiLCJnZXREb2NrZXJQcm9qZWN0cyIsImdldFByb2plY3RzIiwiY29uZmlndXJhdGlvbiIsImxlbmd0aCIsImluZm8iLCJBY3Rpb25SZXNwb25zZSIsIlN1Y2Nlc3MiLCJ3b3Jrc3BhY2VQYWNrYWdlSnNvbiIsImdldFBhY2thZ2VKc29uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJyZXNwb25zZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicHJvamVjdCIsImJ1aWxkUHJvamVjdCIsImZhaWxlZCIsImZpbHRlciIsInJlc3BvbnNlIiwic3VjY2VlZGVkIiwiRXJyb3IiLCJyZXN1bHQiLCJkb2NrZXJmaWxlIiwiZG9ja2VyQ29uZmlnIiwiZG9ja2VyZmlsZVBhdGgiLCJwYXRoIiwiam9pbiIsInByb2plY3RSb290IiwiaW8iLCJmaWxlRXhpc3RzIiwicHVzaCIsImVudkJ1aWxkQXJncyIsInBhcnNlSnNvbkVudiIsImVudlNlY3JldHMiLCJlbnZUYWdzIiwiaW1hZ2UiLCJkZWZhdWx0SW1hZ2VOYW1lIiwiZXh0cmFUYWdzIiwiZXh0cmFUYWdzRm9ySW1hZ2UiLCJ0YWdzIiwiYnVpbGRBcmdzIiwiaW50ZXJwb2xhdGVCdWlsZEFyZ3MiLCJzZWNyZXRzIiwiZHJ5UnVuIiwiYnVpbGQiLCJjd2QiLCJzaG91bGRQdXNoIiwidGFnIiwicHJvamVjdE5hbWUiLCJtZXNzYWdlIiwicmVhc29uIiwiZm9ybWF0VW5rbm93bkVycm9yIiwiZXJyb3IiLCJ2ZXJzaW9uUGxhY2Vob2xkZXIiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJzcGxpdCIsInByZWZpeCIsInNlZW4iLCJTZXQiLCJzdGFydHNXaXRoIiwiaGFzIiwiYWRkIiwicmVwb3NpdG9yeVBhdGgiLCJGT1JHRV9ET0NLRVJfTkFNRVNQQUNFIiwiZ2V0UmVwb3NpdG9yeUZ1bGxOYW1lIiwibm9ybWFsaXplRG9ja2VyUmVwb3NpdG9yeSIsInByb2plY3RTbHVnIiwibm9ybWFsaXplUHJvamVjdFNsdWciLCJpbmNsdWRlcyIsInJlcG9zaXRvcnkiLCJyZXBsYWNlIiwic2VnbWVudCIsInRvTG93ZXJDYXNlIiwiQm9vbGVhbiIsIkZvcmdlRXJyb3Ii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
@@ -59,10 +59,13 @@ export class Docker {
59
59
  const envTags = this.parseJsonEnv("FORGE_DOCKER_EXTRA_TAGS_JSON", []);
60
60
  const image = dockerConfig.image ?? this.defaultImageName(project.name, workspacePackageJson);
61
61
  const dockerfile = dockerConfig.dockerfile ?? "Dockerfile";
62
- const tags = [
63
- `${image}:${version}`,
62
+ const extraTags = this.extraTagsForImage(image, [
64
63
  ...dockerConfig.tags ?? [],
65
64
  ...envTags
65
+ ]);
66
+ const tags = [
67
+ `${image}:${version}`,
68
+ ...extraTags
66
69
  ];
67
70
  const buildArgs = this.interpolateBuildArgs({
68
71
  ...dockerConfig.buildArgs ?? {},
@@ -118,6 +121,23 @@ export class Docker {
118
121
  }
119
122
  return result;
120
123
  }
124
+ /**
125
+ * Keep FORGE_DOCKER_EXTRA_TAGS_JSON scoped to this image so multi-image
126
+ * publishes do not stamp create:latest onto the app Dev Container (and vice versa).
127
+ */ extraTagsForImage(image, tags) {
128
+ const prefix = `${image}:`;
129
+ const seen = new Set();
130
+ const result = [];
131
+ for (const tag of tags){
132
+ if (tag === image || tag.startsWith(prefix)) {
133
+ if (!seen.has(tag)) {
134
+ seen.add(tag);
135
+ result.push(tag);
136
+ }
137
+ }
138
+ }
139
+ return result;
140
+ }
121
141
  defaultImageName(projectName, workspacePackageJson) {
122
142
  const repositoryPath = process.env.FORGE_DOCKER_NAMESPACE?.trim() || workspacePackageJson.getRepositoryFullName() || this.normalizeDockerRepository(projectName);
123
143
  const projectSlug = this.normalizeProjectSlug(projectName);
@@ -161,4 +181,4 @@ Docker = _ts_decorate([
161
181
  ])
162
182
  ], Docker);
163
183
 
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RvY2tlci5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlSnNvbiwgUHJvamVjdCB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiwgUmVzdWx0U3RhdHVzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IERvY2tlciBhcyBEb2NrZXJJbnRlcm9wIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBGb3JnZUVycm9yLCBmb3JtYXRVbmtub3duRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIERvY2tlck9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0ZHJ5UnVuPzogYm9vbGVhbjtcblx0cHVzaD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEb2NrZXJSZXNwb25zZSA9IFJlc3VsdFN0YXR1cyAmIHtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcblx0aW1hZ2U6IHN0cmluZztcblx0dGFnczogc3RyaW5nW107XG5cdG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb2NrZXIgaW1wbGVtZW50cyBBY3Rpb248RG9ja2VyT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihEb2NrZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyID0gbmV3IERvY2tlckludGVyb3AoKTtcblx0cmVhZG9ubHkgI2RlZmF1bHRSZWdpc3RyeSA9IHByb2Nlc3MuZW52LkZPUkdFX0RPQ0tFUl9SRUdJU1RSWT8udHJpbSgpIHx8IFwiZ2hjci5pb1wiO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlKSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogRG9ja2VyT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U8RG9ja2VyUmVzcG9uc2U+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSBhd2FpdCB0aGlzLmdldERvY2tlclByb2plY3RzKFxuXHRcdFx0dGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKSxcblx0XHQpO1xuXHRcdGlmIChwcm9qZWN0cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiTm8gcHJvamVjdHMgZm91bmQgd2l0aCBhIERvY2tlcmZpbGUg4oCUIG5vdGhpbmcgdG8gZG9ja2VyaXplXCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIFtdKTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VQYWNrYWdlSnNvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VKc29uKCk7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFZlcnNpb24oKTtcblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChcblx0XHRcdFx0YXN5bmMgKHByb2plY3QpID0+XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5idWlsZFByb2plY3QocHJvamVjdCwgd29ya3NwYWNlUGFja2FnZUpzb24sIHZlcnNpb24sIG9wdGlvbnMpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHRcdGNvbnN0IGZhaWxlZCA9IHJlc3BvbnNlcy5maWx0ZXIoKHJlc3BvbnNlKSA9PiAhcmVzcG9uc2Uuc3VjY2VlZGVkKTtcblx0XHRpZiAoZmFpbGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5FcnJvcihEb2NrZXIubmFtZSwgcmVzcG9uc2VzKTtcblx0XHR9XG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIHJlc3BvbnNlcyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGdldERvY2tlclByb2plY3RzKHByb2plY3RzOiByZWFkb25seSBQcm9qZWN0W10pIHtcblx0XHRjb25zdCByZXN1bHQ6IFByb2plY3RbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykge1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZSA9IHByb2plY3QuZG9ja2VyQ29uZmlnPy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSk7XG5cdFx0XHRpZiAoIShhd2FpdCBpby5maWxlRXhpc3RzKGRvY2tlcmZpbGVQYXRoKSkpIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFNraXBwaW5nICR7cHJvamVjdC5uYW1lfTogbWlzc2luZyAke2RvY2tlcmZpbGV9YCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXN1bHQucHVzaChwcm9qZWN0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgYnVpbGRQcm9qZWN0KFxuXHRcdHByb2plY3Q6IFByb2plY3QsXG5cdFx0d29ya3NwYWNlUGFja2FnZUpzb246IFBhY2thZ2VKc29uLFxuXHRcdHZlcnNpb246IHN0cmluZyxcblx0XHRvcHRpb25zOiBEb2NrZXJPcHRpb25zLFxuXHQpOiBQcm9taXNlPERvY2tlclJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgZG9ja2VyQ29uZmlnID0gcHJvamVjdC5kb2NrZXJDb25maWcgPz8ge307XG5cdFx0Y29uc3QgZW52QnVpbGRBcmdzID0gdGhpcy5wYXJzZUpzb25FbnY8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG5cdFx0XHRcIkZPUkdFX0RPQ0tFUl9CVUlMRF9BUkdTX0pTT05cIixcblx0XHRcdHt9LFxuXHRcdCk7XG5cdFx0Y29uc3QgZW52U2VjcmV0cyA9IHRoaXMucGFyc2VKc29uRW52PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuXHRcdFx0XCJGT1JHRV9ET0NLRVJfU0VDUkVUU19KU09OXCIsXG5cdFx0XHR7fSxcblx0XHQpO1xuXHRcdGNvbnN0IGVudlRhZ3MgPSB0aGlzLnBhcnNlSnNvbkVudjxzdHJpbmdbXT4oXCJGT1JHRV9ET0NLRVJfRVhUUkFfVEFHU19KU09OXCIsIFtdKTtcblxuXHRcdGNvbnN0IGltYWdlID1cblx0XHRcdGRvY2tlckNvbmZpZy5pbWFnZSA/PyB0aGlzLmRlZmF1bHRJbWFnZU5hbWUocHJvamVjdC5uYW1lLCB3b3Jrc3BhY2VQYWNrYWdlSnNvbik7XG5cdFx0Y29uc3QgZG9ja2VyZmlsZSA9IGRvY2tlckNvbmZpZy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdGNvbnN0IHRhZ3MgPSBbYCR7aW1hZ2V9OiR7dmVyc2lvbn1gLCAuLi4oZG9ja2VyQ29uZmlnLnRhZ3MgPz8gW10pLCAuLi5lbnZUYWdzXTtcblx0XHRjb25zdCBidWlsZEFyZ3MgPSB0aGlzLmludGVycG9sYXRlQnVpbGRBcmdzKFxuXHRcdFx0eyAuLi4oZG9ja2VyQ29uZmlnLmJ1aWxkQXJncyA/PyB7fSksIC4uLmVudkJ1aWxkQXJncyB9LFxuXHRcdFx0dmVyc2lvbixcblx0XHQpO1xuXHRcdGNvbnN0IHNlY3JldHMgPSB7IC4uLihkb2NrZXJDb25maWcuc2VjcmV0cyA/PyB7fSksIC4uLmVudlNlY3JldHMgfTtcblxuXHRcdHRoaXMuI2xvZ2dlci5pbmZvKGAke29wdGlvbnMuZHJ5UnVuID8gXCJbZHJ5LXJ1bl0gXCIgOiBcIlwifUJ1aWxkaW5nICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCB0aGlzLmRvY2tlci5idWlsZChwcm9qZWN0LnByb2plY3RSb290LCB7XG5cdFx0XHRcdGN3ZDogcHJvamVjdC5wcm9qZWN0Um9vdCxcblx0XHRcdFx0ZG9ja2VyZmlsZTogcGF0aC5qb2luKHByb2plY3QucHJvamVjdFJvb3QsIGRvY2tlcmZpbGUpLFxuXHRcdFx0XHR0YWdzLFxuXHRcdFx0XHRidWlsZEFyZ3MsXG5cdFx0XHRcdHNlY3JldHMsXG5cdFx0XHR9KTtcblxuXHRcdFx0Y29uc3Qgc2hvdWxkUHVzaCA9IG9wdGlvbnMucHVzaCB8fCBkb2NrZXJDb25maWcucHVzaDtcblx0XHRcdGlmIChzaG91bGRQdXNoICYmICFvcHRpb25zLmRyeVJ1bikge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5kb2NrZXIucHVzaCh0YWcsIHsgY3dkOiBwcm9qZWN0LnByb2plY3RSb290IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHNob3VsZFB1c2ggJiYgb3B0aW9ucy5kcnlSdW4pIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFtkcnktcnVuXSBTa2lwcGluZyBwdXNoIGZvciAke3Byb2plY3QubmFtZX1gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvamVjdE5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdFx0aW1hZ2UsXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdHN1Y2NlZWRlZDogdHJ1ZSxcblx0XHRcdFx0bWVzc2FnZTogb3B0aW9ucy5kcnlSdW4gPyBgQnVpbHQgJHtpbWFnZX0gKG5vdCBwdXNoZWQpYCA6IGBCdWlsdCAke2ltYWdlfWAsXG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKHJlYXNvbikge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IGZvcm1hdFVua25vd25FcnJvcihyZWFzb24pO1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvamVjdE5hbWU6IHByb2plY3QubmFtZSxcblx0XHRcdFx0aW1hZ2UsXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdHN1Y2NlZWRlZDogZmFsc2UsXG5cdFx0XHRcdG1lc3NhZ2UsXG5cdFx0XHRcdGVycm9yOiBgJHtwcm9qZWN0Lm5hbWV9OiAke21lc3NhZ2V9YCxcblx0XHRcdH07XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbnRlcnBvbGF0ZUJ1aWxkQXJncyhcblx0XHRidWlsZEFyZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQsXG5cdFx0dmVyc2lvbjogc3RyaW5nLFxuXHQpIHtcblx0XHRjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0XHRjb25zdCB2ZXJzaW9uUGxhY2Vob2xkZXIgPSBcIiRcIiArIFwie3ZlcnNpb259XCI7XG5cdFx0Zm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYnVpbGRBcmdzID8/IHt9KSkge1xuXHRcdFx0cmVzdWx0W2tleV0gPSB2YWx1ZS5zcGxpdCh2ZXJzaW9uUGxhY2Vob2xkZXIpLmpvaW4odmVyc2lvbik7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRwcml2YXRlIGRlZmF1bHRJbWFnZU5hbWUocHJvamVjdE5hbWU6IHN0cmluZywgd29ya3NwYWNlUGFja2FnZUpzb246IFBhY2thZ2VKc29uKSB7XG5cdFx0Y29uc3QgcmVwb3NpdG9yeVBhdGggPVxuXHRcdFx0cHJvY2Vzcy5lbnYuRk9SR0VfRE9DS0VSX05BTUVTUEFDRT8udHJpbSgpIHx8XG5cdFx0XHR3b3Jrc3BhY2VQYWNrYWdlSnNvbi5nZXRSZXBvc2l0b3J5RnVsbE5hbWUoKSB8fFxuXHRcdFx0dGhpcy5ub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5KHByb2plY3ROYW1lKTtcblx0XHRjb25zdCBwcm9qZWN0U2x1ZyA9IHRoaXMubm9ybWFsaXplUHJvamVjdFNsdWcocHJvamVjdE5hbWUpO1xuXHRcdGlmIChyZXBvc2l0b3J5UGF0aC5pbmNsdWRlcyhcIi9cIikgJiYgcHJvamVjdFNsdWcgIT09IFwiXCIpIHtcblx0XHRcdHJldHVybiBgJHt0aGlzLiNkZWZhdWx0UmVnaXN0cnl9LyR7cmVwb3NpdG9yeVBhdGh9LyR7cHJvamVjdFNsdWd9YDtcblx0XHR9XG5cdFx0cmV0dXJuIGAke3RoaXMuI2RlZmF1bHRSZWdpc3RyeX0vJHtyZXBvc2l0b3J5UGF0aH1gO1xuXHR9XG5cblx0cHJpdmF0ZSBub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5KG5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHJlcG9zaXRvcnkgPSBuYW1lXG5cdFx0XHQucmVwbGFjZSgvXkAvLCBcIlwiKVxuXHRcdFx0LnNwbGl0KFwiL1wiKVxuXHRcdFx0Lm1hcCgoc2VnbWVudCkgPT5cblx0XHRcdFx0c2VnbWVudFxuXHRcdFx0XHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL1teYS16MC05XSsvZywgXCItXCIpXG5cdFx0XHRcdFx0LnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIiksXG5cdFx0XHQpXG5cdFx0XHQuZmlsdGVyKEJvb2xlYW4pXG5cdFx0XHQuam9pbihcIi9cIik7XG5cblx0XHRpZiAocmVwb3NpdG9yeSA9PT0gXCJcIikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYENvdWxkIG5vdCBkZXJpdmUgYSBEb2NrZXIgcmVwb3NpdG9yeSBmcm9tIHByb2plY3QgbmFtZSBcIiR7bmFtZX1cImApO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXBvc2l0b3J5O1xuXHR9XG5cblx0cHJpdmF0ZSBub3JtYWxpemVQcm9qZWN0U2x1ZyhuYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCB1bnNjb3BlZCA9IG5hbWUuaW5jbHVkZXMoXCIvXCIpID8gKG5hbWUuc3BsaXQoXCIvXCIpLmF0KC0xKSA/PyBuYW1lKSA6IG5hbWU7XG5cdFx0Y29uc3Qgc2x1ZyA9IHVuc2NvcGVkXG5cdFx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdFx0LnJlcGxhY2UoL1teYS16MC05XSsvZywgXCItXCIpXG5cdFx0XHQucmVwbGFjZSgvXi0rfC0rJC9nLCBcIlwiKTtcblx0XHRpZiAoc2x1ZyA9PT0gXCJcIikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoXG5cdFx0XHRcdGBDb3VsZCBub3QgZGVyaXZlIGEgRG9ja2VyIHByb2plY3Qgc2x1ZyBmcm9tIHByb2plY3QgbmFtZSBcIiR7bmFtZX1cImAsXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gc2x1Zztcblx0fVxuXG5cdHByaXZhdGUgcGFyc2VKc29uRW52PFQ+KG5hbWU6IHN0cmluZywgZmFsbGJhY2s6IFQpOiBUIHtcblx0XHRjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLnRyaW0oKSA9PT0gXCJcIikge1xuXHRcdFx0cmV0dXJuIGZhbGxiYWNrO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSkgYXMgVDtcblx0XHR9IGNhdGNoIChyZWFzb24pIHtcblx0XHRcdHRocm93IG5ldyBGb3JnZUVycm9yKGBJbnZhbGlkIEpTT04gaW4gJHtuYW1lfTogJHtmb3JtYXRVbmtub3duRXJyb3IocmVhc29uKX1gKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJwYXRoIiwiaW5qZWN0YWJsZSIsIldvcmtzcGFjZSIsIkFjdGlvblJlc3BvbnNlIiwiRG9ja2VyIiwiRG9ja2VySW50ZXJvcCIsImlvIiwic2NyaWJlIiwiRm9yZ2VFcnJvciIsImZvcm1hdFVua25vd25FcnJvciIsImxvZ2dlciIsIm5hbWUiLCJkb2NrZXIiLCJwcm9jZXNzIiwiZW52IiwiRk9SR0VfRE9DS0VSX1JFR0lTVFJZIiwidHJpbSIsIndvcmtzcGFjZSIsInJ1biIsIm9wdGlvbnMiLCJwcm9qZWN0cyIsImdldERvY2tlclByb2plY3RzIiwiZ2V0UHJvamVjdHMiLCJjb25maWd1cmF0aW9uIiwibGVuZ3RoIiwiaW5mbyIsIlN1Y2Nlc3MiLCJ3b3Jrc3BhY2VQYWNrYWdlSnNvbiIsImdldFBhY2thZ2VKc29uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJyZXNwb25zZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicHJvamVjdCIsImJ1aWxkUHJvamVjdCIsImZhaWxlZCIsImZpbHRlciIsInJlc3BvbnNlIiwic3VjY2VlZGVkIiwiRXJyb3IiLCJyZXN1bHQiLCJkb2NrZXJmaWxlIiwiZG9ja2VyQ29uZmlnIiwiZG9ja2VyZmlsZVBhdGgiLCJqb2luIiwicHJvamVjdFJvb3QiLCJmaWxlRXhpc3RzIiwicHVzaCIsImVudkJ1aWxkQXJncyIsInBhcnNlSnNvbkVudiIsImVudlNlY3JldHMiLCJlbnZUYWdzIiwiaW1hZ2UiLCJkZWZhdWx0SW1hZ2VOYW1lIiwidGFncyIsImJ1aWxkQXJncyIsImludGVycG9sYXRlQnVpbGRBcmdzIiwic2VjcmV0cyIsImRyeVJ1biIsImJ1aWxkIiwiY3dkIiwic2hvdWxkUHVzaCIsInRhZyIsInByb2plY3ROYW1lIiwibWVzc2FnZSIsInJlYXNvbiIsImVycm9yIiwidmVyc2lvblBsYWNlaG9sZGVyIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwic3BsaXQiLCJyZXBvc2l0b3J5UGF0aCIsIkZPUkdFX0RPQ0tFUl9OQU1FU1BBQ0UiLCJnZXRSZXBvc2l0b3J5RnVsbE5hbWUiLCJub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5IiwicHJvamVjdFNsdWciLCJub3JtYWxpemVQcm9qZWN0U2x1ZyIsImluY2x1ZGVzIiwicmVwb3NpdG9yeSIsInJlcGxhY2UiLCJzZWdtZW50IiwidG9Mb3dlckNhc2UiLCJCb29sZWFuIiwidW5zY29wZWQiLCJhdCIsInNsdWciLCJmYWxsYmFjayIsIkpTT04iLCJwYXJzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsVUFBVSxZQUFZO0FBQzdCLFNBQVNDLFVBQVUsUUFBUSxnQ0FBZ0M7QUFFM0QsOENBQThDO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUFTQyxVQUFVQyxhQUFhLFFBQVEsMEJBQTBCO0FBQ2xFLFNBQVNDLEVBQUUsUUFBUSxxQkFBcUI7QUFDeEMsU0FBU0MsTUFBTSxRQUFRLG1CQUFtQjtBQUMxQyxTQUFTQyxVQUFVLEVBQUVDLGtCQUFrQixRQUFRLGVBQWU7QUFnQjlELE9BQU8sTUFBTUw7O0lBQ1osQ0FBQSxNQUFPLEdBQUdHLE9BQU9HLE1BQU0sQ0FBQ04sT0FBT08sSUFBSSxFQUFFO0lBQ3BCQyxTQUFTLElBQUlQLGdCQUFnQjtJQUNyQyxDQUFBLGVBQWdCLEdBQUdRLFFBQVFDLEdBQUcsQ0FBQ0MscUJBQXFCLEVBQUVDLFVBQVUsVUFBVTtJQUVuRixZQUFtQixBQUFpQkMsU0FBb0IsQ0FBRTthQUF0QkEsWUFBQUE7SUFBdUI7SUFFM0QsTUFBYUMsSUFBSUMsT0FBc0IsRUFBMkM7UUFDakYsTUFBTUMsV0FBVyxNQUFNLElBQUksQ0FBQ0MsaUJBQWlCLENBQzVDLElBQUksQ0FBQ0osU0FBUyxDQUFDSyxXQUFXLENBQUNILFFBQVFJLGFBQWE7UUFFakQsSUFBSUgsU0FBU0ksTUFBTSxLQUFLLEdBQUc7WUFDMUIsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDQyxJQUFJLENBQUM7WUFD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
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2ZvcmdlL3NyYy9hY3Rpb25zL2RvY2tlci5hY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgaW5qZWN0YWJsZSB9IGZyb20gXCJAZGVjb2hlcmUvY3J1Y2libGUvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlSnNvbiwgUHJvamVjdCB9IGZyb20gXCJAZGVjb2hlcmUvbWVzaFwiO1xuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvdXNlSW1wb3J0VHlwZTogPERJPlxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSBcIkBkZWNvaGVyZS9tZXNoXCI7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbiwgUmVzdWx0U3RhdHVzIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IEFjdGlvblJlc3BvbnNlIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9jbGlcIjtcbmltcG9ydCB7IERvY2tlciBhcyBEb2NrZXJJbnRlcm9wIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBpbyB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW9cIjtcbmltcG9ydCB7IHNjcmliZSB9IGZyb20gXCJAZGVjb2hlcmUvc2NyaWJlXCI7XG5pbXBvcnQgeyBGb3JnZUVycm9yLCBmb3JtYXRVbmtub3duRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIERvY2tlck9wdGlvbnMgPSB7XG5cdGNvbmZpZ3VyYXRpb246IHN0cmluZztcblx0ZHJ5UnVuPzogYm9vbGVhbjtcblx0cHVzaD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEb2NrZXJSZXNwb25zZSA9IFJlc3VsdFN0YXR1cyAmIHtcblx0cHJvamVjdE5hbWU6IHN0cmluZztcblx0aW1hZ2U6IHN0cmluZztcblx0dGFnczogc3RyaW5nW107XG5cdG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbkBpbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb2NrZXIgaW1wbGVtZW50cyBBY3Rpb248RG9ja2VyT3B0aW9ucz4ge1xuXHQjbG9nZ2VyID0gc2NyaWJlLmxvZ2dlcihEb2NrZXIubmFtZSk7XG5cdHByaXZhdGUgcmVhZG9ubHkgZG9ja2VyID0gbmV3IERvY2tlckludGVyb3AoKTtcblx0cmVhZG9ubHkgI2RlZmF1bHRSZWdpc3RyeSA9IHByb2Nlc3MuZW52LkZPUkdFX0RPQ0tFUl9SRUdJU1RSWT8udHJpbSgpIHx8IFwiZ2hjci5pb1wiO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZTogV29ya3NwYWNlKSB7fVxuXG5cdHB1YmxpYyBhc3luYyBydW4ob3B0aW9uczogRG9ja2VyT3B0aW9ucyk6IFByb21pc2U8QWN0aW9uUmVzcG9uc2U8RG9ja2VyUmVzcG9uc2U+PiB7XG5cdFx0Y29uc3QgcHJvamVjdHMgPSBhd2FpdCB0aGlzLmdldERvY2tlclByb2plY3RzKFxuXHRcdFx0dGhpcy53b3Jrc3BhY2UuZ2V0UHJvamVjdHMob3B0aW9ucy5jb25maWd1cmF0aW9uKSxcblx0XHQpO1xuXHRcdGlmIChwcm9qZWN0cy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuI2xvZ2dlci5pbmZvKFwiTm8gcHJvamVjdHMgZm91bmQgd2l0aCBhIERvY2tlcmZpbGUg4oCUIG5vdGhpbmcgdG8gZG9ja2VyaXplXCIpO1xuXHRcdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIFtdKTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3Jrc3BhY2VQYWNrYWdlSnNvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFBhY2thZ2VKc29uKCk7XG5cdFx0Y29uc3QgdmVyc2lvbiA9IGF3YWl0IHRoaXMud29ya3NwYWNlLmdldFZlcnNpb24oKTtcblx0XHRjb25zdCByZXNwb25zZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdHByb2plY3RzLm1hcChcblx0XHRcdFx0YXN5bmMgKHByb2plY3QpID0+XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5idWlsZFByb2plY3QocHJvamVjdCwgd29ya3NwYWNlUGFja2FnZUpzb24sIHZlcnNpb24sIG9wdGlvbnMpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHRcdGNvbnN0IGZhaWxlZCA9IHJlc3BvbnNlcy5maWx0ZXIoKHJlc3BvbnNlKSA9PiAhcmVzcG9uc2Uuc3VjY2VlZGVkKTtcblx0XHRpZiAoZmFpbGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiBBY3Rpb25SZXNwb25zZS5FcnJvcihEb2NrZXIubmFtZSwgcmVzcG9uc2VzKTtcblx0XHR9XG5cdFx0cmV0dXJuIEFjdGlvblJlc3BvbnNlLlN1Y2Nlc3MoRG9ja2VyLm5hbWUsIHJlc3BvbnNlcyk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGdldERvY2tlclByb2plY3RzKHByb2plY3RzOiByZWFkb25seSBQcm9qZWN0W10pIHtcblx0XHRjb25zdCByZXN1bHQ6IFByb2plY3RbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiBwcm9qZWN0cykge1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZSA9IHByb2plY3QuZG9ja2VyQ29uZmlnPy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdFx0Y29uc3QgZG9ja2VyZmlsZVBhdGggPSBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSk7XG5cdFx0XHRpZiAoIShhd2FpdCBpby5maWxlRXhpc3RzKGRvY2tlcmZpbGVQYXRoKSkpIHtcblx0XHRcdFx0dGhpcy4jbG9nZ2VyLmluZm8oYFNraXBwaW5nICR7cHJvamVjdC5uYW1lfTogbWlzc2luZyAke2RvY2tlcmZpbGV9YCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXN1bHQucHVzaChwcm9qZWN0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgYnVpbGRQcm9qZWN0KFxuXHRcdHByb2plY3Q6IFByb2plY3QsXG5cdFx0d29ya3NwYWNlUGFja2FnZUpzb246IFBhY2thZ2VKc29uLFxuXHRcdHZlcnNpb246IHN0cmluZyxcblx0XHRvcHRpb25zOiBEb2NrZXJPcHRpb25zLFxuXHQpOiBQcm9taXNlPERvY2tlclJlc3BvbnNlPiB7XG5cdFx0Y29uc3QgZG9ja2VyQ29uZmlnID0gcHJvamVjdC5kb2NrZXJDb25maWcgPz8ge307XG5cdFx0Y29uc3QgZW52QnVpbGRBcmdzID0gdGhpcy5wYXJzZUpzb25FbnY8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG5cdFx0XHRcIkZPUkdFX0RPQ0tFUl9CVUlMRF9BUkdTX0pTT05cIixcblx0XHRcdHt9LFxuXHRcdCk7XG5cdFx0Y29uc3QgZW52U2VjcmV0cyA9IHRoaXMucGFyc2VKc29uRW52PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuXHRcdFx0XCJGT1JHRV9ET0NLRVJfU0VDUkVUU19KU09OXCIsXG5cdFx0XHR7fSxcblx0XHQpO1xuXHRcdGNvbnN0IGVudlRhZ3MgPSB0aGlzLnBhcnNlSnNvbkVudjxzdHJpbmdbXT4oXCJGT1JHRV9ET0NLRVJfRVhUUkFfVEFHU19KU09OXCIsIFtdKTtcblxuXHRcdGNvbnN0IGltYWdlID1cblx0XHRcdGRvY2tlckNvbmZpZy5pbWFnZSA/PyB0aGlzLmRlZmF1bHRJbWFnZU5hbWUocHJvamVjdC5uYW1lLCB3b3Jrc3BhY2VQYWNrYWdlSnNvbik7XG5cdFx0Y29uc3QgZG9ja2VyZmlsZSA9IGRvY2tlckNvbmZpZy5kb2NrZXJmaWxlID8/IFwiRG9ja2VyZmlsZVwiO1xuXHRcdGNvbnN0IGV4dHJhVGFncyA9IHRoaXMuZXh0cmFUYWdzRm9ySW1hZ2UoaW1hZ2UsIFtcblx0XHRcdC4uLihkb2NrZXJDb25maWcudGFncyA/PyBbXSksXG5cdFx0XHQuLi5lbnZUYWdzLFxuXHRcdF0pO1xuXHRcdGNvbnN0IHRhZ3MgPSBbYCR7aW1hZ2V9OiR7dmVyc2lvbn1gLCAuLi5leHRyYVRhZ3NdO1xuXHRcdGNvbnN0IGJ1aWxkQXJncyA9IHRoaXMuaW50ZXJwb2xhdGVCdWlsZEFyZ3MoXG5cdFx0XHR7IC4uLihkb2NrZXJDb25maWcuYnVpbGRBcmdzID8/IHt9KSwgLi4uZW52QnVpbGRBcmdzIH0sXG5cdFx0XHR2ZXJzaW9uLFxuXHRcdCk7XG5cdFx0Y29uc3Qgc2VjcmV0cyA9IHsgLi4uKGRvY2tlckNvbmZpZy5zZWNyZXRzID8/IHt9KSwgLi4uZW52U2VjcmV0cyB9O1xuXG5cdFx0dGhpcy4jbG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5kcnlSdW4gPyBcIltkcnktcnVuXSBcIiA6IFwiXCJ9QnVpbGRpbmcgJHtwcm9qZWN0Lm5hbWV9YCk7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMuZG9ja2VyLmJ1aWxkKHByb2plY3QucHJvamVjdFJvb3QsIHtcblx0XHRcdFx0Y3dkOiBwcm9qZWN0LnByb2plY3RSb290LFxuXHRcdFx0XHRkb2NrZXJmaWxlOiBwYXRoLmpvaW4ocHJvamVjdC5wcm9qZWN0Um9vdCwgZG9ja2VyZmlsZSksXG5cdFx0XHRcdHRhZ3MsXG5cdFx0XHRcdGJ1aWxkQXJncyxcblx0XHRcdFx0c2VjcmV0cyxcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25zdCBzaG91bGRQdXNoID0gb3B0aW9ucy5wdXNoIHx8IGRvY2tlckNvbmZpZy5wdXNoO1xuXHRcdFx0aWYgKHNob3VsZFB1c2ggJiYgIW9wdGlvbnMuZHJ5UnVuKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLmRvY2tlci5wdXNoKHRhZywgeyBjd2Q6IHByb2plY3QucHJvamVjdFJvb3QgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoc2hvdWxkUHVzaCAmJiBvcHRpb25zLmRyeVJ1bikge1xuXHRcdFx0XHR0aGlzLiNsb2dnZXIuaW5mbyhgW2RyeS1ydW5dIFNraXBwaW5nIHB1c2ggZm9yICR7cHJvamVjdC5uYW1lfWApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lLFxuXHRcdFx0XHRpbWFnZSxcblx0XHRcdFx0dGFncyxcblx0XHRcdFx0c3VjY2VlZGVkOiB0cnVlLFxuXHRcdFx0XHRtZXNzYWdlOiBvcHRpb25zLmRyeVJ1biA/IGBCdWlsdCAke2ltYWdlfSAobm90IHB1c2hlZClgIDogYEJ1aWx0ICR7aW1hZ2V9YCxcblx0XHRcdH07XG5cdFx0fSBjYXRjaCAocmVhc29uKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZm9ybWF0VW5rbm93bkVycm9yKHJlYXNvbik7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRwcm9qZWN0TmFtZTogcHJvamVjdC5uYW1lLFxuXHRcdFx0XHRpbWFnZSxcblx0XHRcdFx0dGFncyxcblx0XHRcdFx0c3VjY2VlZGVkOiBmYWxzZSxcblx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0ZXJyb3I6IGAke3Byb2plY3QubmFtZX06ICR7bWVzc2FnZX1gLFxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGludGVycG9sYXRlQnVpbGRBcmdzKFxuXHRcdGJ1aWxkQXJnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCxcblx0XHR2ZXJzaW9uOiBzdHJpbmcsXG5cdCkge1xuXHRcdGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRcdGNvbnN0IHZlcnNpb25QbGFjZWhvbGRlciA9IFwiJFwiICsgXCJ7dmVyc2lvbn1cIjtcblx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MgPz8ge30pKSB7XG5cdFx0XHRyZXN1bHRba2V5XSA9IHZhbHVlLnNwbGl0KHZlcnNpb25QbGFjZWhvbGRlcikuam9pbih2ZXJzaW9uKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBLZWVwIEZPUkdFX0RPQ0tFUl9FWFRSQV9UQUdTX0pTT04gc2NvcGVkIHRvIHRoaXMgaW1hZ2Ugc28gbXVsdGktaW1hZ2Vcblx0ICogcHVibGlzaGVzIGRvIG5vdCBzdGFtcCBjcmVhdGU6bGF0ZXN0IG9udG8gdGhlIGFwcCBEZXYgQ29udGFpbmVyIChhbmQgdmljZSB2ZXJzYSkuXG5cdCAqL1xuXHRwcml2YXRlIGV4dHJhVGFnc0ZvckltYWdlKGltYWdlOiBzdHJpbmcsIHRhZ3M6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHByZWZpeCA9IGAke2ltYWdlfTpgO1xuXHRcdGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcblx0XHRjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuXHRcdFx0aWYgKHRhZyA9PT0gaW1hZ2UgfHwgdGFnLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuXHRcdFx0XHRpZiAoIXNlZW4uaGFzKHRhZykpIHtcblx0XHRcdFx0XHRzZWVuLmFkZCh0YWcpO1xuXHRcdFx0XHRcdHJlc3VsdC5wdXNoKHRhZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgZGVmYXVsdEltYWdlTmFtZShwcm9qZWN0TmFtZTogc3RyaW5nLCB3b3Jrc3BhY2VQYWNrYWdlSnNvbjogUGFja2FnZUpzb24pIHtcblx0XHRjb25zdCByZXBvc2l0b3J5UGF0aCA9XG5cdFx0XHRwcm9jZXNzLmVudi5GT1JHRV9ET0NLRVJfTkFNRVNQQUNFPy50cmltKCkgfHxcblx0XHRcdHdvcmtzcGFjZVBhY2thZ2VKc29uLmdldFJlcG9zaXRvcnlGdWxsTmFtZSgpIHx8XG5cdFx0XHR0aGlzLm5vcm1hbGl6ZURvY2tlclJlcG9zaXRvcnkocHJvamVjdE5hbWUpO1xuXHRcdGNvbnN0IHByb2plY3RTbHVnID0gdGhpcy5ub3JtYWxpemVQcm9qZWN0U2x1Zyhwcm9qZWN0TmFtZSk7XG5cdFx0aWYgKHJlcG9zaXRvcnlQYXRoLmluY2x1ZGVzKFwiL1wiKSAmJiBwcm9qZWN0U2x1ZyAhPT0gXCJcIikge1xuXHRcdFx0cmV0dXJuIGAke3RoaXMuI2RlZmF1bHRSZWdpc3RyeX0vJHtyZXBvc2l0b3J5UGF0aH0vJHtwcm9qZWN0U2x1Z31gO1xuXHRcdH1cblx0XHRyZXR1cm4gYCR7dGhpcy4jZGVmYXVsdFJlZ2lzdHJ5fS8ke3JlcG9zaXRvcnlQYXRofWA7XG5cdH1cblxuXHRwcml2YXRlIG5vcm1hbGl6ZURvY2tlclJlcG9zaXRvcnkobmFtZTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgcmVwb3NpdG9yeSA9IG5hbWVcblx0XHRcdC5yZXBsYWNlKC9eQC8sIFwiXCIpXG5cdFx0XHQuc3BsaXQoXCIvXCIpXG5cdFx0XHQubWFwKChzZWdtZW50KSA9PlxuXHRcdFx0XHRzZWdtZW50XG5cdFx0XHRcdFx0LnRvTG93ZXJDYXNlKClcblx0XHRcdFx0XHQucmVwbGFjZSgvW15hLXowLTldKy9nLCBcIi1cIilcblx0XHRcdFx0XHQucmVwbGFjZSgvXi0rfC0rJC9nLCBcIlwiKSxcblx0XHRcdClcblx0XHRcdC5maWx0ZXIoQm9vbGVhbilcblx0XHRcdC5qb2luKFwiL1wiKTtcblxuXHRcdGlmIChyZXBvc2l0b3J5ID09PSBcIlwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihgQ291bGQgbm90IGRlcml2ZSBhIERvY2tlciByZXBvc2l0b3J5IGZyb20gcHJvamVjdCBuYW1lIFwiJHtuYW1lfVwiYCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlcG9zaXRvcnk7XG5cdH1cblxuXHRwcml2YXRlIG5vcm1hbGl6ZVByb2plY3RTbHVnKG5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHVuc2NvcGVkID0gbmFtZS5pbmNsdWRlcyhcIi9cIikgPyAobmFtZS5zcGxpdChcIi9cIikuYXQoLTEpID8/IG5hbWUpIDogbmFtZTtcblx0XHRjb25zdCBzbHVnID0gdW5zY29wZWRcblx0XHRcdC50b0xvd2VyQ2FzZSgpXG5cdFx0XHQucmVwbGFjZSgvW15hLXowLTldKy9nLCBcIi1cIilcblx0XHRcdC5yZXBsYWNlKC9eLSt8LSskL2csIFwiXCIpO1xuXHRcdGlmIChzbHVnID09PSBcIlwiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRm9yZ2VFcnJvcihcblx0XHRcdFx0YENvdWxkIG5vdCBkZXJpdmUgYSBEb2NrZXIgcHJvamVjdCBzbHVnIGZyb20gcHJvamVjdCBuYW1lIFwiJHtuYW1lfVwiYCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBzbHVnO1xuXHR9XG5cblx0cHJpdmF0ZSBwYXJzZUpzb25FbnY8VD4obmFtZTogc3RyaW5nLCBmYWxsYmFjazogVCk6IFQge1xuXHRcdGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV07XG5cdFx0aWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUudHJpbSgpID09PSBcIlwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsbGJhY2s7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyBUO1xuXHRcdH0gY2F0Y2ggKHJlYXNvbikge1xuXHRcdFx0dGhyb3cgbmV3IEZvcmdlRXJyb3IoYEludmFsaWQgSlNPTiBpbiAke25hbWV9OiAke2Zvcm1hdFVua25vd25FcnJvcihyZWFzb24pfWApO1xuXHRcdH1cblx0fVxufVxuIl0sIm5hbWVzIjpbInBhdGgiLCJpbmplY3RhYmxlIiwiV29ya3NwYWNlIiwiQWN0aW9uUmVzcG9uc2UiLCJEb2NrZXIiLCJEb2NrZXJJbnRlcm9wIiwiaW8iLCJzY3JpYmUiLCJGb3JnZUVycm9yIiwiZm9ybWF0VW5rbm93bkVycm9yIiwibG9nZ2VyIiwibmFtZSIsImRvY2tlciIsInByb2Nlc3MiLCJlbnYiLCJGT1JHRV9ET0NLRVJfUkVHSVNUUlkiLCJ0cmltIiwid29ya3NwYWNlIiwicnVuIiwib3B0aW9ucyIsInByb2plY3RzIiwiZ2V0RG9ja2VyUHJvamVjdHMiLCJnZXRQcm9qZWN0cyIsImNvbmZpZ3VyYXRpb24iLCJsZW5ndGgiLCJpbmZvIiwiU3VjY2VzcyIsIndvcmtzcGFjZVBhY2thZ2VKc29uIiwiZ2V0UGFja2FnZUpzb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInJlc3BvbnNlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJwcm9qZWN0IiwiYnVpbGRQcm9qZWN0IiwiZmFpbGVkIiwiZmlsdGVyIiwicmVzcG9uc2UiLCJzdWNjZWVkZWQiLCJFcnJvciIsInJlc3VsdCIsImRvY2tlcmZpbGUiLCJkb2NrZXJDb25maWciLCJkb2NrZXJmaWxlUGF0aCIsImpvaW4iLCJwcm9qZWN0Um9vdCIsImZpbGVFeGlzdHMiLCJwdXNoIiwiZW52QnVpbGRBcmdzIiwicGFyc2VKc29uRW52IiwiZW52U2VjcmV0cyIsImVudlRhZ3MiLCJpbWFnZSIsImRlZmF1bHRJbWFnZU5hbWUiLCJleHRyYVRhZ3MiLCJleHRyYVRhZ3NGb3JJbWFnZSIsInRhZ3MiLCJidWlsZEFyZ3MiLCJpbnRlcnBvbGF0ZUJ1aWxkQXJncyIsInNlY3JldHMiLCJkcnlSdW4iLCJidWlsZCIsImN3ZCIsInNob3VsZFB1c2giLCJ0YWciLCJwcm9qZWN0TmFtZSIsIm1lc3NhZ2UiLCJyZWFzb24iLCJlcnJvciIsInZlcnNpb25QbGFjZWhvbGRlciIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZW50cmllcyIsInNwbGl0IiwicHJlZml4Iiwic2VlbiIsIlNldCIsInN0YXJ0c1dpdGgiLCJoYXMiLCJhZGQiLCJyZXBvc2l0b3J5UGF0aCIsIkZPUkdFX0RPQ0tFUl9OQU1FU1BBQ0UiLCJnZXRSZXBvc2l0b3J5RnVsbE5hbWUiLCJub3JtYWxpemVEb2NrZXJSZXBvc2l0b3J5IiwicHJvamVjdFNsdWciLCJub3JtYWxpemVQcm9qZWN0U2x1ZyIsImluY2x1ZGVzIiwicmVwb3NpdG9yeSIsInJlcGxhY2UiLCJzZWdtZW50IiwidG9Mb3dlckNhc2UiLCJCb29sZWFuIiwidW5zY29wZWQiLCJhdCIsInNsdWciLCJmYWxsYmFjayIsIkpTT04iLCJwYXJzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsVUFBVSxZQUFZO0FBQzdCLFNBQVNDLFVBQVUsUUFBUSxnQ0FBZ0M7QUFFM0QsOENBQThDO0FBQzlDLFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsU0FBU0MsY0FBYyxRQUFRLHNCQUFzQjtBQUNyRCxTQUFTQyxVQUFVQyxhQUFhLFFBQVEsMEJBQTBCO0FBQ2xFLFNBQVNDLEVBQUUsUUFBUSxxQkFBcUI7QUFDeEMsU0FBU0MsTUFBTSxRQUFRLG1CQUFtQjtBQUMxQyxTQUFTQyxVQUFVLEVBQUVDLGtCQUFrQixRQUFRLGVBQWU7QUFnQjlELE9BQU8sTUFBTUw7O0lBQ1osQ0FBQSxNQUFPLEdBQUdHLE9BQU9HLE1BQU0sQ0FBQ04sT0FBT08sSUFBSSxFQUFFO0lBQ3BCQyxTQUFTLElBQUlQLGdCQUFnQjtJQUNyQyxDQUFBLGVBQWdCLEdBQUdRLFFBQVFDLEdBQUcsQ0FBQ0MscUJBQXFCLEVBQUVDLFVBQVUsVUFBVTtJQUVuRixZQUFtQixBQUFpQkMsU0FBb0IsQ0FBRTthQUF0QkEsWUFBQUE7SUFBdUI7SUFFM0QsTUFBYUMsSUFBSUMsT0FBc0IsRUFBMkM7UUFDakYsTUFBTUMsV0FBVyxNQUFNLElBQUksQ0FBQ0MsaUJBQWlCLENBQzVDLElBQUksQ0FBQ0osU0FBUyxDQUFDSyxXQUFXLENBQUNILFFBQVFJLGFBQWE7UUFFakQsSUFBSUgsU0FBU0ksTUFBTSxLQUFLLEdBQUc7WUFDMUIsSUFBSSxDQUFDLENBQUEsTUFBTyxDQUFDQyxJQUFJLENBQUM7WUFDbEIsT0FBT3RCLGVBQWV1QixPQUFPLENBQUN0QixPQUFPTyxJQUFJLEVBQUUsRUFBRTtRQUM5QztRQUVBLE1BQU1nQix1QkFBdUIsTUFBTSxJQUFJLENBQUNWLFNBQVMsQ0FBQ1csY0FBYztRQUNoRSxNQUFNQyxVQUFVLE1BQU0sSUFBSSxDQUFDWixT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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decohere/forge",
3
- "version": "0.0.1-dev.74",
3
+ "version": "0.0.1-dev.76",
4
4
  "description": "TypeScript monorepo build system — zero config, fast compilation, streamlined developer workflow",
5
5
  "keywords": [
6
6
  "typescript",
@@ -29,10 +29,10 @@
29
29
  "test": "echo \"Error: no test specified\" && exit 1"
30
30
  },
31
31
  "dependencies": {
32
- "@decohere/crucible": "0.0.1-dev.74",
33
- "@decohere/mesh": "0.0.1-dev.74",
34
- "@decohere/nexus": "0.0.1-dev.74",
35
- "@decohere/scribe": "0.0.1-dev.74",
32
+ "@decohere/crucible": "0.0.1-dev.76",
33
+ "@decohere/mesh": "0.0.1-dev.76",
34
+ "@decohere/nexus": "0.0.1-dev.76",
35
+ "@decohere/scribe": "0.0.1-dev.76",
36
36
  "@swc/core": "^1.11.11",
37
37
  "async": "^3.2.6",
38
38
  "parse-imports": "^2.2.1",
@@ -21,6 +21,11 @@ export declare class Docker implements Action<DockerOptions> {
21
21
  private getDockerProjects;
22
22
  private buildProject;
23
23
  private interpolateBuildArgs;
24
+ /**
25
+ * Keep FORGE_DOCKER_EXTRA_TAGS_JSON scoped to this image so multi-image
26
+ * publishes do not stamp create:latest onto the app Dev Container (and vice versa).
27
+ */
28
+ private extraTagsForImage;
24
29
  private defaultImageName;
25
30
  private normalizeDockerRepository;
26
31
  private normalizeProjectSlug;