npm package diff
Package: @forge/util
Versions: 1.4.10-next.0 - 1.4.10-next.0-experimental-effab31
File: package/packages/ari/jira-align/index.js
Index: package/packages/ari/jira-align/index.js
===================================================================
--- package/packages/ari/jira-align/index.js
+++ package/packages/ari/jira-align/index.js
@@ -17,18 +17,20 @@
// src/jira-align/index.ts
var jira_align_exports = {};
__export(jira_align_exports, {
JiraAlignEpicAri: () => JiraAlignEpicAri,
- JiraAlignInstanceAri: () => JiraAlignInstanceAri
+ JiraAlignInstanceAri: () => JiraAlignInstanceAri,
+ JiraAlignProjectAri: () => JiraAlignProjectAri,
+ JiraAlignWorkspaceAri: () => JiraAlignWorkspaceAri
});
module.exports = __toCommonJS(jira_align_exports);
// src/errors.ts
var ValidationError = class extends Error {
};
// src/core/rules/cloud-id.ts
-function validateCloudId(cloudId, format = new RegExp("^[a-zA-Z0-9\\-]*$")) {
+function validateCloudId(cloudId, format = new RegExp("^[a-zA-Z0-9_\\-.]{0,255}$")) {
if (!cloudId.match(format))
throw new ValidationError(`Invalid cloud ID, expected ID of format ${format}.`);
}
@@ -48,9 +50,9 @@
throw new ValidationError(`ARI must have a qualifier of 'ari'. Received: ${qualifier}`);
}
// src/core/rules/resource-id.ts
-function validateResourceId(id, format = new RegExp("[!a-zA-Z0-9\\-_.~@:{}=]+(/[!a-zA-Z0-9\\-_.~@:{}=]+)*" /* ANY_RESOURCE_ID */), key = "resourceId") {
+function validateResourceId(id, format = new RegExp("[!a-zA-Z0-9\\-_.~@:;{}=]+(/[!a-zA-Z0-9\\-_.~@:;{}=]+)*" /* ANY_RESOURCE_ID */), key = "resourceId") {
let formatWithCarets = new RegExp(`^${format.source}$`);
if (!id.match(formatWithCarets))
throw new ValidationError(`Invalid ${key} - ${id}, expected ID of format ${formatWithCarets}.`);
}
@@ -283,8 +285,9 @@
var jiraAlignEpicAriStaticOpts = {
qualifier: "ari",
platformQualifier: "cloud",
cloudId: new RegExp("^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$"),
+ // eslint-disable-line no-useless-escape
resourceOwner: JiraAlignEpicAriResourceOwner,
resourceType: JiraAlignEpicAriResourceType,
resourceIdSlug: "{epicId}",
resourceIdSegmentFormats: {
@@ -338,8 +341,9 @@
var jiraAlignInstanceAriStaticOpts = {
qualifier: "ari",
platformQualifier: "cloud",
cloudId: new RegExp("^$"),
+ // eslint-disable-line no-useless-escape
resourceOwner: JiraAlignInstanceAriResourceOwner,
resourceType: JiraAlignInstanceAriResourceType,
resourceIdSlug: "{instanceId}",
resourceIdSegmentFormats: {
@@ -380,9 +384,130 @@
instanceId: this.instanceId
};
}
};
+
+// src/jira-align/project/types.ts
+var JiraAlignProjectAriResourceOwner = "jira-align", JiraAlignProjectAriResourceType = "project";
+
+// src/jira-align/project/manifest.ts
+var jiraAlignProjectAriStaticOpts = {
+ qualifier: "ari",
+ platformQualifier: "cloud",
+ cloudId: new RegExp("^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$"),
+ // eslint-disable-line no-useless-escape
+ resourceOwner: JiraAlignProjectAriResourceOwner,
+ resourceType: JiraAlignProjectAriResourceType,
+ resourceIdSlug: "{projectType}/{projectId}",
+ resourceIdSegmentFormats: {
+ projectType: /(?:capability|epic|theme)/,
+ // eslint-disable-line no-useless-escape
+ projectId: /[0-9]+/
+ // eslint-disable-line no-useless-escape
+ }
+};
+
+// src/jira-align/project/index.ts
+var JiraAlignProjectAri = class _JiraAlignProjectAri extends RegisteredAri {
+ constructor(opts) {
+ super(opts);
+ this._instanceId = opts.cloudId || "", this._projectType = opts.resourceIdSegmentValues.projectType, this._projectId = opts.resourceIdSegmentValues.projectId;
+ }
+ get instanceId() {
+ return this._instanceId;
+ }
+ get projectType() {
+ return this._projectType;
+ }
+ get projectId() {
+ return this._projectId;
+ }
+ static create(opts) {
+ let derivedOpts = {
+ qualifier: jiraAlignProjectAriStaticOpts.qualifier,
+ platformQualifier: jiraAlignProjectAriStaticOpts.platformQualifier,
+ cloudId: opts.instanceId,
+ resourceOwner: jiraAlignProjectAriStaticOpts.resourceOwner,
+ resourceType: jiraAlignProjectAriStaticOpts.resourceType,
+ resourceId: `${opts.projectType}/${opts.projectId}`,
+ resourceIdSegmentValues: {
+ projectType: opts.projectType,
+ projectId: opts.projectId
+ }
+ }, ariOpts = AriParser.fromOpts(derivedOpts, jiraAlignProjectAriStaticOpts);
+ return new _JiraAlignProjectAri(ariOpts);
+ }
+ static parse(maybeAri) {
+ let opts = AriParser.fromString(maybeAri, jiraAlignProjectAriStaticOpts);
+ return new _JiraAlignProjectAri(opts);
+ }
+ getVariables() {
+ return {
+ instanceId: this.instanceId,
+ projectType: this.projectType,
+ projectId: this.projectId
+ };
+ }
+};
+
+// src/jira-align/workspace/types.ts
+var JiraAlignWorkspaceAriResourceOwner = "jira-align", JiraAlignWorkspaceAriResourceType = "workspace";
+
+// src/jira-align/workspace/manifest.ts
+var jiraAlignWorkspaceAriStaticOpts = {
+ qualifier: "ari",
+ platformQualifier: "cloud",
+ cloudId: new RegExp("^[a-zA-Z0-9_\\-.]{1,255}$"),
+ // eslint-disable-line no-useless-escape
+ resourceOwner: JiraAlignWorkspaceAriResourceOwner,
+ resourceType: JiraAlignWorkspaceAriResourceType,
+ resourceIdSlug: "{activationId}",
+ resourceIdSegmentFormats: {
+ activationId: /[a-zA-Z0-9\-]+/
+ // eslint-disable-line no-useless-escape
+ }
+};
+
+// src/jira-align/workspace/index.ts
+var JiraAlignWorkspaceAri = class _JiraAlignWorkspaceAri extends RegisteredAri {
+ constructor(opts) {
+ super(opts);
+ this._siteId = opts.cloudId || "", this._activationId = opts.resourceIdSegmentValues.activationId;
+ }
+ get siteId() {
+ return this._siteId;
+ }
+ get activationId() {
+ return this._activationId;
+ }
+ static create(opts) {
+ let derivedOpts = {
+ qualifier: jiraAlignWorkspaceAriStaticOpts.qualifier,
+ platformQualifier: jiraAlignWorkspaceAriStaticOpts.platformQualifier,
+ cloudId: opts.siteId,
+ resourceOwner: jiraAlignWorkspaceAriStaticOpts.resourceOwner,
+ resourceType: jiraAlignWorkspaceAriStaticOpts.resourceType,
+ resourceId: `${opts.activationId}`,
+ resourceIdSegmentValues: {
+ activationId: opts.activationId
+ }
+ }, ariOpts = AriParser.fromOpts(derivedOpts, jiraAlignWorkspaceAriStaticOpts);
+ return new _JiraAlignWorkspaceAri(ariOpts);
+ }
+ static parse(maybeAri) {
+ let opts = AriParser.fromString(maybeAri, jiraAlignWorkspaceAriStaticOpts);
+ return new _JiraAlignWorkspaceAri(opts);
+ }
+ getVariables() {
+ return {
+ siteId: this.siteId,
+ activationId: this.activationId
+ };
+ }
+};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
JiraAlignEpicAri,
- JiraAlignInstanceAri
+ JiraAlignInstanceAri,
+ JiraAlignProjectAri,
+ JiraAlignWorkspaceAri
});