@sfdxy/anypoint-connect 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -14
- package/dist/api/DesignCenterApi.d.ts +22 -5
- package/dist/api/DesignCenterApi.d.ts.map +1 -1
- package/dist/api/DesignCenterApi.js +80 -46
- package/dist/api/DesignCenterApi.js.map +1 -1
- package/dist/api/DesignCenterWorkflow.d.ts +65 -0
- package/dist/api/DesignCenterWorkflow.d.ts.map +1 -0
- package/dist/api/DesignCenterWorkflow.js +186 -0
- package/dist/api/DesignCenterWorkflow.js.map +1 -0
- package/dist/api/ExchangeApi.d.ts +6 -0
- package/dist/api/ExchangeApi.d.ts.map +1 -1
- package/dist/api/ExchangeApi.js +16 -0
- package/dist/api/ExchangeApi.js.map +1 -1
- package/dist/api/GovernanceApi.d.ts +26 -0
- package/dist/api/GovernanceApi.d.ts.map +1 -0
- package/dist/api/GovernanceApi.js +27 -0
- package/dist/api/GovernanceApi.js.map +1 -0
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/client/AnypointClient.d.ts +4 -0
- package/dist/client/AnypointClient.d.ts.map +1 -1
- package/dist/client/AnypointClient.js +6 -0
- package/dist/client/AnypointClient.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools/design-center.d.ts.map +1 -1
- package/dist/mcp/tools/design-center.js +182 -6
- package/dist/mcp/tools/design-center.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ Working across several organizations? Use named profiles —
|
|
|
62
62
|
| Monitoring | Request metrics, percentiles, time series, per-replica, JVM memory and GC, freeform AMQL |
|
|
63
63
|
| Exchange | Search, asset detail, spec download, JAR publication, environment comparison |
|
|
64
64
|
| API Manager | Instances, policies, SLA tiers, alerts |
|
|
65
|
-
| Design Center | Projects,
|
|
65
|
+
| Design Center | Projects, branches, safe file sync, governed publication |
|
|
66
66
|
| Platform | Environments, entitlements, audit log |
|
|
67
67
|
| Anypoint MQ | Queues, depth and throughput, dead-letter browsing, test publishing |
|
|
68
68
|
| Object Store v2 | Stores, keys, values |
|
|
@@ -72,7 +72,7 @@ Every command is documented in the
|
|
|
72
72
|
|
|
73
73
|
## MCP server
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
65 tools for AI agents. Set up credentials first — the server has nothing to offer an unauthenticated
|
|
76
76
|
session.
|
|
77
77
|
|
|
78
78
|
```bash
|
|
@@ -165,7 +165,7 @@ Published at **<https://avinava.github.io/anypoint-connect/>** with search.
|
|
|
165
165
|
| [Access readiness](docs/readiness.md) | The six access states and their fixes |
|
|
166
166
|
| [CLI reference](docs/cli-reference.md) | Every command group |
|
|
167
167
|
| [MCP server](docs/mcp.md) | Host setup, prompts, resources |
|
|
168
|
-
| [Tool catalog](docs/tools.md) | All
|
|
168
|
+
| [Tool catalog](docs/tools.md) | All 65 tools, and how to choose between overlapping ones |
|
|
169
169
|
| [Safety model](docs/safety.md) | Dry runs, narrow updates, bound deletion |
|
|
170
170
|
| [Deploying a JAR](docs/deployment-tools.md) | Build, publish, deploy, roll back |
|
|
171
171
|
| [Library API](docs/library.md) | Programmatic use |
|
|
@@ -174,17 +174,11 @@ Published at **<https://avinava.github.io/anypoint-connect/>** with search.
|
|
|
174
174
|
|
|
175
175
|
## Ecosystem
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
| [`mule-build`](https://github.com/Avinava/mule-build) | Validate, test, package, run locally, and release |
|
|
183
|
-
| [`mule-lint`](https://github.com/Avinava/mule-lint) | Static analysis of Mule XML, DataWeave, YAML, and project structure |
|
|
184
|
-
| [`mule-skills`](https://github.com/Avinava/mule-skills) | Agent workflows that drive all three |
|
|
185
|
-
|
|
186
|
-
A complete release crosses two tools: `mule-build` produces and versions the artifact, this one puts it in
|
|
187
|
-
an environment. Details on the [ecosystem page](docs/ecosystem.md).
|
|
177
|
+
The canonical package matrix and supported combination live in the
|
|
178
|
+
[`mule-skills` ecosystem hub](https://avinava.github.io/mule-skills/ecosystem/). This is the only tool
|
|
179
|
+
in the set that needs Anypoint credentials. A complete release crosses two boundaries: `mule-build`
|
|
180
|
+
produces and versions the artifact, while this package puts it in an environment. More detail is on
|
|
181
|
+
the local [ecosystem page](docs/ecosystem.md).
|
|
188
182
|
|
|
189
183
|
## Development
|
|
190
184
|
|
|
@@ -31,6 +31,10 @@ export interface DesignCenterBranch {
|
|
|
31
31
|
commitId?: string;
|
|
32
32
|
isDefault?: boolean;
|
|
33
33
|
}
|
|
34
|
+
export interface DesignCenterSaveFile {
|
|
35
|
+
path: string;
|
|
36
|
+
content: string;
|
|
37
|
+
}
|
|
34
38
|
export interface PublishToExchangeOptions {
|
|
35
39
|
name: string;
|
|
36
40
|
apiVersion: string;
|
|
@@ -56,24 +60,25 @@ export declare class DesignCenterApi {
|
|
|
56
60
|
/**
|
|
57
61
|
* List all Design Center projects in the organization.
|
|
58
62
|
*/
|
|
59
|
-
getProjects(orgId: string): Promise<DesignCenterProject[]>;
|
|
63
|
+
getProjects(orgId: string, refresh?: boolean): Promise<DesignCenterProject[]>;
|
|
60
64
|
/**
|
|
61
65
|
* Get project details by ID.
|
|
62
66
|
*/
|
|
63
67
|
getProject(orgId: string, projectId: string): Promise<DesignCenterProject>;
|
|
64
|
-
/**
|
|
65
|
-
* Find a project by name (case-insensitive partial match).
|
|
66
|
-
*/
|
|
68
|
+
/** Find a project by exact name. Partial project matching is intentionally unsafe. */
|
|
67
69
|
findByName(orgId: string, name: string): Promise<DesignCenterProject | null>;
|
|
68
70
|
/**
|
|
69
71
|
* Find a project by name, throwing if not found.
|
|
70
72
|
* Preferred over findByName when the project must exist.
|
|
71
73
|
*/
|
|
72
74
|
findByNameOrThrow(orgId: string, name: string): Promise<DesignCenterProject>;
|
|
75
|
+
/** Create a new API design project after an exact collision check. */
|
|
76
|
+
createProject(orgId: string, name: string, classifier: 'raml' | 'oas'): Promise<DesignCenterProject>;
|
|
73
77
|
/**
|
|
74
78
|
* List branches for a project.
|
|
75
79
|
*/
|
|
76
80
|
getBranches(orgId: string, projectId: string): Promise<DesignCenterBranch[]>;
|
|
81
|
+
createBranch(orgId: string, projectId: string, name: string, commitId?: string): Promise<DesignCenterBranch>;
|
|
77
82
|
/**
|
|
78
83
|
* List all files in a project branch.
|
|
79
84
|
*/
|
|
@@ -97,10 +102,15 @@ export declare class DesignCenterApi {
|
|
|
97
102
|
* Release the write lock on a project branch.
|
|
98
103
|
*/
|
|
99
104
|
releaseLock(orgId: string, projectId: string, branch?: string): Promise<void>;
|
|
105
|
+
/** Refresh a branch lock before the service's approximately one-minute expiry. */
|
|
106
|
+
maintainLock(orgId: string, projectId: string, branch?: string): Promise<void>;
|
|
100
107
|
/**
|
|
101
108
|
* Save a file to a project branch. Requires the lock to be held.
|
|
102
109
|
*/
|
|
103
110
|
saveFile(orgId: string, projectId: string, filePath: string, content: string, branch?: string, commitMessage?: string): Promise<void>;
|
|
111
|
+
/** Save multiple files in the API's single batch operation. Requires a held lock. */
|
|
112
|
+
saveFiles(orgId: string, projectId: string, files: DesignCenterSaveFile[], branch?: string, commitMessage?: string): Promise<void>;
|
|
113
|
+
withLock<T>(orgId: string, projectId: string, branch: string, operation: () => Promise<T>): Promise<T>;
|
|
104
114
|
/**
|
|
105
115
|
* Atomically update a file: acquires lock → saves → releases lock.
|
|
106
116
|
* Uses try/finally to always release the lock, even on failure.
|
|
@@ -112,7 +122,8 @@ export declare class DesignCenterApi {
|
|
|
112
122
|
*/
|
|
113
123
|
getExchangeJson(orgId: string, projectId: string, branch?: string): Promise<Record<string, unknown> | null>;
|
|
114
124
|
/**
|
|
115
|
-
*
|
|
125
|
+
* Legacy direct publication path retained for compatibility.
|
|
126
|
+
* New callers should use the preview-bound DesignCenterWorkflow.
|
|
116
127
|
*
|
|
117
128
|
* The DC XP API expects all publish parameters in the JSON body, NOT in the URL path.
|
|
118
129
|
* Endpoint: POST /designcenter/api-designer/projects/{projectId}/branches/{branch}/publish/exchange
|
|
@@ -125,5 +136,11 @@ export declare class DesignCenterApi {
|
|
|
125
136
|
assetId: string;
|
|
126
137
|
version: string;
|
|
127
138
|
}>;
|
|
139
|
+
/** Publish while the caller holds the branch lock. */
|
|
140
|
+
publishToExchangeLocked(orgId: string, projectId: string, options: PublishToExchangeOptions, branch?: string): Promise<{
|
|
141
|
+
groupId: string;
|
|
142
|
+
assetId: string;
|
|
143
|
+
version: string;
|
|
144
|
+
}>;
|
|
128
145
|
}
|
|
129
146
|
//# sourceMappingURL=DesignCenterApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesignCenterApi.d.ts","sourceRoot":"","sources":["../../src/api/DesignCenterApi.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKhD,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,eAAe;IAEpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK;IAGjC;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IASnC;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DesignCenterApi.d.ts","sourceRoot":"","sources":["../../src/api/DesignCenterApi.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKhD,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,eAAe;IAEpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK;IAGjC;;;OAGG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IASnC;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAWjF;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOhF,sFAAsF;IAChF,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAWlF;;;OAGG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAUlF,sEAAsE;IAChE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiB1G;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAO5E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWlH;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOhG;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB5G;;;OAGG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAqC9G;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAerF;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAerF,kFAAkF;IAC5E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAStF;;OAEG;IACG,QAAQ,CACV,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,SAAW,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAIhB,qFAAqF;IAC/E,SAAS,CACX,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,oBAAoB,EAAE,EAC7B,MAAM,SAAW,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAeV,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgB5G;;;OAGG;IACG,UAAU,CACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,SAAW,EACjB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;OAGG;IACG,eAAe,CACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,MAAM,SAAW,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAS1C;;;;;;;;;OASG;IACG,iBAAiB,CACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,wBAAwB,EACjC,MAAM,SAAW,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjE,sDAAsD;IAChD,uBAAuB,CACzB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,wBAAwB,EACjC,MAAM,SAAW,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CA8BpE"}
|
|
@@ -40,9 +40,11 @@ export class DesignCenterApi {
|
|
|
40
40
|
/**
|
|
41
41
|
* List all Design Center projects in the organization.
|
|
42
42
|
*/
|
|
43
|
-
async getProjects(orgId) {
|
|
43
|
+
async getProjects(orgId, refresh = false) {
|
|
44
44
|
const ownerId = await this.getOwnerId();
|
|
45
45
|
const cacheKey = `dc:projects:${orgId}`;
|
|
46
|
+
if (refresh)
|
|
47
|
+
this.cache.delete(cacheKey);
|
|
46
48
|
return this.cache.getOrCompute(cacheKey, async () => {
|
|
47
49
|
return this.http.get(`${BASE}/projects`, {
|
|
48
50
|
headers: this.dcHeaders(orgId, ownerId),
|
|
@@ -58,25 +60,42 @@ export class DesignCenterApi {
|
|
|
58
60
|
headers: this.dcHeaders(orgId, ownerId),
|
|
59
61
|
});
|
|
60
62
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Find a project by name (case-insensitive partial match).
|
|
63
|
-
*/
|
|
63
|
+
/** Find a project by exact name. Partial project matching is intentionally unsafe. */
|
|
64
64
|
async findByName(orgId, name) {
|
|
65
65
|
const projects = await this.getProjects(orgId);
|
|
66
|
-
const
|
|
67
|
-
|
|
66
|
+
const exact = projects.find((project) => project.name === name);
|
|
67
|
+
if (exact)
|
|
68
|
+
return exact;
|
|
69
|
+
const insensitive = projects.filter((project) => project.name.toLowerCase() === name.toLowerCase());
|
|
70
|
+
if (insensitive.length > 1) {
|
|
71
|
+
throw new Error(`Multiple projects have the same case-insensitive name "${name}"; use the project ID.`);
|
|
72
|
+
}
|
|
73
|
+
return insensitive[0] || null;
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
70
76
|
* Find a project by name, throwing if not found.
|
|
71
77
|
* Preferred over findByName when the project must exist.
|
|
72
78
|
*/
|
|
73
79
|
async findByNameOrThrow(orgId, name) {
|
|
74
|
-
const
|
|
80
|
+
const projects = await this.getProjects(orgId);
|
|
81
|
+
const byId = projects.find((candidate) => candidate.id === name);
|
|
82
|
+
const project = byId || (await this.findByName(orgId, name));
|
|
75
83
|
if (!project) {
|
|
76
84
|
throw new Error(`Project "${name}" not found. Use list_design_center_projects to see available projects.`);
|
|
77
85
|
}
|
|
78
86
|
return project;
|
|
79
87
|
}
|
|
88
|
+
/** Create a new API design project after an exact collision check. */
|
|
89
|
+
async createProject(orgId, name, classifier) {
|
|
90
|
+
const projects = await this.getProjects(orgId, true);
|
|
91
|
+
if (projects.some((project) => project.name.toLowerCase() === name.toLowerCase())) {
|
|
92
|
+
throw new Error(`A Design Center project named "${name}" already exists.`);
|
|
93
|
+
}
|
|
94
|
+
const ownerId = await this.getOwnerId();
|
|
95
|
+
const project = await this.http.post(`${BASE}/projects`, { name, classifier }, { headers: this.dcHeaders(orgId, ownerId, { Accept: 'application/json' }) });
|
|
96
|
+
this.cache.delete(`dc:projects:${orgId}`);
|
|
97
|
+
return project;
|
|
98
|
+
}
|
|
80
99
|
// ── Branches ───────────────────────────────────
|
|
81
100
|
/**
|
|
82
101
|
* List branches for a project.
|
|
@@ -87,6 +106,10 @@ export class DesignCenterApi {
|
|
|
87
106
|
headers: this.dcHeaders(orgId, ownerId),
|
|
88
107
|
});
|
|
89
108
|
}
|
|
109
|
+
async createBranch(orgId, projectId, name, commitId) {
|
|
110
|
+
const ownerId = await this.getOwnerId();
|
|
111
|
+
return this.http.post(`${BASE}/projects/${projectId}/branches`, { name, ...(commitId ? { commitId } : {}) }, { headers: this.dcHeaders(orgId, ownerId, { Accept: 'application/json' }) });
|
|
112
|
+
}
|
|
90
113
|
// ── Files ──────────────────────────────────────
|
|
91
114
|
/**
|
|
92
115
|
* List all files in a project branch.
|
|
@@ -182,24 +205,44 @@ export class DesignCenterApi {
|
|
|
182
205
|
throw new Error(`Failed to release lock: ${errorMessage(e)}`);
|
|
183
206
|
}
|
|
184
207
|
}
|
|
208
|
+
/** Refresh a branch lock before the service's approximately one-minute expiry. */
|
|
209
|
+
async maintainLock(orgId, projectId, branch = 'master') {
|
|
210
|
+
const ownerId = await this.getOwnerId();
|
|
211
|
+
await this.http.post(`${BASE}/projects/${projectId}/branches/${branch}/status`, {}, { headers: this.dcHeaders(orgId, ownerId) });
|
|
212
|
+
}
|
|
185
213
|
/**
|
|
186
214
|
* Save a file to a project branch. Requires the lock to be held.
|
|
187
215
|
*/
|
|
188
216
|
async saveFile(orgId, projectId, filePath, content, branch = 'master', commitMessage) {
|
|
217
|
+
await this.saveFiles(orgId, projectId, [{ path: filePath, content }], branch, commitMessage);
|
|
218
|
+
}
|
|
219
|
+
/** Save multiple files in the API's single batch operation. Requires a held lock. */
|
|
220
|
+
async saveFiles(orgId, projectId, files, branch = 'master', commitMessage) {
|
|
189
221
|
const ownerId = await this.getOwnerId();
|
|
190
222
|
try {
|
|
191
|
-
await this.http.post(`${BASE}/projects/${projectId}/branches/${branch}/save`,
|
|
192
|
-
{
|
|
193
|
-
path: filePath,
|
|
194
|
-
content,
|
|
195
|
-
type: 'file',
|
|
196
|
-
},
|
|
197
|
-
], {
|
|
223
|
+
await this.http.post(`${BASE}/projects/${projectId}/branches/${branch}/save`, files.map((file) => ({ path: file.path, content: file.content, type: 'FILE' })), {
|
|
198
224
|
headers: this.dcHeaders(orgId, ownerId, commitMessage ? { 'x-commit-message': commitMessage } : {}),
|
|
199
225
|
});
|
|
200
226
|
}
|
|
201
227
|
catch (e) {
|
|
202
|
-
throw new Error(`Failed to save
|
|
228
|
+
throw new Error(`Failed to save files: ${errorMessage(e)}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async withLock(orgId, projectId, branch, operation) {
|
|
232
|
+
await this.acquireLock(orgId, projectId, branch);
|
|
233
|
+
try {
|
|
234
|
+
const result = await operation();
|
|
235
|
+
await this.releaseLock(orgId, projectId, branch);
|
|
236
|
+
return result;
|
|
237
|
+
}
|
|
238
|
+
catch (operationError) {
|
|
239
|
+
try {
|
|
240
|
+
await this.releaseLock(orgId, projectId, branch);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// Preserve the operation failure; the branch lock expires server-side.
|
|
244
|
+
}
|
|
245
|
+
throw operationError;
|
|
203
246
|
}
|
|
204
247
|
}
|
|
205
248
|
/**
|
|
@@ -209,13 +252,7 @@ export class DesignCenterApi {
|
|
|
209
252
|
async updateFile(orgId, projectId, filePath, content, branch = 'master', commitMessage) {
|
|
210
253
|
// Clear project cache since we're modifying
|
|
211
254
|
this.cache.delete(`dc:projects:${orgId}`);
|
|
212
|
-
await this.
|
|
213
|
-
try {
|
|
214
|
-
await this.saveFile(orgId, projectId, filePath, content, branch, commitMessage);
|
|
215
|
-
}
|
|
216
|
-
finally {
|
|
217
|
-
await this.releaseLock(orgId, projectId, branch);
|
|
218
|
-
}
|
|
255
|
+
await this.withLock(orgId, projectId, branch, () => this.saveFile(orgId, projectId, filePath, content, branch, commitMessage));
|
|
219
256
|
}
|
|
220
257
|
// ── Publish ────────────────────────────────────
|
|
221
258
|
/**
|
|
@@ -232,7 +269,8 @@ export class DesignCenterApi {
|
|
|
232
269
|
}
|
|
233
270
|
}
|
|
234
271
|
/**
|
|
235
|
-
*
|
|
272
|
+
* Legacy direct publication path retained for compatibility.
|
|
273
|
+
* New callers should use the preview-bound DesignCenterWorkflow.
|
|
236
274
|
*
|
|
237
275
|
* The DC XP API expects all publish parameters in the JSON body, NOT in the URL path.
|
|
238
276
|
* Endpoint: POST /designcenter/api-designer/projects/{projectId}/branches/{branch}/publish/exchange
|
|
@@ -241,35 +279,31 @@ export class DesignCenterApi {
|
|
|
241
279
|
* If assetId or main file aren't specified, we auto-detect them from exchange.json.
|
|
242
280
|
*/
|
|
243
281
|
async publishToExchange(orgId, projectId, options, branch = 'master') {
|
|
282
|
+
return this.withLock(orgId, projectId, branch, () => this.publishToExchangeLocked(orgId, projectId, options, branch));
|
|
283
|
+
}
|
|
284
|
+
/** Publish while the caller holds the branch lock. */
|
|
285
|
+
async publishToExchangeLocked(orgId, projectId, options, branch = 'master') {
|
|
244
286
|
const ownerId = await this.getOwnerId();
|
|
245
287
|
// Read exchange.json for defaults (assetId, main file, etc.)
|
|
246
288
|
const exchangeMeta = await this.getExchangeJson(orgId, projectId, branch);
|
|
247
289
|
const groupId = options.groupId || exchangeMeta?.groupId || orgId;
|
|
248
290
|
const assetId = options.assetId || exchangeMeta?.assetId || options.name;
|
|
249
291
|
const mainFile = options.main || exchangeMeta?.main;
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
.catch((e) => {
|
|
266
|
-
throw new Error(`Failed to publish: ${errorMessage(e)}`);
|
|
267
|
-
});
|
|
268
|
-
return response;
|
|
269
|
-
}
|
|
270
|
-
finally {
|
|
271
|
-
await this.releaseLock(orgId, projectId, branch);
|
|
272
|
-
}
|
|
292
|
+
return this.http
|
|
293
|
+
.post(`${BASE}/projects/${projectId}/branches/${branch}/publish/exchange`, {
|
|
294
|
+
name: options.name,
|
|
295
|
+
apiVersion: options.apiVersion,
|
|
296
|
+
version: options.version,
|
|
297
|
+
classifier: options.classifier,
|
|
298
|
+
main: mainFile,
|
|
299
|
+
assetId,
|
|
300
|
+
groupId,
|
|
301
|
+
}, {
|
|
302
|
+
headers: this.dcHeaders(orgId, ownerId),
|
|
303
|
+
})
|
|
304
|
+
.catch((e) => {
|
|
305
|
+
throw new Error(`Failed to publish: ${errorMessage(e)}`);
|
|
306
|
+
});
|
|
273
307
|
}
|
|
274
308
|
}
|
|
275
309
|
//# sourceMappingURL=DesignCenterApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DesignCenterApi.js","sourceRoot":"","sources":["../../src/api/DesignCenterApi.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DesignCenterApi.js","sourceRoot":"","sources":["../../src/api/DesignCenterApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { DesignCenterApi, PublishToExchangeOptions } from './DesignCenterApi.js';
|
|
2
|
+
import type { ExchangeApi } from './ExchangeApi.js';
|
|
3
|
+
export interface DesignCenterFileInput {
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SyncPlanEntry {
|
|
8
|
+
path: string;
|
|
9
|
+
action: 'create' | 'update' | 'unchanged';
|
|
10
|
+
localHash: string;
|
|
11
|
+
remoteHash: string | null;
|
|
12
|
+
}
|
|
13
|
+
export declare class DesignCenterWorkflow {
|
|
14
|
+
private readonly designCenter;
|
|
15
|
+
private readonly exchange;
|
|
16
|
+
private readonly previews;
|
|
17
|
+
constructor(designCenter: DesignCenterApi, exchange: ExchangeApi);
|
|
18
|
+
private issue;
|
|
19
|
+
private consume;
|
|
20
|
+
previewProjectCreate(orgId: string, name: string, classifier: 'raml' | 'oas'): Promise<{
|
|
21
|
+
previewToken: string;
|
|
22
|
+
expiresAt: string;
|
|
23
|
+
action: "create";
|
|
24
|
+
name: string;
|
|
25
|
+
classifier: "raml" | "oas";
|
|
26
|
+
}>;
|
|
27
|
+
createProject(previewToken: string): Promise<import("./DesignCenterApi.js").DesignCenterProject>;
|
|
28
|
+
previewSync(orgId: string, projectNameOrId: string, files: DesignCenterFileInput[], branch?: string, commitMessage?: string): Promise<{
|
|
29
|
+
previewToken: string;
|
|
30
|
+
expiresAt: string;
|
|
31
|
+
project: string;
|
|
32
|
+
branch: string;
|
|
33
|
+
entries: SyncPlanEntry[];
|
|
34
|
+
}>;
|
|
35
|
+
sync(previewToken: string): Promise<{
|
|
36
|
+
project: string;
|
|
37
|
+
branch: string;
|
|
38
|
+
changed: number;
|
|
39
|
+
entries: SyncPlanEntry[];
|
|
40
|
+
}>;
|
|
41
|
+
previewPublication(orgId: string, projectNameOrId: string, options: PublishToExchangeOptions, branch?: string): Promise<{
|
|
42
|
+
previewToken: string;
|
|
43
|
+
expiresAt: string;
|
|
44
|
+
project: string;
|
|
45
|
+
branch: string;
|
|
46
|
+
coordinates: {
|
|
47
|
+
groupId: string | undefined;
|
|
48
|
+
assetId: string | undefined;
|
|
49
|
+
version: string;
|
|
50
|
+
};
|
|
51
|
+
apiVersion: string;
|
|
52
|
+
classifier: string;
|
|
53
|
+
mainFile: string;
|
|
54
|
+
sourceHash: string;
|
|
55
|
+
}>;
|
|
56
|
+
publish(previewToken: string): Promise<{
|
|
57
|
+
sourceHash: string;
|
|
58
|
+
exchangeArtifactHash: string;
|
|
59
|
+
verified: boolean;
|
|
60
|
+
groupId: string;
|
|
61
|
+
assetId: string;
|
|
62
|
+
version: string;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=DesignCenterWorkflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DesignCenterWorkflow.d.ts","sourceRoot":"","sources":["../../src/api/DesignCenterWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAYpD,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AA8CD,qBAAa,oBAAoB;IAIzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;gBAGjD,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW;IAG1C,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,OAAO;IAQT,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,KAAK;sBAfjB,MAAM;mBAAa,MAAM;;;;;IA4BpF,aAAa,CAAC,YAAY,EAAE,MAAM;IAKlC,WAAW,CACb,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,qBAAqB,EAAE,EAC9B,MAAM,SAAW,EACjB,aAAa,CAAC,EAAE,MAAM;sBAtCuC,MAAM;mBAAa,MAAM;;;;;IA+EpF,IAAI,CAAC,YAAY,EAAE,MAAM;;;;;;IA4DzB,kBAAkB,CACpB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,wBAAwB,EACjC,MAAM,SAAW;sBA/I4C,MAAM;mBAAa,MAAM;;;;;;;;;;;;;IAoLpF,OAAO,CAAC,YAAY,EAAE,MAAM;;;;;;;;CAuBrC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
2
|
+
const PREVIEW_TTL_MS = 10 * 60 * 1000;
|
|
3
|
+
function hash(content, algorithm = 'sha256') {
|
|
4
|
+
return createHash(algorithm).update(content).digest('hex');
|
|
5
|
+
}
|
|
6
|
+
function safePath(requested) {
|
|
7
|
+
if (!requested || requested.includes('\\') || requested.startsWith('/')) {
|
|
8
|
+
throw new Error(`Unsafe Design Center path: ${requested}`);
|
|
9
|
+
}
|
|
10
|
+
const segments = requested.split('/');
|
|
11
|
+
if (segments.some((segment) => segment === '' || segment === '.' || segment === '..')) {
|
|
12
|
+
throw new Error(`Unsafe Design Center path: ${requested}`);
|
|
13
|
+
}
|
|
14
|
+
if (segments[0]?.toLowerCase() === 'exchange_modules') {
|
|
15
|
+
throw new Error('Managed exchange_modules content cannot be synchronized.');
|
|
16
|
+
}
|
|
17
|
+
return segments.join('/');
|
|
18
|
+
}
|
|
19
|
+
export class DesignCenterWorkflow {
|
|
20
|
+
designCenter;
|
|
21
|
+
exchange;
|
|
22
|
+
previews = new Map();
|
|
23
|
+
constructor(designCenter, exchange) {
|
|
24
|
+
this.designCenter = designCenter;
|
|
25
|
+
this.exchange = exchange;
|
|
26
|
+
}
|
|
27
|
+
issue(kind, payload) {
|
|
28
|
+
const previewToken = randomBytes(24).toString('base64url');
|
|
29
|
+
const expiresAt = Date.now() + PREVIEW_TTL_MS;
|
|
30
|
+
this.previews.set(previewToken, { kind, payload, expiresAt });
|
|
31
|
+
return { previewToken, expiresAt: new Date(expiresAt).toISOString() };
|
|
32
|
+
}
|
|
33
|
+
consume(kind, token) {
|
|
34
|
+
const preview = this.previews.get(token);
|
|
35
|
+
this.previews.delete(token);
|
|
36
|
+
if (!preview || preview.kind !== kind)
|
|
37
|
+
throw new Error('Preview token is invalid or already used.');
|
|
38
|
+
if (preview.expiresAt <= Date.now())
|
|
39
|
+
throw new Error('Preview token expired; generate a new preview.');
|
|
40
|
+
return preview.payload;
|
|
41
|
+
}
|
|
42
|
+
async previewProjectCreate(orgId, name, classifier) {
|
|
43
|
+
const projects = await this.designCenter.getProjects(orgId, true);
|
|
44
|
+
if (projects.some((project) => project.name.toLowerCase() === name.toLowerCase())) {
|
|
45
|
+
throw new Error(`A Design Center project named "${name}" already exists.`);
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
action: 'create',
|
|
49
|
+
name,
|
|
50
|
+
classifier,
|
|
51
|
+
...this.issue('create-project', { orgId, name, classifier }),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async createProject(previewToken) {
|
|
55
|
+
const payload = this.consume('create-project', previewToken);
|
|
56
|
+
return this.designCenter.createProject(payload.orgId, payload.name, payload.classifier);
|
|
57
|
+
}
|
|
58
|
+
async previewSync(orgId, projectNameOrId, files, branch = 'master', commitMessage) {
|
|
59
|
+
const project = await this.designCenter.findByNameOrThrow(orgId, projectNameOrId);
|
|
60
|
+
const normalized = files.map((file) => ({ path: safePath(file.path), content: file.content }));
|
|
61
|
+
if (new Set(normalized.map((file) => file.path)).size !== normalized.length) {
|
|
62
|
+
throw new Error('The sync input contains duplicate paths.');
|
|
63
|
+
}
|
|
64
|
+
const remoteFiles = await this.designCenter.getFiles(orgId, project.id, branch);
|
|
65
|
+
const remotePaths = new Set(remoteFiles
|
|
66
|
+
.filter((file) => file.type.toLowerCase() === 'file')
|
|
67
|
+
.map((file) => file.path.replace(/^\//, '')));
|
|
68
|
+
const entries = [];
|
|
69
|
+
for (const file of normalized) {
|
|
70
|
+
const localHash = hash(file.content);
|
|
71
|
+
if (!remotePaths.has(file.path)) {
|
|
72
|
+
entries.push({ path: file.path, action: 'create', localHash, remoteHash: null });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const remoteContent = await this.designCenter.getFileContent(orgId, project.id, file.path, branch);
|
|
76
|
+
const remoteHash = hash(remoteContent);
|
|
77
|
+
entries.push({
|
|
78
|
+
path: file.path,
|
|
79
|
+
action: remoteHash === localHash ? 'unchanged' : 'update',
|
|
80
|
+
localHash,
|
|
81
|
+
remoteHash,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const payload = {
|
|
85
|
+
orgId,
|
|
86
|
+
projectId: project.id,
|
|
87
|
+
projectName: project.name,
|
|
88
|
+
branch,
|
|
89
|
+
files: normalized,
|
|
90
|
+
entries,
|
|
91
|
+
...(commitMessage ? { commitMessage } : {}),
|
|
92
|
+
};
|
|
93
|
+
return { project: project.name, branch, entries, ...this.issue('sync-files', payload) };
|
|
94
|
+
}
|
|
95
|
+
async sync(previewToken) {
|
|
96
|
+
const payload = this.consume('sync-files', previewToken);
|
|
97
|
+
return this.designCenter.withLock(payload.orgId, payload.projectId, payload.branch, async () => {
|
|
98
|
+
const currentFiles = await this.designCenter.getFiles(payload.orgId, payload.projectId, payload.branch);
|
|
99
|
+
const currentPaths = new Set(currentFiles
|
|
100
|
+
.filter((file) => file.type.toLowerCase() === 'file')
|
|
101
|
+
.map((file) => file.path.replace(/^\//, '')));
|
|
102
|
+
const conflicts = [];
|
|
103
|
+
for (const entry of payload.entries) {
|
|
104
|
+
const exists = currentPaths.has(entry.path);
|
|
105
|
+
if (!exists && entry.remoteHash !== null) {
|
|
106
|
+
conflicts.push(entry.path);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (exists) {
|
|
110
|
+
const content = await this.designCenter.getFileContent(payload.orgId, payload.projectId, entry.path, payload.branch);
|
|
111
|
+
if (hash(content) !== entry.remoteHash)
|
|
112
|
+
conflicts.push(entry.path);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (conflicts.length > 0) {
|
|
116
|
+
throw new Error(`Design Center changed after preview; sync aborted for: ${conflicts.join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
const changed = payload.entries.filter((entry) => entry.action !== 'unchanged');
|
|
119
|
+
if (changed.length > 0) {
|
|
120
|
+
await this.designCenter.maintainLock(payload.orgId, payload.projectId, payload.branch);
|
|
121
|
+
const byPath = new Map(payload.files.map((file) => [file.path, file]));
|
|
122
|
+
await this.designCenter.saveFiles(payload.orgId, payload.projectId, changed.map((entry) => byPath.get(entry.path)), payload.branch, payload.commitMessage);
|
|
123
|
+
for (const entry of changed) {
|
|
124
|
+
const saved = await this.designCenter.getFileContent(payload.orgId, payload.projectId, entry.path, payload.branch);
|
|
125
|
+
if (hash(saved) !== entry.localHash)
|
|
126
|
+
throw new Error(`Post-save verification failed for ${entry.path}.`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
project: payload.projectName,
|
|
131
|
+
branch: payload.branch,
|
|
132
|
+
changed: changed.length,
|
|
133
|
+
entries: payload.entries,
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async previewPublication(orgId, projectNameOrId, options, branch = 'master') {
|
|
138
|
+
const project = await this.designCenter.findByNameOrThrow(orgId, projectNameOrId);
|
|
139
|
+
const exchangeMeta = await this.designCenter.getExchangeJson(orgId, project.id, branch);
|
|
140
|
+
const mainFile = safePath(options.main || exchangeMeta?.main || '');
|
|
141
|
+
const source = await this.designCenter.getFileContent(orgId, project.id, mainFile, branch);
|
|
142
|
+
const resolvedOptions = {
|
|
143
|
+
...options,
|
|
144
|
+
main: mainFile,
|
|
145
|
+
groupId: options.groupId || exchangeMeta?.groupId || orgId,
|
|
146
|
+
assetId: options.assetId || exchangeMeta?.assetId || options.name,
|
|
147
|
+
};
|
|
148
|
+
const payload = {
|
|
149
|
+
orgId,
|
|
150
|
+
projectId: project.id,
|
|
151
|
+
projectName: project.name,
|
|
152
|
+
branch,
|
|
153
|
+
options: resolvedOptions,
|
|
154
|
+
mainFile,
|
|
155
|
+
sourceHash: hash(source),
|
|
156
|
+
};
|
|
157
|
+
return {
|
|
158
|
+
project: project.name,
|
|
159
|
+
branch,
|
|
160
|
+
coordinates: {
|
|
161
|
+
groupId: resolvedOptions.groupId,
|
|
162
|
+
assetId: resolvedOptions.assetId,
|
|
163
|
+
version: resolvedOptions.version,
|
|
164
|
+
},
|
|
165
|
+
apiVersion: resolvedOptions.apiVersion,
|
|
166
|
+
classifier: resolvedOptions.classifier,
|
|
167
|
+
mainFile,
|
|
168
|
+
sourceHash: payload.sourceHash,
|
|
169
|
+
...this.issue('publish-exchange', payload),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
async publish(previewToken) {
|
|
173
|
+
const payload = this.consume('publish-exchange', previewToken);
|
|
174
|
+
const result = await this.designCenter.withLock(payload.orgId, payload.projectId, payload.branch, async () => {
|
|
175
|
+
const current = await this.designCenter.getFileContent(payload.orgId, payload.projectId, payload.mainFile, payload.branch);
|
|
176
|
+
if (hash(current) !== payload.sourceHash)
|
|
177
|
+
throw new Error('The main contract changed after publication preview.');
|
|
178
|
+
return this.designCenter.publishToExchangeLocked(payload.orgId, payload.projectId, payload.options, payload.branch);
|
|
179
|
+
});
|
|
180
|
+
const downloaded = await this.exchange.downloadSpecArtifact(result.groupId, result.assetId, result.version);
|
|
181
|
+
if (!downloaded.metadataHashMatches)
|
|
182
|
+
throw new Error('Exchange artifact hash verification failed after publication.');
|
|
183
|
+
return { ...result, sourceHash: payload.sourceHash, exchangeArtifactHash: downloaded.sha256, verified: true };
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=DesignCenterWorkflow.js.map
|