@uipath/integrationservice-tool 1.205.0-preview.290 → 1.205.0-preview.293

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.
@@ -8,7 +8,7 @@ import {
8
8
  RESOURCE_BUILDER_PASCAL_CASE_PROPERTIES,
9
9
  SHARED_CORE_ABSTRACTIONS_PASCAL_CASE_PROPERTIES,
10
10
  StreamSerializer
11
- } from "./tool-gdtpsdn7.js";
11
+ } from "./tool-j98qvwdt.js";
12
12
  import"./tool-1yh8g550.js";
13
13
  export {
14
14
  CAMEL_CASE_ENUM_PROPERTIES,
@@ -3,7 +3,7 @@ import {
3
3
  JsonSerializerNames,
4
4
  JsonSerializerProxy,
5
5
  StreamSerializer
6
- } from "./tool-gdtpsdn7.js";
6
+ } from "./tool-j98qvwdt.js";
7
7
  import {
8
8
  FirstPartyServiceApi
9
9
  } from "./tool-53w8skv5.js";
@@ -3637,6 +3637,7 @@ var ErrorCodes = {
3637
3637
  ResourceAttributeMismatch: "2023",
3638
3638
  AppSystemNameConflict: "2024",
3639
3639
  InvalidResourceFile: "2025",
3640
+ DuplicatePackageName: "2026",
3640
3641
  ResourceNotFound: "1000",
3641
3642
  ResourceAlreadyExists: "Resources.ResourceAlreadyExists",
3642
3643
  ResourceDependencyNotFound: "Resources.ResourceDependencyNotFound",
@@ -4165,6 +4166,30 @@ function getPackageType(processResourceType) {
4165
4166
  return processResourceType;
4166
4167
  return processTypeToPackageTypeMap[processResourceType.toLowerCase()] ?? processResourceType;
4167
4168
  }
4169
+ function generatePackageName(solutionName, projectName, processResourceType) {
4170
+ const packageType = getPackageType(processResourceType) ?? "";
4171
+ const truncateCharsNo = Math.floor((PACKAGE_NAME_MAX_LENGTH - PACKAGE_NAME_SEPARATION_CHARS - packageType.length) / 2);
4172
+ return sanitizeNuGetPackageName(`${truncate(solutionName, truncateCharsNo)}.${packageType}.${truncate(projectName, truncateCharsNo)}`);
4173
+ }
4174
+ function resolvePackageNameAfterRename(processResource, solutionName, projectName, oldSolutionName, oldProjectName) {
4175
+ const currentPackageName = processResource.spec?.[WellKnownPropertyNames.PackageName];
4176
+ if (!solutionName)
4177
+ return currentPackageName ?? undefined;
4178
+ const oldGeneratedPackageName = generatePackageName(oldSolutionName ?? "", oldProjectName ?? processResource.name, processResource.type);
4179
+ return currentPackageName && currentPackageName.toLowerCase() !== oldGeneratedPackageName.toLowerCase() ? currentPackageName : generatePackageName(solutionName, projectName, processResource.type);
4180
+ }
4181
+ function findPackageNameConflict(solution, projectKey, solutionName, packageName) {
4182
+ if (!packageName)
4183
+ return;
4184
+ const wanted = packageName.toLowerCase();
4185
+ return solution.resources.find((resource) => resource.projectKey !== undefined && resource.projectKey !== projectKey && resource.kind.toLowerCase() === WellKnownProjectType.Process.toLowerCase() && effectivePackageName(resource, solutionName)?.toLowerCase() === wanted);
4186
+ }
4187
+ function effectivePackageName(processResource, solutionName) {
4188
+ const packageName = processResource.spec?.[WellKnownPropertyNames.PackageName];
4189
+ if (packageName)
4190
+ return packageName;
4191
+ return solutionName ? generatePackageName(solutionName, processResource.name, processResource.type) : undefined;
4192
+ }
4168
4193
  function changePackageName(processResource, solutionName, projectName, oldSolutionName, oldProjectName) {
4169
4194
  if (!solutionName)
4170
4195
  return false;
@@ -4173,11 +4198,9 @@ function changePackageName(processResource, solutionName, projectName, oldSoluti
4173
4198
  spec[WellKnownPropertyNames.PackageName] = null;
4174
4199
  processResource.spec = spec;
4175
4200
  const currentPackageName = spec[WellKnownPropertyNames.PackageName];
4176
- const packageType = getPackageType(processResource.type) ?? "";
4177
- const truncateCharsNo = Math.floor((PACKAGE_NAME_MAX_LENGTH - PACKAGE_NAME_SEPARATION_CHARS - packageType.length) / 2);
4178
- const newPackageName = sanitizeNuGetPackageName(`${truncate(solutionName, truncateCharsNo)}.${packageType}.${truncate(projectName, truncateCharsNo)}`);
4201
+ const newPackageName = generatePackageName(solutionName, projectName, processResource.type);
4179
4202
  const projectNameForOldPackage = oldProjectName ?? processResource.name;
4180
- const oldGeneratedPackageName = sanitizeNuGetPackageName(`${truncate(oldSolutionName ?? "", truncateCharsNo)}.${packageType}.${truncate(projectNameForOldPackage, truncateCharsNo)}`);
4203
+ const oldGeneratedPackageName = generatePackageName(oldSolutionName ?? "", projectNameForOldPackage, processResource.type);
4181
4204
  if (!currentPackageName || currentPackageName.toLowerCase() === oldGeneratedPackageName.toLowerCase()) {
4182
4205
  spec[WellKnownPropertyNames.PackageName] = newPackageName;
4183
4206
  renamePackageDependencies(processResource, projectNameForOldPackage, projectName);
@@ -4388,8 +4411,15 @@ class MultiFileSolutionDefinitionProvider {
4388
4411
  return withFileOperationTimeout2(provider, resolveFileOperationTimeoutMs(this.options));
4389
4412
  }
4390
4413
  async readAsync(context, cancellationToken) {
4414
+ return this.readWithKindsAsync(context, undefined, cancellationToken);
4415
+ }
4416
+ async readKindsAsync(context, kinds, cancellationToken) {
4417
+ return this.readWithKindsAsync(context, context.isReadOnly ? kinds : undefined, cancellationToken);
4418
+ }
4419
+ async readWithKindsAsync(context, kinds, cancellationToken) {
4391
4420
  this.logger.info("Reading multi-file solution definition for solution %s", context.path);
4392
4421
  const loadStarted = nowMs();
4422
+ let listedFileCount = 0;
4393
4423
  let fileCount = 0;
4394
4424
  let listMs = 0;
4395
4425
  let readStarted = loadStarted;
@@ -4427,9 +4457,11 @@ class MultiFileSolutionDefinitionProvider {
4427
4457
  loaded: loadedCount,
4428
4458
  missing: missingFiles.length,
4429
4459
  invalid: invalidFiles.length,
4430
- parseErrors: parseErrors.length
4460
+ parseErrors: parseErrors.length,
4461
+ kinds: kinds?.join(",") ?? "*",
4462
+ listedFileCount
4431
4463
  };
4432
- const message = `Solution read ${outcome} for solution ${context.path}: ${metrics.fileCount} files in ${metrics.totalMs} ms (list ${metrics.listMs} ms, read ${metrics.readWallMs} ms wall, io ${metrics.ioMs} ms summed, max file io ${metrics.maxFileIoMs} ms, parse ${metrics.parseMs} ms, hash ${metrics.hashMs} ms, merge ${metrics.mergeMs} ms); ${metrics.chars} chars; parallelism ${metrics.degreeOfParallelism}; readOnly ${metrics.isReadOnly}; loaded ${metrics.loaded}, missing ${metrics.missing}, invalid ${metrics.invalid}, parseErrors ${metrics.parseErrors}`;
4464
+ const message = `Solution read ${outcome} for solution ${context.path}: ${metrics.fileCount} files in ${metrics.totalMs} ms (list ${metrics.listMs} ms, read ${metrics.readWallMs} ms wall, io ${metrics.ioMs} ms summed, max file io ${metrics.maxFileIoMs} ms, parse ${metrics.parseMs} ms, hash ${metrics.hashMs} ms, merge ${metrics.mergeMs} ms); ${metrics.chars} chars; parallelism ${metrics.degreeOfParallelism}; readOnly ${metrics.isReadOnly}; loaded ${metrics.loaded}, missing ${metrics.missing}, invalid ${metrics.invalid}, parseErrors ${metrics.parseErrors}; kinds ${metrics.kinds}, listed ${metrics.listedFileCount}`;
4433
4465
  if (outcome === "Success")
4434
4466
  this.logger.info(message, metrics);
4435
4467
  else
@@ -4455,8 +4487,11 @@ class MultiFileSolutionDefinitionProvider {
4455
4487
  tree.length = 0;
4456
4488
  }
4457
4489
  const listStarted = nowMs();
4458
- const resourceFiles = await fileStorageProvider.getFilesAsync(SolutionConstants.RESOURCE_FILES_FOLDER_NAME, "*.json", cancellationToken);
4490
+ const listedFiles = await fileStorageProvider.getFilesAsync(SolutionConstants.RESOURCE_FILES_FOLDER_NAME, "*.json", cancellationToken);
4459
4491
  listMs = nowMs() - listStarted;
4492
+ listedFileCount = listedFiles.length;
4493
+ const wantedKinds = kinds && new Set(kinds.map((k) => k.toLowerCase()));
4494
+ const resourceFiles = wantedKinds === undefined ? listedFiles : listedFiles.filter((resourceFile) => MultiFileSolutionDefinitionProvider.mayHoldAnyKind(resourceFile, wantedKinds));
4460
4495
  fileCount = resourceFiles.length;
4461
4496
  readStarted = nowMs();
4462
4497
  const readResults = await this.readResourceFilesAsync(context, fileStorageProvider, resourceFiles, cancellationToken);
@@ -4699,6 +4734,10 @@ class MultiFileSolutionDefinitionProvider {
4699
4734
  };
4700
4735
  }
4701
4736
  }
4737
+ static mayHoldAnyKind(resourceFile, lowerCaseKinds) {
4738
+ const segments = resourceFile.replace(/\\/g, "/").split("/").filter((s) => s.length > 0);
4739
+ return segments.slice(0, -1).some((segment) => lowerCaseKinds.has(segment.toLowerCase()));
4740
+ }
4702
4741
  applyFolders(resource, resourceFile) {
4703
4742
  const relPath = resourceFile.replace(/\\/g, "/");
4704
4743
  const segments = relPath.split("/").filter((s) => s.length > 0);
@@ -4802,6 +4841,8 @@ class MultiFileSolutionDefinitionProvider {
4802
4841
  newPaths.forEach((value, key) => {
4803
4842
  existingPaths.set(key, value);
4804
4843
  });
4844
+ existingTree.length = 0;
4845
+ existingTree.push(...orderedResourceKeys);
4805
4846
  }
4806
4847
  async deleteFilesAsync(context, filesToDelete, cancellationToken) {
4807
4848
  if (!filesToDelete || filesToDelete.length === 0 || context.isReadOnly)
@@ -5031,8 +5072,8 @@ class MultiFileSolutionDefinitionFactory {
5031
5072
  // ../../node_modules/@uipath/resource-builder-sdk/dist/embedded-files-default.js
5032
5073
  async function createDefaultEmbeddedFileReaderAsync() {
5033
5074
  const [{ EmbeddedFileReader }, { JsonSerializerFactory: JsonSerializerFactory2 }] = await Promise.all([
5034
- import("./embedded-file-reader-r66242ey.js"),
5035
- import("./index-kmp9fmhb.js")
5075
+ import("./embedded-file-reader-hcyf111w.js"),
5076
+ import("./index-dztdhj14.js")
5036
5077
  ]);
5037
5078
  return new EmbeddedFileReader(new JsonSerializerFactory2);
5038
5079
  }
@@ -5646,7 +5687,103 @@ class BindingOverwritesMappingRequest {
5646
5687
  }
5647
5688
  }
5648
5689
 
5690
+ // ../../node_modules/@uipath/resource-builder-sdk/dist/bindings/jit-debug-project-types.js
5691
+ var JIT_DEBUG_PROJECT_TYPES_FEATURE_FLAG = "FE.JitDebugProjectTypes";
5692
+ var PROCESS_KIND = "process";
5693
+ var BUSINESS_RULE_KIND = "businessrule";
5694
+ var APP_KIND = "app";
5695
+ var LOW_CODE_APP_PROJECT_TYPE = "webapp";
5696
+ var LOW_CODE_APP_TYPES = new Set([
5697
+ "workflow action"
5698
+ ]);
5699
+ var CODED_APP_PROJECT_TYPE = "appv2";
5700
+ var CODED_APP_TYPES = new Set([
5701
+ "coded",
5702
+ "codedaction"
5703
+ ]);
5704
+ var DEFAULT_PROCESS_PROJECT_TYPE = "process";
5705
+ var KNOWN_PROCESS_PROJECT_TYPES = new Set([
5706
+ DEFAULT_PROCESS_PROJECT_TYPE,
5707
+ "processorchestration",
5708
+ "agent",
5709
+ "api",
5710
+ "flow",
5711
+ "function",
5712
+ "casemanagement",
5713
+ "webapp",
5714
+ "businessrules"
5715
+ ]);
5716
+ var BUSINESS_RULE_PROJECT_TYPE = "businessrules";
5717
+ function parseJitDebugProjectTypes(flagValue) {
5718
+ if (!flagValue || !flagValue.trim())
5719
+ return [];
5720
+ return flagValue.split(",").map((t) => t.trim()).filter((t) => t.length > 0);
5721
+ }
5722
+ function solutionSupportsJitDebug(solution, flagValue) {
5723
+ const enabledProjectTypes = parseJitDebugProjectTypes(flagValue).map((t) => t.toLowerCase());
5724
+ if (enabledProjectTypes.length === 0)
5725
+ return false;
5726
+ return (solution.resources ?? []).filter((r) => (r.projectKey != null || r.isArtefactResource === true) && isDecisionKind(r.kind)).every((r) => enabledProjectTypes.some((projectType) => matches(projectType, r)));
5727
+ }
5728
+ function isDecisionKind(kind) {
5729
+ const normalized = (kind ?? "").toLowerCase();
5730
+ return normalized === PROCESS_KIND || normalized === BUSINESS_RULE_KIND || normalized === APP_KIND;
5731
+ }
5732
+ function matches(projectType, resource) {
5733
+ if ((resource.kind ?? "").toLowerCase() === BUSINESS_RULE_KIND)
5734
+ return projectType === BUSINESS_RULE_PROJECT_TYPE;
5735
+ if ((resource.kind ?? "").toLowerCase() === APP_KIND) {
5736
+ const appType = (resource.type ?? "").toLowerCase();
5737
+ if (appType === "" || LOW_CODE_APP_TYPES.has(appType))
5738
+ return projectType === LOW_CODE_APP_PROJECT_TYPE;
5739
+ return CODED_APP_TYPES.has(appType) && projectType === CODED_APP_PROJECT_TYPE;
5740
+ }
5741
+ const resourceType = (resource.type ?? "").toLowerCase();
5742
+ const processType = resourceType === "" ? DEFAULT_PROCESS_PROJECT_TYPE : resourceType;
5743
+ return !KNOWN_PROCESS_PROJECT_TYPES.has(processType) || projectType === processType;
5744
+ }
5745
+
5746
+ // ../../node_modules/@uipath/resource-builder-sdk/dist/services/overwrites/models.js
5747
+ var models_ValidationSeverity = /* @__PURE__ */ function(ValidationSeverity) {
5748
+ ValidationSeverity["Warning"] = "Warning";
5749
+ ValidationSeverity["Critical"] = "Critical";
5750
+ return ValidationSeverity;
5751
+ }({});
5752
+ var models_OverwriteType = /* @__PURE__ */ function(OverwriteType) {
5753
+ OverwriteType["Install"] = "Install";
5754
+ OverwriteType["Reference"] = "Reference";
5755
+ return OverwriteType;
5756
+ }({});
5757
+ function createLocalizableMessage(key, ...args) {
5758
+ return {
5759
+ key,
5760
+ args: args.length > 0 ? args : undefined
5761
+ };
5762
+ }
5763
+ function createMissingRcsResources(missingKeys, error) {
5764
+ return {
5765
+ missingResourceKeys: missingKeys instanceof Set ? missingKeys : new Set(missingKeys),
5766
+ error
5767
+ };
5768
+ }
5769
+ function setValidationError(errors, resourceKey, dto) {
5770
+ const error = errors.get(resourceKey);
5771
+ if (error)
5772
+ dto.validationError = error;
5773
+ }
5774
+ var DebugOverwritesConstants = {
5775
+ ResourceOverwritesFileName: "debug_overwrites.json",
5776
+ CurrentOverwritesDocVersion: "1.0"
5777
+ };
5778
+
5649
5779
  // ../../node_modules/@uipath/resource-builder-sdk/dist/bindings/binding-overwrites-handler.js
5780
+ var FOLDER_KEY_RESOURCE_TYPES = new Set([
5781
+ models_BindingsResourceType.Entity,
5782
+ models_BindingsResourceType.Asset,
5783
+ models_BindingsResourceType.Queue,
5784
+ models_BindingsResourceType.Process
5785
+ ]);
5786
+
5650
5787
  class BindingOverwritesHandler {
5651
5788
  async handleAsync(request, cancellationToken) {
5652
5789
  if (request instanceof BindingOverwritesValidationCommand)
@@ -5661,6 +5798,10 @@ class BindingOverwritesHandler {
5661
5798
  if (bindingResources.length === 0)
5662
5799
  return {};
5663
5800
  const result = {};
5801
+ const solution = await request.context.loadAsync(cancellationToken);
5802
+ const jitDebugProjectTypes = this.featureFlagProvider.getString(JIT_DEBUG_PROJECT_TYPES_FEATURE_FLAG, "");
5803
+ const emptyFolderPathForArtefacts = solutionSupportsJitDebug(solution, jitDebugProjectTypes);
5804
+ this.logger.info(`Binding overwrites for solution ${request.context.path}: JIT debug ${emptyFolderPathForArtefacts ? "on" : "off"} (FE.JitDebugProjectTypes = '${jitDebugProjectTypes}')`);
5664
5805
  const resourceOverwrites = await this.resourceOverwritesService.getResourceOverwritesAsync(request.context, cancellationToken);
5665
5806
  for (const bindingResource of bindingResources) {
5666
5807
  const resourceOverwrite = resourceOverwrites.get(bindingResource.resourceKey.toLowerCase());
@@ -5673,13 +5814,15 @@ class BindingOverwritesHandler {
5673
5814
  [BindingsKnownKeys.FolderKeyPropertyName]: resourceOverwrite.folderKey ?? ""
5674
5815
  };
5675
5816
  else {
5676
- const folderPath = bindingResource.isArtefactResource && !bindingResource.isCodedApp ? "" : resourceOverwrite.folderFullyQualifiedName ?? "";
5817
+ const resolvesInDebugFolder = emptyFolderPathForArtefacts && bindingResource.isArtefactResource;
5818
+ const folderPath = resolvesInDebugFolder ? "" : resourceOverwrite.folderFullyQualifiedName ?? "";
5819
+ const name = resourceOverwrite.type === models_OverwriteType.Install && bindingResource.isArtefactResource && bindingResource.resourceName ? bindingResource.resourceName : resourceOverwrite.resourceName;
5677
5820
  overwrite = {
5678
5821
  [BindingsKnownKeys.FolderPathPropertyName]: folderPath,
5679
- [BindingsKnownKeys.NamePropertyName]: resourceOverwrite.resourceName
5822
+ [BindingsKnownKeys.NamePropertyName]: name
5680
5823
  };
5681
- if (bindingResource.binding.resourceType === models_BindingsResourceType.Entity)
5682
- overwrite[BindingsKnownKeys.FolderKeyPropertyName] = resourceOverwrite.folderKey ?? "";
5824
+ if (FOLDER_KEY_RESOURCE_TYPES.has(bindingResource.binding.resourceType))
5825
+ overwrite[BindingsKnownKeys.FolderKeyPropertyName] = resolvesInDebugFolder ? "" : resourceOverwrite.folderKey ?? "";
5683
5826
  }
5684
5827
  const key = getOverrideKey(bindingResource.binding);
5685
5828
  result[key] = overwrite;
@@ -5695,9 +5838,10 @@ class BindingOverwritesHandler {
5695
5838
  throw new BadRequestException("Bindings.ValidationFailed", `Binding validation failed: ${failureMessages}`);
5696
5839
  }
5697
5840
  }
5698
- constructor(mediator, resourceOverwritesService, loggerFactory) {
5841
+ constructor(mediator, resourceOverwritesService, loggerFactory, featureFlagProvider) {
5699
5842
  this.mediator = mediator;
5700
5843
  this.resourceOverwritesService = resourceOverwritesService;
5844
+ this.featureFlagProvider = featureFlagProvider;
5701
5845
  this.logger = loggerFactory.create("BindingOverwritesHandler");
5702
5846
  }
5703
5847
  }
@@ -5737,7 +5881,8 @@ class BindingOverwritesMappingRequestHandler {
5737
5881
  binding: bindingsResource,
5738
5882
  resourceKey: resource.key,
5739
5883
  isArtefactResource: resource.projectKey != null,
5740
- isCodedApp: bindingsResource.resourceType === models_BindingsResourceType.App && isCodedAppType(resource.type)
5884
+ isCodedApp: bindingsResource.resourceType === models_BindingsResourceType.App && isCodedAppType(resource.type),
5885
+ resourceName: resource.name
5741
5886
  });
5742
5887
  } else {
5743
5888
  this.logger.error(`Solution does not contain binding resource of type ${models_BindingsResourceType[bindingsResource.resourceType]}.`);
@@ -5860,6 +6005,9 @@ class SolutionContext {
5860
6005
  signal = forceOrSignal;
5861
6006
  return this.doWithLockAsync((token) => this.internalLoadAsync(force, token), signal);
5862
6007
  }
6008
+ async loadKindsAsync(kinds, cancellationToken) {
6009
+ return this.doWithLockAsync((token) => this.isReadOnly && this._definition === null && this._definitionProvider.readKindsAsync ? this._definitionProvider.readKindsAsync(this, kinds, token) : this.internalLoadAsync(false, token), cancellationToken);
6010
+ }
5863
6011
  async getSolutionDefinitionAsync(cancellationToken) {
5864
6012
  return this._definitionProvider.readAsync(this, cancellationToken);
5865
6013
  }
@@ -5877,20 +6025,17 @@ class SolutionContext {
5877
6025
  this.validateResourceDependencies(this._definition);
5878
6026
  await this.deleteSavedFilesAsync(filesToDelete, token);
5879
6027
  await this.internalSaveChanges(this._definition, token);
5880
- this._definition = null;
5881
6028
  }, signal);
5882
6029
  else
5883
6030
  await this.doWithLockAsync(async (token) => {
5884
6031
  this.validateResourceDependencies(this._definition);
5885
6032
  await this.internalSaveChanges(this._definition, token);
5886
- this._definition = null;
5887
6033
  }, signal);
5888
6034
  }
5889
6035
  async forceSaveChangesAsync(cancellationToken) {
5890
6036
  await this.doWithLockAsync(async (token) => {
5891
6037
  this.validateResourceDependencies(this._definition);
5892
6038
  await this.internalSaveChanges(this._definition, token);
5893
- this._definition = null;
5894
6039
  }, cancellationToken);
5895
6040
  }
5896
6041
  async saveAsync(solution, cancellationToken) {
@@ -5901,7 +6046,7 @@ class SolutionContext {
5901
6046
  this.validateResourceDependencies(solution);
5902
6047
  await this.internalLoadAsync(false, token);
5903
6048
  await this.internalSaveChanges(solution, token);
5904
- this._definition = null;
6049
+ this._definition = solution;
5905
6050
  }, cancellationToken);
5906
6051
  }
5907
6052
  toString() {
@@ -6982,39 +7127,6 @@ SettingsRequestHandler = _ts_decorate4([
6982
7127
  ])
6983
7128
  ], SettingsRequestHandler);
6984
7129
 
6985
- // ../../node_modules/@uipath/resource-builder-sdk/dist/services/overwrites/models.js
6986
- var models_ValidationSeverity = /* @__PURE__ */ function(ValidationSeverity) {
6987
- ValidationSeverity["Warning"] = "Warning";
6988
- ValidationSeverity["Critical"] = "Critical";
6989
- return ValidationSeverity;
6990
- }({});
6991
- var models_OverwriteType = /* @__PURE__ */ function(OverwriteType) {
6992
- OverwriteType["Install"] = "Install";
6993
- OverwriteType["Reference"] = "Reference";
6994
- return OverwriteType;
6995
- }({});
6996
- function createLocalizableMessage(key, ...args) {
6997
- return {
6998
- key,
6999
- args: args.length > 0 ? args : undefined
7000
- };
7001
- }
7002
- function createMissingRcsResources(missingKeys, error) {
7003
- return {
7004
- missingResourceKeys: missingKeys instanceof Set ? missingKeys : new Set(missingKeys),
7005
- error
7006
- };
7007
- }
7008
- function setValidationError(errors, resourceKey, dto) {
7009
- const error = errors.get(resourceKey);
7010
- if (error)
7011
- dto.validationError = error;
7012
- }
7013
- var DebugOverwritesConstants = {
7014
- ResourceOverwritesFileName: "debug_overwrites.json",
7015
- CurrentOverwritesDocVersion: "1.0"
7016
- };
7017
-
7018
7130
  // ../../node_modules/@uipath/resource-builder-sdk/dist/mappings/resource-subtype-mapper.js
7019
7131
  var solutionsSubtypesMap = {
7020
7132
  Text: "stringAsset",
@@ -8355,8 +8467,8 @@ class SolutionDefinitionHelper {
8355
8467
  if (references.length === 0)
8356
8468
  continue;
8357
8469
  const referenceKind = refProp["referenceKind"];
8358
- const matches = (ref) => ref.name != null && invariantEquals(resource.name, ref.name) && referenceKind != null && invariantEquals(referenceKind, resource.kind);
8359
- const filtered = references.filter((r) => !matches(r));
8470
+ const matches2 = (ref) => ref.name != null && invariantEquals(resource.name, ref.name) && referenceKind != null && invariantEquals(referenceKind, resource.kind);
8471
+ const filtered = references.filter((r) => !matches2(r));
8360
8472
  if (filtered.length !== references.length)
8361
8473
  spec[refProp.property] = isSingleReferenceProperty(refProp) ? filtered[0] ?? null : filtered;
8362
8474
  }
@@ -8503,7 +8615,9 @@ class ResourcesSearchRequestHandler {
8503
8615
  async getSolutionResourcesAsync(request, cancellationToken) {
8504
8616
  if (request.pageSize <= 0 || !request.includeSolutionResources)
8505
8617
  return null;
8506
- const solution = await request.context.loadAsync(cancellationToken);
8618
+ const solution = await (request.context.loadKindsAsync?.([
8619
+ request.kind
8620
+ ], cancellationToken) ?? request.context.loadAsync(cancellationToken));
8507
8621
  let resources = solution.resources.filter((x) => !x.projectKey || request.projectKey && x.projectKey !== request.projectKey).filter((x) => x.kind.toLowerCase() === request.kind.toLowerCase()).filter((x) => !request.types || request.types.some((t) => t.toLowerCase() === x.type?.toLowerCase())).filter((x) => !request.searchTerm || x.name.toLowerCase().includes(request.searchTerm.toLowerCase()));
8508
8622
  if (request.cursor?.pageDirection === internal_InternalPageDirection.Previous) {
8509
8623
  if (request.cursor.name) {
@@ -10002,6 +10116,7 @@ class GenerateArtefactResourcesCommandHandler {
10002
10116
  apiVersion: metadataVersion.version.uri,
10003
10117
  name: command.projectName,
10004
10118
  projectKey: command.projectKey,
10119
+ isArtefactResource: !!command.projectKey,
10005
10120
  folders: [],
10006
10121
  files: []
10007
10122
  };
@@ -13691,7 +13806,7 @@ class ProjectCreateCommandHandler {
13691
13806
  const solution = await command.context.loadAsync(cancellationToken);
13692
13807
  const resourceIdentifiers = new Set(this.projectConfigurationReader.getTemplateResourcesByType(command.type, command.subType, true).map((r) => JSON.stringify(r)));
13693
13808
  const projectResources = solution.resources.filter((x) => x.projectKey === command.projectKey);
13694
- const duplicateProject = solution.resources.find((r) => r.isArtefactResource && r.projectKey !== command.projectKey && r.name.toLowerCase() === command.name.toLowerCase());
13809
+ const duplicateProject = solution.resources.find((r) => r.projectKey !== undefined && r.projectKey !== command.projectKey && r.name.toLowerCase() === command.name.toLowerCase());
13695
13810
  if (duplicateProject) {
13696
13811
  this.logger.error("Project name already exists", undefined, {
13697
13812
  projectName: command.name,
@@ -13700,15 +13815,16 @@ class ProjectCreateCommandHandler {
13700
13815
  throw new BadRequestException("Project.DuplicateProjectName", "Project name already exists");
13701
13816
  }
13702
13817
  if (projectResources.length === 0)
13703
- await this.generateNewProjectArtefacts(command, solution, cancellationToken);
13818
+ this.addArtefacts(command, solution, await this.generateAndValidateArtefacts(command, solution, cancellationToken));
13704
13819
  else {
13705
13820
  const existingResourceIdentifiers = new Set(projectResources.map((x) => JSON.stringify(toResourceIdentifier2(x))));
13706
13821
  const needsRegeneration = existingResourceIdentifiers.size !== resourceIdentifiers.size || [
13707
13822
  ...resourceIdentifiers
13708
13823
  ].some((id) => !existingResourceIdentifiers.has(id));
13709
13824
  if (needsRegeneration) {
13825
+ const artefacts = await this.generateAndValidateArtefacts(command, solution, cancellationToken);
13710
13826
  await this.removeExistingProjectResources(command, cancellationToken);
13711
- await this.generateNewProjectArtefacts(command, solution, cancellationToken);
13827
+ this.addArtefacts(command, solution, artefacts);
13712
13828
  } else if (projectResources.some((x) => x.name !== command.name))
13713
13829
  await this.mediator.sendCommandAsync(new ProjectEditCommand(command.context, command.projectKey, {
13714
13830
  name: command.name,
@@ -13718,13 +13834,13 @@ class ProjectCreateCommandHandler {
13718
13834
  }
13719
13835
  await command.context.saveChangesAsync(cancellationToken);
13720
13836
  }
13721
- async generateNewProjectArtefacts(command, solution, cancellationToken) {
13837
+ async generateAndValidateArtefacts(command, solution, cancellationToken) {
13722
13838
  this.logger.info("Generate artefact resources for project", {
13723
13839
  projectName: command.name,
13724
13840
  projectKey: command.projectKey
13725
13841
  });
13726
13842
  const artefactResources = await this.mediator.sendCommandAsync(new GenerateArtefactResourcesCommand(command.context, command.name, command.type, command.projectKey, command.subType), cancellationToken);
13727
- const existingConflictResource = solution.resources.find((r) => !r.isArtefactResource && r.name.toLowerCase() === command.name.toLowerCase() && artefactResources.some((pr) => r.kind.toLowerCase() === pr.kind.toLowerCase()));
13843
+ const existingConflictResource = solution.resources.find((r) => r.projectKey === undefined && r.name.toLowerCase() === command.name.toLowerCase() && artefactResources.some((pr) => r.kind.toLowerCase() === pr.kind.toLowerCase()));
13728
13844
  if (existingConflictResource) {
13729
13845
  this.logger.error("Resource name conflict", undefined, {
13730
13846
  context: command.context,
@@ -13733,6 +13849,23 @@ class ProjectCreateCommandHandler {
13733
13849
  });
13734
13850
  throw new BadRequestException("Resources.DuplicateResourceName", `Solution already contains a ${existingConflictResource.kind} resource named "${existingConflictResource.name}"`);
13735
13851
  }
13852
+ for (const artefact of artefactResources) {
13853
+ if (artefact.kind.toLowerCase() !== WellKnownProjectType.Process.toLowerCase())
13854
+ continue;
13855
+ const packageName = resolvePackageNameAfterRename(artefact, command.solutionName, command.name, command.solutionName);
13856
+ const conflictingProject = findPackageNameConflict(solution, command.projectKey, command.solutionName, packageName);
13857
+ if (conflictingProject) {
13858
+ this.logger.error("Package name conflict", undefined, {
13859
+ context: command.context,
13860
+ packageName,
13861
+ conflictingProject: conflictingProject.name
13862
+ });
13863
+ throw new BadRequestException(ErrorCodes.Resources.DuplicatePackageName, `The name '${command.name}' would publish under the same package name as project '${conflictingProject.name}': '${packageName}'. Long names are shortened when the package name is composed, so choose a name that differs earlier.`);
13864
+ }
13865
+ }
13866
+ return artefactResources;
13867
+ }
13868
+ addArtefacts(command, solution, artefactResources) {
13736
13869
  for (const artefact of artefactResources) {
13737
13870
  if (artefact.kind.toLowerCase() === WellKnownProjectType.Process.toLowerCase())
13738
13871
  changePackageName(artefact, command.solutionName, command.name, command.solutionName);
@@ -13773,18 +13906,32 @@ class ProjectEditCommandHandler {
13773
13906
  const newProjectName = command.projectDetails.name.trim();
13774
13907
  const projectDescription = command.projectDetails.description;
13775
13908
  const solutionName = command.projectDetails.solutionName;
13776
- const duplicateProject = solution.resources.find((r) => r.isArtefactResource && r.projectKey !== command.projectKey && r.name.toLowerCase() === newProjectName.toLowerCase());
13909
+ const duplicateProject = solution.resources.find((r) => r.projectKey !== undefined && r.projectKey !== command.projectKey && r.name.toLowerCase() === newProjectName.toLowerCase());
13777
13910
  if (duplicateProject) {
13778
13911
  this.logger.error("Project name already exists");
13779
13912
  throw new BadRequestException(ErrorCodes.Resources.DuplicateResourceName, "Project name already exists");
13780
13913
  }
13781
- const existingConflictResource = solution.resources.find((r) => !r.isArtefactResource && r.name.toLowerCase() === newProjectName.toLowerCase() && projectResources.some((pr) => r.kind.toLowerCase() === pr.kind.toLowerCase()));
13914
+ const existingConflictResource = solution.resources.find((r) => r.projectKey === undefined && r.name.toLowerCase() === newProjectName.toLowerCase() && projectResources.some((pr) => r.kind.toLowerCase() === pr.kind.toLowerCase()));
13782
13915
  if (existingConflictResource) {
13783
13916
  this.logger.error("Solution already contains resource of kind with same name");
13784
13917
  throw new BadRequestException(ErrorCodes.Resources.DuplicateResourceName, `Solution already contains a ${existingConflictResource.kind} resource named "${existingConflictResource.name}"`);
13785
13918
  }
13786
13919
  const firstProjectResource = projectResources[0];
13787
13920
  const oldProjectName = firstProjectResource ? firstProjectResource.name : "";
13921
+ for (const resource of projectResources) {
13922
+ if (resource.kind.toLowerCase() !== WellKnownProjectType.Process.toLowerCase())
13923
+ continue;
13924
+ const packageName = resolvePackageNameAfterRename(resource, solutionName, newProjectName, solutionName, oldProjectName);
13925
+ const conflictingProject = findPackageNameConflict(solution, command.projectKey, solutionName, packageName);
13926
+ if (conflictingProject) {
13927
+ this.logger.error("Package name conflict", undefined, {
13928
+ context: command.context,
13929
+ packageName,
13930
+ conflictingProject: conflictingProject.name
13931
+ });
13932
+ throw new BadRequestException(ErrorCodes.Resources.DuplicatePackageName, `The name '${newProjectName}' would publish under the same package name as project '${conflictingProject.name}': '${packageName}'. Long names are shortened when the package name is composed, so choose a name that differs earlier.`);
13933
+ }
13934
+ }
13788
13935
  const dependencyMapper = new Map;
13789
13936
  for (const resource of projectResources) {
13790
13937
  const depKey = `${oldProjectName.toLowerCase()}|${resource.kind.toLowerCase()}`;
@@ -16019,7 +16166,8 @@ function registerHandlers(diContainer) {
16019
16166
  const mediator = c.resolve(ServiceTokens.Mediator);
16020
16167
  const resourceOverwritesService = c.resolve(Tokens.IResourceOverwritesService);
16021
16168
  const loggerFactory = c.resolve(ServiceTokens.LoggerFactory);
16022
- return new BindingOverwritesHandler(mediator, resourceOverwritesService, loggerFactory);
16169
+ const featureFlagProvider = c.resolve(ServiceTokens.FeatureFlagProvider);
16170
+ return new BindingOverwritesHandler(mediator, resourceOverwritesService, loggerFactory, featureFlagProvider);
16023
16171
  }
16024
16172
  });
16025
16173
  diContainer.register(createCommandHandlerToken(BindingOverwritesValidationCommand.name), {
@@ -16027,7 +16175,8 @@ function registerHandlers(diContainer) {
16027
16175
  const mediator = c.resolve(ServiceTokens.Mediator);
16028
16176
  const resourceOverwritesService = c.resolve(Tokens.IResourceOverwritesService);
16029
16177
  const loggerFactory = c.resolve(ServiceTokens.LoggerFactory);
16030
- return new BindingOverwritesHandler(mediator, resourceOverwritesService, loggerFactory);
16178
+ const featureFlagProvider = c.resolve(ServiceTokens.FeatureFlagProvider);
16179
+ return new BindingOverwritesHandler(mediator, resourceOverwritesService, loggerFactory, featureFlagProvider);
16031
16180
  }
16032
16181
  });
16033
16182
  diContainer.register(createRequestHandlerToken(BindingOverwritesMappingRequest.name), {
@@ -19130,12 +19279,12 @@ async function findResourceByKeyInRcs(builder, kind, expectedKey, folderPath, pr
19130
19279
  return;
19131
19280
  }
19132
19281
  async function searchRcsResources(builder, kind, name) {
19133
- const [searchError, matches] = await catchError(searchRcsResourcesStrict(builder, kind, name));
19282
+ const [searchError, matches2] = await catchError(searchRcsResourcesStrict(builder, kind, name));
19134
19283
  if (searchError) {
19135
19284
  logger.warn(`Failed to search ${kind} resources in RCS: ${searchError.message}`);
19136
19285
  return [];
19137
19286
  }
19138
- return matches;
19287
+ return matches2;
19139
19288
  }
19140
19289
  async function searchRcsResourcesStrict(builder, kind, name) {
19141
19290
  let pageCursor;
@@ -19143,8 +19292,8 @@ async function searchRcsResourcesStrict(builder, kind, name) {
19143
19292
  do {
19144
19293
  const result = await builder.searchResourcesAsync(kind, undefined, name, pageCursor, 50, undefined, false);
19145
19294
  for (const folderResources of result.availableResources) {
19146
- const matches = folderResources.resources.filter((r) => r.name.toLowerCase() === name.toLowerCase());
19147
- for (const match of matches) {
19295
+ const matches2 = folderResources.resources.filter((r) => r.name.toLowerCase() === name.toLowerCase());
19296
+ for (const match of matches2) {
19148
19297
  allMatches.push({
19149
19298
  key: match.key,
19150
19299
  name: match.name,
@@ -19749,4 +19898,4 @@ export {
19749
19898
  writeSolutionFile
19750
19899
  };
19751
19900
 
19752
- //# debugId=248B0CA751ECE81564756E2164756E21
19901
+ //# debugId=BF062F2FBF3577CC64756E2164756E21
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  metadata,
4
4
  registerCommands
5
- } from "./tool-d8s5g8qc.js";
5
+ } from "./tool-sw1tk2wb.js";
6
6
  import {
7
7
  Command
8
8
  } from "./tool-ffr7313v.js";
@@ -21,6 +21,10 @@ var JsonSerializerNames = {
21
21
  };
22
22
 
23
23
  // ../../node_modules/@uipath/resource-builder-sdk/dist/serialization/json-serializer.js
24
+ var VERBATIM_VALUE_PROPERTIES = new Set([
25
+ "spec"
26
+ ]);
27
+
24
28
  class JsonSerializer {
25
29
  serialize(value) {
26
30
  if (value == null)
@@ -110,7 +114,9 @@ class JsonSerializer {
110
114
  const result = {};
111
115
  const currentClassName = obj.constructor?.name !== "Object" ? obj.constructor.name : className;
112
116
  for (const [key, val] of Object.entries(obj))
113
- if (typeof val == "string")
117
+ if (VERBATIM_VALUE_PROPERTIES.has(key))
118
+ result[key] = val;
119
+ else if (typeof val == "string")
114
120
  result[key] = this.tryConvertEnumStringToCamelCase(val, currentClassName, key);
115
121
  else if (Array.isArray(val))
116
122
  result[key] = val.map((item) => {
@@ -339,4 +345,4 @@ class StreamSerializer {
339
345
  }
340
346
  export { JsonSerializerNames, JsonSerializer, CAMEL_CASE_ENUM_PROPERTIES, SHARED_CORE_ABSTRACTIONS_PASCAL_CASE_PROPERTIES, RESOURCE_BUILDER_PASCAL_CASE_PROPERTIES, PASCAL_CASE_ENUM_PROPERTIES, JsonSerializerFactory, JsonSerializerProxy, StreamSerializer };
341
347
 
342
- //# debugId=B9E68BD7718EF2DB64756E2164756E21
348
+ //# debugId=C9C96784831F2C9F64756E2164756E21
@@ -39,7 +39,7 @@ var package_default = {
39
39
  name: "@uipath/integrationservice-tool",
40
40
  author: "UiPath",
41
41
  license: "SEE LICENSE IN LICENSE.txt",
42
- version: "1.205.0-preview.290",
42
+ version: "1.205.0-preview.293",
43
43
  description: "Manage Integration Service connectors, connections, and triggers.",
44
44
  private: false,
45
45
  repository: {
@@ -616,7 +616,7 @@ var package_default2 = {
616
616
  name: "@uipath/integrationservice-sdk",
617
617
  author: "UiPath",
618
618
  license: "SEE LICENSE IN LICENSE.txt",
619
- version: "1.205.0-preview.290",
619
+ version: "1.205.0-preview.293",
620
620
  repository: {
621
621
  type: "git",
622
622
  url: "https://github.com/UiPath/cli.git",
@@ -6935,7 +6935,7 @@ function createSolutionResourceConfigurationsProvider(solutionDir, namesByKey =
6935
6935
  async function openEngine() {
6936
6936
  const { getSolutionAuthContext } = await import("./solution-auth-gyqtxa4n.js");
6937
6937
  await getSolutionAuthContext({});
6938
- const resources = await import("./index-xafcs9np.js");
6938
+ const resources = await import("./index-grh5z9h5.js");
6939
6939
  return {
6940
6940
  resources,
6941
6941
  services: await resources.createResourceBuilderServices()
@@ -22210,7 +22210,7 @@ async function resolveSolutionResources(solutionFolder, bindings, { tenant } = {
22210
22210
  const { getSolutionAuthContext } = await import("./solution-auth-gyqtxa4n.js");
22211
22211
  const session = await getSolutionAuthContext({});
22212
22212
  assertSessionTenant(tenant, session.tenantName);
22213
- const engine = await import("./index-xafcs9np.js");
22213
+ const engine = await import("./index-grh5z9h5.js");
22214
22214
  const services = await engine.createResourceBuilderServices();
22215
22215
  const builder = solutionDir ? await services.getSolutionBuilder(solutionDir, true) : undefined;
22216
22216
  const ctx = { engine, services, builder, solutionDir };
@@ -23664,4 +23664,4 @@ var registerCommands = async (program) => {
23664
23664
 
23665
23665
  export { metadata, registerCommands };
23666
23666
 
23667
- //# debugId=C738B26C7DD7C89064756E2164756E21
23667
+ //# debugId=AA07C93DDBF7BE2C64756E2164756E21
package/dist/tool.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  metadata,
3
3
  registerCommands
4
- } from "./tool-d8s5g8qc.js";
4
+ } from "./tool-sw1tk2wb.js";
5
5
  import"./tool-ffr7313v.js";
6
6
  import"./tool-fj5zzmeh.js";
7
7
  import"./tool-1yh8g550.js";