@linzjs/cdk-tags 1.7.1 → 1.8.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 CHANGED
@@ -7,16 +7,21 @@ CDK construct to apply common tags to constructs
7
7
  To apply the common set of tags for a s3 bucket:
8
8
 
9
9
  ```typescript
10
- import { applyTags, SecurityClassification } from '@linzjs/cdk-tags';
10
+ import { applyTags, SecurityClassification, BackupSchedule } from '@linzjs/cdk-tags';
11
11
 
12
12
  const bucket = new Bucket(this, 'ImageryArchive');
13
13
 
14
14
  applyTags(bucket, {
15
15
  application: 'basemaps',
16
+ environment: 'prod',
16
17
  group: 'li',
17
18
  classification: SecurityClassification.Unclassified,
18
19
  data: { isMaster: true, isPublic: true, role: 'archive' },
19
- criticality: 'low',
20
+ impact: 'moderate',
21
+ backup: {
22
+ retention: 365,
23
+ schedule: BackupSchedule.WEEKLY
24
+ }
20
25
  });
21
26
  ```
22
27
 
@@ -27,10 +32,11 @@ import { applyTags, SecurityClassification, TagsBase } from '@linzjs/cdk-tags';
27
32
 
28
33
  const commonTags: TagsBase = {
29
34
  application: 'basemaps',
35
+ environment: 'prod',
30
36
  group: 'li',
31
37
  classification: SecurityClassification.Unclassified,
32
38
  data: { isMaster: true, isPublic: true, role: 'archive' },
33
- criticality: 'low',
39
+ impact: 'moderate',
34
40
  };
35
41
 
36
42
  const bucket1 = new Bucket(this, 'ImageryArchive');
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_test_1 = require("node:test");
4
+ const backup_js_1 = require("../backup.js");
5
+ const security_js_1 = require("../security.js");
6
+ const tags_js_1 = require("../tags.js");
7
+ (0, node_test_1.describe)('applyTags', () => {
8
+ // If this test breaks the README needs to be updated
9
+ (0, node_test_1.it)('should apply example from README.md', () => {
10
+ (0, tags_js_1.applyTags)({}, {
11
+ application: 'basemaps',
12
+ environment: 'prod',
13
+ group: 'li',
14
+ classification: security_js_1.SecurityClassification.Unclassified,
15
+ data: { isMaster: true, isPublic: true, role: 'archive' },
16
+ impact: 'moderate',
17
+ backup: {
18
+ retention: 365,
19
+ schedule: backup_js_1.BackupSchedule.WEEKLY,
20
+ },
21
+ });
22
+ });
23
+ });
24
+ //# sourceMappingURL=tags.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags.test.js","sourceRoot":"","sources":["../../../src/__test__/tags.test.ts"],"names":[],"mappings":";;AAAA,yCAAyC;AAIzC,4CAA8C;AAC9C,gDAAwD;AACxD,wCAAuC;AAEvC,IAAA,oBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IACzB,qDAAqD;IACrD,IAAA,cAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,IAAA,mBAAS,EAAC,EAA2B,EAAE;YACrC,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,MAAM;YACnB,KAAK,EAAE,IAAI;YACX,cAAc,EAAE,oCAAsB,CAAC,YAAY;YACnD,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YACzD,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE;gBACN,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,0BAAc,CAAC,MAAM;aAChC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare enum BackupSchedule {
2
+ HOURLY = "hourly",
3
+ DAILY = "daily",
4
+ WEEKLY = "weekly"
5
+ }
6
+ export interface Backup {
7
+ /**
8
+ * How many days should the data be kept.
9
+ * @defaultValue 30
10
+ */
11
+ retention?: number;
12
+ /**
13
+ * How often should this backup run. hourly, daily, weekly
14
+ * @defaultValue daily
15
+ */
16
+ schedule?: BackupSchedule;
17
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BackupSchedule = void 0;
4
+ var BackupSchedule;
5
+ (function (BackupSchedule) {
6
+ BackupSchedule["HOURLY"] = "hourly";
7
+ BackupSchedule["DAILY"] = "daily";
8
+ BackupSchedule["WEEKLY"] = "weekly";
9
+ })(BackupSchedule || (exports.BackupSchedule = BackupSchedule = {}));
10
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/backup.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;IACf,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB"}
@@ -1,3 +1,4 @@
1
+ export { Backup, BackupSchedule } from './backup.js';
1
2
  export { getGitBuildInfo } from './build.js';
2
3
  export { CommonDataTags } from './data.js';
3
4
  export { SecurityClassification } from './security.js';
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyTagsData = exports.applyTags = exports.SecurityClassification = exports.CommonDataTags = exports.getGitBuildInfo = void 0;
3
+ exports.applyTagsData = exports.applyTags = exports.SecurityClassification = exports.CommonDataTags = exports.getGitBuildInfo = exports.BackupSchedule = void 0;
4
+ var backup_js_1 = require("./backup.js");
5
+ Object.defineProperty(exports, "BackupSchedule", { enumerable: true, get: function () { return backup_js_1.BackupSchedule; } });
4
6
  var build_js_1 = require("./build.js");
5
7
  Object.defineProperty(exports, "getGitBuildInfo", { enumerable: true, get: function () { return build_js_1.getGitBuildInfo; } });
6
8
  var data_js_1 = require("./data.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,6CAAuD;AAA9C,qHAAA,sBAAsB,OAAA;AAE/B,qCAAqD;AAA5C,oGAAA,SAAS,OAAA;AAAE,wGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqD;AAApC,2GAAA,cAAc,OAAA;AAC/B,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AACxB,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AACvB,6CAAuD;AAA9C,qHAAA,sBAAsB,OAAA;AAE/B,qCAAqD;AAA5C,oGAAA,SAAS,OAAA;AAAE,wGAAA,aAAa,OAAA"}
@@ -1 +1 @@
1
- export type ResponderTeam = 'LANDONLINE - Common Services' | 'LANDONLINE - Datacom' | 'LANDONLINE - Dealings' | 'LANDONLINE - Enablement' | 'LANDONLINE - L2 Technical Support' | 'LANDONLINE - Legacy Landonline' | 'LANDONLINE - Search' | 'LANDONLINE - Survey External' | 'LANDONLINE - Titles Internal' | 'LINZ - Enterprise Platforms' | 'LINZ - Basemaps' | 'LINZ - Security';
1
+ export type ResponderTeam = 'LANDONLINE - Common Services' | 'LANDONLINE - Datacom' | 'LANDONLINE - Dealings' | 'LANDONLINE - Enablement' | 'LANDONLINE - L2 Technical Support' | 'LANDONLINE - Legacy Landonline' | 'LANDONLINE - Search' | 'LANDONLINE - Survey External' | 'LANDONLINE - Titles Internal' | 'LI - Basemaps' | 'LI - Geospatial Data Engineering' | 'LINZ - Enterprise Platforms' | 'LINZ - Security';
@@ -1,4 +1,5 @@
1
1
  import { IConstruct } from 'constructs';
2
+ import { Backup } from './backup.js';
2
3
  import { TagsData } from './data.js';
3
4
  import { ResponderTeam } from './responder-teams.js';
4
5
  import { SecurityClassification } from './security.js';
@@ -10,7 +11,7 @@ export interface TagsBase {
10
11
  *
11
12
  * @see AwsEnv in @linz/accounts
12
13
  */
13
- environment: 'nonprod' | 'preprod' | 'prod';
14
+ environment: 'nonprod' | 'preprod' | 'prod' | 'postprod';
14
15
  /**
15
16
  * Application name
16
17
  *
@@ -58,6 +59,9 @@ export interface TagsBase {
58
59
  skipGitInfo?: boolean;
59
60
  /** Data classification tags */
60
61
  data?: TagsData;
62
+ /** Backup requirements */
63
+ backup?: Backup;
61
64
  }
62
65
  export declare function applyTags(construct: IConstruct, ctx: TagsBase): void;
63
66
  export declare function applyTagsData(construct: IConstruct, tags: TagsData): void;
67
+ export declare function applyTagsBackup(construct: IConstruct, tags: Backup): void;
package/build/src/tags.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.applyTags = applyTags;
4
4
  exports.applyTagsData = applyTagsData;
5
+ exports.applyTagsBackup = applyTagsBackup;
5
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
6
7
  const build_js_1 = require("./build.js");
7
8
  const security_js_1 = require("./security.js");
@@ -42,10 +43,19 @@ function applyTags(construct, ctx) {
42
43
  tag(construct, 'linz.security.classification', ctx.classification);
43
44
  if (ctx.data)
44
45
  applyTagsData(construct, ctx.data);
46
+ // Backup
47
+ if (ctx.backup)
48
+ applyTagsBackup(construct, ctx.backup);
45
49
  }
46
50
  function applyTagsData(construct, tags) {
47
51
  tag(construct, 'linz.data.role', tags.role);
48
52
  tag(construct, 'linz.data.is-master', String(tags.isMaster ?? false));
49
53
  tag(construct, 'linz.data.is-public', String(tags.isPublic ?? false));
50
54
  }
55
+ // Backup tags
56
+ function applyTagsBackup(construct, tags) {
57
+ tag(construct, 'linz.backup.enabled', String(true));
58
+ tag(construct, 'linz.backup.retention', String(tags.retention ?? '30'));
59
+ tag(construct, 'linz.backup.schedule', String(tags.schedule ?? 'daily'));
60
+ }
51
61
  //# sourceMappingURL=tags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tags.ts"],"names":[],"mappings":";;AAiFA,8BA+BC;AAED,sCAIC;AAtHD,6CAAmC;AAGnC,yCAA6C;AAG7C,+CAAuD;AAmEvD,6EAA6E;AAC7E,SAAS,GAAG,CAAC,SAAqB,EAAE,GAAW,EAAE,KAAgC;IAC/E,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IAC1B,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO;IAEzB,kBAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,SAAS,CAAC,SAAqB,EAAE,GAAa;IAC5D,iCAAiC;IACjC,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC,cAAc,KAAK,oCAAsB,CAAC,YAAY,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,0BAAe,GAAE,CAAC;IAElE,oBAAoB;IACpB,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,SAAS;QAAE,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACrE,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAEpD,iBAAiB;IACjB,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,GAAG,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAC;IACrE,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE9C,WAAW;IACX,IAAI,SAAS;QAAE,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/D,GAAG,CAAC,SAAS,EAAE,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAE1F,mCAAmC;IACnC,IAAI,SAAS;QAAE,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAElE,WAAW;IACX,GAAG,CAAC,SAAS,EAAE,8BAA8B,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACnE,IAAI,GAAG,CAAC,IAAI;QAAE,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,aAAa,CAAC,SAAqB,EAAE,IAAc;IACjE,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,GAAG,CAAC,SAAS,EAAE,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;IACtE,GAAG,CAAC,SAAS,EAAE,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/tags.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linzjs/cdk-tags",
3
- "version": "1.7.1",
3
+ "version": "1.8.0",
4
4
  "main": "build/src/index.js",
5
5
  "types": "build/src/index.d.ts",
6
6
  "files": [
@@ -32,6 +32,6 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "@linzjs/style": "^5.4.0",
35
- "@types/node": "^22.13.10"
35
+ "@types/node": "^24.0.10"
36
36
  }
37
37
  }