@aws-cdk/aws-s3tables-alpha 2.208.0-alpha.0 → 2.209.0-alpha.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/.jsii +1294 -84
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +111 -1
- package/README.md +55 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/namespace.d.ts +81 -0
- package/lib/namespace.js +117 -0
- package/lib/table-bucket-policy.js +1 -1
- package/lib/table-bucket.js +1 -1
- package/lib/table.d.ts +246 -0
- package/lib/table.js +163 -0
- package/package.json +7 -7
- package/rosetta/default.ts-fixture +5 -1
package/lib/table.d.ts
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { Resource, IResource, RemovalPolicy } from 'aws-cdk-lib/core';
|
|
2
|
+
import { INamespace } from './namespace';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
/**
|
|
5
|
+
* Represents an S3 Table.
|
|
6
|
+
*/
|
|
7
|
+
export interface ITable extends IResource {
|
|
8
|
+
/**
|
|
9
|
+
* The ARN of this table.
|
|
10
|
+
* @attribute
|
|
11
|
+
*/
|
|
12
|
+
readonly tableArn: string;
|
|
13
|
+
/**
|
|
14
|
+
* The name of this table.
|
|
15
|
+
* @attribute
|
|
16
|
+
*/
|
|
17
|
+
readonly tableName: string;
|
|
18
|
+
/**
|
|
19
|
+
* The accountId containing this table.
|
|
20
|
+
* @attribute
|
|
21
|
+
*/
|
|
22
|
+
readonly account?: string;
|
|
23
|
+
/**
|
|
24
|
+
* The region containing this table.
|
|
25
|
+
* @attribute
|
|
26
|
+
*/
|
|
27
|
+
readonly region?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Base class for Table implementations.
|
|
31
|
+
*/
|
|
32
|
+
declare abstract class TableBase extends Resource implements ITable {
|
|
33
|
+
abstract readonly tableName: string;
|
|
34
|
+
abstract readonly tableArn: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Properties for creating a new S3 Table.
|
|
38
|
+
*/
|
|
39
|
+
export interface TableProps {
|
|
40
|
+
/**
|
|
41
|
+
* Name of this table, unique within the namespace
|
|
42
|
+
*/
|
|
43
|
+
readonly tableName: string;
|
|
44
|
+
/**
|
|
45
|
+
* The namespace under which this table is created
|
|
46
|
+
*/
|
|
47
|
+
readonly namespace: INamespace;
|
|
48
|
+
/**
|
|
49
|
+
* Format of this table. Currently, the only supported value is OpenTableFormat.ICEBERG.
|
|
50
|
+
*/
|
|
51
|
+
readonly openTableFormat: OpenTableFormat;
|
|
52
|
+
/**
|
|
53
|
+
* Settings governing the Compaction maintenance action.
|
|
54
|
+
* @default Amazon S3 selects the best compaction strategy based on your table sort order.
|
|
55
|
+
* @see https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html
|
|
56
|
+
*/
|
|
57
|
+
readonly compaction?: CompactionProperty;
|
|
58
|
+
/**
|
|
59
|
+
* Contains details about the metadata for an Iceberg table.
|
|
60
|
+
* @default table is created without any metadata
|
|
61
|
+
*/
|
|
62
|
+
readonly icebergMetadata?: IcebergMetadataProperty;
|
|
63
|
+
/**
|
|
64
|
+
* Contains details about the snapshot management settings for an Iceberg table.
|
|
65
|
+
* @default enabled: MinimumSnapshots is 1 by default and MaximumSnapshotAge is 120 hours by default.
|
|
66
|
+
*/
|
|
67
|
+
readonly snapshotManagement?: SnapshotManagementProperty;
|
|
68
|
+
/**
|
|
69
|
+
* Controls what happens to this table it it stoped being managed by cloudformation.
|
|
70
|
+
*
|
|
71
|
+
* @default RETAIN
|
|
72
|
+
*/
|
|
73
|
+
readonly removalPolicy?: RemovalPolicy;
|
|
74
|
+
/**
|
|
75
|
+
* If true, indicates that you don't want to specify a schema for the table.
|
|
76
|
+
*
|
|
77
|
+
* This property is mutually exclusive to 'IcebergMetadata'.
|
|
78
|
+
*
|
|
79
|
+
* @default false
|
|
80
|
+
*/
|
|
81
|
+
readonly withoutMetadata?: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Supported open table formats.
|
|
85
|
+
*/
|
|
86
|
+
export declare enum OpenTableFormat {
|
|
87
|
+
/**
|
|
88
|
+
* Apache Iceberg table format.
|
|
89
|
+
*/
|
|
90
|
+
ICEBERG = "ICEBERG"
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Settings governing the Compaction maintenance action.
|
|
94
|
+
*
|
|
95
|
+
* @default - No compaction settings
|
|
96
|
+
*/
|
|
97
|
+
export interface CompactionProperty {
|
|
98
|
+
/**
|
|
99
|
+
* Status of the compaction maintenance action.
|
|
100
|
+
*/
|
|
101
|
+
readonly status: Status;
|
|
102
|
+
/**
|
|
103
|
+
* Target file size in megabytes for compaction.
|
|
104
|
+
*/
|
|
105
|
+
readonly targetFileSizeMb: number;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Status values for maintenance actions.
|
|
109
|
+
*/
|
|
110
|
+
export declare enum Status {
|
|
111
|
+
/**
|
|
112
|
+
* Enable the maintenance action.
|
|
113
|
+
*/
|
|
114
|
+
ENABLED = "enabled",
|
|
115
|
+
/**
|
|
116
|
+
* Disable the maintenance action.
|
|
117
|
+
*/
|
|
118
|
+
DISABLED = "disabled"
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Contains details about the metadata for an Iceberg table.
|
|
122
|
+
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html
|
|
123
|
+
*/
|
|
124
|
+
export interface IcebergMetadataProperty {
|
|
125
|
+
/**
|
|
126
|
+
* Contains details about the schema for an Iceberg table.
|
|
127
|
+
*
|
|
128
|
+
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3tables-table-icebergmetadata.html#cfn-s3tables-table-icebergmetadata-icebergschema
|
|
129
|
+
*/
|
|
130
|
+
readonly icebergSchema: IcebergSchemaProperty;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Contains details about the schema for an Iceberg table.
|
|
134
|
+
*/
|
|
135
|
+
export interface IcebergSchemaProperty {
|
|
136
|
+
/**
|
|
137
|
+
* Contains details about the schema for an Iceberg table.
|
|
138
|
+
*/
|
|
139
|
+
readonly schemaFieldList: SchemaFieldProperty[];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Contains details about a schema field.
|
|
143
|
+
*/
|
|
144
|
+
export interface SchemaFieldProperty {
|
|
145
|
+
/**
|
|
146
|
+
* The name of the field.
|
|
147
|
+
*/
|
|
148
|
+
readonly name: string;
|
|
149
|
+
/**
|
|
150
|
+
* A Boolean value that specifies whether values are required for each row in this field.
|
|
151
|
+
*
|
|
152
|
+
* By default, this is `false` and null values are allowed in the field. If this is `true`, the field does not allow null values.
|
|
153
|
+
*
|
|
154
|
+
* @default false
|
|
155
|
+
*/
|
|
156
|
+
readonly required?: boolean;
|
|
157
|
+
/**
|
|
158
|
+
* The field type.
|
|
159
|
+
*
|
|
160
|
+
* S3 Tables supports all Apache Iceberg primitive types. For more information, see the [Apache Iceberg documentation](https://docs.aws.amazon.com/https://iceberg.apache.org/spec/#primitive-types).
|
|
161
|
+
*/
|
|
162
|
+
readonly type: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Contains details about the snapshot management settings for an Iceberg table.
|
|
166
|
+
*
|
|
167
|
+
* A snapshot is expired when it exceeds MinSnapshotsToKeep and MaxSnapshotAgeHours.
|
|
168
|
+
*
|
|
169
|
+
* @default - No snapshot management settings
|
|
170
|
+
*/
|
|
171
|
+
export interface SnapshotManagementProperty {
|
|
172
|
+
/**
|
|
173
|
+
* The maximum age of a snapshot before it can be expired.
|
|
174
|
+
*
|
|
175
|
+
* @default - No maximum age
|
|
176
|
+
*/
|
|
177
|
+
readonly maxSnapshotAgeHours?: number;
|
|
178
|
+
/**
|
|
179
|
+
* The minimum number of snapshots to keep.
|
|
180
|
+
*
|
|
181
|
+
* @default - No minimum number
|
|
182
|
+
*/
|
|
183
|
+
readonly minSnapshotsToKeep?: number;
|
|
184
|
+
/**
|
|
185
|
+
* Indicates whether the SnapshotManagement maintenance action is enabled.
|
|
186
|
+
*
|
|
187
|
+
* @default - Not specified
|
|
188
|
+
*/
|
|
189
|
+
readonly status?: Status;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* A reference to a table outside this stack
|
|
193
|
+
*
|
|
194
|
+
* The tableName, region, and account can be provided explicitly
|
|
195
|
+
* or will be inferred from the tableArn
|
|
196
|
+
*/
|
|
197
|
+
export interface TableAttributes {
|
|
198
|
+
/**
|
|
199
|
+
* Name of this table
|
|
200
|
+
*/
|
|
201
|
+
readonly tableName: string;
|
|
202
|
+
/**
|
|
203
|
+
* The table's ARN.
|
|
204
|
+
*/
|
|
205
|
+
readonly tableArn: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* An S3 Table with helpers.
|
|
209
|
+
*/
|
|
210
|
+
export declare class Table extends TableBase {
|
|
211
|
+
/** Uniquely identifies this class. */
|
|
212
|
+
static readonly PROPERTY_INJECTION_ID: string;
|
|
213
|
+
/**
|
|
214
|
+
* Defines a Table construct that represents an external table.
|
|
215
|
+
*
|
|
216
|
+
* @param scope The parent creating construct (usually `this`).
|
|
217
|
+
* @param id The construct's name.
|
|
218
|
+
* @param attrs A `TableAttributes` object containing the table name and ARN.
|
|
219
|
+
*/
|
|
220
|
+
static fromTableAttributes(scope: Construct, id: string, attrs: TableAttributes): ITable;
|
|
221
|
+
/**
|
|
222
|
+
* See https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-naming.html
|
|
223
|
+
* @param tableName Name of the table
|
|
224
|
+
* @throws UnscopedValidationError if any naming errors are detected
|
|
225
|
+
*/
|
|
226
|
+
static validateTableName(tableName: string): void;
|
|
227
|
+
/**
|
|
228
|
+
* The unique Amazon Resource Name (arn) of this table
|
|
229
|
+
*/
|
|
230
|
+
readonly tableArn: string;
|
|
231
|
+
/**
|
|
232
|
+
* The underlying CfnTable L1 resource
|
|
233
|
+
* @internal
|
|
234
|
+
*/
|
|
235
|
+
private readonly _resource;
|
|
236
|
+
/**
|
|
237
|
+
* The name of this table
|
|
238
|
+
*/
|
|
239
|
+
readonly tableName: string;
|
|
240
|
+
/**
|
|
241
|
+
* The namespace containing this table
|
|
242
|
+
*/
|
|
243
|
+
readonly namespace: INamespace;
|
|
244
|
+
constructor(scope: Construct, id: string, props: TableProps);
|
|
245
|
+
}
|
|
246
|
+
export {};
|
package/lib/table.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var _a;
|
|
9
|
+
var Table_1;
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.Table = exports.Status = exports.OpenTableFormat = void 0;
|
|
12
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
13
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
14
|
+
const core_1 = require("aws-cdk-lib/core");
|
|
15
|
+
const aws_s3tables_1 = require("aws-cdk-lib/aws-s3tables");
|
|
16
|
+
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
17
|
+
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
18
|
+
const os_1 = require("os");
|
|
19
|
+
/**
|
|
20
|
+
* Base class for Table implementations.
|
|
21
|
+
*/
|
|
22
|
+
class TableBase extends core_1.Resource {
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Supported open table formats.
|
|
26
|
+
*/
|
|
27
|
+
var OpenTableFormat;
|
|
28
|
+
(function (OpenTableFormat) {
|
|
29
|
+
/**
|
|
30
|
+
* Apache Iceberg table format.
|
|
31
|
+
*/
|
|
32
|
+
OpenTableFormat["ICEBERG"] = "ICEBERG";
|
|
33
|
+
})(OpenTableFormat || (exports.OpenTableFormat = OpenTableFormat = {}));
|
|
34
|
+
/**
|
|
35
|
+
* Status values for maintenance actions.
|
|
36
|
+
*/
|
|
37
|
+
var Status;
|
|
38
|
+
(function (Status) {
|
|
39
|
+
/**
|
|
40
|
+
* Enable the maintenance action.
|
|
41
|
+
*/
|
|
42
|
+
Status["ENABLED"] = "enabled";
|
|
43
|
+
/**
|
|
44
|
+
* Disable the maintenance action.
|
|
45
|
+
*/
|
|
46
|
+
Status["DISABLED"] = "disabled";
|
|
47
|
+
})(Status || (exports.Status = Status = {}));
|
|
48
|
+
/**
|
|
49
|
+
* An S3 Table with helpers.
|
|
50
|
+
*/
|
|
51
|
+
let Table = Table_1 = class Table extends TableBase {
|
|
52
|
+
/**
|
|
53
|
+
* Defines a Table construct that represents an external table.
|
|
54
|
+
*
|
|
55
|
+
* @param scope The parent creating construct (usually `this`).
|
|
56
|
+
* @param id The construct's name.
|
|
57
|
+
* @param attrs A `TableAttributes` object containing the table name and ARN.
|
|
58
|
+
*/
|
|
59
|
+
static fromTableAttributes(scope, id, attrs) {
|
|
60
|
+
try {
|
|
61
|
+
jsiiDeprecationWarnings._aws_cdk_aws_s3tables_alpha_TableAttributes(attrs);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
65
|
+
Error.captureStackTrace(error, this.fromTableAttributes);
|
|
66
|
+
}
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
const tableArn = attrs.tableArn;
|
|
70
|
+
Table_1.validateTableName(attrs.tableName);
|
|
71
|
+
class Import extends TableBase {
|
|
72
|
+
constructor() {
|
|
73
|
+
super(...arguments);
|
|
74
|
+
this.tableName = attrs.tableName;
|
|
75
|
+
this.tableArn = tableArn;
|
|
76
|
+
this.autoCreatePolicy = false;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Exports this from the stack.
|
|
80
|
+
*/
|
|
81
|
+
export() {
|
|
82
|
+
return attrs;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return new Import(scope, id, {
|
|
86
|
+
environmentFromArn: tableArn,
|
|
87
|
+
physicalName: tableArn,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* See https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets-naming.html
|
|
92
|
+
* @param tableName Name of the table
|
|
93
|
+
* @throws UnscopedValidationError if any naming errors are detected
|
|
94
|
+
*/
|
|
95
|
+
static validateTableName(tableName) {
|
|
96
|
+
if (tableName == undefined || core_1.Token.isUnresolved(tableName)) {
|
|
97
|
+
// the name is a late-bound value, not a defined string, so skip validation
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const errors = [];
|
|
101
|
+
// Length validation
|
|
102
|
+
if (tableName.length < 1 || tableName.length > 255) {
|
|
103
|
+
errors.push('Table name must be at least 1 and no more than 255 characters');
|
|
104
|
+
}
|
|
105
|
+
// Character set validation
|
|
106
|
+
const illegalCharsetRegEx = /[^a-z0-9_]/;
|
|
107
|
+
const allowedEdgeCharsetRegEx = /[a-z0-9]/;
|
|
108
|
+
const illegalCharMatch = tableName.match(illegalCharsetRegEx);
|
|
109
|
+
if (illegalCharMatch) {
|
|
110
|
+
errors.push('Table name must only contain lowercase characters, numbers, and underscores (_)' +
|
|
111
|
+
` (offset: ${illegalCharMatch.index})`);
|
|
112
|
+
}
|
|
113
|
+
// Edge character validation
|
|
114
|
+
if (!allowedEdgeCharsetRegEx.test(tableName.charAt(0))) {
|
|
115
|
+
errors.push('Table name must start with a lowercase letter or number (offset: 0)');
|
|
116
|
+
}
|
|
117
|
+
if (!allowedEdgeCharsetRegEx.test(tableName.charAt(tableName.length - 1))) {
|
|
118
|
+
errors.push(`Table name must end with a lowercase letter or number (offset: ${tableName.length - 1})`);
|
|
119
|
+
}
|
|
120
|
+
if (errors.length > 0) {
|
|
121
|
+
throw new core_1.UnscopedValidationError(`Invalid S3 table name (value: ${tableName})${os_1.EOL}${errors.join(os_1.EOL)}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
constructor(scope, id, props) {
|
|
125
|
+
super(scope, id, {});
|
|
126
|
+
try {
|
|
127
|
+
jsiiDeprecationWarnings._aws_cdk_aws_s3tables_alpha_TableProps(props);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
131
|
+
Error.captureStackTrace(error, Table);
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
// Enhanced CDK Analytics Telemetry
|
|
136
|
+
(0, metadata_resource_1.addConstructMetadata)(this, props);
|
|
137
|
+
Table_1.validateTableName(props.tableName);
|
|
138
|
+
this._resource = new aws_s3tables_1.CfnTable(this, id, {
|
|
139
|
+
tableName: props.tableName,
|
|
140
|
+
openTableFormat: props.openTableFormat,
|
|
141
|
+
tableBucketArn: props.namespace.tableBucket.tableBucketArn,
|
|
142
|
+
namespace: props.namespace.namespaceName,
|
|
143
|
+
compaction: props.compaction,
|
|
144
|
+
icebergMetadata: props.icebergMetadata,
|
|
145
|
+
snapshotManagement: props.snapshotManagement,
|
|
146
|
+
withoutMetadata: props.withoutMetadata ? 'Yes' : undefined,
|
|
147
|
+
});
|
|
148
|
+
this.namespace = props.namespace;
|
|
149
|
+
this.tableName = props.tableName;
|
|
150
|
+
this.tableArn = this._resource.attrTableArn;
|
|
151
|
+
this._resource.applyRemovalPolicy(props.removalPolicy);
|
|
152
|
+
this.node.addDependency(this.namespace);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
exports.Table = Table;
|
|
156
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
157
|
+
Table[_a] = { fqn: "@aws-cdk/aws-s3tables-alpha.Table", version: "2.209.0-alpha.0" };
|
|
158
|
+
/** Uniquely identifies this class. */
|
|
159
|
+
Table.PROPERTY_INJECTION_ID = '@aws-cdk.aws-s3tables-alpha.Table';
|
|
160
|
+
exports.Table = Table = Table_1 = __decorate([
|
|
161
|
+
prop_injectable_1.propertyInjectable
|
|
162
|
+
], Table);
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsMkNBTTBCO0FBRTFCLDJEQUFvRDtBQUNwRCw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLDJCQUF5QjtBQStCekI7O0dBRUc7QUFDSCxNQUFlLFNBQVUsU0FBUSxlQUFRO0NBR3hDO0FBa0REOztHQUVHO0FBQ0gsSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3pCOztPQUVHO0lBQ0gsc0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGVBQWUsK0JBQWYsZUFBZSxRQUsxQjtBQWtCRDs7R0FFRztBQUNILElBQVksTUFTWDtBQVRELFdBQVksTUFBTTtJQUNoQjs7T0FFRztJQUNILDZCQUFtQixDQUFBO0lBQ25COztPQUVHO0lBQ0gsK0JBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVRXLE1BQU0sc0JBQU4sTUFBTSxRQVNqQjtBQW1HRDs7R0FFRztBQUVJLElBQU0sS0FBSyxhQUFYLE1BQU0sS0FBTSxTQUFRLFNBQVM7SUFJbEM7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLG1CQUFtQixDQUMvQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBc0I7Ozs7Ozs7Ozs7UUFFdEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNoQyxPQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXpDLE1BQU0sTUFBTyxTQUFRLFNBQVM7WUFBOUI7O2dCQUNrQixjQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDNUIsYUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDMUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1lBUTlDLENBQUM7WUFOQzs7ZUFFRztZQUNJLE1BQU07Z0JBQ1gsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1NBQ0Y7UUFFRCxPQUFPLElBQUksTUFB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QUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN6Qzs7QUF4SVUsc0JBQUs7OztBQUNoQixzQ0FBc0M7QUFDZiwyQkFBcUIsR0FBVyxtQ0FBbUMsQUFBOUMsQ0FBK0M7Z0JBRmhGLEtBQUs7SUFEakIsb0NBQWtCO0dBQ04sS0FBSyxDQXlJakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSZXNvdXJjZSxcbiAgSVJlc291cmNlLFxuICBSZW1vdmFsUG9saWN5LFxuICBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcixcbiAgVG9rZW4sXG59IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgSU5hbWVzcGFjZSB9IGZyb20gJy4vbmFtZXNwYWNlJztcbmltcG9ydCB7IENmblRhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzdGFibGVzJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gUzMgVGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhpcyB0YWJsZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB0YWJsZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50SWQgY29udGFpbmluZyB0aGlzIHRhYmxlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIGNvbnRhaW5pbmcgdGhpcyB0YWJsZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIFRhYmxlIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgVGFibGVCYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVGFibGUge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgbmV3IFMzIFRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIHRhYmxlLCB1bmlxdWUgd2l0aGluIHRoZSBuYW1lc3BhY2VcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSB1bmRlciB3aGljaCB0aGlzIHRhYmxlIGlzIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZTogSU5hbWVzcGFjZTtcbiAgLyoqXG4gICAqIEZvcm1hdCBvZiB0aGlzIHRhYmxlLiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCB2YWx1ZSBpcyBPcGVuVGFibGVGb3JtYXQuSUNFQkVSRy5cbiAgICovXG4gIHJlYWRvbmx5IG9wZW5UYWJsZUZvcm1hdDogT3BlblRhYmxlRm9ybWF0O1xuICAvKipcbiAgICogU2V0dGluZ3MgZ292ZXJuaW5nIHRoZSBDb21wYWN0aW9uIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICogQGRlZmF1bHQgQW1hem9uIFMzIHNlbGVjdHMgdGhlIGJlc3QgY29tcGFjdGlvbiBzdHJhdGVneSBiYXNlZCBvbiB5b3VyIHRhYmxlIHNvcnQgb3JkZXIuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGVzLW1haW50ZW5hbmNlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhY3Rpb24/OiBDb21wYWN0aW9uUHJvcGVydHk7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAgICogQGRlZmF1bHQgdGFibGUgaXMgY3JlYXRlZCB3aXRob3V0IGFueSBtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgaWNlYmVyZ01ldGFkYXRhPzogSWNlYmVyZ01ldGFkYXRhUHJvcGVydHk7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICAgKiBAZGVmYXVsdCBlbmFibGVkOiBNaW5pbXVtU25hcHNob3RzIGlzIDEgYnkgZGVmYXVsdCBhbmQgTWF4aW11bVNuYXBzaG90QWdlIGlzIDEyMCBob3VycyBieSBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RNYW5hZ2VtZW50PzogU25hcHNob3RNYW5hZ2VtZW50UHJvcGVydHk7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGF0IGhhcHBlbnMgdG8gdGhpcyB0YWJsZSBpdCBpdCBzdG9wZWQgYmVpbmcgbWFuYWdlZCBieSBjbG91ZGZvcm1hdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbiAgLyoqXG4gICAqIElmIHRydWUsIGluZGljYXRlcyB0aGF0IHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgYSBzY2hlbWEgZm9yIHRoZSB0YWJsZS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyBtdXR1YWxseSBleGNsdXNpdmUgdG8gJ0ljZWJlcmdNZXRhZGF0YScuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3aXRob3V0TWV0YWRhdGE/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN1cHBvcnRlZCBvcGVuIHRhYmxlIGZvcm1hdHMuXG4gKi9cbmV4cG9ydCBlbnVtIE9wZW5UYWJsZUZvcm1hdCB7XG4gIC8qKlxuICAgKiBBcGFjaGUgSWNlYmVyZyB0YWJsZSBmb3JtYXQuXG4gICAqL1xuICBJQ0VCRVJHID0gJ0lDRUJFUkcnLFxufVxuXG4vKipcbiAqIFNldHRpbmdzIGdvdmVybmluZyB0aGUgQ29tcGFjdGlvbiBtYWludGVuYW5jZSBhY3Rpb24uXG4gKlxuICogQGRlZmF1bHQgLSBObyBjb21wYWN0aW9uIHNldHRpbmdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFjdGlvblByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFN0YXR1cyBvZiB0aGUgY29tcGFjdGlvbiBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6IFN0YXR1cztcbiAgLyoqXG4gICAqIFRhcmdldCBmaWxlIHNpemUgaW4gbWVnYWJ5dGVzIGZvciBjb21wYWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0RmlsZVNpemVNYjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0YXR1cyB2YWx1ZXMgZm9yIG1haW50ZW5hbmNlIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFN0YXR1cyB7XG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIG1haW50ZW5hbmNlIGFjdGlvbi5cbiAgICovXG4gIEVOQUJMRUQgPSAnZW5hYmxlZCcsXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtYWludGVuYW5jZSBhY3Rpb24uXG4gICAqL1xuICBESVNBQkxFRCA9ICdkaXNhYmxlZCcsXG59XG5cbi8qKlxuICogQ29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgbWV0YWRhdGEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY2ViZXJnTWV0YWRhdGFQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zM3RhYmxlcy10YWJsZS1pY2ViZXJnbWV0YWRhdGEuaHRtbCNjZm4tczN0YWJsZXMtdGFibGUtaWNlYmVyZ21ldGFkYXRhLWljZWJlcmdzY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IGljZWJlcmdTY2hlbWE6IEljZWJlcmdTY2hlbWFQcm9wZXJ0eTtcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzY2hlbWEgZm9yIGFuIEljZWJlcmcgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWNlYmVyZ1NjaGVtYVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIHNjaGVtYSBmb3IgYW4gSWNlYmVyZyB0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVtYUZpZWxkTGlzdDogU2NoZW1hRmllbGRQcm9wZXJ0eVtdO1xufVxuXG4vKipcbiAqIENvbnRhaW5zIGRldGFpbHMgYWJvdXQgYSBzY2hlbWEgZmllbGQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hRmllbGRQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgQm9vbGVhbiB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIHZhbHVlcyBhcmUgcmVxdWlyZWQgZm9yIGVhY2ggcm93IGluIHRoaXMgZmllbGQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaXMgYGZhbHNlYCBhbmQgbnVsbCB2YWx1ZXMgYXJlIGFsbG93ZWQgaW4gdGhlIGZpZWxkLiBJZiB0aGlzIGlzIGB0cnVlYCwgdGhlIGZpZWxkIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZmllbGQgdHlwZS5cbiAgICpcbiAgICogUzMgVGFibGVzIHN1cHBvcnRzIGFsbCBBcGFjaGUgSWNlYmVyZyBwcmltaXRpdmUgdHlwZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIFtBcGFjaGUgSWNlYmVyZyBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaHR0cHM6Ly9pY2ViZXJnLmFwYWNoZS5vcmcvc3BlYy8jcHJpbWl0aXZlLXR5cGVzKS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250YWlucyBkZXRhaWxzIGFib3V0IHRoZSBzbmFwc2hvdCBtYW5hZ2VtZW50IHNldHRpbmdzIGZvciBhbiBJY2ViZXJnIHRhYmxlLlxuICpcbiAqIEEgc25hcHNob3QgaXMgZXhwaXJlZCB3aGVuIGl0IGV4Y2VlZHMgTWluU25hcHNob3RzVG9LZWVwIGFuZCBNYXhTbmFwc2hvdEFnZUhvdXJzLlxuICpcbiAqIEBkZWZhdWx0IC0gTm8gc25hcHNob3QgbWFuYWdlbWVudCBzZXR0aW5nc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNuYXBzaG90TWFuYWdlbWVudFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHNuYXBzaG90IGJlZm9yZSBpdCBjYW4gYmUgZXhwaXJlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBtYXhpbXVtIGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U25hcHNob3RBZ2VIb3Vycz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHNuYXBzaG90cyB0byBrZWVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG1pbmltdW0gbnVtYmVyXG4gICAqL1xuICByZWFkb25seSBtaW5TbmFwc2hvdHNUb0tlZXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBTbmFwc2hvdE1hbmFnZW1lbnQgbWFpbnRlbmFuY2UgYWN0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogU3RhdHVzO1xufVxuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgdGFibGUgb3V0c2lkZSB0aGlzIHN0YWNrXG4gKlxuICogVGhlIHRhYmxlTmFtZSwgcmVnaW9uLCBhbmQgYWNjb3VudCBjYW4gYmUgcHJvdmlkZWQgZXhwbGljaXRseVxuICogb3Igd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSB0YWJsZUFyblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFibGUncyBBUk4uXG4gICAqL1xuICByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIFMzIFRhYmxlIHdpdGggaGVscGVycy5cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFRhYmxlIGV4dGVuZHMgVGFibGVCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtczN0YWJsZXMtYWxwaGEuVGFibGUnO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgVGFibGUgY29uc3RydWN0IHRoYXQgcmVwcmVzZW50cyBhbiBleHRlcm5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY3JlYXRpbmcgY29uc3RydWN0ICh1c3VhbGx5IGB0aGlzYCkuXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZS5cbiAgICogQHBhcmFtIGF0dHJzIEEgYFRhYmxlQXR0cmlidXRlc2Agb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRhYmxlIG5hbWUgYW5kIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRhYmxlQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IFRhYmxlQXR0cmlidXRlcyxcbiAgKTogSVRhYmxlIHtcbiAgICBjb25zdCB0YWJsZUFybiA9IGF0dHJzLnRhYmxlQXJuO1xuICAgIFRhYmxlLnZhbGlkYXRlVGFibGVOYW1lKGF0dHJzLnRhYmxlTmFtZSk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBUYWJsZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZSA9IGF0dHJzLnRhYmxlTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB0YWJsZUFybiA9IHRhYmxlQXJuO1xuICAgICAgcHJvdGVjdGVkIGF1dG9DcmVhdGVQb2xpY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBFeHBvcnRzIHRoaXMgIGZyb20gdGhlIHN0YWNrLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZXhwb3J0KCkge1xuICAgICAgICByZXR1cm4gYXR0cnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IHRhYmxlQXJuLFxuICAgICAgcGh5c2ljYWxOYW1lOiB0YWJsZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvczMtdGFibGVzLWJ1Y2tldHMtbmFtaW5nLmh0bWxcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBOYW1lIG9mIHRoZSB0YWJsZVxuICAgKiBAdGhyb3dzIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yIGlmIGFueSBuYW1pbmcgZXJyb3JzIGFyZSBkZXRlY3RlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZVRhYmxlTmFtZSh0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIGlmICh0YWJsZU5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZCh0YWJsZU5hbWUpKSB7XG4gICAgICAvLyB0aGUgbmFtZSBpcyBhIGxhdGUtYm91bmQgdmFsdWUsIG5vdCBhIGRlZmluZWQgc3RyaW5nLCBzbyBza2lwIHZhbGlkYXRpb25cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBMZW5ndGggdmFsaWRhdGlvblxuICAgIGlmICh0YWJsZU5hbWUubGVuZ3RoIDwgMSB8fCB0YWJsZU5hbWUubGVuZ3RoID4gMjU1KSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBiZSBhdCBsZWFzdCAxIGFuZCBubyBtb3JlIHRoYW4gMjU1IGNoYXJhY3RlcnMnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGFyYWN0ZXIgc2V0IHZhbGlkYXRpb25cbiAgICBjb25zdCBpbGxlZ2FsQ2hhcnNldFJlZ0V4ID0gL1teYS16MC05X10vO1xuICAgIGNvbnN0IGFsbG93ZWRFZGdlQ2hhcnNldFJlZ0V4ID0gL1thLXowLTldLztcblxuICAgIGNvbnN0IGlsbGVnYWxDaGFyTWF0Y2ggPSB0YWJsZU5hbWUubWF0Y2goaWxsZWdhbENoYXJzZXRSZWdFeCk7XG4gICAgaWYgKGlsbGVnYWxDaGFyTWF0Y2gpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAnVGFibGUgbmFtZSBtdXN0IG9ubHkgY29udGFpbiBsb3dlcmNhc2UgY2hhcmFjdGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChfKScgK1xuICAgICAgICAgIGAgKG9mZnNldDogJHtpbGxlZ2FsQ2hhck1hdGNoLmluZGV4fSlgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFZGdlIGNoYXJhY3RlciB2YWxpZGF0aW9uXG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KHRhYmxlTmFtZS5jaGFyQXQoMCkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgJ1RhYmxlIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXJjYXNlIGxldHRlciBvciBudW1iZXIgKG9mZnNldDogMCknLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFhbGxvd2VkRWRnZUNoYXJzZXRSZWdFeC50ZXN0KHRhYmxlTmFtZS5jaGFyQXQodGFibGVOYW1lLmxlbmd0aCAtIDEpKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBUYWJsZSBuYW1lIG11c3QgZW5kIHdpdGggYSBsb3dlcmNhc2UgbGV0dGVyIG9yIG51bWJlciAob2Zmc2V0OiAke1xuICAgICAgICAgIHRhYmxlTmFtZS5sZW5ndGggLSAxXG4gICAgICAgIH0pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIFMzIHRhYmxlIG5hbWUgKHZhbHVlOiAke3RhYmxlTmFtZX0pJHtFT0x9JHtlcnJvcnMuam9pbihFT0wpfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChhcm4pIG9mIHRoaXMgdGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBDZm5UYWJsZSBMMSByZXNvdXJjZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc291cmNlOiBDZm5UYWJsZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIGNvbnRhaW5pbmcgdGhpcyB0YWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZTogSU5hbWVzcGFjZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge30pO1xuXG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBUYWJsZS52YWxpZGF0ZVRhYmxlTmFtZShwcm9wcy50YWJsZU5hbWUpO1xuXG4gICAgdGhpcy5fcmVzb3VyY2UgPSBuZXcgQ2ZuVGFibGUodGhpcywgaWQsIHtcbiAgICAgIHRhYmxlTmFtZTogcHJvcHMudGFibGVOYW1lLFxuICAgICAgb3BlblRhYmxlRm9ybWF0OiBwcm9wcy5vcGVuVGFibGVGb3JtYXQsXG4gICAgICB0YWJsZUJ1Y2tldEFybjogcHJvcHMubmFtZXNwYWNlLnRhYmxlQnVja2V0LnRhYmxlQnVja2V0QXJuLFxuICAgICAgbmFtZXNwYWNlOiBwcm9wcy5uYW1lc3BhY2UubmFtZXNwYWNlTmFtZSxcbiAgICAgIGNvbXBhY3Rpb246IHByb3BzLmNvbXBhY3Rpb24sXG4gICAgICBpY2ViZXJnTWV0YWRhdGE6IHByb3BzLmljZWJlcmdNZXRhZGF0YSxcbiAgICAgIHNuYXBzaG90TWFuYWdlbWVudDogcHJvcHMuc25hcHNob3RNYW5hZ2VtZW50LFxuICAgICAgd2l0aG91dE1ldGFkYXRhOiBwcm9wcy53aXRob3V0TWV0YWRhdGEgPyAnWWVzJyA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZXNwYWNlID0gcHJvcHMubmFtZXNwYWNlO1xuICAgIHRoaXMudGFibGVOYW1lID0gcHJvcHMudGFibGVOYW1lO1xuICAgIHRoaXMudGFibGVBcm4gPSB0aGlzLl9yZXNvdXJjZS5hdHRyVGFibGVBcm47XG4gICAgdGhpcy5fcmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpO1xuICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMubmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-s3tables-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.209.0-alpha.0",
|
|
5
5
|
"description": "CDK Constructs for S3 Tables",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -76,22 +76,22 @@
|
|
|
76
76
|
},
|
|
77
77
|
"license": "Apache-2.0",
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"aws-cdk-lib": "2.
|
|
80
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
81
|
-
"@aws-cdk/pkglint": "2.
|
|
79
|
+
"aws-cdk-lib": "2.209.0",
|
|
80
|
+
"@aws-cdk/cdk-build-tools": "2.209.0-alpha.0",
|
|
81
|
+
"@aws-cdk/pkglint": "2.209.0-alpha.0",
|
|
82
82
|
"@types/jest": "^29.5.14",
|
|
83
83
|
"constructs": "^10.0.0",
|
|
84
84
|
"jest": "^29.7.0",
|
|
85
|
-
"@aws-cdk/integ-tests-alpha": "2.
|
|
85
|
+
"@aws-cdk/integ-tests-alpha": "2.209.0-alpha.0"
|
|
86
86
|
},
|
|
87
87
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
88
88
|
"peerDependencies": {
|
|
89
|
-
"aws-cdk-lib": "^2.
|
|
89
|
+
"aws-cdk-lib": "^2.209.0",
|
|
90
90
|
"constructs": "^10.0.0"
|
|
91
91
|
},
|
|
92
92
|
"separate-module": false,
|
|
93
93
|
"engines": {
|
|
94
|
-
"node": ">=
|
|
94
|
+
"node": ">= 18.0.0"
|
|
95
95
|
},
|
|
96
96
|
"stability": "experimental",
|
|
97
97
|
"maturity": "experimental",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Construct } from 'constructs';
|
|
2
2
|
import { Stack } from 'aws-cdk-lib';
|
|
3
|
-
import { TableBucket, UnreferencedFileRemovalStatus, TableBucketEncryption } from '@aws-cdk/aws-s3tables-alpha';
|
|
3
|
+
import { TableBucket, UnreferencedFileRemovalStatus, TableBucketEncryption, Namespace, Table, Status, OpenTableFormat } from '@aws-cdk/aws-s3tables-alpha';
|
|
4
4
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
5
5
|
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
6
6
|
|
|
@@ -10,6 +10,10 @@ class Fixture extends Stack {
|
|
|
10
10
|
const tableBucket = new TableBucket(scope, 'ExampleTableBucket', {
|
|
11
11
|
tableBucketName: 'example-bucket-1'
|
|
12
12
|
});
|
|
13
|
+
const namespace = new Namespace(scope, 'ExampleNamespace', {
|
|
14
|
+
tableBucket: tableBucket,
|
|
15
|
+
namespaceName: 'example-namespace-1',
|
|
16
|
+
});
|
|
13
17
|
const stack = this;
|
|
14
18
|
/// here
|
|
15
19
|
}
|