@sap-ux/adp-tooling 0.15.37 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/cf/app/discovery.d.ts +19 -0
  2. package/dist/cf/app/discovery.js +42 -0
  3. package/dist/cf/app/html5-repo.d.ts +36 -0
  4. package/dist/cf/app/html5-repo.js +137 -0
  5. package/dist/cf/app/index.d.ts +3 -0
  6. package/dist/cf/app/index.js +19 -0
  7. package/dist/cf/core/auth.d.ts +18 -0
  8. package/dist/cf/core/auth.js +38 -0
  9. package/dist/cf/core/config.d.ts +10 -0
  10. package/dist/cf/core/config.js +68 -0
  11. package/dist/cf/core/index.d.ts +3 -0
  12. package/dist/cf/core/index.js +19 -0
  13. package/dist/cf/index.d.ts +6 -0
  14. package/dist/cf/index.js +22 -0
  15. package/dist/cf/project/index.d.ts +4 -0
  16. package/dist/cf/project/index.js +20 -0
  17. package/dist/cf/project/mta.d.ts +57 -0
  18. package/dist/cf/project/mta.js +175 -0
  19. package/dist/cf/project/yaml-loader.d.ts +24 -0
  20. package/dist/cf/project/yaml-loader.js +54 -0
  21. package/dist/cf/project/yaml.d.ts +51 -0
  22. package/dist/cf/project/yaml.js +436 -0
  23. package/dist/cf/services/api.d.ts +65 -0
  24. package/dist/cf/services/api.js +291 -0
  25. package/dist/cf/services/cli.d.ts +31 -0
  26. package/dist/cf/services/cli.js +93 -0
  27. package/dist/cf/services/index.d.ts +3 -0
  28. package/dist/cf/services/index.js +19 -0
  29. package/dist/cf/utils/index.d.ts +2 -0
  30. package/dist/cf/utils/index.js +18 -0
  31. package/dist/cf/utils/validation.d.ts +37 -0
  32. package/dist/cf/utils/validation.js +134 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.js +2 -0
  35. package/dist/source/manifest.d.ts +7 -0
  36. package/dist/source/manifest.js +10 -0
  37. package/dist/translations/adp-tooling.i18n.json +33 -0
  38. package/dist/types.d.ts +410 -1
  39. package/dist/types.js +15 -1
  40. package/dist/writer/cf.d.ts +14 -0
  41. package/dist/writer/cf.js +65 -0
  42. package/dist/writer/changes/writers/component-usages-writer.js +1 -1
  43. package/dist/writer/project-utils.d.ts +24 -1
  44. package/dist/writer/project-utils.js +104 -0
  45. package/dist/writer/writer-config.d.ts +8 -1
  46. package/dist/writer/writer-config.js +47 -0
  47. package/package.json +13 -8
  48. package/templates/cf/_gitignore +6 -0
  49. package/templates/cf/approuter/package.json +13 -0
  50. package/templates/cf/approuter/xs-app.json +15 -0
  51. package/templates/cf/i18n/i18n.properties +3 -0
  52. package/templates/cf/package.json +30 -0
  53. package/templates/cf/ui5.yaml +19 -0
  54. package/templates/cf/xs-security.json +7 -0
@@ -0,0 +1,436 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.isMtaProject = isMtaProject;
40
+ exports.getSAPCloudService = getSAPCloudService;
41
+ exports.getRouterType = getRouterType;
42
+ exports.getAppParamsFromUI5Yaml = getAppParamsFromUI5Yaml;
43
+ exports.adjustMtaYaml = adjustMtaYaml;
44
+ const node_fs_1 = __importDefault(require("node:fs"));
45
+ const path = __importStar(require("node:path"));
46
+ const js_yaml_1 = __importDefault(require("js-yaml"));
47
+ const types_1 = require("../../types");
48
+ const api_1 = require("../services/api");
49
+ const yaml_loader_1 = require("./yaml-loader");
50
+ const CF_MANAGED_SERVICE = 'org.cloudfoundry.managed-service';
51
+ const HTML5_APPS_REPO = 'html5-apps-repo';
52
+ const SAP_APPLICATION_CONTENT = 'com.sap.application.content';
53
+ /**
54
+ * Checks if the selected path is a MTA project.
55
+ *
56
+ * @param {string} selectedPath - The selected path.
57
+ * @returns {boolean} True if the selected path is a MTA project, false otherwise.
58
+ */
59
+ function isMtaProject(selectedPath) {
60
+ return node_fs_1.default.existsSync(path.join(selectedPath, 'mta.yaml'));
61
+ }
62
+ /**
63
+ * Gets the SAP Cloud Service.
64
+ *
65
+ * @param {MtaYaml} yamlContent - The YAML content.
66
+ * @returns {string} The SAP Cloud Service.
67
+ */
68
+ function getSAPCloudService(yamlContent) {
69
+ const modules = yamlContent?.modules?.filter((module) => module.name.includes('destination-content'));
70
+ const destinations = modules?.[0]?.parameters?.content?.instance?.destinations;
71
+ const mtaDestination = destinations?.find((destination) => destination.Name.includes('html_repo_host'));
72
+ const sapCloudService = mtaDestination?.['sap.cloud.service']?.replaceAll('_', '.') ?? '';
73
+ return sapCloudService;
74
+ }
75
+ /**
76
+ * Gets the router type.
77
+ *
78
+ * @param {MtaYaml} yamlContent - The YAML content.
79
+ * @returns {AppRouterType} The router type.
80
+ */
81
+ function getRouterType(yamlContent) {
82
+ const filtered = yamlContent?.modules?.filter((module) => module.name.includes('destination-content') || module.name.includes('approuter'));
83
+ const routerType = filtered?.pop();
84
+ if (routerType?.name.includes('approuter')) {
85
+ return types_1.AppRouterType.STANDALONE;
86
+ }
87
+ else {
88
+ return types_1.AppRouterType.MANAGED;
89
+ }
90
+ }
91
+ /**
92
+ * Gets the app params from the UI5 YAML file.
93
+ *
94
+ * @param {string} projectPath - The project path.
95
+ * @returns {AppParamsExtended} The app params.
96
+ */
97
+ function getAppParamsFromUI5Yaml(projectPath) {
98
+ const ui5YamlPath = path.join(projectPath, 'ui5.yaml');
99
+ const parsedYaml = (0, yaml_loader_1.getYamlContent)(ui5YamlPath);
100
+ const appConfiguration = parsedYaml?.builder?.customTasks?.[0]?.configuration;
101
+ const appParams = {
102
+ appHostId: appConfiguration?.appHostId || '',
103
+ appName: appConfiguration?.appVersion || '',
104
+ appVersion: appConfiguration?.appVersion || '',
105
+ spaceGuid: appConfiguration?.space || ''
106
+ };
107
+ return appParams;
108
+ }
109
+ /**
110
+ * Adjusts the MTA YAML for a standalone approuter.
111
+ *
112
+ * @param {MtaYaml} yamlContent - The YAML content.
113
+ * @param {string} projectName - The project name.
114
+ * @param {string} businessService - The business service.
115
+ */
116
+ function adjustMtaYamlStandaloneApprouter(yamlContent, projectName, businessService) {
117
+ const appRouterName = `${projectName}-approuter`;
118
+ let appRouter = yamlContent.modules?.find((module) => module.name === appRouterName);
119
+ if (appRouter == null) {
120
+ appRouter = {
121
+ name: appRouterName,
122
+ type: 'approuter.nodejs',
123
+ path: appRouterName,
124
+ requires: [],
125
+ parameters: {
126
+ 'disk-quota': '256M',
127
+ 'memory': '256M'
128
+ }
129
+ };
130
+ yamlContent.modules?.push(appRouter);
131
+ }
132
+ const requires = [
133
+ `${projectName}_html_repo_runtime`,
134
+ `${projectName}_uaa`,
135
+ `portal_resources_${projectName}`
136
+ ].concat(businessService);
137
+ for (const name of requires) {
138
+ if (appRouter.requires?.every((existing) => existing.name !== name)) {
139
+ appRouter.requires?.push({ name });
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Adjusts the MTA YAML for a managed approuter.
145
+ *
146
+ * @param {MtaYaml} yamlContent - The YAML content.
147
+ * @param {string} projectName - The project name.
148
+ * @param {string} businessSolution - The business solution.
149
+ * @param {string} businessService - The business service.
150
+ * @param {string} timestamp - The timestamp.
151
+ */
152
+ function adjustMtaYamlManagedApprouter(yamlContent, projectName, businessSolution, businessService, timestamp) {
153
+ const projectNameForXsSecurity = (0, yaml_loader_1.getProjectNameForXsSecurity)(yamlContent, timestamp);
154
+ const appRouterName = `${projectName}-destination-content`;
155
+ let appRouter = yamlContent.modules?.find((module) => module.name === appRouterName);
156
+ if (appRouter == null) {
157
+ businessSolution = businessSolution.split('.').join('_');
158
+ appRouter = {
159
+ name: appRouterName,
160
+ type: SAP_APPLICATION_CONTENT,
161
+ requires: [
162
+ {
163
+ name: `${projectName}_uaa`,
164
+ parameters: {
165
+ 'service-key': {
166
+ name: `${projectName}-uaa-key`
167
+ }
168
+ }
169
+ },
170
+ {
171
+ name: `${projectName}_html_repo_host`,
172
+ parameters: {
173
+ 'service-key': {
174
+ name: `${projectName}-html_repo_host-key`
175
+ }
176
+ }
177
+ },
178
+ {
179
+ name: `${projectName}-destination`,
180
+ parameters: {
181
+ 'content-target': true
182
+ }
183
+ },
184
+ {
185
+ name: `${businessService}`,
186
+ parameters: {
187
+ 'service-key': {
188
+ name: `${businessService}-key`
189
+ }
190
+ }
191
+ }
192
+ ],
193
+ 'build-parameters': {
194
+ 'no-source': true
195
+ },
196
+ parameters: {
197
+ content: {
198
+ instance: {
199
+ destinations: [
200
+ {
201
+ Name: `${businessSolution}-${projectName}-html_repo_host`,
202
+ ServiceInstanceName: `${projectName}-html5_app_host`,
203
+ ServiceKeyName: `${projectName}-html_repo_host-key`,
204
+ 'sap.cloud.service': businessSolution.replaceAll('_', '.')
205
+ },
206
+ {
207
+ Name: `${businessSolution}-uaa-${projectName}`,
208
+ ServiceInstanceName: `${projectNameForXsSecurity}-xsuaa`,
209
+ ServiceKeyName: `${projectName}_uaa-key`,
210
+ Authentication: 'OAuth2UserTokenExchange',
211
+ 'sap.cloud.service': businessSolution.replaceAll('_', '.')
212
+ },
213
+ {
214
+ Name: `${businessService}-service_instance_name`,
215
+ Authentication: 'OAuth2UserTokenExchange',
216
+ ServiceInstanceName: `${businessService}`,
217
+ ServiceKeyName: `${businessService}-key`
218
+ }
219
+ ],
220
+ existing_destinations_policy: 'update'
221
+ }
222
+ }
223
+ }
224
+ };
225
+ yamlContent.modules?.push(appRouter);
226
+ }
227
+ }
228
+ /**
229
+ * Adjusts the MTA YAML for a UI deployer.
230
+ *
231
+ * @param {MtaYaml} yamlContent - The YAML content.
232
+ * @param {string} projectName - The project name.
233
+ * @param {string} moduleName - The module name.
234
+ */
235
+ function adjustMtaYamlUDeployer(yamlContent, projectName, moduleName) {
236
+ const uiDeployerName = `${projectName}_ui_deployer`;
237
+ let uiDeployer = yamlContent.modules?.find((module) => module.name === uiDeployerName);
238
+ if (uiDeployer == null) {
239
+ uiDeployer = {
240
+ name: uiDeployerName,
241
+ type: SAP_APPLICATION_CONTENT,
242
+ path: '.',
243
+ requires: [],
244
+ 'build-parameters': {
245
+ 'build-result': 'resources',
246
+ requires: []
247
+ }
248
+ };
249
+ yamlContent.modules?.push(uiDeployer);
250
+ }
251
+ const htmlRepoHostName = `${projectName}_html_repo_host`;
252
+ if (uiDeployer.requires?.every((req) => req.name !== htmlRepoHostName)) {
253
+ uiDeployer.requires?.push({
254
+ name: htmlRepoHostName,
255
+ parameters: {
256
+ 'content-target': true
257
+ }
258
+ });
259
+ }
260
+ if (uiDeployer['build-parameters']?.requires?.every((require) => require.name !== moduleName)) {
261
+ uiDeployer['build-parameters']?.requires?.push({
262
+ artifacts: [`${moduleName}.zip`],
263
+ name: moduleName,
264
+ 'target-path': 'resources/'
265
+ });
266
+ }
267
+ }
268
+ /**
269
+ * Adjusts the MTA YAML for resources.
270
+ *
271
+ * @param {MtaYaml} yamlContent - The YAML content.
272
+ * @param {string} projectName - The project name.
273
+ * @param {string} timestamp - The timestamp.
274
+ * @param {boolean} isManagedAppRouter - Whether the approuter is managed.
275
+ */
276
+ function adjustMtaYamlResources(yamlContent, projectName, timestamp, isManagedAppRouter) {
277
+ const projectNameForXsSecurity = (0, yaml_loader_1.getProjectNameForXsSecurity)(yamlContent, timestamp);
278
+ const resources = [
279
+ {
280
+ name: `${projectName}_html_repo_host`,
281
+ type: CF_MANAGED_SERVICE,
282
+ parameters: {
283
+ service: HTML5_APPS_REPO,
284
+ 'service-plan': 'app-host',
285
+ 'service-name': `${projectName}-html5_app_host`
286
+ }
287
+ },
288
+ {
289
+ name: `${projectName}_uaa`,
290
+ type: CF_MANAGED_SERVICE,
291
+ parameters: {
292
+ service: 'xsuaa',
293
+ path: './xs-security.json',
294
+ 'service-plan': 'application',
295
+ 'service-name': `${projectNameForXsSecurity}-xsuaa`
296
+ }
297
+ }
298
+ ];
299
+ if (isManagedAppRouter) {
300
+ resources.push({
301
+ name: `${projectName}-destination`,
302
+ type: CF_MANAGED_SERVICE,
303
+ parameters: {
304
+ service: 'destination',
305
+ 'service-name': `${projectName}-destination`,
306
+ 'service-plan': 'lite',
307
+ config: {
308
+ HTML5Runtime_enabled: true,
309
+ version: '1.0.0'
310
+ }
311
+ }
312
+ });
313
+ }
314
+ else {
315
+ resources.push({
316
+ name: `portal_resources_${projectName}`,
317
+ type: CF_MANAGED_SERVICE,
318
+ parameters: {
319
+ service: 'portal',
320
+ 'service-plan': 'standard'
321
+ }
322
+ }, {
323
+ name: `${projectName}_html_repo_runtime`,
324
+ type: CF_MANAGED_SERVICE,
325
+ parameters: {
326
+ service: HTML5_APPS_REPO,
327
+ 'service-plan': 'app-runtime'
328
+ }
329
+ });
330
+ }
331
+ for (const resource of resources) {
332
+ if (yamlContent.resources?.every((existing) => existing.name !== resource.name)) {
333
+ yamlContent.resources?.push(resource);
334
+ }
335
+ }
336
+ }
337
+ /**
338
+ * Adjusts the MTA YAML for the own module.
339
+ *
340
+ * @param {MtaYaml} yamlContent - The YAML content.
341
+ * @param {string} moduleName - The module name.
342
+ */
343
+ function adjustMtaYamlOwnModule(yamlContent, moduleName) {
344
+ let module = yamlContent.modules?.find((module) => module.name === moduleName);
345
+ if (module == null) {
346
+ module = {
347
+ name: moduleName,
348
+ type: 'html5',
349
+ path: moduleName,
350
+ 'build-parameters': {
351
+ builder: 'custom',
352
+ commands: ['npm install', 'npm run build'],
353
+ 'supported-platforms': []
354
+ }
355
+ };
356
+ yamlContent.modules?.push(module);
357
+ }
358
+ }
359
+ /**
360
+ * Adds a module if it does not exist.
361
+ *
362
+ * @param {MtaRequire[]} requires - The requires.
363
+ * @param {string} name - The name.
364
+ */
365
+ function addModuleIfNotExists(requires, name) {
366
+ if (requires.every((require) => require.name !== name)) {
367
+ requires.push({ name });
368
+ }
369
+ }
370
+ /**
371
+ * Adjusts the MTA YAML for the FLP module.
372
+ *
373
+ * @param {MtaYaml} yamlContent - The YAML content.
374
+ * @param {string} projectName - The project name.
375
+ * @param {string} businessService - The business service.
376
+ */
377
+ function adjustMtaYamlFlpModule(yamlContent, projectName, businessService) {
378
+ for (const module of yamlContent.modules ?? []) {
379
+ const moduleIndex = yamlContent.modules?.indexOf(module);
380
+ if (moduleIndex !== undefined) {
381
+ if (module.type === SAP_APPLICATION_CONTENT && module.requires) {
382
+ const portalResources = module.requires.find((require) => require.name === `portal_resources_${projectName}`);
383
+ if (portalResources?.parameters?.['service-key']?.name === 'content-deploy-key') {
384
+ addModuleIfNotExists(module.requires, `${projectName}_html_repo_host`);
385
+ addModuleIfNotExists(module.requires, `${projectName}_ui_deployer`);
386
+ addModuleIfNotExists(module.requires, businessService);
387
+ // Move FLP module to last position
388
+ yamlContent.modules?.push(yamlContent.modules.splice(moduleIndex, 1)[0]);
389
+ }
390
+ }
391
+ }
392
+ }
393
+ }
394
+ /**
395
+ * Adjusts the MTA YAML.
396
+ *
397
+ * @param {AdjustMtaYamlParams} params - The parameters.
398
+ * @param {Editor} memFs - The mem-fs editor instance.
399
+ * @param {ToolsLogger} logger - The logger.
400
+ * @returns {Promise<void>} The promise.
401
+ */
402
+ async function adjustMtaYaml({ projectPath, moduleName, appRouterType, businessSolutionName, businessService, spaceGuid }, memFs, logger) {
403
+ const timestamp = Date.now().toString();
404
+ const mtaYamlPath = path.join(projectPath, 'mta.yaml');
405
+ const loadedYamlContent = (0, yaml_loader_1.getYamlContent)(mtaYamlPath);
406
+ const defaultYaml = {
407
+ ID: projectPath.split(path.sep).pop() ?? '',
408
+ version: '0.0.1',
409
+ modules: [],
410
+ resources: [],
411
+ '_schema-version': '3.2'
412
+ };
413
+ if (!appRouterType) {
414
+ appRouterType = getRouterType(loadedYamlContent);
415
+ }
416
+ const yamlContent = Object.assign(defaultYaml, loadedYamlContent);
417
+ const projectName = yamlContent.ID.toLowerCase();
418
+ const initialServices = yamlContent.resources?.map((resource) => resource.parameters.service ?? '') ?? [];
419
+ const isStandaloneApprouter = appRouterType === types_1.AppRouterType.STANDALONE;
420
+ if (isStandaloneApprouter) {
421
+ adjustMtaYamlStandaloneApprouter(yamlContent, projectName, businessService);
422
+ }
423
+ else {
424
+ adjustMtaYamlManagedApprouter(yamlContent, projectName, businessSolutionName, businessService, timestamp);
425
+ }
426
+ adjustMtaYamlUDeployer(yamlContent, projectName, moduleName);
427
+ adjustMtaYamlResources(yamlContent, projectName, timestamp, !isStandaloneApprouter);
428
+ adjustMtaYamlOwnModule(yamlContent, moduleName);
429
+ // should go last since it sorts the modules (workaround, should be removed after fixed in deployment module)
430
+ adjustMtaYamlFlpModule(yamlContent, projectName, businessService);
431
+ await (0, api_1.createServices)(projectPath, yamlContent, initialServices, timestamp, spaceGuid, logger);
432
+ const updatedYamlContent = js_yaml_1.default.dump(yamlContent);
433
+ memFs.write(mtaYamlPath, updatedYamlContent);
434
+ logger?.debug(`Adjusted MTA YAML for project ${projectPath}`);
435
+ }
436
+ //# sourceMappingURL=yaml.js.map
@@ -0,0 +1,65 @@
1
+ import type { ToolsLogger } from '@sap-ux/logger';
2
+ import type { CfConfig, CFApp, RequestArguments, ServiceKeys, GetServiceInstanceParams, MtaYaml } from '../../types';
3
+ /**
4
+ * Get the business service keys.
5
+ *
6
+ * @param {string} businessService - The business service.
7
+ * @param {CfConfig} config - The CF config.
8
+ * @param {ToolsLogger} logger - The logger.
9
+ * @returns {Promise<ServiceKeys | null>} The service keys.
10
+ */
11
+ export declare function getBusinessServiceKeys(businessService: string, config: CfConfig, logger: ToolsLogger): Promise<ServiceKeys | null>;
12
+ /**
13
+ * Get the FDC request arguments.
14
+ *
15
+ * @param {CfConfig} cfConfig - The CF config.
16
+ * @returns {RequestArguments} The request arguments.
17
+ */
18
+ export declare function getFDCRequestArguments(cfConfig: CfConfig): RequestArguments;
19
+ /**
20
+ * Get the FDC apps.
21
+ *
22
+ * @param {string[]} appHostIds - The app host ids.
23
+ * @param {CfConfig} cfConfig - The CF config.
24
+ * @param {ToolsLogger} logger - The logger.
25
+ * @returns {Promise<FDCResponse>} The FDC apps.
26
+ */
27
+ export declare function getFDCApps(appHostIds: string[], cfConfig: CfConfig, logger: ToolsLogger): Promise<CFApp[]>;
28
+ /**
29
+ * Creates a service.
30
+ *
31
+ * @param {string} spaceGuid - The space GUID.
32
+ * @param {string} plan - The plan.
33
+ * @param {string} serviceInstanceName - The service instance name.
34
+ * @param {string[]} tags - The tags.
35
+ * @param {string} [serviceName] - The service name.
36
+ * @param {object} [security] - Security configuration.
37
+ * @param {string | null} security.filePath - The security file path.
38
+ * @param {string} [security.xsappname] - The XS app name.
39
+ * @param {ToolsLogger} [logger] - The logger.
40
+ */
41
+ export declare function createService(spaceGuid: string, plan: string, serviceInstanceName: string, tags: string[], serviceName: string | undefined, security?: {
42
+ filePath: string | null;
43
+ xsappname?: string;
44
+ }, logger?: ToolsLogger): Promise<void>;
45
+ /**
46
+ * Creates the services.
47
+ *
48
+ * @param {string} projectPath - The project path.
49
+ * @param {MtaYaml} yamlContent - The YAML content.
50
+ * @param {string[]} initialServices - The initial services.
51
+ * @param {string} timestamp - The timestamp.
52
+ * @param {string} spaceGuid - The space GUID.
53
+ * @param {ToolsLogger} logger - The logger.
54
+ * @returns {Promise<void>} The promise.
55
+ */
56
+ export declare function createServices(projectPath: string, yamlContent: MtaYaml, initialServices: string[], timestamp: string, spaceGuid: string, logger?: ToolsLogger): Promise<void>;
57
+ /**
58
+ * Gets the service instance keys.
59
+ *
60
+ * @param {GetServiceInstanceParams} serviceInstanceQuery - The service instance query.
61
+ * @param {ToolsLogger} logger - The logger.
62
+ * @returns {Promise<ServiceKeys | null>} The service instance keys.
63
+ */
64
+ export declare function getServiceInstanceKeys(serviceInstanceQuery: GetServiceInstanceParams, logger: ToolsLogger): Promise<ServiceKeys | null>;
65
+ //# sourceMappingURL=api.d.ts.map