@cdklabs/cdk-construct-connect-datalake 0.0.8 → 0.0.9

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 (36) hide show
  1. package/.jsii +9 -9
  2. package/.jsii.tabl.json +1 -1
  3. package/lib/index.js +1 -1
  4. package/node_modules/@aws-sdk/client-cloudformation/package.json +1 -1
  5. package/node_modules/@aws-sdk/client-connect/package.json +1 -1
  6. package/node_modules/@aws-sdk/client-glue/dist-cjs/schemas/schemas_0.js +5 -4
  7. package/node_modules/@aws-sdk/client-glue/dist-es/schemas/schemas_0.js +5 -4
  8. package/node_modules/@aws-sdk/client-glue/dist-types/commands/GetDataQualityRulesetEvaluationRunCommand.d.ts +1 -0
  9. package/node_modules/@aws-sdk/client-glue/dist-types/commands/ListDataQualityRulesetEvaluationRunsCommand.d.ts +1 -0
  10. package/node_modules/@aws-sdk/client-glue/dist-types/commands/StartDataQualityRulesetEvaluationRunCommand.d.ts +1 -0
  11. package/node_modules/@aws-sdk/client-glue/dist-types/models/models_1.d.ts +5 -0
  12. package/node_modules/@aws-sdk/client-glue/dist-types/models/models_2.d.ts +5 -0
  13. package/node_modules/@aws-sdk/client-glue/dist-types/ts3.4/models/models_1.d.ts +1 -0
  14. package/node_modules/@aws-sdk/client-glue/dist-types/ts3.4/models/models_2.d.ts +1 -0
  15. package/node_modules/@aws-sdk/client-glue/package.json +1 -1
  16. package/node_modules/@aws-sdk/client-lakeformation/package.json +1 -1
  17. package/node_modules/@aws-sdk/client-ram/package.json +1 -1
  18. package/node_modules/@aws-sdk/client-sts/package.json +1 -1
  19. package/node_modules/fast-xml-builder/CHANGELOG.md +11 -0
  20. package/node_modules/fast-xml-builder/README.md +53 -2
  21. package/node_modules/fast-xml-builder/lib/fxb.cjs +1 -1
  22. package/node_modules/fast-xml-builder/lib/fxb.d.cts +91 -1
  23. package/node_modules/fast-xml-builder/lib/fxb.min.js +1 -1
  24. package/node_modules/fast-xml-builder/lib/fxb.min.js.map +1 -1
  25. package/node_modules/fast-xml-builder/package.json +3 -2
  26. package/node_modules/fast-xml-builder/src/fxb.d.ts +93 -3
  27. package/node_modules/fast-xml-builder/src/fxb.js +100 -33
  28. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +91 -37
  29. package/node_modules/strnum/CHANGELOG.md +3 -0
  30. package/node_modules/strnum/package.json +3 -2
  31. package/node_modules/strnum/strnum.js +12 -10
  32. package/node_modules/xml-naming/README.md +189 -0
  33. package/node_modules/xml-naming/package.json +54 -0
  34. package/node_modules/xml-naming/src/index.d.ts +74 -0
  35. package/node_modules/xml-naming/src/index.js +270 -0
  36. package/package.json +10 -10
package/.jsii CHANGED
@@ -8,12 +8,12 @@
8
8
  ]
9
9
  },
10
10
  "bundled": {
11
- "@aws-sdk/client-cloudformation": "^3.1041.0",
12
- "@aws-sdk/client-connect": "^3.1041.0",
13
- "@aws-sdk/client-glue": "^3.1041.0",
14
- "@aws-sdk/client-lakeformation": "^3.1041.0",
15
- "@aws-sdk/client-ram": "^3.1041.0",
16
- "@aws-sdk/client-sts": "^3.1041.0",
11
+ "@aws-sdk/client-cloudformation": "^3.1045.0",
12
+ "@aws-sdk/client-connect": "^3.1045.0",
13
+ "@aws-sdk/client-glue": "^3.1045.0",
14
+ "@aws-sdk/client-lakeformation": "^3.1045.0",
15
+ "@aws-sdk/client-ram": "^3.1045.0",
16
+ "@aws-sdk/client-sts": "^3.1045.0",
17
17
  "@aws-sdk/types": "^3.973.8",
18
18
  "@types/aws-lambda": "^8.10.161",
19
19
  "aws-lambda": "^1.0.7"
@@ -8523,7 +8523,7 @@
8523
8523
  "stability": "experimental"
8524
8524
  },
8525
8525
  "homepage": "https://github.com/cdklabs/cdk-construct-connect-datalake.git",
8526
- "jsiiVersion": "5.9.37 (build 5176c0d)",
8526
+ "jsiiVersion": "5.9.39 (build cdf85b4)",
8527
8527
  "keywords": [
8528
8528
  "aws",
8529
8529
  "cdk",
@@ -8978,6 +8978,6 @@
8978
8978
  "symbolId": "src/data-types:DataType"
8979
8979
  }
8980
8980
  },
8981
- "version": "0.0.8",
8982
- "fingerprint": "JgpgifKmo8a7Q3svwzk/2G81sq9YRC+PlU5Jo/EiAEM="
8981
+ "version": "0.0.9",
8982
+ "fingerprint": "i6yOsLVoGYdi3gtxeV4l/Iar8IEdkXRkuI3LcaVlruM="
8983
8983
  }
package/.jsii.tabl.json CHANGED
@@ -1 +1 @@
1
- {"version":"2","toolVersion":"5.9.43","snippets":{"00a7fa098b113353e1819aadc132dddc8bb6c243a38b1558462c6ca3bb81aa17":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\n\n\nDataLakeAccess(self, \"DataLakeAccess\",\n instance_id=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", # Your Connect instance ID\n dataset_ids=[DataType.CONTACT_RECORD, \"contact_statistic_record\"\n ]\n)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\n\n\nnew DataLakeAccess(this, \"DataLakeAccess\", new DataLakeAccessProps {\n InstanceId = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", // Your Connect instance ID\n DatasetIds = new [] { DataType.CONTACT_RECORD, \"contact_statistic_record\" }\n});","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\n\n\nDataLakeAccess.Builder.create(this, \"DataLakeAccess\")\n .instanceId(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\") // Your Connect instance ID\n .datasetIds(List.of(DataType.CONTACT_RECORD, \"contact_statistic_record\"))\n .build();","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\n\n\ncdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\t // Your Connect instance ID\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\tjsii.String(\"contact_statistic_record\"),\n\t},\n})","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // Your Connect instance ID\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":83}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // Your Connect instance ID\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n});\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":4,"80":7,"110":1,"210":1,"211":1,"212":1,"215":1,"245":1,"273":1,"274":1,"276":1,"277":2,"304":2,"308":1},"fqnsFingerprint":"2f7cf2ab87645e9fcb4879ac6548d0cba0e9ef3876781b8c0ff01b105940d544"},"a8797c35a7a51ce10f33f69c2ed3aa8b4331b96a7b2baaaa5fd8d1792e585e98":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\nfrom aws_cdk.aws_connect import CfnInstance\n\n\nconnect_instance = CfnInstance(self, \"ConnectInstance\",\n identity_management_type=\"CONNECT_MANAGED\",\n instance_alias=\"my-instance\",\n attributes=CfnInstance.AttributesProperty(\n inbound_calls=True,\n outbound_calls=True\n )\n)\n\ndata_lake = DataLakeAccess(self, \"DataLakeAccess\",\n instance_id=connect_instance.attr_id,\n dataset_ids=[DataType.CONTACT_RECORD]\n)\n\n# Ensure data lake resources are deleted before the Connect instance\ndata_lake.node.add_dependency(connect_instance)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\nusing Amazon.CDK.AWS.Connect;\n\n\nvar connectInstance = new CfnInstance(this, \"ConnectInstance\", new CfnInstanceProps {\n IdentityManagementType = \"CONNECT_MANAGED\",\n InstanceAlias = \"my-instance\",\n Attributes = new AttributesProperty {\n InboundCalls = true,\n OutboundCalls = true\n }\n});\n\nvar dataLake = new DataLakeAccess(this, \"DataLakeAccess\", new DataLakeAccessProps {\n InstanceId = connectInstance.AttrId,\n DatasetIds = new [] { DataType.CONTACT_RECORD }\n});\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.Node.AddDependency(connectInstance);","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\nimport software.amazon.awscdk.services.connect.CfnInstance;\n\n\nCfnInstance connectInstance = CfnInstance.Builder.create(this, \"ConnectInstance\")\n .identityManagementType(\"CONNECT_MANAGED\")\n .instanceAlias(\"my-instance\")\n .attributes(AttributesProperty.builder()\n .inboundCalls(true)\n .outboundCalls(true)\n .build())\n .build();\n\nDataLakeAccess dataLake = DataLakeAccess.Builder.create(this, \"DataLakeAccess\")\n .instanceId(connectInstance.getAttrId())\n .datasetIds(List.of(DataType.CONTACT_RECORD))\n .build();\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.node.addDependency(connectInstance);","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\nimport \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nconnectInstance := awscdk.NewCfnInstance(this, jsii.String(\"ConnectInstance\"), &CfnInstanceProps{\n\tIdentityManagementType: jsii.String(\"CONNECT_MANAGED\"),\n\tInstanceAlias: jsii.String(\"my-instance\"),\n\tAttributes: &AttributesProperty{\n\t\tInboundCalls: jsii.Boolean(true),\n\t\tOutboundCalls: jsii.Boolean(true),\n\t},\n})\n\ndataLake := cdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess\"), &DataLakeAccessProps{\n\tInstanceId: connectInstance.attrId,\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t},\n})\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.Node.AddDependency(connectInstance)","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\nimport { CfnInstance } from 'aws-cdk-lib/aws-connect';\n\nconst connectInstance = new CfnInstance(this, 'ConnectInstance', {\n identityManagementType: 'CONNECT_MANAGED',\n instanceAlias: 'my-instance',\n attributes: {\n inboundCalls: true,\n outboundCalls: true,\n },\n});\n\nconst dataLake = new DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: connectInstance.attrId,\n datasetIds: [DataType.CONTACT_RECORD],\n});\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.node.addDependency(connectInstance);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":99}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","aws-cdk-lib.aws_connect.CfnInstance","aws-cdk-lib.aws_connect.CfnInstanceProps","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\nimport { CfnInstance } from 'aws-cdk-lib/aws-connect';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nconst connectInstance = new CfnInstance(this, 'ConnectInstance', {\n identityManagementType: 'CONNECT_MANAGED',\n instanceAlias: 'my-instance',\n attributes: {\n inboundCalls: true,\n outboundCalls: true,\n },\n});\n\nconst dataLake = new DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: connectInstance.attrId,\n datasetIds: [DataType.CONTACT_RECORD],\n});\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.node.addDependency(connectInstance);\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":6,"80":22,"110":2,"112":2,"210":1,"211":3,"212":4,"214":1,"215":2,"244":2,"245":1,"261":2,"262":2,"273":2,"274":2,"276":2,"277":3,"304":7,"308":1},"fqnsFingerprint":"8a6c8629dd0567ef0a683b0c8bac0b66bf4f8d30cf75c5111838915ab59b6e60"},"3943f4235a371932e8d12e22a29123af325eaa909899056ecca10bde6afbd24c":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\n\n\nDataLakeAccess(self, \"DataLakeAccess\",\n instance_id=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n dataset_ids=[DataType.CONTACT_RECORD, \"contact_statistic_record\"\n ],\n\n # Target account where the resources are created\n target_account_id=\"123456789012\",\n\n # IAM role in the target account for cross-account role assumption\n target_account_role_arn=\"arn:aws:iam::123456789012:role/RoleName\"\n)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\n\n\nnew DataLakeAccess(this, \"DataLakeAccess\", new DataLakeAccessProps {\n InstanceId = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n DatasetIds = new [] { DataType.CONTACT_RECORD, \"contact_statistic_record\" },\n\n // Target account where the resources are created\n TargetAccountId = \"123456789012\",\n\n // IAM role in the target account for cross-account role assumption\n TargetAccountRoleArn = \"arn:aws:iam::123456789012:role/RoleName\"\n});","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\n\n\nDataLakeAccess.Builder.create(this, \"DataLakeAccess\")\n .instanceId(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n .datasetIds(List.of(DataType.CONTACT_RECORD, \"contact_statistic_record\"))\n\n // Target account where the resources are created\n .targetAccountId(\"123456789012\")\n\n // IAM role in the target account for cross-account role assumption\n .targetAccountRoleArn(\"arn:aws:iam::123456789012:role/RoleName\")\n .build();","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\n\n\ncdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\tjsii.String(\"contact_statistic_record\"),\n\t},\n\n\t// Target account where the resources are created\n\tTargetAccountId: jsii.String(\"123456789012\"),\n\n\t// IAM role in the target account for cross-account role assumption\n\tTargetAccountRoleArn: jsii.String(\"arn:aws:iam::123456789012:role/RoleName\"),\n})","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n\n // Target account where the resources are created\n targetAccountId: '123456789012',\n\n // IAM role in the target account for cross-account role assumption\n targetAccountRoleArn: \"arn:aws:iam::123456789012:role/RoleName\",\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":127}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n\n // Target account where the resources are created\n targetAccountId: '123456789012',\n\n // IAM role in the target account for cross-account role assumption\n targetAccountRoleArn: \"arn:aws:iam::123456789012:role/RoleName\",\n});\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":6,"80":9,"110":1,"210":1,"211":1,"212":1,"215":1,"245":1,"273":1,"274":1,"276":1,"277":2,"304":4,"308":1},"fqnsFingerprint":"2f7cf2ab87645e9fcb4879ac6548d0cba0e9ef3876781b8c0ff01b105940d544"},"c2e3da396fefcd5ecdded7763916a7ad777bf15f5aa19d7566dc24cdd7f25595":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\n\n\n# First Connect instance data lake setup\ndata_lake1 = DataLakeAccess(self, \"DataLakeAccess1\",\n instance_id=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n dataset_ids=[DataType.CONTACT_RECORD, DataType.AGENT_STATISTIC_RECORD\n ]\n)\n\n# Second Connect instance data lake setup\ndata_lake2 = DataLakeAccess(self, \"DataLakeAccess2\",\n instance_id=\"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\",\n dataset_ids=[DataType.CONTACT_RECORD, DataType.CONTACT_FLOW_EVENTS\n ]\n)\n\n# Create dependency to ensure sequential deployment\ndata_lake2.node.add_dependency(data_lake1)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\n\n\n// First Connect instance data lake setup\nvar dataLake1 = new DataLakeAccess(this, \"DataLakeAccess1\", new DataLakeAccessProps {\n InstanceId = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n DatasetIds = new [] { DataType.CONTACT_RECORD, DataType.AGENT_STATISTIC_RECORD }\n});\n\n// Second Connect instance data lake setup\nvar dataLake2 = new DataLakeAccess(this, \"DataLakeAccess2\", new DataLakeAccessProps {\n InstanceId = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\",\n DatasetIds = new [] { DataType.CONTACT_RECORD, DataType.CONTACT_FLOW_EVENTS }\n});\n\n// Create dependency to ensure sequential deployment\ndataLake2.Node.AddDependency(dataLake1);","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\n\n\n// First Connect instance data lake setup\nDataLakeAccess dataLake1 = DataLakeAccess.Builder.create(this, \"DataLakeAccess1\")\n .instanceId(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n .datasetIds(List.of(DataType.CONTACT_RECORD, DataType.AGENT_STATISTIC_RECORD))\n .build();\n\n// Second Connect instance data lake setup\nDataLakeAccess dataLake2 = DataLakeAccess.Builder.create(this, \"DataLakeAccess2\")\n .instanceId(\"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\")\n .datasetIds(List.of(DataType.CONTACT_RECORD, DataType.CONTACT_FLOW_EVENTS))\n .build();\n\n// Create dependency to ensure sequential deployment\ndataLake2.node.addDependency(dataLake1);","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\n\n\n// First Connect instance data lake setup\ndataLake1 := cdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess1\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\t*cdklabscdkconstructconnectdatalake.DataType_AGENT_STATISTIC_RECORD,\n\t},\n})\n\n// Second Connect instance data lake setup\ndataLake2 := cdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess2\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\"),\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_FLOW_EVENTS,\n\t},\n})\n\n// Create dependency to ensure sequential deployment\ndataLake2.Node.AddDependency(dataLake1)","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n\n// First Connect instance data lake setup\nconst dataLake1 = new DataLakeAccess(this, 'DataLakeAccess1', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.AGENT_STATISTIC_RECORD,\n ],\n});\n\n// Second Connect instance data lake setup\nconst dataLake2 = new DataLakeAccess(this, 'DataLakeAccess2', {\n instanceId: 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.CONTACT_FLOW_EVENTS,\n ],\n});\n\n// Create dependency to ensure sequential deployment\ndataLake2.node.addDependency(dataLake1);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":149}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#AGENT_STATISTIC_RECORD","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_FLOW_EVENTS","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\n// First Connect instance data lake setup\nconst dataLake1 = new DataLakeAccess(this, 'DataLakeAccess1', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.AGENT_STATISTIC_RECORD,\n ],\n});\n\n// Second Connect instance data lake setup\nconst dataLake2 = new DataLakeAccess(this, 'DataLakeAccess2', {\n instanceId: 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.CONTACT_FLOW_EVENTS,\n ],\n});\n\n// Create dependency to ensure sequential deployment\ndataLake2.node.addDependency(dataLake1);\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":5,"80":22,"110":2,"210":2,"211":2,"212":6,"214":1,"215":2,"244":2,"245":1,"261":2,"262":2,"273":1,"274":1,"276":1,"277":2,"304":4,"308":1},"fqnsFingerprint":"cd43f00cebfa6df6d2edd5cc1b9bb19ad5c2543bfe51e5597c6478151e05d124"}}}
1
+ {"version":"2","toolVersion":"5.9.44","snippets":{"00a7fa098b113353e1819aadc132dddc8bb6c243a38b1558462c6ca3bb81aa17":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\n\n\nDataLakeAccess(self, \"DataLakeAccess\",\n instance_id=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", # Your Connect instance ID\n dataset_ids=[DataType.CONTACT_RECORD, \"contact_statistic_record\"\n ]\n)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\n\n\nnew DataLakeAccess(this, \"DataLakeAccess\", new DataLakeAccessProps {\n InstanceId = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\", // Your Connect instance ID\n DatasetIds = new [] { DataType.CONTACT_RECORD, \"contact_statistic_record\" }\n});","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\n\n\nDataLakeAccess.Builder.create(this, \"DataLakeAccess\")\n .instanceId(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\") // Your Connect instance ID\n .datasetIds(List.of(DataType.CONTACT_RECORD, \"contact_statistic_record\"))\n .build();","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\n\n\ncdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\t // Your Connect instance ID\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\tjsii.String(\"contact_statistic_record\"),\n\t},\n})","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // Your Connect instance ID\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":83}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // Your Connect instance ID\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n});\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":4,"80":7,"110":1,"210":1,"211":1,"212":1,"215":1,"245":1,"273":1,"274":1,"276":1,"277":2,"304":2,"308":1},"fqnsFingerprint":"2f7cf2ab87645e9fcb4879ac6548d0cba0e9ef3876781b8c0ff01b105940d544"},"a8797c35a7a51ce10f33f69c2ed3aa8b4331b96a7b2baaaa5fd8d1792e585e98":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\nfrom aws_cdk.aws_connect import CfnInstance\n\n\nconnect_instance = CfnInstance(self, \"ConnectInstance\",\n identity_management_type=\"CONNECT_MANAGED\",\n instance_alias=\"my-instance\",\n attributes=CfnInstance.AttributesProperty(\n inbound_calls=True,\n outbound_calls=True\n )\n)\n\ndata_lake = DataLakeAccess(self, \"DataLakeAccess\",\n instance_id=connect_instance.attr_id,\n dataset_ids=[DataType.CONTACT_RECORD]\n)\n\n# Ensure data lake resources are deleted before the Connect instance\ndata_lake.node.add_dependency(connect_instance)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\nusing Amazon.CDK.AWS.Connect;\n\n\nvar connectInstance = new CfnInstance(this, \"ConnectInstance\", new CfnInstanceProps {\n IdentityManagementType = \"CONNECT_MANAGED\",\n InstanceAlias = \"my-instance\",\n Attributes = new AttributesProperty {\n InboundCalls = true,\n OutboundCalls = true\n }\n});\n\nvar dataLake = new DataLakeAccess(this, \"DataLakeAccess\", new DataLakeAccessProps {\n InstanceId = connectInstance.AttrId,\n DatasetIds = new [] { DataType.CONTACT_RECORD }\n});\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.Node.AddDependency(connectInstance);","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\nimport software.amazon.awscdk.services.connect.CfnInstance;\n\n\nCfnInstance connectInstance = CfnInstance.Builder.create(this, \"ConnectInstance\")\n .identityManagementType(\"CONNECT_MANAGED\")\n .instanceAlias(\"my-instance\")\n .attributes(AttributesProperty.builder()\n .inboundCalls(true)\n .outboundCalls(true)\n .build())\n .build();\n\nDataLakeAccess dataLake = DataLakeAccess.Builder.create(this, \"DataLakeAccess\")\n .instanceId(connectInstance.getAttrId())\n .datasetIds(List.of(DataType.CONTACT_RECORD))\n .build();\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.node.addDependency(connectInstance);","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\nimport \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nconnectInstance := awscdk.NewCfnInstance(this, jsii.String(\"ConnectInstance\"), &CfnInstanceProps{\n\tIdentityManagementType: jsii.String(\"CONNECT_MANAGED\"),\n\tInstanceAlias: jsii.String(\"my-instance\"),\n\tAttributes: &AttributesProperty{\n\t\tInboundCalls: jsii.Boolean(true),\n\t\tOutboundCalls: jsii.Boolean(true),\n\t},\n})\n\ndataLake := cdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess\"), &DataLakeAccessProps{\n\tInstanceId: connectInstance.attrId,\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t},\n})\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.Node.AddDependency(connectInstance)","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\nimport { CfnInstance } from 'aws-cdk-lib/aws-connect';\n\nconst connectInstance = new CfnInstance(this, 'ConnectInstance', {\n identityManagementType: 'CONNECT_MANAGED',\n instanceAlias: 'my-instance',\n attributes: {\n inboundCalls: true,\n outboundCalls: true,\n },\n});\n\nconst dataLake = new DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: connectInstance.attrId,\n datasetIds: [DataType.CONTACT_RECORD],\n});\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.node.addDependency(connectInstance);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":99}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","aws-cdk-lib.aws_connect.CfnInstance","aws-cdk-lib.aws_connect.CfnInstanceProps","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\nimport { CfnInstance } from 'aws-cdk-lib/aws-connect';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nconst connectInstance = new CfnInstance(this, 'ConnectInstance', {\n identityManagementType: 'CONNECT_MANAGED',\n instanceAlias: 'my-instance',\n attributes: {\n inboundCalls: true,\n outboundCalls: true,\n },\n});\n\nconst dataLake = new DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: connectInstance.attrId,\n datasetIds: [DataType.CONTACT_RECORD],\n});\n\n// Ensure data lake resources are deleted before the Connect instance\ndataLake.node.addDependency(connectInstance);\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":6,"80":22,"110":2,"112":2,"210":1,"211":3,"212":4,"214":1,"215":2,"244":2,"245":1,"261":2,"262":2,"273":2,"274":2,"276":2,"277":3,"304":7,"308":1},"fqnsFingerprint":"8a6c8629dd0567ef0a683b0c8bac0b66bf4f8d30cf75c5111838915ab59b6e60"},"3943f4235a371932e8d12e22a29123af325eaa909899056ecca10bde6afbd24c":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\n\n\nDataLakeAccess(self, \"DataLakeAccess\",\n instance_id=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n dataset_ids=[DataType.CONTACT_RECORD, \"contact_statistic_record\"\n ],\n\n # Target account where the resources are created\n target_account_id=\"123456789012\",\n\n # IAM role in the target account for cross-account role assumption\n target_account_role_arn=\"arn:aws:iam::123456789012:role/RoleName\"\n)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\n\n\nnew DataLakeAccess(this, \"DataLakeAccess\", new DataLakeAccessProps {\n InstanceId = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n DatasetIds = new [] { DataType.CONTACT_RECORD, \"contact_statistic_record\" },\n\n // Target account where the resources are created\n TargetAccountId = \"123456789012\",\n\n // IAM role in the target account for cross-account role assumption\n TargetAccountRoleArn = \"arn:aws:iam::123456789012:role/RoleName\"\n});","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\n\n\nDataLakeAccess.Builder.create(this, \"DataLakeAccess\")\n .instanceId(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n .datasetIds(List.of(DataType.CONTACT_RECORD, \"contact_statistic_record\"))\n\n // Target account where the resources are created\n .targetAccountId(\"123456789012\")\n\n // IAM role in the target account for cross-account role assumption\n .targetAccountRoleArn(\"arn:aws:iam::123456789012:role/RoleName\")\n .build();","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\n\n\ncdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\tjsii.String(\"contact_statistic_record\"),\n\t},\n\n\t// Target account where the resources are created\n\tTargetAccountId: jsii.String(\"123456789012\"),\n\n\t// IAM role in the target account for cross-account role assumption\n\tTargetAccountRoleArn: jsii.String(\"arn:aws:iam::123456789012:role/RoleName\"),\n})","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n\n // Target account where the resources are created\n targetAccountId: '123456789012',\n\n // IAM role in the target account for cross-account role assumption\n targetAccountRoleArn: \"arn:aws:iam::123456789012:role/RoleName\",\n});","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":127}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nnew DataLakeAccess(this, 'DataLakeAccess', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n 'contact_statistic_record',\n ],\n\n // Target account where the resources are created\n targetAccountId: '123456789012',\n\n // IAM role in the target account for cross-account role assumption\n targetAccountRoleArn: \"arn:aws:iam::123456789012:role/RoleName\",\n});\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":6,"80":9,"110":1,"210":1,"211":1,"212":1,"215":1,"245":1,"273":1,"274":1,"276":1,"277":2,"304":4,"308":1},"fqnsFingerprint":"2f7cf2ab87645e9fcb4879ac6548d0cba0e9ef3876781b8c0ff01b105940d544"},"c2e3da396fefcd5ecdded7763916a7ad777bf15f5aa19d7566dc24cdd7f25595":{"translations":{"python":{"source":"from cdklabs.cdk_construct_connect_datalake import DataLakeAccess, DataType\n\n\n# First Connect instance data lake setup\ndata_lake1 = DataLakeAccess(self, \"DataLakeAccess1\",\n instance_id=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n dataset_ids=[DataType.CONTACT_RECORD, DataType.AGENT_STATISTIC_RECORD\n ]\n)\n\n# Second Connect instance data lake setup\ndata_lake2 = DataLakeAccess(self, \"DataLakeAccess2\",\n instance_id=\"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\",\n dataset_ids=[DataType.CONTACT_RECORD, DataType.CONTACT_FLOW_EVENTS\n ]\n)\n\n# Create dependency to ensure sequential deployment\ndata_lake2.node.add_dependency(data_lake1)","version":"2"},"csharp":{"source":"using Cdklabs.CdkConstructConnectDatalake;\n\n\n// First Connect instance data lake setup\nvar dataLake1 = new DataLakeAccess(this, \"DataLakeAccess1\", new DataLakeAccessProps {\n InstanceId = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n DatasetIds = new [] { DataType.CONTACT_RECORD, DataType.AGENT_STATISTIC_RECORD }\n});\n\n// Second Connect instance data lake setup\nvar dataLake2 = new DataLakeAccess(this, \"DataLakeAccess2\", new DataLakeAccessProps {\n InstanceId = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\",\n DatasetIds = new [] { DataType.CONTACT_RECORD, DataType.CONTACT_FLOW_EVENTS }\n});\n\n// Create dependency to ensure sequential deployment\ndataLake2.Node.AddDependency(dataLake1);","version":"1"},"java":{"source":"import io.github.cdklabs.cdk.construct.connect.datalake.DataLakeAccess;\nimport io.github.cdklabs.cdk.construct.connect.datalake.DataType;\n\n\n// First Connect instance data lake setup\nDataLakeAccess dataLake1 = DataLakeAccess.Builder.create(this, \"DataLakeAccess1\")\n .instanceId(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n .datasetIds(List.of(DataType.CONTACT_RECORD, DataType.AGENT_STATISTIC_RECORD))\n .build();\n\n// Second Connect instance data lake setup\nDataLakeAccess dataLake2 = DataLakeAccess.Builder.create(this, \"DataLakeAccess2\")\n .instanceId(\"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\")\n .datasetIds(List.of(DataType.CONTACT_RECORD, DataType.CONTACT_FLOW_EVENTS))\n .build();\n\n// Create dependency to ensure sequential deployment\ndataLake2.node.addDependency(dataLake1);","version":"1"},"go":{"source":"import \"github.com/cdklabs/cdk-construct-connect-datalake-go/cdklabscdkconstructconnectdatalake\"\n\n\n// First Connect instance data lake setup\ndataLake1 := cdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess1\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\t*cdklabscdkconstructconnectdatalake.DataType_AGENT_STATISTIC_RECORD,\n\t},\n})\n\n// Second Connect instance data lake setup\ndataLake2 := cdklabscdkconstructconnectdatalake.NewDataLakeAccess(this, jsii.String(\"DataLakeAccess2\"), &DataLakeAccessProps{\n\tInstanceId: jsii.String(\"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\"),\n\tDatasetIds: []*string{\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_RECORD,\n\t\t*cdklabscdkconstructconnectdatalake.DataType_CONTACT_FLOW_EVENTS,\n\t},\n})\n\n// Create dependency to ensure sequential deployment\ndataLake2.Node.AddDependency(dataLake1)","version":"1"},"$":{"source":"import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n\n// First Connect instance data lake setup\nconst dataLake1 = new DataLakeAccess(this, 'DataLakeAccess1', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.AGENT_STATISTIC_RECORD,\n ],\n});\n\n// Second Connect instance data lake setup\nconst dataLake2 = new DataLakeAccess(this, 'DataLakeAccess2', {\n instanceId: 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.CONTACT_FLOW_EVENTS,\n ],\n});\n\n// Create dependency to ensure sequential deployment\ndataLake2.node.addDependency(dataLake1);","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"@cdklabs/cdk-construct-connect-datalake"},"field":{"field":"markdown","line":149}},"didCompile":true,"fqnsReferenced":["@cdklabs/cdk-construct-connect-datalake.DataLakeAccess","@cdklabs/cdk-construct-connect-datalake.DataLakeAccessProps","@cdklabs/cdk-construct-connect-datalake.DataType#AGENT_STATISTIC_RECORD","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_FLOW_EVENTS","@cdklabs/cdk-construct-connect-datalake.DataType#CONTACT_RECORD","constructs.Construct","constructs.Construct#node","constructs.IDependable","constructs.Node#addDependency"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport { Construct } from 'constructs';\nimport {\n Stack,\n} from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\n// First Connect instance data lake setup\nconst dataLake1 = new DataLakeAccess(this, 'DataLakeAccess1', {\n instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.AGENT_STATISTIC_RECORD,\n ],\n});\n\n// Second Connect instance data lake setup\nconst dataLake2 = new DataLakeAccess(this, 'DataLakeAccess2', {\n instanceId: 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy',\n datasetIds: [\n DataType.CONTACT_RECORD,\n DataType.CONTACT_FLOW_EVENTS,\n ],\n});\n\n// Create dependency to ensure sequential deployment\ndataLake2.node.addDependency(dataLake1);\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":5,"80":22,"110":2,"210":2,"211":2,"212":6,"214":1,"215":2,"244":2,"245":1,"261":2,"262":2,"273":1,"274":1,"276":1,"277":2,"304":4,"308":1},"fqnsFingerprint":"cd43f00cebfa6df6d2edd5cc1b9bb19ad5c2543bfe51e5597c6478151e05d124"}}}
package/lib/index.js CHANGED
@@ -215,6 +215,6 @@ class DataLakeAccess extends constructs_1.Construct {
215
215
  }
216
216
  exports.DataLakeAccess = DataLakeAccess;
217
217
  _a = JSII_RTTI_SYMBOL_1;
218
- DataLakeAccess[_a] = { fqn: "@cdklabs/cdk-construct-connect-datalake.DataLakeAccess", version: "0.0.8" };
218
+ DataLakeAccess[_a] = { fqn: "@cdklabs/cdk-construct-connect-datalake.DataLakeAccess", version: "0.0.9" };
219
219
  DataLakeAccess.DATABASE_NAME = "connect_datalake_database";
220
220
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFFdEMsK0JBQTRCO0FBQzVCLDZDQUE2RjtBQUM3RixpREFBOEQ7QUFDOUQsdURBQWlFO0FBQ2pFLG1FQUF3RDtBQUN4RCwyQ0FBdUM7QUFHdkMsK0NBQTZCO0FBcUM3Qjs7Ozs7R0FLRztBQUNILE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBRzNDOzs7O09BSUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxNQUFNLGFBQWEsR0FBVyxLQUFLLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQztRQUMvRCxNQUFNLHdCQUF3QixHQUFZLGFBQWEsS0FBSyxPQUFPLENBQUM7UUFFcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUVwRCxxREFBcUQ7UUFDckQsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV6Rjs7O1dBR0c7UUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLHFCQUFRLENBQUMsSUFBSSxF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Q0FBQyxhQUFhLElBQUk7b0JBQ3BGLE9BQU8sU0FBUyxTQUFTLE1BQU0sSUFBSSxPQUFPLHdCQUF3QixjQUFjLENBQUMsYUFBYSxJQUFJO29CQUNsRyxPQUFPLFNBQVMsU0FBUyxNQUFNLElBQUksT0FBTyxVQUFVO2lCQUNyRDthQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBclBILHdDQXNQQzs7O0FBclB5Qiw0QkFBYSxHQUFHLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IER1cmF0aW9uLCBDdXN0b21SZXNvdXJjZSwgQ2ZuT3V0cHV0LCBTdGFjaywgQW5ub3RhdGlvbnMsIFRva2VuIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIEVmZmVjdCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiwgUnVudGltZSwgQ29kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tIFwiLi9kYXRhLXR5cGVzXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2RhdGEtdHlwZXNcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgRGF0YUxha2VBY2Nlc3MgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUxha2VBY2Nlc3NQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgQW1hem9uIENvbm5lY3QgaW5zdGFuY2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQXJyYXkgb2YgZGF0YXNldCBJRHMgdG8gYXNzb2NpYXRlIHdpdGggdGhlIENvbm5lY3QgaW5zdGFuY2VcbiAgICpcbiAgICogQ2FuIGluY2x1ZGUgRGF0YVR5cGUgZW51bSB2YWx1ZXMgb3Igc3RyaW5nIGRhdGFzZXQgSURzXG4gICAqL1xuICByZWFkb25seSBkYXRhc2V0SWRzOiBBcnJheTxzdHJpbmcgfCBEYXRhVHlwZT47XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSB0YXJnZXQgYWNjb3VudFxuICAgKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBBV1MgYWNjb3VudC4gRm9yIGNyb3NzLWFjY291bnQgc2V0dXBzLFxuICAgKiBzcGVjaWZ5IGFuIGV4dGVybmFsIGFjY291bnQgSUQgdG8gYXNzb2NpYXRlIGRhdGFzZXRzIGFuZCBjcmVhdGUgcmVzb3VyY2VzIGluIHRoYXQgYWNjb3VudFxuICAgKlxuICAgKiBXaGVuIHNwZWNpZmllZCB3aXRoIGFuIGV4dGVybmFsIGFjY291bnQsIGB0YXJnZXRBY2NvdW50Um9sZUFybmAgaXMgYWxzbyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0QWNjb3VudElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgQVJOIGluIHRoZSB0YXJnZXQgYWNjb3VudCBmb3IgY3Jvc3MtYWNjb3VudCByb2xlIGFzc3VtcHRpb25cbiAgICpcbiAgICogT25seSByZXF1aXJlZCB3aGVuIGB0YXJnZXRBY2NvdW50SWRgIGlzIHNwZWNpZmllZCB3aXRoIGFuIGV4dGVybmFsIGFjY291bnQuIEEgdGVtcGxhdGVcbiAgICogZm9yIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIFtDcm9zcyBBY2NvdW50IFNldHVwXSguLi9DUk9TU19BQ0NPVU5UX1NFVFVQLm1kKSBkb2N1bWVudGF0aW9uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRBY2NvdW50Um9sZUFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBdXRvbWF0ZXMgQW1hem9uIENvbm5lY3QgRGF0YSBMYWtlIGludGVncmF0aW9uIHNldHVwIGFuZCBtYW5hZ2VtZW50LlxuICpcbiAqIFRoaXMgY29uc3RydWN0IHNpbXBsaWZpZXMgdGhlIHByb2Nlc3Mgb2YgYXNzb2NpYXRpbmcgQW1hem9uIENvbm5lY3QgYW5hbHl0aWNzIGRhdGFzZXRzIHdpdGggQVdTIGRhdGEgbGFrZSBzZXJ2aWNlcyxcbiAqIGhhbmRsaW5nIHJlc291cmNlIHNoYXJpbmcsIExha2UgRm9ybWF0aW9uIHBlcm1pc3Npb25zLCBhbmQgZGF0YSBjYXRhbG9nIG1hbmFnZW1lbnQgdGhyb3VnaCBhIGNlbnRyYWxpemVkIEdsdWUgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhTGFrZUFjY2VzcyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERBVEFCQVNFX05BTUUgPSBcImNvbm5lY3RfZGF0YWxha2VfZGF0YWJhc2VcIjtcblxuICAvKipcbiAgICogQHBhcmFtIHNjb3BlIFBhcmVudCB0byB3aGljaCB0aGUgQ3VzdG9tIFJlc291cmNlIGJlbG9uZ3NcbiAgICogQHBhcmFtIGlkIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyBNZXRhZGF0YSBmb3IgY29uZmlndXJpbmcgdGhlIEN1c3RvbSBSZXNvdXJjZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFMYWtlQWNjZXNzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBwYXJ0aXRpb24gPSBzdGFjay5wYXJ0aXRpb247XG4gICAgY29uc3QgcmVnaW9uID0gc3RhY2sucmVnaW9uO1xuICAgIGNvbnN0IGFjY291bnQgPSBzdGFjay5hY2NvdW50O1xuICAgIGNvbnN0IHN0YWNrTmFtZSA9IHN0YWNrLnN0YWNrTmFtZTtcbiAgICBjb25zdCB0YXJnZXRBY2NvdW50OiBzdHJpbmcgPSBwcm9wcy50YXJnZXRBY2NvdW50SWQgPz8gYWNjb3VudDtcbiAgICBjb25zdCBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQ6IGJvb2xlYW4gPSB0YXJnZXRBY2NvdW50ICE9PSBhY2NvdW50O1xuXG4gICAgdGhpcy52YWxpZGF0ZVByb3BzKHByb3BzLCBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQpO1xuXG4gICAgLy8gVXNlZCB0byBtYW5hZ2UgY2hhbmdlIGluIHRhcmdldEFjY291bnRJZCBzY2VuYXJpb3NcbiAgICBjb25zdCB0YXJnZXRBY2NvdW50SWRTdWZmaXggPSBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQgPyBgJHtwcm9wcy50YXJnZXRBY2NvdW50SWR9YCA6IFwiXCI7XG5cbiAgICAvKipcbiAgICAgKiBMYW1iZGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBkYXRhIGxha2Ugc2V0dXAgYW5kIHRlYXJkb3duIHByb2Nlc3NcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIG9yY2hlc3RyYXRlcyB0aGUgZW50aXJlIENvbm5lY3QgZGF0YSBsYWtlIGludGVncmF0aW9uIHdvcmtmbG93XG4gICAgICovXG4gICAgY29uc3QgZGF0YUxha2VMYW1iZGEgPSBuZXcgRnVuY3Rpb24odGhpcywgYERhdGFMYWtlSGFuZGxlciR7dGFyZ2V0QWNjb3VudElkU3VmZml4fWAsIHtcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCBcIi4uXCIsIFwibGliXCIsIFwiaGFuZGxlclwiKSksXG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJvbGVBcm4gPSBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQgPyBwcm9wcy50YXJnZXRBY2NvdW50Um9sZUFybiEgOiBkYXRhTGFrZUxhbWJkYS5yb2xlIS5yb2xlQXJuO1xuICAgIHRoaXMuY29uZmlndXJlTGFtYmRhUGVybWlzc2lvbnMoXG4gICAgICBkYXRhTGFrZUxhbWJkYSxcbiAgICAgIHBhcnRpdGlvbixcbiAgICAgIHJlZ2lvbixcbiAgICAgIGFjY291bnQsXG4gICAgICBzdGFja05hbWUsXG4gICAgICBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQsXG4gICAgICByb2xlQXJuLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gcmVzb3VyY2UgcHJvdmlkZXIgdGhhdCBtYW5hZ2VzIHRoZSBMYW1iZGEgZnVuY3Rpb24gbGlmZWN5Y2xlXG4gICAgICovXG4gICAgY29uc3QgZGF0YUxha2VQcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCBgRGF0YUxha2VQcm92aWRlciR7dGFyZ2V0QWNjb3VudElkU3VmZml4fWAsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBkYXRhTGFrZUxhbWJkYSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSByZXNvdXJjZSB0aGF0IHRyaWdnZXJzIHRoZSBkYXRhIGxha2Ugc2V0dXAgcHJvY2VzcyBkdXJpbmcgQ2xvdWRGb3JtYXRpb24gc3RhY2sgbGlmZWN5Y2xlIGV2ZW50c1xuICAgICAqL1xuICAgIGNvbnN0IGRhdGFMYWtlQ3VzdG9tUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgYERhdGFMYWtlQ3VzdG9tUmVzb3VyY2Uke3RhcmdldEFjY291bnRJZFN1ZmZpeH1gLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IGRhdGFMYWtlUHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpbnN0YW5jZUlkOiBwcm9wcy5pbnN0YW5jZUlkLFxuICAgICAgICBkYXRhc2V0SWRzOiBwcm9wcy5kYXRhc2V0SWRzLm1hcCgoZCkgPT4gU3RyaW5nKGQpKSxcbiAgICAgICAgcm9sZUFybjogcm9sZUFybixcbiAgICAgICAgbGFtYmRhQWNjb3VudElkOiBhY2NvdW50LFxuICAgICAgICB0YXJnZXRBY2NvdW50SWQ6IHRhcmdldEFjY291bnQsXG4gICAgICAgIHRpbWVTdGFtcDogRGF0ZS5ub3coKS50b1N0cmluZygpLCAvLyBGb3JjZSB1cGRhdGUgZXZlbiBpZiBpbnB1dCBwcm9wZXJ0aWVzIGRvIG5vdCBjaGFuZ2VcbiAgICAgICAgY29uc3RydWN0SWQ6IGlkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENsb3VkRm9ybWF0aW9uIG91dHB1dCBjb250YWluaW5nIGN1c3RvbSByZXNvdXJjZSBsYW1iZGEgZXJyb3JzXG4gICAgICovXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkVycm9yc1wiLCB7XG4gICAgICB2YWx1ZTogZGF0YUxha2VDdXN0b21SZXNvdXJjZS5nZXRBdHRTdHJpbmcoXCJlcnJvcnNcIiksXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1FcnJvcnNgLFxuICAgIH0pO1xuICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICBgRGF0YUxha2VBY2Nlc3MgcmVwb3J0cyBzZXR1cCBlcnJvcnMgdmlhIHRoZSBzdGFjayBvdXRwdXQuIGAgK1xuICAgICAgICBgQ2hlY2sgb3V0cHV0ICcke2lkfUVycm9ycycgYWZ0ZXIgZWFjaCBkZXBsb3ltZW50IHRvIHZlcmlmeSB0aGUgc2V0dXAgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBjb25zdHJ1Y3QgaW5wdXQgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIGNvbnN0cnVjdCBwcm9wZXJ0aWVzIHRvIHZhbGlkYXRlXG4gICAqIEBwYXJhbSBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQgSW5kaWNhdGVzIGlmIHRhcmdldCBhY2NvdW50IGRpZmZlcnMgZnJvbSBjdXJyZW50IGFjY291bnRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQcm9wcyhwcm9wczogRGF0YUxha2VBY2Nlc3NQcm9wcywgaXNDcm9zc0FjY291bnREZXBsb3ltZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKFxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5pbnN0YW5jZUlkKSAmJlxuICAgICAgIS9eW2EtZjAtOV17OH0tW2EtZjAtOV17NH0tW2EtZjAtOV17NH0tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9JC8udGVzdChwcm9wcy5pbnN0YW5jZUlkKVxuICAgICkge1xuICAgICAgZXJyb3JzLnB1c2goXCJpbnN0YW5jZUlkIG11c3QgYmUgYSB2YWxpZCBVVUlEIGZvcm1hdFwiKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGF0YXNldElkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGVycm9ycy5wdXNoKFwiZGF0YXNldElkcyBjYW5ub3QgYmUgZW1wdHlcIik7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMudGFyZ2V0QWNjb3VudElkICYmXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLnRhcmdldEFjY291bnRJZCkgJiZcbiAgICAgICEvXlxcZHsxMn0kLy50ZXN0KHByb3BzLnRhcmdldEFjY291bnRJZClcbiAgICApIHtcbiAgICAgIGVycm9ycy5wdXNoKFwidGFyZ2V0QWNjb3VudElkIG11c3QgYmUgYSAxMi1kaWdpdCBBV1MgYWNjb3VudCBJRFwiKTtcbiAgICB9XG5cbiAgICBpZiAoaXNDcm9zc0FjY291bnREZXBsb3ltZW50ICYmICFwcm9wcy50YXJnZXRBY2NvdW50Um9sZUFybikge1xuICAgICAgZXJyb3JzLnB1c2goXCJ0YXJnZXRBY2NvdW50Um9sZUFybiBpcyByZXF1aXJlZCB3aGVuIHRhcmdldEFjY291bnRJZCBkaWZmZXJzIGZyb20gY3VycmVudCBhY2NvdW50XCIpO1xuICAgIH1cbiAgICBpZiAoIWlzQ3Jvc3NBY2NvdW50RGVwbG95bWVudCAmJiBwcm9wcy50YXJnZXRBY2NvdW50Um9sZUFybikge1xuICAgICAgZXJyb3JzLnB1c2goXCJ0YXJnZXRBY2NvdW50Um9sZUFybiBzaG91bGQgbm90IGJlIHNwZWNpZmllZCB3aXRob3V0IHRhcmdldEFjY291bnRJZFwiKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy50YXJnZXRBY2NvdW50Um9sZUFybiAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy50YXJnZXRBY2NvdW50Um9sZUFybikgJiZcbiAgICAgICEvXmFybjooYXdzfGF3cy11cy1nb3YpOmlhbTo6XFxkezEyfTpyb2xlXFwvW1xcdys9LC5ALy1dKyQvLnRlc3QocHJvcHMudGFyZ2V0QWNjb3VudFJvbGVBcm4pXG4gICAgKSB7XG4gICAgICBlcnJvcnMucHVzaChcInRhcmdldEFjY291bnRSb2xlQXJuIG11c3QgYmUgYSB2YWxpZCBJQU0gcm9sZSBBUk5cIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBlcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IEFubm90YXRpb25zLm9mKHRoaXMpLmFkZEVycm9yKGVycm9yKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERhdGFMYWtlQWNjZXNzIHZhbGlkYXRpb24gZmFpbGVkOiAke2Vycm9ycy5qb2luKFwiOyBcIil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgTGFtYmRhIHBlcm1pc3Npb25zIGZvciBzYW1lLWFjY291bnQgb3IgY3Jvc3MtYWNjb3VudCBkZXBsb3ltZW50c1xuICAgKlxuICAgKiBAcGFyYW0gbGFtYmRhRnVuY3Rpb24gVGhlIExhbWJkYSBmdW5jdGlvbiB0byBjb25maWd1cmUgcGVybWlzc2lvbnMgZm9yXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gQVdTIHBhcnRpdGlvbiBmb3IgcmVzb3VyY2UgQVJOIGNvbnN0cnVjdGlvblxuICAgKiBAcGFyYW0gcmVnaW9uIEFXUyByZWdpb24gZm9yIHJlc291cmNlIEFSTiBjb25zdHJ1Y3Rpb25cbiAgICogQHBhcmFtIGFjY291bnQgQ3VycmVudCBhY2NvdW50IElEIHdoZXJlIHRoZSBDb25uZWN0IGluc3RhbmNlIHJlc2lkZXNcbiAgICogQHBhcmFtIHN0YWNrTmFtZSBOYW1lIG9mIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKiBAcGFyYW0gaXNDcm9zc0FjY291bnREZXBsb3ltZW50IEluZGljYXRlcyBpZiB0YXJnZXQgYWNjb3VudCBkaWZmZXJzIGZyb20gY3VycmVudCBhY2NvdW50XG4gICAqIEBwYXJhbSByb2xlQXJuIFJvbGUgQVJOIHVzZWQgZm9yIGNyb3NzLWFjY291bnQgZGVwbG95bWVudHNcbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlTGFtYmRhUGVybWlzc2lvbnMoXG4gICAgbGFtYmRhRnVuY3Rpb246IEZ1bmN0aW9uLFxuICAgIHBhcnRpdGlvbjogc3RyaW5nLFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIGFjY291bnQ6IHN0cmluZyxcbiAgICBzdGFja05hbWU6IHN0cmluZyxcbiAgICBpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQ6IGJvb2xlYW4sXG4gICAgcm9sZUFybjogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBsYW1iZGFGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImNvbm5lY3Q6QmF0Y2hBc3NvY2lhdGVBbmFseXRpY3NEYXRhU2V0XCIsXG4gICAgICAgICAgXCJjb25uZWN0OkJhdGNoRGlzYXNzb2NpYXRlQW5hbHl0aWNzRGF0YVNldFwiLFxuICAgICAgICAgIFwiY29ubmVjdDpBc3NvY2lhdGVBbmFseXRpY3NEYXRhU2V0XCIsXG4gICAgICAgICAgXCJjb25uZWN0OkRpc2Fzc29jaWF0ZUFuYWx5dGljc0RhdGFTZXRcIixcbiAgICAgICAgICBcImNvbm5lY3Q6TGlzdEFuYWx5dGljc0RhdGFBc3NvY2lhdGlvbnNcIixcbiAgICAgICAgICBcImNvbm5lY3Q6TGlzdEFuYWx5dGljc0RhdGFMYWtlRGF0YVNldHNcIixcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYGFybjoke3BhcnRpdGlvbn06Y29ubmVjdDoke3JlZ2lvbn06JHthY2NvdW50fTppbnN0YW5jZS8qYF0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgbGFtYmRhRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXCJjb25uZWN0Okxpc3RJbnN0YW5jZXNcIl0sXG4gICAgICAgIHJlc291cmNlczogW2Bhcm46JHtwYXJ0aXRpb259OmNvbm5lY3Q6JHtyZWdpb259OiR7YWNjb3VudH06KmBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxhbWJkYUZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1wiZHM6RGVzY3JpYmVEaXJlY3Rvcmllc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYCpgXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBsYW1iZGFGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcImNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtgYXJuOiR7cGFydGl0aW9ufTpjbG91ZGZvcm1hdGlvbjoke3JlZ2lvbn06JHthY2NvdW50fTpzdGFjay8ke3N0YWNrTmFtZX0vKmBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIEFsbG93IGFzc3VtaW5nIENvbm5lY3REYXRhTGFrZVJvbGUgZm9yIGNyb3NzLWFjY291bnQgb3BlcmF0aW9uc1xuICAgIGlmIChpc0Nyb3NzQWNjb3VudERlcGxveW1lbnQpIHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbcm9sZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbXCJyYW06R2V0UmVzb3VyY2VTaGFyZUludml0YXRpb25zXCIsIFwicmFtOkdldFJlc291cmNlU2hhcmVzXCIsIFwicmFtOkxpc3RSZXNvdXJjZXNcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIGxhbWJkYUZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogW1wicmFtOkFjY2VwdFJlc291cmNlU2hhcmVJbnZpdGF0aW9uXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtwYXJ0aXRpb259OnJhbToke3JlZ2lvbn06KjpyZXNvdXJjZS1zaGFyZS1pbnZpdGF0aW9uLypgXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBsYW1iZGFGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFtcImxha2Vmb3JtYXRpb246R2V0RGF0YUxha2VTZXR0aW5nc1wiLCBcImxha2Vmb3JtYXRpb246UHV0RGF0YUxha2VTZXR0aW5nc1wiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgbGFtYmRhRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcImdsdWU6R2V0RGF0YWJhc2VcIixcbiAgICAgICAgICAgIFwiZ2x1ZTpDcmVhdGVEYXRhYmFzZVwiLFxuICAgICAgICAgICAgXCJnbHVlOkRlbGV0ZURhdGFiYXNlXCIsXG4gICAgICAgICAgICBcImdsdWU6Q3JlYXRlVGFibGVcIixcbiAgICAgICAgICAgIFwiZ2x1ZTpEZWxldGVUYWJsZVwiLFxuICAgICAgICAgICAgXCJnbHVlOkdldFRhYmxlc1wiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOiR7cGFydGl0aW9ufTpnbHVlOiR7cmVnaW9ufToke2FjY291bnR9OmRhdGFiYXNlLyR7RGF0YUxha2VBY2Nlc3MuREFUQUJBU0VfTkFNRX1gLFxuICAgICAgICAgICAgYGFybjoke3BhcnRpdGlvbn06Z2x1ZToke3JlZ2lvbn06JHthY2NvdW50fTp0YWJsZS8ke0RhdGFMYWtlQWNjZXNzLkRBVEFCQVNFX05BTUV9LypgLFxuICAgICAgICAgICAgYGFybjoke3BhcnRpdGlvbn06Z2x1ZToke3JlZ2lvbn06JHthY2NvdW50fTp1c2VyRGVmaW5lZEZ1bmN0aW9uLyR7RGF0YUxha2VBY2Nlc3MuREFUQUJBU0VfTkFNRX0vKmAsXG4gICAgICAgICAgICBgYXJuOiR7cGFydGl0aW9ufTpnbHVlOiR7cmVnaW9ufToke2FjY291bnR9OmNhdGFsb2dgLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-cloudformation",
3
3
  "description": "AWS SDK for JavaScript Cloudformation Client for Node.js, Browser and React Native",
4
- "version": "3.1041.0",
4
+ "version": "3.1045.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-cloudformation",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-connect",
3
3
  "description": "AWS SDK for JavaScript Connect Client for Node.js, Browser and React Native",
4
- "version": "3.1041.0",
4
+ "version": "3.1045.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-connect",
@@ -333,6 +333,7 @@ const _CJRr = "CreateJobResponse";
333
333
  const _CKS = "CatalogKafkaSource";
334
334
  const _CKSa = "CatalogKinesisSource";
335
335
  const _CL = "ConnectionsList";
336
+ const _CLGP = "CustomLogGroupPrefix";
336
337
  const _CLS = "CrawlerLineageSettings";
337
338
  const _CLa = "CatalogList";
338
339
  const _CLl = "ClassifierList";
@@ -3837,8 +3838,8 @@ exports.DataQualityEncryption$ = [3, n0, _DQE,
3837
3838
  ];
3838
3839
  exports.DataQualityEvaluationRunAdditionalRunOptions$ = [3, n0, _DQERARO,
3839
3840
  0,
3840
- [_CWME, _RSP, _CREM],
3841
- [2, 0, 0]
3841
+ [_CWME, _RSP, _CREM, _CLGP],
3842
+ [2, 0, 0, 0]
3842
3843
  ];
3843
3844
  exports.DataQualityGlueTable$ = [3, n0, _DQGT,
3844
3845
  0,
@@ -3892,8 +3893,8 @@ exports.DataQualityRulesetEvaluationRunDescription$ = [3, n0, _DQRERD,
3892
3893
  ];
3893
3894
  exports.DataQualityRulesetEvaluationRunFilter$ = [3, n0, _DQRERF,
3894
3895
  0,
3895
- [_DSa, _SB, _SAt],
3896
- [() => exports.DataSource$, 4, 4], 1
3896
+ [_DSa, _SB, _SAt, _RNu],
3897
+ [() => exports.DataSource$, 4, 4, 0], 1
3897
3898
  ];
3898
3899
  exports.DataQualityRulesetFilterCriteria$ = [3, n0, _DQRFCa,
3899
3900
  0,
@@ -305,6 +305,7 @@ const _CJRr = "CreateJobResponse";
305
305
  const _CKS = "CatalogKafkaSource";
306
306
  const _CKSa = "CatalogKinesisSource";
307
307
  const _CL = "ConnectionsList";
308
+ const _CLGP = "CustomLogGroupPrefix";
308
309
  const _CLS = "CrawlerLineageSettings";
309
310
  const _CLa = "CatalogList";
310
311
  const _CLl = "ClassifierList";
@@ -3809,8 +3810,8 @@ export var DataQualityEncryption$ = [3, n0, _DQE,
3809
3810
  ];
3810
3811
  export var DataQualityEvaluationRunAdditionalRunOptions$ = [3, n0, _DQERARO,
3811
3812
  0,
3812
- [_CWME, _RSP, _CREM],
3813
- [2, 0, 0]
3813
+ [_CWME, _RSP, _CREM, _CLGP],
3814
+ [2, 0, 0, 0]
3814
3815
  ];
3815
3816
  export var DataQualityGlueTable$ = [3, n0, _DQGT,
3816
3817
  0,
@@ -3864,8 +3865,8 @@ export var DataQualityRulesetEvaluationRunDescription$ = [3, n0, _DQRERD,
3864
3865
  ];
3865
3866
  export var DataQualityRulesetEvaluationRunFilter$ = [3, n0, _DQRERF,
3866
3867
  0,
3867
- [_DSa, _SB, _SAt],
3868
- [() => DataSource$, 4, 4], 1
3868
+ [_DSa, _SB, _SAt, _RNu],
3869
+ [() => DataSource$, 4, 4, 0], 1
3869
3870
  ];
3870
3871
  export var DataQualityRulesetFilterCriteria$ = [3, n0, _DQRFCa,
3871
3872
  0,
@@ -71,6 +71,7 @@ declare const GetDataQualityRulesetEvaluationRunCommand_base: {
71
71
  * // CloudWatchMetricsEnabled: true || false,
72
72
  * // ResultsS3Prefix: "STRING_VALUE",
73
73
  * // CompositeRuleEvaluationMethod: "COLUMN" || "ROW",
74
+ * // CustomLogGroupPrefix: "STRING_VALUE",
74
75
  * // },
75
76
  * // Status: "STARTING" || "RUNNING" || "STOPPING" || "STOPPED" || "SUCCEEDED" || "FAILED" || "TIMEOUT",
76
77
  * // ErrorString: "STRING_VALUE",
@@ -61,6 +61,7 @@ declare const ListDataQualityRulesetEvaluationRunsCommand_base: {
61
61
  * },
62
62
  * StartedBefore: new Date("TIMESTAMP"),
63
63
  * StartedAfter: new Date("TIMESTAMP"),
64
+ * RulesetName: "STRING_VALUE",
64
65
  * },
65
66
  * NextToken: "STRING_VALUE",
66
67
  * MaxResults: Number("int"),
@@ -66,6 +66,7 @@ declare const StartDataQualityRulesetEvaluationRunCommand_base: {
66
66
  * CloudWatchMetricsEnabled: true || false,
67
67
  * ResultsS3Prefix: "STRING_VALUE",
68
68
  * CompositeRuleEvaluationMethod: "COLUMN" || "ROW",
69
+ * CustomLogGroupPrefix: "STRING_VALUE",
69
70
  * },
70
71
  * RulesetNames: [ // RulesetNames // required
71
72
  * "STRING_VALUE",
@@ -6755,6 +6755,11 @@ export interface DataQualityEvaluationRunAdditionalRunOptions {
6755
6755
  * @public
6756
6756
  */
6757
6757
  CompositeRuleEvaluationMethod?: DQCompositeRuleEvaluationMethod | undefined;
6758
+ /**
6759
+ * <p>A custom prefix for the CloudWatch log group names. When specified, evaluation run logs are written to <code><CustomLogGroupPrefix>/error</code> and <code><CustomLogGroupPrefix>/output</code> instead of the default <code>/aws-glue/data-quality/error</code> and <code>/aws-glue/data-quality/output</code> log groups.</p>
6760
+ * @public
6761
+ */
6762
+ CustomLogGroupPrefix?: string | undefined;
6758
6763
  }
6759
6764
  /**
6760
6765
  * @public
@@ -3635,6 +3635,11 @@ export interface DataQualityRulesetEvaluationRunFilter {
3635
3635
  * @public
3636
3636
  */
3637
3637
  StartedAfter?: Date | undefined;
3638
+ /**
3639
+ * <p>Filter results by the name of the ruleset.</p>
3640
+ * @public
3641
+ */
3642
+ RulesetName?: string | undefined;
3638
3643
  }
3639
3644
  /**
3640
3645
  * @public
@@ -1519,6 +1519,7 @@ export interface DataQualityEvaluationRunAdditionalRunOptions {
1519
1519
  CloudWatchMetricsEnabled?: boolean | undefined;
1520
1520
  ResultsS3Prefix?: string | undefined;
1521
1521
  CompositeRuleEvaluationMethod?: DQCompositeRuleEvaluationMethod | undefined;
1522
+ CustomLogGroupPrefix?: string | undefined;
1522
1523
  }
1523
1524
  export interface GetDataQualityRulesetEvaluationRunResponse {
1524
1525
  RunId?: string | undefined;
@@ -846,6 +846,7 @@ export interface DataQualityRulesetEvaluationRunFilter {
846
846
  DataSource: DataSource | undefined;
847
847
  StartedBefore?: Date | undefined;
848
848
  StartedAfter?: Date | undefined;
849
+ RulesetName?: string | undefined;
849
850
  }
850
851
  export interface ListDataQualityRulesetEvaluationRunsRequest {
851
852
  Filter?: DataQualityRulesetEvaluationRunFilter | undefined;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-glue",
3
3
  "description": "AWS SDK for JavaScript Glue Client for Node.js, Browser and React Native",
4
- "version": "3.1041.0",
4
+ "version": "3.1045.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-glue",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-lakeformation",
3
3
  "description": "AWS SDK for JavaScript Lakeformation Client for Node.js, Browser and React Native",
4
- "version": "3.1041.0",
4
+ "version": "3.1045.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-lakeformation",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-ram",
3
3
  "description": "AWS SDK for JavaScript Ram Client for Node.js, Browser and React Native",
4
- "version": "3.1041.0",
4
+ "version": "3.1045.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-ram",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-sts",
3
3
  "description": "AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native",
4
- "version": "3.1041.0",
4
+ "version": "3.1045.0",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-sts",
@@ -1,6 +1,17 @@
1
1
 
2
2
 
3
3
 
4
+ **1.2.0** (2026-05-08)
5
+ - Add support for `sanitizeName` option
6
+ - Support xml-naming for validating and sanitizing tag and attribute names
7
+
8
+ **1.1.9** (2026-05-06)
9
+ - fix: format output for preserve order when indent by is set to empty string
10
+
11
+ **1.1.8** (2026-05-05)
12
+ - fix: skip text property for PI tags
13
+ - improve typings
14
+
4
15
  **1.1.7** (2026--05-04)
5
16
  - fix security issues when attribute value contains quotes
6
17
 
@@ -2,7 +2,7 @@
2
2
  Build XML from JSON
3
3
 
4
4
 
5
- XML Builder was the part of [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) for years. But considering that any bug in parser may false-alarm the users who are only using builder, we have decided to split it into a separate package.
5
+ XML Builder was part of [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) for years. But considering that any bug in the parser may false-alarm users who are only using the builder, we have decided to split it into a separate package.
6
6
 
7
7
  ## Installation
8
8
 
@@ -19,5 +19,56 @@ const builder = new XMLBuilder();
19
19
  const xml = builder.build({ name: 'value' });
20
20
  ```
21
21
 
22
- fast-xml-builder fully support the response generated by fast-xml-parser. So you can use the maximum options as you are using for fast-xml-parser like `preserveOrder`, `ignoreAttributes`, `attributeNamePrefix`, `textNodeName`, `cdataTagName`, `cdataPositionChar`, `format`, `indentBy`, `suppressEmptyNode` and many more. Any change in parser will reflect here time to time.
22
+ fast-xml-builder fully supports the response generated by fast-xml-parser. You can use options like `preserveOrder`, `ignoreAttributes`, `attributeNamePrefix`, `textNodeName`, `cdataPropName`, `commentPropName`, `format`, `indentBy`, `suppressEmptyNode`, `suppressUnpairedNode`, `stopNodes`, `oneListGroup`, `maxNestedTags`, and many more.
23
23
 
24
+ ## Default Options
25
+
26
+ ```js
27
+ {
28
+ attributeNamePrefix: '@_',
29
+ attributesGroupName: false,
30
+ textNodeName: '#text',
31
+ ignoreAttributes: true,
32
+ cdataPropName: false,
33
+ commentPropName: false,
34
+ format: false,
35
+ indentBy: ' ',
36
+ suppressEmptyNode: false,
37
+ suppressUnpairedNode: true,
38
+ suppressBooleanAttributes: true,
39
+ preserveOrder: false,
40
+ processEntities: true,
41
+ unpairedTags: [],
42
+ stopNodes: [],
43
+ oneListGroup: false,
44
+ maxNestedTags: 100,
45
+ jPath: true,
46
+ tagValueProcessor: (key, val) => val,
47
+ attributeValueProcessor: (attrName, val) => val,
48
+ }
49
+ ```
50
+
51
+ ## Options Reference
52
+
53
+ Check [Options reference](docs/Builder_v1.md) for more detail and examples.
54
+
55
+ - **arrayNodeName**: When building XML from an array, set `arrayNodeName` to wrap each element in a tag name.
56
+ - **attributeNamePrefix**: Prefix used to identify attribute properties in the JS object. Default: `'@_'`.
57
+ - **attributesGroupName**: Group name for attributes in the JS object. When set, all attributes are expected to be nested under this key. Not supported with `preserveOrder: true`.
58
+ - **attributeValueProcessor**: Customize how attribute values are serialized. Receives the attribute name and value.
59
+ - **cdataPropName**: Property name that identifies CDATA content. Values under this key are wrapped in `<![CDATA[...]]>`.
60
+ - **commentPropName**: Property name that identifies comment content. Values under this key are rendered as `<!-- ... -->`.
61
+ - **format**: By default, output is a single-line XML string. Set `format: true` for human-readable, indented output.
62
+ - **ignoreAttributes**: By default (`true`), attributes are skipped. Set to `false` to include them. Also supports selective ignoring via an array of strings, array of regular expressions, or a callback function.
63
+ - **indentBy**: String used for each level of indentation. Default: `' '` (two spaces). Only applies when `format: true`.
64
+ - **maxNestedTags**: Limits the maximum depth of nested tags. An error is thrown if this depth is exceeded. Default: `100`.
65
+ - **oneListGroup**: Groups all repeated child tags under a single parent tag.
66
+ - **preserveOrder**: When a JS object was produced by XMLParser with `preserveOrder: true`, pass the same option to XMLBuilder to reconstruct the original XML correctly.
67
+ - **processEntities**: When `true` (default), special characters in text and attribute values are replaced with XML entities (`&amp;`, `&lt;`, etc.). Set to `false` for a performance boost when you know your content has no entities. Note: quotes in attribute values are always escaped regardless of this setting.
68
+ - **stopNodes**: Tags listed here are treated as raw content containers — their text content is written as-is without entity encoding. Accepts an array of tag name strings or `Expression` instances from `path-expression-matcher`. The old `*.tagName` wildcard syntax is still accepted and automatically converted to the equivalent `..tagName` deep-wildcard syntax.
69
+ - **suppressBooleanAttributes**: When `true` (default), attributes with the value `true` are rendered without the value (e.g. `<tag attr>` instead of `<tag attr="true">`).
70
+ - **suppressEmptyNode**: When `true`, tags with no text value are rendered as self-closing (`<tag/>`).
71
+ - **suppressUnpairedNode**: When `true` (default), unpaired tags are rendered without a closing slash (`<br>`). When `false`, they are rendered as `<br/>`.
72
+ - **tagValueProcessor**: Customize how tag text values are serialized. Receives the tag name and value.
73
+ - **textNodeName**: Property name representing the text content of a tag in the JS object. Default: `'#text'`.
74
+ - **unpairedTags**: List of tag names that have no matching closing tag (e.g. `<br>` in HTML).
@@ -1 +1 @@
1
- (()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>b});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,s="";for(;i<t.length;)t[i]===this.separator?i+1<t.length&&t[i+1]===this.separator?(s.trim()&&(e.push(this._parseSegment(s.trim())),s=""),e.push({type:"deep-wildcard"}),i+=2):(s.trim()&&e.push(this._parseSegment(s.trim())),s="",i++):(s+=t[i],i++);return s.trim()&&e.push(this._parseSegment(s.trim())),e}_parseSegment(t){const e={type:"tag"};let i=null,s=t;const n=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(n&&(s=n[1]+n[3],n[2])){const t=n[2].slice(1,-1);t&&(i=t)}let o,r,a=s;if(s.includes("::")){const e=s.indexOf("::");if(o=s.substring(0,e).trim(),a=s.substring(e+2).trim(),!o)throw new Error(`Invalid namespace in pattern: ${t}`)}let h=null;if(a.includes(":")){const t=a.lastIndexOf(":"),e=a.substring(0,t).trim(),i=a.substring(t+1).trim();["first","last","odd","even"].includes(i)||/^nth\(\d+\)$/.test(i)?(r=e,h=i):r=a}else r=a;if(!r)throw new Error(`Invalid segment pattern: ${t}`);if(e.tag=r,o&&(e.namespace=o),i)if(i.includes("=")){const t=i.indexOf("=");e.attrName=i.substring(0,t).trim(),e.attrValue=i.substring(t+1).trim()}else e.attrName=i.trim();if(h){const t=h.match(/^nth\((\d+)\)$/);t?(e.position="nth",e.positionValue=parseInt(t[1],10)):e.position=h}return e}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}}class s{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[]}push(t,e=null,i=null){this.path.length>0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;this.siblingStacks[s]||(this.siblingStacks[s]=new Map);const n=this.siblingStacks[s],o=i?`${i}:${t}`:t,r=n.get(o)||0;let a=0;for(const t of n.values())a+=t;n.set(o,r+1);const h={tag:t,position:a,counter:r};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e<t.length;e++){const i=t[e],s=this.path[e],n=e===this.path.length-1;if(!this._matchSegment(i,s,n))return!1}return!0}_matchWithDeepWildcard(t){let e=this.path.length-1,i=t.length-1;for(;i>=0&&e>=0;){const s=t[i];if("deep-wildcard"===s.type){if(i--,i<0)return!0;const s=t[i];let n=!1;for(let t=e;t>=0;t--){const o=t===this.path.length-1;if(this._matchSegment(s,this.path[t],o)){e=t-1,i--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(s,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const s=e.counter??0;if("first"===t.position&&0!==s)return!1;if("odd"===t.position&&s%2!=1)return!1;if("even"===t.position&&s%2!=0)return!1;if("nth"===t.position&&s!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function n(t){return String(t).replace(/--/g,"- -").replace(/--/g,"- -").replace(/-$/,"- ")}function o(t){return String(t).replace(/\]\]>/g,"]]]]><![CDATA[>")}function r(t){return String(t).replace(/"/g,"&quot;").replace(/'/g,"&apos;")}function a(t,e){let n="";e.format&&e.indentBy.length>0&&(n="\n");const o=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;t<e.stopNodes.length;t++){const s=e.stopNodes[t];"string"==typeof s?o.push(new i(s)):s instanceof i&&o.push(s)}return h(t,e,n,new s,o)}function h(t,e,i,s,r){let a="",l=!1;if(e.maxNestedTags&&s.getDepth()>e.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=g(i,e),i}return""}for(let m=0;m<t.length;m++){const b=t[m],N=c(b);if(void 0===N)continue;const y=p(b[":@"],e);s.push(N,y);const x=f(s,r);if(N===e.textNodeName){let t=b[N];x||(t=e.tagValueProcessor(N,t),t=g(t,e)),l&&(a+=i),a+=t,l=!1,s.pop();continue}if(N===e.cdataPropName){l&&(a+=i),a+=`<![CDATA[${o(b[N][0][e.textNodeName])}]]>`,l=!1,s.pop();continue}if(N===e.commentPropName){a+=i+`\x3c!--${n(b[N][0][e.textNodeName])}--\x3e`,l=!0,s.pop();continue}if("?"===N[0]){const t=d(b[":@"],e,x),n="?xml"===N?"":i;let o=b[N][0][e.textNodeName];o=0!==o.length?" "+o:"",a+=n+`<${N}${o}${t}?>`,l=!0,s.pop();continue}let P=i;""!==P&&(P+=e.indentBy);const A=i+`<${N}${d(b[":@"],e,x)}`;let S;S=x?u(b[N],e):h(b[N],e,P,s,r),-1!==e.unpairedTags.indexOf(N)?e.suppressUnpairedNode?a+=A+">":a+=A+"/>":S&&0!==S.length||!e.suppressEmptyNode?S&&S.endsWith(">")?a+=A+`>${S}${i}</${N}>`:(a+=A+">",S&&""!==i&&(S.includes("/>")||S.includes("</"))?a+=i+e.indentBy+S+i:a+=S,a+=`</${N}>`):a+=A+"/>",l=!0,s.pop()}return a}function p(t,e){if(!t||e.ignoreAttributes)return null;const i={};let s=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=r(t[n]),s=!0);return s?i:null}function u(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let s=0;s<t.length;s++){const n=t[s],o=c(n);if(o===e.textNodeName)i+=n[o];else if(o===e.cdataPropName)i+=n[o][0][e.textNodeName];else if(o===e.commentPropName)i+=n[o][0][e.textNodeName];else{if(o&&"?"===o[0])continue;if(o){const t=l(n[":@"],e),s=u(n[o],e);s&&0!==s.length?i+=`<${o}${t}>${s}</${o}>`:i+=`<${o}${t}/>`}}}return i}function l(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let n=t[s];!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${r(n)}"`}return i}function c(t){const e=Object.keys(t);for(let i=0;i<e.length;i++){const s=e[i];if(Object.prototype.hasOwnProperty.call(t,s)&&":@"!==s)return s}}function d(t,e,i){let s="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let o;i?o=t[n]:(o=e.attributeValueProcessor(n,t[n]),o=g(o,e)),!0===o&&e.suppressBooleanAttributes?s+=` ${n.substr(e.attributeNamePrefix.length)}`:s+=` ${n.substr(e.attributeNamePrefix.length)}="${r(o)}"`}return s}function f(t,e){if(!e||0===e.length)return!1;for(let i=0;i<e.length;i++)if(t.matches(e[i]))return!0;return!1}function g(t,e){if(t&&t.length>0&&e.processEntities)for(let i=0;i<e.entities.length;i++){const s=e.entities[i];t=t.replace(s.regex,s.val)}return t}const m={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function b(t){if(this.options=Object.assign({},m,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t<this.options.stopNodes.length;t++){const e=this.options.stopNodes[t];"string"==typeof e?this.stopNodeExpressions.push(new i(e)):e instanceof i&&this.stopNodeExpressions.push(e)}var e;!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=x),this.processTextOrObjNode=N,this.options.format?(this.indentate=y,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function N(t,e,i,s){const n=this.extractAttributes(t);if(s.push(e,n),this.checkStopNode(s)){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return s.pop(),this.buildObjectNode(n,e,o,i)}const o=this.j2x(t,i+1,s);return s.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,i,s):this.buildObjectNode(o.val,e,o.attrStr,i)}function y(t){return this.options.indentBy.repeat(t)}function x(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}b.prototype.build=function(t){if(this.options.preserveOrder)return a(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new s;return this.j2x(t,0,e).val}},b.prototype.j2x=function(t,e,i){let s="",n="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const o=this.options.jPath?i.toString():i,r=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName||a===this.options.commentPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,o))s+=this.buildAttrPairStr(h,""+t[a],r);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else{i.push(a);const s=this.checkStopNode(i);if(i.pop(),s){const i=""+t[a];n+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+"</"+a+this.tagEndChar}else n+=this.buildTextValNode(t[a],a,"",e,i)}}else if(Array.isArray(t[a])){const s=t[a].length;let o="",r="";for(let h=0;h<s;h++){const s=t[a][h];if(void 0===s);else if(null===s)"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if("object"==typeof s)if(this.options.oneListGroup){i.push(a);const t=this.j2x(s,e+1,i);i.pop(),o+=t.val,this.options.attributesGroupName&&s.hasOwnProperty(this.options.attributesGroupName)&&(r+=t.attrStr)}else o+=this.processTextOrObjNode(s,a,e,i);else if(this.options.oneListGroup){let t=this.options.tagValueProcessor(a,s);t=this.replaceEntitiesValue(t),o+=t}else{i.push(a);const t=this.checkStopNode(i);if(i.pop(),t){const t=""+s;o+=""===t?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+t+"</"+a+this.tagEndChar}else o+=this.buildTextValNode(s,a,"",e,i)}}this.options.oneListGroup&&(o=this.buildObjectNode(o,a,r,e)),n+=o}else if(this.options.attributesGroupName&&a===this.options.attributesGroupName){const e=Object.keys(t[a]),i=e.length;for(let n=0;n<i;n++)s+=this.buildAttrPairStr(e[n],""+t[a][e[n]],r)}else n+=this.processTextOrObjNode(t[a],a,e,i);return{attrStr:s,val:n}},b.prototype.buildAttrPairStr=function(t,e,i){return i||(e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e)),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+r(e)+'"'},b.prototype.extractAttributes=function(t){if(!t||"object"!=typeof t)return null;const e={};let i=!1;if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const s=t[this.options.attributesGroupName];for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(e[t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t]=r(s[t]),i=!0)}else for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;const n=this.isAttribute(s);n&&(e[n]=r(t[s]),i=!0)}return i?e:null},b.prototype.buildRawContent=function(t){if("string"==typeof t)return t;if("object"!=typeof t||null===t)return String(t);if(void 0!==t[this.options.textNodeName])return t[this.options.textNodeName];let e="";for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;if(this.isAttribute(i))continue;if(this.options.attributesGroupName&&i===this.options.attributesGroupName)continue;const s=t[i];if(i===this.options.textNodeName)e+=s;else if(Array.isArray(s)){for(let t of s)if("string"==typeof t||"number"==typeof t)e+=`<${i}>${t}</${i}>`;else if("object"==typeof t&&null!==t){const s=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===s?`<${i}${n}/>`:`<${i}${n}>${s}</${i}>`}}else if("object"==typeof s&&null!==s){const t=this.buildRawContent(s),n=this.buildAttributesForStopNode(s);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}</${i}>`}else e+=`<${i}>${s}</${i}>`}return e},b.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const s=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const s=this.isAttribute(i);if(s){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}return e},b.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n="</"+e+this.tagEndChar,o="";return"?"===e[0]&&(o="?",n=""),!i&&""!==i||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===o.length?this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(s)+"<"+e+i+o+this.tagEndChar+t+this.indentate(s)+n:this.indentate(s)+"<"+e+i+o+">"+t+n}},b.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},b.prototype.checkStopNode=function(t){if(!this.stopNodeExpressions||0===this.stopNodeExpressions.length)return!1;for(let e=0;e<this.stopNodeExpressions.length;e++)if(t.matches(this.stopNodeExpressions[e]))return!0;return!1},b.prototype.buildTextValNode=function(t,e,i,s,r){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName){const e=o(t);return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine}if(!1!==this.options.commentPropName&&e===this.options.commentPropName){const e=n(t);return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine}if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"</"+e+this.tagEndChar}},b.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const i=this.options.entities[e];t=t.replace(i.regex,i.val)}return t},module.exports=e})();
1
+ (()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>w});class i{constructor(t,e={},i){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this.data=i,this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,s="";for(;i<t.length;)t[i]===this.separator?i+1<t.length&&t[i+1]===this.separator?(s.trim()&&(e.push(this._parseSegment(s.trim())),s=""),e.push({type:"deep-wildcard"}),i+=2):(s.trim()&&e.push(this._parseSegment(s.trim())),s="",i++):(s+=t[i],i++);return s.trim()&&e.push(this._parseSegment(s.trim())),e}_parseSegment(t){const e={type:"tag"};let i=null,s=t;const n=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(n&&(s=n[1]+n[3],n[2])){const t=n[2].slice(1,-1);t&&(i=t)}let r,o,a=s;if(s.includes("::")){const e=s.indexOf("::");if(r=s.substring(0,e).trim(),a=s.substring(e+2).trim(),!r)throw new Error(`Invalid namespace in pattern: ${t}`)}let h=null;if(a.includes(":")){const t=a.lastIndexOf(":"),e=a.substring(0,t).trim(),i=a.substring(t+1).trim();["first","last","odd","even"].includes(i)||/^nth\(\d+\)$/.test(i)?(o=e,h=i):o=a}else o=a;if(!o)throw new Error(`Invalid segment pattern: ${t}`);if(e.tag=o,r&&(e.namespace=r),i)if(i.includes("=")){const t=i.indexOf("=");e.attrName=i.substring(0,t).trim(),e.attrValue=i.substring(t+1).trim()}else e.attrName=i.trim();if(h){const t=h.match(/^nth\((\d+)\)$/);t?(e.position="nth",e.positionValue=parseInt(t[1],10)):e.position=h}return e}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}}class s{constructor(t){this._matcher=t}get separator(){return this._matcher.separator}getCurrentTag(){const t=this._matcher.path;return t.length>0?t[t.length-1].tag:void 0}getCurrentNamespace(){const t=this._matcher.path;return t.length>0?t[t.length-1].namespace:void 0}getAttrValue(t){const e=this._matcher.path;if(0!==e.length)return e[e.length-1].values?.[t]}hasAttr(t){const e=this._matcher.path;if(0===e.length)return!1;const i=e[e.length-1];return void 0!==i.values&&t in i.values}getPosition(){const t=this._matcher.path;return 0===t.length?-1:t[t.length-1].position??0}getCounter(){const t=this._matcher.path;return 0===t.length?-1:t[t.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(t,e=!0){return this._matcher.toString(t,e)}toArray(){return this._matcher.path.map(t=>t.tag)}matches(t){return this._matcher.matches(t)}matchesAny(t){return t.matchesAny(this._matcher)}}class n{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new s(this)}push(t,e=null,i=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;this.siblingStacks[s]||(this.siblingStacks[s]=new Map);const n=this.siblingStacks[s],r=i?`${i}:${t}`:t,o=n.get(r)||0;let a=0;for(const t of n.values())a+=t;n.set(r,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;this._pathStringCache=null;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0!==this.path.length)return this.path[this.path.length-1].values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;if(i===this.separator&&!0===e){if(null!==this._pathStringCache)return this._pathStringCache;const t=this.path.map(t=>t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i);return this._pathStringCache=t,t}return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e<t.length;e++)if(!this._matchSegment(t[e],this.path[e],e===this.path.length-1))return!1;return!0}_matchWithDeepWildcard(t){let e=this.path.length-1,i=t.length-1;for(;i>=0&&e>=0;){const s=t[i];if("deep-wildcard"===s.type){if(i--,i<0)return!0;const s=t[i];let n=!1;for(let t=e;t>=0;t--)if(this._matchSegment(s,this.path[t],t===this.path.length-1)){e=t-1,i--,n=!0;break}if(!n)return!1}else{if(!this._matchSegment(s,this.path[e],e===this.path.length-1))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue&&String(e.values[t.attrName])!==String(t.attrValue))return!1}if(void 0!==t.position){if(!i)return!1;const s=e.counter??0;if("first"===t.position&&0!==s)return!1;if("odd"===t.position&&s%2!=1)return!1;if("even"===t.position&&s%2!=0)return!1;if("nth"===t.position&&s!==t.positionValue)return!1}return!0}matchesAny(t){return t.matchesAny(this)}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this._pathStringCache=null,this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return this._view}}function r(t){return String(t).replace(/--/g,"- -").replace(/--/g,"- -").replace(/-$/,"- ")}function o(t){return String(t).replace(/\]\]>/g,"]]]]><![CDATA[>")}function a(t){return String(t).replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const h=":A-Za-z_À-ÖØ-öø-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�",p=":A-Za-z_À-˿Ͱ-ͽͿ-҆҈-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",u=p+"\\-\\.\\d·̀-ͯ҇‿-⁀",l=(t,e,i="")=>{const s=`[${t.replace(":","")}][${e.replace(":","")}]*`;return{name:new RegExp(`^[${t}][${e}]*$`,i),ncName:new RegExp(`^${s}$`,i),qName:new RegExp(`^${s}(?::${s})?$`,i),nmToken:new RegExp(`^[${e}]+$`,i),nmTokens:new RegExp(`^[${e}]+(?:\\s+[${e}]+)*$`,i)}},c=l(h,h+"\\-\\.\\d·̀-ͯ‿-⁀"),g=l(p,u,"u"),d=(t,{xmlVersion:e="1.0"}={})=>((t="1.0")=>"1.1"===t?g:c)(e).qName.test(t);function f(t,e,i,s,n){return i.sanitizeName?d(t,{xmlVersion:n})?t:i.sanitizeName(t,{isAttribute:e,matcher:s.readOnly()}):t}function m(t,e){let s="";e.format&&(s="\n");const r=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;t<e.stopNodes.length;t++){const s=e.stopNodes[t];"string"==typeof s?r.push(new i(s)):s instanceof i&&r.push(s)}const o=function(t,e){if(!Array.isArray(t)||0===t.length)return"1.0";const i=t[0];if("?xml"===A(i)){const t=i[":@"];if(t){const i=e.attributeNamePrefix+"version";if(t[i])return t[i]}}return"1.0"}(t,e);return N(t,e,s,new n,r,o)}function N(t,e,i,s,n,a){let h="",p=!1;if(e.maxNestedTags&&s.getDepth()>e.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=S(i,e),i}return""}for(let u=0;u<t.length;u++){const l=t[u],c=A(l);if(void 0===c)continue;const g=c===e.textNodeName||c===e.cdataPropName||c===e.commentPropName||"?"===c[0]?c:f(c,!1,e,s,a),d=b(l[":@"],e);s.push(g,d);const m=P(s,n);if(g===e.textNodeName){let t=l[c];m||(t=e.tagValueProcessor(g,t),t=S(t,e)),p&&(h+=i),h+=t,p=!1,s.pop();continue}if(g===e.cdataPropName){p&&(h+=i),h+=`<![CDATA[${o(l[c][0][e.textNodeName])}]]>`,p=!1,s.pop();continue}if(g===e.commentPropName){h+=i+`\x3c!--${r(l[c][0][e.textNodeName])}--\x3e`,p=!0,s.pop();continue}if("?"===g[0]){h+=("?xml"===g?"":i)+`<${g}${$(l[":@"],e,m,s,a)}?>`,p=!0,s.pop();continue}let y=i;""!==y&&(y+=e.indentBy);const v=i+`<${g}${$(l[":@"],e,m,s,a)}`;let w;w=m?x(l[c],e):N(l[c],e,y,s,n,a),-1!==e.unpairedTags.indexOf(g)?e.suppressUnpairedNode?h+=v+">":h+=v+"/>":w&&0!==w.length||!e.suppressEmptyNode?w&&w.endsWith(">")?h+=v+`>${w}${i}</${g}>`:(h+=v+">",w&&""!==i&&(w.includes("/>")||w.includes("</"))?h+=i+e.indentBy+w+i:h+=w,h+=`</${g}>`):h+=v+"/>",p=!0,s.pop()}return h}function b(t,e){if(!t||e.ignoreAttributes)return null;const i={};let s=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=a(t[n]),s=!0);return s?i:null}function x(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let s=0;s<t.length;s++){const n=t[s],r=A(n);if(r===e.textNodeName)i+=n[r];else if(r===e.cdataPropName)i+=n[r][0][e.textNodeName];else if(r===e.commentPropName)i+=n[r][0][e.textNodeName];else{if(r&&"?"===r[0])continue;if(r){const t=y(n[":@"],e),s=x(n[r],e);s&&0!==s.length?i+=`<${r}${t}>${s}</${r}>`:i+=`<${r}${t}/>`}}}return i}function y(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let n=t[s];!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${a(n)}"`}return i}function A(t){const e=Object.keys(t);for(let i=0;i<e.length;i++){const s=e[i];if(Object.prototype.hasOwnProperty.call(t,s)&&":@"!==s)return s}}function $(t,e,i,s,n){let r="";if(t&&!e.ignoreAttributes)for(let o in t){if(!Object.prototype.hasOwnProperty.call(t,o))continue;const h=o.substr(e.attributeNamePrefix.length),p=i?h:f(h,!0,e,s,n);let u;i?u=t[o]:(u=e.attributeValueProcessor(o,t[o]),u=S(u,e)),!0===u&&e.suppressBooleanAttributes?r+=` ${p}`:r+=` ${p}="${a(u)}"`}return r}function P(t,e){if(!e||0===e.length)return!1;for(let i=0;i<e.length;i++)if(t.matches(e[i]))return!0;return!1}function S(t,e){if(t&&t.length>0&&e.processEntities)for(let i=0;i<e.entities.length;i++){const s=e.entities[i];t=t.replace(s.regex,s.val)}return t}const v={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0,sanitizeName:!1};function w(t){if(this.options=Object.assign({},v,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t<this.options.stopNodes.length;t++){const e=this.options.stopNodes[t];"string"==typeof e?this.stopNodeExpressions.push(new i(e)):e instanceof i&&this.stopNodeExpressions.push(e)}var e;!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=C),this.processTextOrObjNode=O,this.options.format?(this.indentate=_,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function E(t,e,i,s,n){return i.sanitizeName?d(t,{xmlVersion:n})?t:i.sanitizeName(t,{isAttribute:e,matcher:s.readOnly()}):t}function O(t,e,i,s,n){const r=this.extractAttributes(t);if(s.push(e,r),this.checkStopNode(s)){const n=this.buildRawContent(t),r=this.buildAttributesForStopNode(t);return s.pop(),this.buildObjectNode(n,e,r,i)}const o=this.j2x(t,i+1,s,n);return s.pop(),"?"===e[0]?this.buildTextValNode("",e,o.attrStr,i,s):void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,i,s):this.buildObjectNode(o.val,e,o.attrStr,i)}function _(t){return this.options.indentBy.repeat(t)}function C(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}w.prototype.build=function(t){if(this.options.preserveOrder)return m(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new n,i=function(t,e){const i=t["?xml"];if(i&&"object"==typeof i){if(e.attributesGroupName&&i[e.attributesGroupName]){const t=i[e.attributesGroupName][e.attributeNamePrefix+"version"];if(t)return t}const t=i[e.attributeNamePrefix+"version"];if(t)return t}return"1.0"}(t,this.options);return this.j2x(t,0,e,i).val}},w.prototype.j2x=function(t,e,i,s){let n="",r="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const o=this.options.jPath?i.toString():i,a=this.checkStopNode(i);for(let h in t){if(!Object.prototype.hasOwnProperty.call(t,h))continue;const p=h===this.options.textNodeName||h===this.options.cdataPropName||h===this.options.commentPropName||this.options.attributesGroupName&&h===this.options.attributesGroupName||this.isAttribute(h)||"?"===h[0]?h:E(h,!1,this.options,i,s);if(void 0===t[h])this.isAttribute(h)&&(r+="");else if(null===t[h])this.isAttribute(h)||p===this.options.cdataPropName||p===this.options.commentPropName?r+="":"?"===p[0]?r+=this.indentate(e)+"<"+p+"?"+this.tagEndChar:r+=this.indentate(e)+"<"+p+"/"+this.tagEndChar;else if(t[h]instanceof Date)r+=this.buildTextValNode(t[h],p,"",e,i);else if("object"!=typeof t[h]){const u=this.isAttribute(h);if(u&&!this.ignoreAttributesFn(u,o)){const e=E(u,!0,this.options,i,s);n+=this.buildAttrPairStr(e,""+t[h],a)}else if(!u)if(h===this.options.textNodeName){let e=this.options.tagValueProcessor(h,""+t[h]);r+=this.replaceEntitiesValue(e)}else{i.push(p);const s=this.checkStopNode(i);if(i.pop(),s){const i=""+t[h];r+=""===i?this.indentate(e)+"<"+p+this.closeTag(p)+this.tagEndChar:this.indentate(e)+"<"+p+">"+i+"</"+p+this.tagEndChar}else r+=this.buildTextValNode(t[h],p,"",e,i)}}else if(Array.isArray(t[h])){const n=t[h].length;let o="",a="";for(let u=0;u<n;u++){const n=t[h][u];if(void 0===n);else if(null===n)"?"===p[0]?r+=this.indentate(e)+"<"+p+"?"+this.tagEndChar:r+=this.indentate(e)+"<"+p+"/"+this.tagEndChar;else if("object"==typeof n)if(this.options.oneListGroup){i.push(p);const t=this.j2x(n,e+1,i,s);i.pop(),o+=t.val,this.options.attributesGroupName&&n.hasOwnProperty(this.options.attributesGroupName)&&(a+=t.attrStr)}else o+=this.processTextOrObjNode(n,p,e,i,s);else if(this.options.oneListGroup){let t=this.options.tagValueProcessor(p,n);t=this.replaceEntitiesValue(t),o+=t}else{i.push(p);const t=this.checkStopNode(i);if(i.pop(),t){const t=""+n;o+=""===t?this.indentate(e)+"<"+p+this.closeTag(p)+this.tagEndChar:this.indentate(e)+"<"+p+">"+t+"</"+p+this.tagEndChar}else o+=this.buildTextValNode(n,p,"",e,i)}}this.options.oneListGroup&&(o=this.buildObjectNode(o,p,a,e)),r+=o}else if(this.options.attributesGroupName&&h===this.options.attributesGroupName){const e=Object.keys(t[h]),r=e.length;for(let o=0;o<r;o++){const r=E(e[o],!0,this.options,i,s);n+=this.buildAttrPairStr(r,""+t[h][e[o]],a)}}else r+=this.processTextOrObjNode(t[h],p,e,i,s)}return{attrStr:n,val:r}},w.prototype.buildAttrPairStr=function(t,e,i){return i||(e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e)),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+a(e)+'"'},w.prototype.extractAttributes=function(t){if(!t||"object"!=typeof t)return null;const e={};let i=!1;if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const s=t[this.options.attributesGroupName];for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(e[t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t]=a(s[t]),i=!0)}else for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;const n=this.isAttribute(s);n&&(e[n]=a(t[s]),i=!0)}return i?e:null},w.prototype.buildRawContent=function(t){if("string"==typeof t)return t;if("object"!=typeof t||null===t)return String(t);if(void 0!==t[this.options.textNodeName])return t[this.options.textNodeName];let e="";for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;if(this.isAttribute(i))continue;if(this.options.attributesGroupName&&i===this.options.attributesGroupName)continue;const s=t[i];if(i===this.options.textNodeName)e+=s;else if(Array.isArray(s)){for(let t of s)if("string"==typeof t||"number"==typeof t)e+=`<${i}>${t}</${i}>`;else if("object"==typeof t&&null!==t){const s=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===s?`<${i}${n}/>`:`<${i}${n}>${s}</${i}>`}}else if("object"==typeof s&&null!==s){const t=this.buildRawContent(s),n=this.buildAttributesForStopNode(s);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}</${i}>`}else e+=`<${i}>${s}</${i}>`}return e},w.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const s=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const s=this.isAttribute(i);if(s){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}return e},w.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n="</"+e+this.tagEndChar,r="";return"?"===e[0]&&(r="?",n=""),!i&&""!==i||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===r.length?this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(s)+"<"+e+i+r+this.tagEndChar+t+this.indentate(s)+n:this.indentate(s)+"<"+e+i+r+">"+t+n}},w.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},w.prototype.checkStopNode=function(t){if(!this.stopNodeExpressions||0===this.stopNodeExpressions.length)return!1;for(let e=0;e<this.stopNodeExpressions.length;e++)if(t.matches(this.stopNodeExpressions[e]))return!0;return!1},w.prototype.buildTextValNode=function(t,e,i,s,n){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName){const e=o(t);return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine}if(!1!==this.options.commentPropName&&e===this.options.commentPropName){const e=r(t);return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine}if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"</"+e+this.tagEndChar}},w.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const i=this.options.entities[e];t=t.replace(i.regex,i.val)}return t},module.exports=e})();