@aws-amplify/backend-output-storage 0.0.0-test-20240315202106

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 ADDED
@@ -0,0 +1,4 @@
1
+ # Description
2
+
3
+ Contains classes that know how to write stack output in a format that is understood by the Amplfiy platform.
4
+ This package should be used anywhere we need to write client config output or any other stack output that needs to be consumed after deployment in a consistent way.
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './stack_metadata_output_storage_strategy.js';
2
+ export * from './store_attribution_metadata.js';
3
+ //# sourceMappingURL=index.d.ts.map
package/lib/index.js ADDED
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./stack_metadata_output_storage_strategy.js"), exports);
18
+ __exportStar(require("./store_attribution_metadata.js"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhFQUE0RDtBQUM1RCxrRUFBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0YWNrX21ldGFkYXRhX291dHB1dF9zdG9yYWdlX3N0cmF0ZWd5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVfYXR0cmlidXRpb25fbWV0YWRhdGEuanMnO1xuIl19
@@ -0,0 +1,24 @@
1
+ import { BackendOutputEntry, BackendOutputStorageStrategy } from '@aws-amplify/plugin-types';
2
+ import { Stack } from 'aws-cdk-lib';
3
+ /**
4
+ * Implementation of BackendOutputStorageStrategy that stores config data in stack metadata and outputs
5
+ */
6
+ export declare class StackMetadataBackendOutputStorageStrategy implements BackendOutputStorageStrategy<BackendOutputEntry> {
7
+ private readonly stack;
8
+ private lazyListValueMap;
9
+ /**
10
+ * Initialize the instance with a stack.
11
+ *
12
+ * If the stack is an AmplifyStack, set a parameter in SSM so the stack can be identified later by the project environment
13
+ */
14
+ constructor(stack: Stack);
15
+ /**
16
+ * Store construct output as stack output and add metadata to the metadata object.
17
+ */
18
+ addBackendOutputEntry: (keyName: string, backendOutputEntry: BackendOutputEntry) => void;
19
+ /**
20
+ * Lazily construct and append to output list as stack output and add metadata to the metadata object.
21
+ */
22
+ appendToBackendOutputList: (keyName: string, backendOutputEntry: BackendOutputEntry) => void;
23
+ }
24
+ //# sourceMappingURL=stack_metadata_output_storage_strategy.d.ts.map
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StackMetadataBackendOutputStorageStrategy = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ /**
6
+ * Implementation of BackendOutputStorageStrategy that stores config data in stack metadata and outputs
7
+ */
8
+ class StackMetadataBackendOutputStorageStrategy {
9
+ stack;
10
+ lazyListValueMap = new Map();
11
+ /**
12
+ * Initialize the instance with a stack.
13
+ *
14
+ * If the stack is an AmplifyStack, set a parameter in SSM so the stack can be identified later by the project environment
15
+ */
16
+ constructor(stack) {
17
+ this.stack = stack;
18
+ }
19
+ /**
20
+ * Store construct output as stack output and add metadata to the metadata object.
21
+ */
22
+ addBackendOutputEntry = (keyName, backendOutputEntry) => {
23
+ // add all the data values as stack outputs
24
+ Object.entries(backendOutputEntry.payload).forEach(([key, value]) => {
25
+ new aws_cdk_lib_1.CfnOutput(this.stack, key, { value });
26
+ });
27
+ this.stack.addMetadata(keyName, {
28
+ version: backendOutputEntry.version,
29
+ stackOutputs: Object.keys(backendOutputEntry.payload),
30
+ });
31
+ };
32
+ /**
33
+ * Lazily construct and append to output list as stack output and add metadata to the metadata object.
34
+ */
35
+ appendToBackendOutputList = (keyName, backendOutputEntry) => {
36
+ const version = backendOutputEntry.version;
37
+ let listsMap = this.lazyListValueMap.get(keyName);
38
+ const metadata = this.stack.templateOptions.metadata || {};
39
+ const existingMetadataEntry = metadata[keyName];
40
+ if (existingMetadataEntry) {
41
+ if (existingMetadataEntry.version !== version) {
42
+ throw new Error(`Metadata entry for ${keyName} at version ${existingMetadataEntry.version} already exists. Cannot add another entry for the same key at version ${version}.`);
43
+ }
44
+ }
45
+ else {
46
+ this.stack.addMetadata(keyName, {
47
+ version,
48
+ stackOutputs: aws_cdk_lib_1.Lazy.list({
49
+ produce: () => Array.from(listsMap ? listsMap.keys() : []),
50
+ }),
51
+ });
52
+ }
53
+ Object.entries(backendOutputEntry.payload).forEach(([listName, value]) => {
54
+ if (!listsMap) {
55
+ listsMap = new Map();
56
+ this.lazyListValueMap.set(keyName, listsMap);
57
+ }
58
+ let outputList = listsMap.get(listName);
59
+ if (outputList) {
60
+ outputList.push(value);
61
+ }
62
+ else {
63
+ outputList = [value];
64
+ listsMap.set(listName, outputList);
65
+ new aws_cdk_lib_1.CfnOutput(this.stack, listName, {
66
+ value: aws_cdk_lib_1.Lazy.string({ produce: () => JSON.stringify(outputList) }),
67
+ });
68
+ }
69
+ });
70
+ };
71
+ }
72
+ exports.StackMetadataBackendOutputStorageStrategy = StackMetadataBackendOutputStorageStrategy;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tfbWV0YWRhdGFfb3V0cHV0X3N0b3JhZ2Vfc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RhY2tfbWV0YWRhdGFfb3V0cHV0X3N0b3JhZ2Vfc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsNkNBQXFEO0FBTXJEOztHQUVHO0FBQ0gsTUFBYSx5Q0FBeUM7SUFXdkI7SUFSckIsZ0JBQWdCLEdBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFWjs7OztPQUlHO0lBQ0gsWUFBNkIsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDO0lBRTdDOztPQUVHO0lBQ0gscUJBQXFCLEdBQUcsQ0FDdEIsT0FBZSxFQUNmLGtCQUFzQyxFQUNoQyxFQUFFO1FBQ1IsMkNBQTJDO1FBQzNDLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNsRSxJQUFJLHVCQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzlCLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1lBQ25DLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILHlCQUF5QixHQUFHLENBQzFCLE9BQWUsRUFDZixrQkFBc0MsRUFDaEMsRUFBRTtRQUNSLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMzQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEQsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixJQUFJLHFCQUFxQixDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUU7Z0JBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0JBQXNCLE9BQU8sZUFBZSxxQkFBcUIsQ0FBQyxPQUFPLHlFQUF5RSxPQUFPLEdBQUcsQ0FDN0osQ0FBQzthQUNIO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFDOUIsT0FBTztnQkFDUCxZQUFZLEVBQUUsa0JBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ3RCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzNELENBQUM7YUFDSCxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNiLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQzthQUM5QztZQUNELElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFeEMsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4QjtpQkFBTTtnQkFDTCxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBRW5DLElBQUksdUJBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtvQkFDbEMsS0FBSyxFQUFFLGtCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztpQkFDbEUsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztDQUNIO0FBOUVELDhGQThFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhY2tlbmRPdXRwdXRFbnRyeSxcbiAgQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSxcbn0gZnJvbSAnQGF3cy1hbXBsaWZ5L3BsdWdpbi10eXBlcyc7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIExhenksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG4vLyBBbGlhc2VkIHN0cmluZ3MgZm9yIHJlYWRhYmlsaXR5XG50eXBlIE1ldGFkYXRhS2V5ID0gc3RyaW5nO1xudHlwZSBPdXRwdXRLZXkgPSBzdHJpbmc7XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgQmFja2VuZE91dHB1dFN0b3JhZ2VTdHJhdGVneSB0aGF0IHN0b3JlcyBjb25maWcgZGF0YSBpbiBzdGFjayBtZXRhZGF0YSBhbmQgb3V0cHV0c1xuICovXG5leHBvcnQgY2xhc3MgU3RhY2tNZXRhZGF0YUJhY2tlbmRPdXRwdXRTdG9yYWdlU3RyYXRlZ3lcbiAgaW1wbGVtZW50cyBCYWNrZW5kT3V0cHV0U3RvcmFnZVN0cmF0ZWd5PEJhY2tlbmRPdXRwdXRFbnRyeT5cbntcbiAgcHJpdmF0ZSBsYXp5TGlzdFZhbHVlTWFwOiBNYXA8TWV0YWRhdGFLZXksIE1hcDxPdXRwdXRLZXksIHN0cmluZ1tdPj4gPVxuICAgIG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgaW5zdGFuY2Ugd2l0aCBhIHN0YWNrLlxuICAgKlxuICAgKiBJZiB0aGUgc3RhY2sgaXMgYW4gQW1wbGlmeVN0YWNrLCBzZXQgYSBwYXJhbWV0ZXIgaW4gU1NNIHNvIHRoZSBzdGFjayBjYW4gYmUgaWRlbnRpZmllZCBsYXRlciBieSB0aGUgcHJvamVjdCBlbnZpcm9ubWVudFxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGFjazogU3RhY2spIHt9XG5cbiAgLyoqXG4gICAqIFN0b3JlIGNvbnN0cnVjdCBvdXRwdXQgYXMgc3RhY2sgb3V0cHV0IGFuZCBhZGQgbWV0YWRhdGEgdG8gdGhlIG1ldGFkYXRhIG9iamVjdC5cbiAgICovXG4gIGFkZEJhY2tlbmRPdXRwdXRFbnRyeSA9IChcbiAgICBrZXlOYW1lOiBzdHJpbmcsXG4gICAgYmFja2VuZE91dHB1dEVudHJ5OiBCYWNrZW5kT3V0cHV0RW50cnlcbiAgKTogdm9pZCA9PiB7XG4gICAgLy8gYWRkIGFsbCB0aGUgZGF0YSB2YWx1ZXMgYXMgc3RhY2sgb3V0cHV0c1xuICAgIE9iamVjdC5lbnRyaWVzKGJhY2tlbmRPdXRwdXRFbnRyeS5wYXlsb2FkKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcy5zdGFjaywga2V5LCB7IHZhbHVlIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGFjay5hZGRNZXRhZGF0YShrZXlOYW1lLCB7XG4gICAgICB2ZXJzaW9uOiBiYWNrZW5kT3V0cHV0RW50cnkudmVyc2lvbixcbiAgICAgIHN0YWNrT3V0cHV0czogT2JqZWN0LmtleXMoYmFja2VuZE91dHB1dEVudHJ5LnBheWxvYWQpLFxuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBMYXppbHkgY29uc3RydWN0IGFuZCBhcHBlbmQgdG8gb3V0cHV0IGxpc3QgYXMgc3RhY2sgb3V0cHV0IGFuZCBhZGQgbWV0YWRhdGEgdG8gdGhlIG1ldGFkYXRhIG9iamVjdC5cbiAgICovXG4gIGFwcGVuZFRvQmFja2VuZE91dHB1dExpc3QgPSAoXG4gICAga2V5TmFtZTogc3RyaW5nLFxuICAgIGJhY2tlbmRPdXRwdXRFbnRyeTogQmFja2VuZE91dHB1dEVudHJ5XG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHZlcnNpb24gPSBiYWNrZW5kT3V0cHV0RW50cnkudmVyc2lvbjtcbiAgICBsZXQgbGlzdHNNYXAgPSB0aGlzLmxhenlMaXN0VmFsdWVNYXAuZ2V0KGtleU5hbWUpO1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5tZXRhZGF0YSB8fCB7fTtcbiAgICBjb25zdCBleGlzdGluZ01ldGFkYXRhRW50cnkgPSBtZXRhZGF0YVtrZXlOYW1lXTtcblxuICAgIGlmIChleGlzdGluZ01ldGFkYXRhRW50cnkpIHtcbiAgICAgIGlmIChleGlzdGluZ01ldGFkYXRhRW50cnkudmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1ldGFkYXRhIGVudHJ5IGZvciAke2tleU5hbWV9IGF0IHZlcnNpb24gJHtleGlzdGluZ01ldGFkYXRhRW50cnkudmVyc2lvbn0gYWxyZWFkeSBleGlzdHMuIENhbm5vdCBhZGQgYW5vdGhlciBlbnRyeSBmb3IgdGhlIHNhbWUga2V5IGF0IHZlcnNpb24gJHt2ZXJzaW9ufS5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhY2suYWRkTWV0YWRhdGEoa2V5TmFtZSwge1xuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBzdGFja091dHB1dHM6IExhenkubGlzdCh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gQXJyYXkuZnJvbShsaXN0c01hcCA/IGxpc3RzTWFwLmtleXMoKSA6IFtdKSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBPYmplY3QuZW50cmllcyhiYWNrZW5kT3V0cHV0RW50cnkucGF5bG9hZCkuZm9yRWFjaCgoW2xpc3ROYW1lLCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICghbGlzdHNNYXApIHtcbiAgICAgICAgbGlzdHNNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMubGF6eUxpc3RWYWx1ZU1hcC5zZXQoa2V5TmFtZSwgbGlzdHNNYXApO1xuICAgICAgfVxuICAgICAgbGV0IG91dHB1dExpc3QgPSBsaXN0c01hcC5nZXQobGlzdE5hbWUpO1xuXG4gICAgICBpZiAob3V0cHV0TGlzdCkge1xuICAgICAgICBvdXRwdXRMaXN0LnB1c2godmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0TGlzdCA9IFt2YWx1ZV07XG4gICAgICAgIGxpc3RzTWFwLnNldChsaXN0TmFtZSwgb3V0cHV0TGlzdCk7XG5cbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLnN0YWNrLCBsaXN0TmFtZSwge1xuICAgICAgICAgIHZhbHVlOiBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IEpTT04uc3RyaW5naWZ5KG91dHB1dExpc3QpIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,48 @@
1
+ /// <reference types="node" />
2
+ import { Stack } from 'aws-cdk-lib';
3
+ import * as _os from 'os';
4
+ import { PackageJsonReader } from '@aws-amplify/platform-core';
5
+ /**
6
+ * Stores BI metrics information in stack descriptions
7
+ */
8
+ export declare class AttributionMetadataStorage {
9
+ private readonly os;
10
+ private readonly packageJsonReader;
11
+ /**
12
+ * Constructor with props for injecting test mocks
13
+ */
14
+ constructor(os?: typeof _os, packageJsonReader?: PackageJsonReader);
15
+ /**
16
+ * Stores an attribution metadata string in the stack description of the provided stack
17
+ * Does nothing if the stack already has a non-empty description
18
+ */
19
+ storeAttributionMetadata: (stack: Stack, stackType: string, libraryPackageJsonAbsolutePath: string, additionalMetadata?: Record<string, string>) => void;
20
+ private getAttributionMetadata;
21
+ private getDeploymentEngineType;
22
+ private getPlatform;
23
+ }
24
+ export type AttributionMetadata = {
25
+ /**
26
+ * The OS that synthesized this stack
27
+ */
28
+ createdOn: Platform;
29
+ /**
30
+ * The synthesis engine that generated this stack
31
+ */
32
+ createdBy: DeploymentEngineType;
33
+ /**
34
+ * The library version that created this metadata
35
+ */
36
+ createdWith: string;
37
+ /**
38
+ * String that identifies what type of stack this metadata is set on
39
+ */
40
+ stackType: string;
41
+ /**
42
+ * Field where constructs can put additional information for BI tracking
43
+ */
44
+ metadata: Record<string, string>;
45
+ };
46
+ export type DeploymentEngineType = 'AmplifyPipelineDeploy' | 'AmplifySandbox' | 'AmplifyCDK';
47
+ export type Platform = 'Mac' | 'Windows' | 'Linux' | 'Other';
48
+ //# sourceMappingURL=store_attribution_metadata.d.ts.map
@@ -0,0 +1,90 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.AttributionMetadataStorage = void 0;
27
+ const _os = __importStar(require("os"));
28
+ const platform_core_1 = require("@aws-amplify/platform-core");
29
+ /**
30
+ * Stores BI metrics information in stack descriptions
31
+ */
32
+ class AttributionMetadataStorage {
33
+ os;
34
+ packageJsonReader;
35
+ /**
36
+ * Constructor with props for injecting test mocks
37
+ */
38
+ constructor(os = _os, packageJsonReader = new platform_core_1.PackageJsonReader()) {
39
+ this.os = os;
40
+ this.packageJsonReader = packageJsonReader;
41
+ }
42
+ /**
43
+ * Stores an attribution metadata string in the stack description of the provided stack
44
+ * Does nothing if the stack already has a non-empty description
45
+ */
46
+ storeAttributionMetadata = (stack, stackType, libraryPackageJsonAbsolutePath, additionalMetadata = {}) => {
47
+ if (typeof stack.templateOptions.description === 'string' &&
48
+ stack.templateOptions.description.length > 0) {
49
+ // don't overwrite an existing description
50
+ return;
51
+ }
52
+ stack.templateOptions.description = JSON.stringify(this.getAttributionMetadata(stack, stackType, libraryPackageJsonAbsolutePath, additionalMetadata));
53
+ };
54
+ getAttributionMetadata = (stack, stackType, libraryPackageJsonAbsolutePath, additionalMetadata) => ({
55
+ createdOn: this.getPlatform(),
56
+ createdBy: this.getDeploymentEngineType(stack),
57
+ createdWith: this.packageJsonReader.read(libraryPackageJsonAbsolutePath).version ?? '',
58
+ stackType: stackType,
59
+ metadata: additionalMetadata,
60
+ });
61
+ getDeploymentEngineType = (stack) => {
62
+ const deploymentType = stack.node.tryGetContext(platform_core_1.CDKContextKey.DEPLOYMENT_TYPE);
63
+ if (deploymentType === undefined) {
64
+ // if no deployment type context value is set, assume the construct is being used in a native CDK project
65
+ return 'AmplifyCDK';
66
+ }
67
+ switch (deploymentType) {
68
+ case 'branch':
69
+ return 'AmplifyPipelineDeploy';
70
+ case 'sandbox':
71
+ return 'AmplifySandbox';
72
+ default:
73
+ throw new Error(`Unknown ${platform_core_1.CDKContextKey.DEPLOYMENT_TYPE} CDK context value "${deploymentType}"`);
74
+ }
75
+ };
76
+ getPlatform = () => {
77
+ switch (this.os.platform()) {
78
+ case 'darwin':
79
+ return 'Mac';
80
+ case 'win32':
81
+ return 'Windows';
82
+ case 'linux':
83
+ return 'Linux';
84
+ default:
85
+ return 'Other';
86
+ }
87
+ };
88
+ }
89
+ exports.AttributionMetadataStorage = AttributionMetadataStorage;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVfYXR0cmlidXRpb25fbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RvcmVfYXR0cmlidXRpb25fbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx3Q0FBMEI7QUFDMUIsOERBQThFO0FBRzlFOztHQUVHO0FBQ0gsTUFBYSwwQkFBMEI7SUFLbEI7SUFDQTtJQUxuQjs7T0FFRztJQUNILFlBQ21CLEtBQWlCLEdBQUcsRUFDcEIsb0JBQW9CLElBQUksaUNBQWlCLEVBQUU7UUFEM0MsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtJQUMzRCxDQUFDO0lBRUo7OztPQUdHO0lBQ0gsd0JBQXdCLEdBQUcsQ0FDekIsS0FBWSxFQUNaLFNBQWlCLEVBQ2pCLDhCQUFzQyxFQUN0QyxxQkFBNkMsRUFBRSxFQUN6QyxFQUFFO1FBQ1IsSUFDRSxPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxLQUFLLFFBQVE7WUFDckQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDNUM7WUFDQSwwQ0FBMEM7WUFDMUMsT0FBTztTQUNSO1FBQ0QsS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUN6QixLQUFLLEVBQ0wsU0FBUyxFQUNULDhCQUE4QixFQUM5QixrQkFBa0IsQ0FDbkIsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRU0sc0JBQXNCLEdBQUcsQ0FDL0IsS0FBWSxFQUNaLFNBQWlCLEVBQ2pCLDhCQUFzQyxFQUN0QyxrQkFBMEMsRUFDckIsRUFBRSxDQUFDLENBQUM7UUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7UUFDOUMsV0FBVyxFQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRTtRQUMzRSxTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsa0JBQWtCO0tBQzdCLENBQUMsQ0FBQztJQUVLLHVCQUF1QixHQUFHLENBQUMsS0FBWSxFQUF3QixFQUFFO1FBQ3ZFLE1BQU0sY0FBYyxHQUErQixLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FDekUsNkJBQWEsQ0FBQyxlQUFlLENBQzlCLENBQUM7UUFFRixJQUFJLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDaEMseUdBQXlHO1lBQ3pHLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO1FBRUQsUUFBUSxjQUFjLEVBQUU7WUFDdEIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sdUJBQXVCLENBQUM7WUFDakMsS0FBSyxTQUFTO2dCQUNaLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FDYixXQUFXLDZCQUFhLENBQUMsZUFBZSx1QkFDdEMsY0FDRixHQUFHLENBQ0osQ0FBQztTQUNMO0lBQ0gsQ0FBQyxDQUFDO0lBRU0sV0FBVyxHQUFHLEdBQWEsRUFBRTtRQUNuQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxPQUFPO2dCQUNWLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sQ0FBQztZQUNqQjtnQkFDRSxPQUFPLE9BQU8sQ0FBQztTQUNsQjtJQUNILENBQUMsQ0FBQztDQUNIO0FBdEZELGdFQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgX29zIGZyb20gJ29zJztcbmltcG9ydCB7IENES0NvbnRleHRLZXksIFBhY2thZ2VKc29uUmVhZGVyIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L3BsYXRmb3JtLWNvcmUnO1xuaW1wb3J0IHsgRGVwbG95bWVudFR5cGUgfSBmcm9tICdAYXdzLWFtcGxpZnkvcGx1Z2luLXR5cGVzJztcblxuLyoqXG4gKiBTdG9yZXMgQkkgbWV0cmljcyBpbmZvcm1hdGlvbiBpbiBzdGFjayBkZXNjcmlwdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIEF0dHJpYnV0aW9uTWV0YWRhdGFTdG9yYWdlIHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIHdpdGggcHJvcHMgZm9yIGluamVjdGluZyB0ZXN0IG1vY2tzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9zOiB0eXBlb2YgX29zID0gX29zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZUpzb25SZWFkZXIgPSBuZXcgUGFja2FnZUpzb25SZWFkZXIoKVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyBhbiBhdHRyaWJ1dGlvbiBtZXRhZGF0YSBzdHJpbmcgaW4gdGhlIHN0YWNrIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm92aWRlZCBzdGFja1xuICAgKiBEb2VzIG5vdGhpbmcgaWYgdGhlIHN0YWNrIGFscmVhZHkgaGFzIGEgbm9uLWVtcHR5IGRlc2NyaXB0aW9uXG4gICAqL1xuICBzdG9yZUF0dHJpYnV0aW9uTWV0YWRhdGEgPSAoXG4gICAgc3RhY2s6IFN0YWNrLFxuICAgIHN0YWNrVHlwZTogc3RyaW5nLFxuICAgIGxpYnJhcnlQYWNrYWdlSnNvbkFic29sdXRlUGF0aDogc3RyaW5nLFxuICAgIGFkZGl0aW9uYWxNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gICk6IHZvaWQgPT4ge1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiBzdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnICYmXG4gICAgICBzdGFjay50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgLy8gZG9uJ3Qgb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGRlc2NyaXB0aW9uXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGlvbk1ldGFkYXRhKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgc3RhY2tUeXBlLFxuICAgICAgICBsaWJyYXJ5UGFja2FnZUpzb25BYnNvbHV0ZVBhdGgsXG4gICAgICAgIGFkZGl0aW9uYWxNZXRhZGF0YVxuICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGlvbk1ldGFkYXRhID0gKFxuICAgIHN0YWNrOiBTdGFjayxcbiAgICBzdGFja1R5cGU6IHN0cmluZyxcbiAgICBsaWJyYXJ5UGFja2FnZUpzb25BYnNvbHV0ZVBhdGg6IHN0cmluZyxcbiAgICBhZGRpdGlvbmFsTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgKTogQXR0cmlidXRpb25NZXRhZGF0YSA9PiAoe1xuICAgIGNyZWF0ZWRPbjogdGhpcy5nZXRQbGF0Zm9ybSgpLFxuICAgIGNyZWF0ZWRCeTogdGhpcy5nZXREZXBsb3ltZW50RW5naW5lVHlwZShzdGFjayksXG4gICAgY3JlYXRlZFdpdGg6XG4gICAgICB0aGlzLnBhY2thZ2VKc29uUmVhZGVyLnJlYWQobGlicmFyeVBhY2thZ2VKc29uQWJzb2x1dGVQYXRoKS52ZXJzaW9uID8/ICcnLCAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4sIHJlZ2FyZGxlc3Mgd2Ugc2hvdWxkbid0IHRocm93IGZvciBhdHRyaWJ1dGlvblxuICAgIHN0YWNrVHlwZTogc3RhY2tUeXBlLFxuICAgIG1ldGFkYXRhOiBhZGRpdGlvbmFsTWV0YWRhdGEsXG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0RGVwbG95bWVudEVuZ2luZVR5cGUgPSAoc3RhY2s6IFN0YWNrKTogRGVwbG95bWVudEVuZ2luZVR5cGUgPT4ge1xuICAgIGNvbnN0IGRlcGxveW1lbnRUeXBlOiBEZXBsb3ltZW50VHlwZSB8IHVuZGVmaW5lZCA9IHN0YWNrLm5vZGUudHJ5R2V0Q29udGV4dChcbiAgICAgIENES0NvbnRleHRLZXkuREVQTE9ZTUVOVF9UWVBFXG4gICAgKTtcblxuICAgIGlmIChkZXBsb3ltZW50VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBpZiBubyBkZXBsb3ltZW50IHR5cGUgY29udGV4dCB2YWx1ZSBpcyBzZXQsIGFzc3VtZSB0aGUgY29uc3RydWN0IGlzIGJlaW5nIHVzZWQgaW4gYSBuYXRpdmUgQ0RLIHByb2plY3RcbiAgICAgIHJldHVybiAnQW1wbGlmeUNESyc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXBsb3ltZW50VHlwZSkge1xuICAgICAgY2FzZSAnYnJhbmNoJzpcbiAgICAgICAgcmV0dXJuICdBbXBsaWZ5UGlwZWxpbmVEZXBsb3knO1xuICAgICAgY2FzZSAnc2FuZGJveCc6XG4gICAgICAgIHJldHVybiAnQW1wbGlmeVNhbmRib3gnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbmtub3duICR7Q0RLQ29udGV4dEtleS5ERVBMT1lNRU5UX1RZUEV9IENESyBjb250ZXh0IHZhbHVlIFwiJHtcbiAgICAgICAgICAgIGRlcGxveW1lbnRUeXBlIGFzIHN0cmluZ1xuICAgICAgICAgIH1cImBcbiAgICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRQbGF0Zm9ybSA9ICgpOiBQbGF0Zm9ybSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLm9zLnBsYXRmb3JtKCkpIHtcbiAgICAgIGNhc2UgJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiAnTWFjJztcbiAgICAgIGNhc2UgJ3dpbjMyJzpcbiAgICAgICAgcmV0dXJuICdXaW5kb3dzJztcbiAgICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgICAgcmV0dXJuICdMaW51eCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ090aGVyJztcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEF0dHJpYnV0aW9uTWV0YWRhdGEgPSB7XG4gIC8qKlxuICAgKiBUaGUgT1MgdGhhdCBzeW50aGVzaXplZCB0aGlzIHN0YWNrXG4gICAqL1xuICBjcmVhdGVkT246IFBsYXRmb3JtO1xuICAvKipcbiAgICogVGhlIHN5bnRoZXNpcyBlbmdpbmUgdGhhdCBnZW5lcmF0ZWQgdGhpcyBzdGFja1xuICAgKi9cbiAgY3JlYXRlZEJ5OiBEZXBsb3ltZW50RW5naW5lVHlwZTtcbiAgLyoqXG4gICAqIFRoZSBsaWJyYXJ5IHZlcnNpb24gdGhhdCBjcmVhdGVkIHRoaXMgbWV0YWRhdGFcbiAgICovXG4gIGNyZWF0ZWRXaXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTdHJpbmcgdGhhdCBpZGVudGlmaWVzIHdoYXQgdHlwZSBvZiBzdGFjayB0aGlzIG1ldGFkYXRhIGlzIHNldCBvblxuICAgKi9cbiAgc3RhY2tUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpZWxkIHdoZXJlIGNvbnN0cnVjdHMgY2FuIHB1dCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBCSSB0cmFja2luZ1xuICAgKi9cbiAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBEZXBsb3ltZW50RW5naW5lVHlwZSA9XG4gIHwgJ0FtcGxpZnlQaXBlbGluZURlcGxveSdcbiAgfCAnQW1wbGlmeVNhbmRib3gnXG4gIHwgJ0FtcGxpZnlDREsnO1xuXG5leHBvcnQgdHlwZSBQbGF0Zm9ybSA9ICdNYWMnIHwgJ1dpbmRvd3MnIHwgJ0xpbnV4JyB8ICdPdGhlcic7XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@aws-amplify/backend-output-storage",
3
+ "version": "0.0.0-test-20240315202106",
4
+ "type": "commonjs",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/index.d.ts",
11
+ "import": "./lib/index.js",
12
+ "require": "./lib/index.js"
13
+ }
14
+ },
15
+ "main": "lib/index.js",
16
+ "types": "lib/index.d.ts",
17
+ "scripts": {
18
+ "update:api": "api-extractor run --local"
19
+ },
20
+ "license": "Apache-2.0",
21
+ "dependencies": {
22
+ "@aws-amplify/backend-output-schemas": "0.0.0-test-20240315202106",
23
+ "@aws-amplify/platform-core": "0.0.0-test-20240315202106"
24
+ },
25
+ "peerDependencies": {
26
+ "aws-cdk-lib": "^2.127.0"
27
+ }
28
+ }