@orcabus/platform-cdk-constructs 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -5391,7 +5391,7 @@
5391
5391
  },
5392
5392
  "locationInModule": {
5393
5393
  "filename": "ecs/index.ts",
5394
- "line": 85
5394
+ "line": 88
5395
5395
  },
5396
5396
  "parameters": [
5397
5397
  {
@@ -5417,7 +5417,7 @@
5417
5417
  "kind": "class",
5418
5418
  "locationInModule": {
5419
5419
  "filename": "ecs/index.ts",
5420
- "line": 79
5420
+ "line": 82
5421
5421
  },
5422
5422
  "name": "EcsFargateTaskConstruct",
5423
5423
  "namespace": "ecs",
@@ -5429,7 +5429,7 @@
5429
5429
  "immutable": true,
5430
5430
  "locationInModule": {
5431
5431
  "filename": "ecs/index.ts",
5432
- "line": 80
5432
+ "line": 83
5433
5433
  },
5434
5434
  "name": "cluster",
5435
5435
  "type": {
@@ -5443,7 +5443,7 @@
5443
5443
  "immutable": true,
5444
5444
  "locationInModule": {
5445
5445
  "filename": "ecs/index.ts",
5446
- "line": 83
5446
+ "line": 86
5447
5447
  },
5448
5448
  "name": "containerDefinition",
5449
5449
  "type": {
@@ -5457,7 +5457,7 @@
5457
5457
  "immutable": true,
5458
5458
  "locationInModule": {
5459
5459
  "filename": "ecs/index.ts",
5460
- "line": 82
5460
+ "line": 85
5461
5461
  },
5462
5462
  "name": "securityGroup",
5463
5463
  "type": {
@@ -5471,7 +5471,7 @@
5471
5471
  "immutable": true,
5472
5472
  "locationInModule": {
5473
5473
  "filename": "ecs/index.ts",
5474
- "line": 81
5474
+ "line": 84
5475
5475
  },
5476
5476
  "name": "taskDefinition",
5477
5477
  "type": {
@@ -5491,31 +5491,11 @@
5491
5491
  "kind": "interface",
5492
5492
  "locationInModule": {
5493
5493
  "filename": "ecs/index.ts",
5494
- "line": 39
5494
+ "line": 42
5495
5495
  },
5496
5496
  "name": "FargateEcsTaskConstructProps",
5497
5497
  "namespace": "ecs",
5498
5498
  "properties": [
5499
- {
5500
- "abstract": true,
5501
- "docs": {
5502
- "custom": {
5503
- "DEFAULT_ARCHITECTURE": "."
5504
- },
5505
- "remarks": "If not provided, the default is",
5506
- "stability": "experimental",
5507
- "summary": "The architecture of the container."
5508
- },
5509
- "immutable": true,
5510
- "locationInModule": {
5511
- "filename": "ecs/index.ts",
5512
- "line": 65
5513
- },
5514
- "name": "architecture",
5515
- "type": {
5516
- "primitive": "string"
5517
- }
5518
- },
5519
5499
  {
5520
5500
  "abstract": true,
5521
5501
  "docs": {
@@ -5526,7 +5506,7 @@
5526
5506
  "immutable": true,
5527
5507
  "locationInModule": {
5528
5508
  "filename": "ecs/index.ts",
5529
- "line": 71
5509
+ "line": 74
5530
5510
  },
5531
5511
  "name": "containerName",
5532
5512
  "type": {
@@ -5543,7 +5523,7 @@
5543
5523
  "immutable": true,
5544
5524
  "locationInModule": {
5545
5525
  "filename": "ecs/index.ts",
5546
- "line": 76
5526
+ "line": 79
5547
5527
  },
5548
5528
  "name": "dockerPath",
5549
5529
  "type": {
@@ -5563,7 +5543,7 @@
5563
5543
  "immutable": true,
5564
5544
  "locationInModule": {
5565
5545
  "filename": "ecs/index.ts",
5566
- "line": 60
5546
+ "line": 63
5567
5547
  },
5568
5548
  "name": "memoryLimitGiB",
5569
5549
  "type": {
@@ -5582,13 +5562,34 @@
5582
5562
  "immutable": true,
5583
5563
  "locationInModule": {
5584
5564
  "filename": "ecs/index.ts",
5585
- "line": 53
5565
+ "line": 56
5586
5566
  },
5587
5567
  "name": "nCpus",
5588
5568
  "type": {
5589
5569
  "primitive": "number"
5590
5570
  }
5591
5571
  },
5572
+ {
5573
+ "abstract": true,
5574
+ "docs": {
5575
+ "custom": {
5576
+ "DEFAULT_ARCHITECTURE": "."
5577
+ },
5578
+ "remarks": "If not provided, the default is",
5579
+ "stability": "experimental",
5580
+ "summary": "The architecture of the container."
5581
+ },
5582
+ "immutable": true,
5583
+ "locationInModule": {
5584
+ "filename": "ecs/index.ts",
5585
+ "line": 68
5586
+ },
5587
+ "name": "architecture",
5588
+ "optional": true,
5589
+ "type": {
5590
+ "primitive": "string"
5591
+ }
5592
+ },
5592
5593
  {
5593
5594
  "abstract": true,
5594
5595
  "docs": {
@@ -5602,9 +5603,10 @@
5602
5603
  "immutable": true,
5603
5604
  "locationInModule": {
5604
5605
  "filename": "ecs/index.ts",
5605
- "line": 48
5606
+ "line": 51
5606
5607
  },
5607
5608
  "name": "runtimePlatform",
5609
+ "optional": true,
5608
5610
  "type": {
5609
5611
  "fqn": "aws-cdk-lib.aws_ecs.CpuArchitecture"
5610
5612
  }
@@ -5622,7 +5624,7 @@
5622
5624
  "immutable": true,
5623
5625
  "locationInModule": {
5624
5626
  "filename": "ecs/index.ts",
5625
- "line": 43
5627
+ "line": 46
5626
5628
  },
5627
5629
  "name": "vpcName",
5628
5630
  "optional": true,
@@ -6394,6 +6396,6 @@
6394
6396
  "symbolId": "shared-config/networking:OrcaBusVpc"
6395
6397
  }
6396
6398
  },
6397
- "version": "0.0.21",
6398
- "fingerprint": "ocycWmN0R4P5pAdGWJpdZGN2fHXJ4zpntMivR0rW1dM="
6399
+ "version": "0.0.22",
6400
+ "fingerprint": "gDadz17rfgisbpjWhJDdpXmpdrlwWE4XcQl34aoiQ20="
6399
6401
  }
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
15
15
  const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
16
16
  const config_1 = require("./config");
17
17
  class OrcaBusApiGateway extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.21" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "0.0.22" };
19
19
  /**
20
20
  * The AWS region where the API Gateway is deployed.
21
21
  */
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
13
13
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
14
14
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
15
15
  class CrossDeploymentArtifactBucket extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.21" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "0.0.22" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -31,7 +31,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
31
31
  * before using this construct.
32
32
  */
33
33
  class DeploymentStackPipeline extends constructs_1.Construct {
34
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.21" };
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "0.0.22" };
35
35
  /**
36
36
  * The code pipeline construct that is created.
37
37
  */
package/dynamodb/index.js CHANGED
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
40
40
  const aws_cdk_lib_1 = require("aws-cdk-lib");
41
41
  const config_1 = require("./config");
42
42
  class DynamoDbPartitionedConstruct extends constructs_1.Construct {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.21" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "0.0.22" };
44
44
  table;
45
45
  constructor(scope, id, props) {
46
46
  super(scope, id);
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
75
75
  }
76
76
  exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
77
77
  class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
78
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.21" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "0.0.22" };
79
79
  table;
80
80
  constructor(scope, id, props) {
81
81
  super(scope, id);
package/ecs/config.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @deprecated, use VPC_NAME from shared-config instead
3
+ */
1
4
  export declare const DEFAULT_MAIN_VPC_NAME = "main-vpc";
2
5
  export declare const DEFAULT_MEMORY_GB = 1;
3
6
  export declare const DEFAULT_VCPUS = 2;
package/ecs/config.js CHANGED
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_ARCHITECTURE = exports.DEFAULT_VCPUS = exports.DEFAULT_MEMORY_GB = exports.DEFAULT_MAIN_VPC_NAME = void 0;
4
+ /**
5
+ * @deprecated, use VPC_NAME from shared-config instead
6
+ */
4
7
  exports.DEFAULT_MAIN_VPC_NAME = 'main-vpc';
5
8
  exports.DEFAULT_MEMORY_GB = 1;
6
9
  exports.DEFAULT_VCPUS = 2;
7
10
  exports.DEFAULT_ARCHITECTURE = 'ARM64';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEscUJBQXFCLEdBQUcsVUFBVSxDQUFBO0FBRWxDLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxDQUFBO0FBQ3JCLFFBQUEsYUFBYSxHQUFHLENBQUMsQ0FBQTtBQUVqQixRQUFBLG9CQUFvQixHQUFHLE9BQU8sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX01BSU5fVlBDX05BTUUgPSAnbWFpbi12cGMnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01FTU9SWV9HQiA9IDFcbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZDUFVTID0gMlxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAnQVJNNjQnXG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxVQUFVLENBQUE7QUFFbEMsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7QUFDckIsUUFBQSxhQUFhLEdBQUcsQ0FBQyxDQUFBO0FBR2pCLFFBQUEsb0JBQW9CLEdBQUcsT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVwcmVjYXRlZCwgdXNlIFZQQ19OQU1FIGZyb20gc2hhcmVkLWNvbmZpZyBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BSU5fVlBDX05BTUUgPSAnbWFpbi12cGMnXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01FTU9SWV9HQiA9IDFcbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZDUFVTID0gMlxuXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FSQ0hJVEVDVFVSRSA9ICdBUk02NCdcbiJdfQ==
package/ecs/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export interface FargateEcsTaskConstructProps {
13
13
  /**
14
14
  * The runtime CPU architecture, either X86_64 or ARM64. If not provided, the default is @DEFAULT_ARCHITECTURE.
15
15
  */
16
- readonly runtimePlatform: ecs.CpuArchitecture;
16
+ readonly runtimePlatform?: ecs.CpuArchitecture;
17
17
  /**
18
18
  * The number of CPUs to use, between 0.25 and 16. If not provided, the default is @DEFAULT_VCPUS.
19
19
  */
@@ -27,7 +27,7 @@ export interface FargateEcsTaskConstructProps {
27
27
  /**
28
28
  * The architecture of the container. If not provided, the default is @DEFAULT_ARCHITECTURE.
29
29
  */
30
- readonly architecture: Architecture;
30
+ readonly architecture?: Architecture;
31
31
  /**
32
32
  * The name of the container. This is a required property
33
33
  */
package/ecs/index.js CHANGED
@@ -42,7 +42,10 @@ const ecs = __importStar(require("aws-cdk-lib/aws-ecs"));
42
42
  const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
43
43
  const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
44
44
  const ecrAssets = __importStar(require("aws-cdk-lib/aws-ecr-assets"));
45
+ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
45
46
  const aws_logs_1 = require("aws-cdk-lib/aws-logs");
47
+ const networking_1 = require("../shared-config/networking");
48
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
46
49
  exports.CPU_ARCHITECTURE_MAP = {
47
50
  ['X86_64']: ecs.CpuArchitecture.X86_64,
48
51
  ['ARM64']: ecs.CpuArchitecture.ARM64
@@ -52,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
52
55
  ['ARM64']: lambda.Architecture.ARM_64
53
56
  };
54
57
  class EcsFargateTaskConstruct extends constructs_1.Construct {
55
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.21" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "0.0.22" };
56
59
  cluster;
57
60
  taskDefinition;
58
61
  securityGroup;
@@ -63,7 +66,7 @@ class EcsFargateTaskConstruct extends constructs_1.Construct {
63
66
  const architecture = props.architecture ?? config_1.DEFAULT_ARCHITECTURE;
64
67
  // Set up the main vpc
65
68
  const mainVpc = ec2.Vpc.fromLookup(this, 'MainVpc', {
66
- vpcName: props.vpcName ?? config_1.DEFAULT_MAIN_VPC_NAME
69
+ vpcName: props.vpcName ?? networking_1.VPC_NAME
67
70
  });
68
71
  // Set up the ECS cluster
69
72
  this.cluster = new ecs.Cluster(this, 'FargateCluster', {
@@ -71,13 +74,21 @@ class EcsFargateTaskConstruct extends constructs_1.Construct {
71
74
  enableFargateCapacityProviders: true,
72
75
  containerInsightsV2: aws_ecs_1.ContainerInsights.ENABLED
73
76
  });
77
+ // Allow the task definition role ecr access to the guardduty agent
78
+ // https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#before-enable-runtime-monitoring-ecs
79
+ // Which is in another account - 005257825471.dkr.ecr.ap-southeast-2.amazonaws.com/aws-guardduty-agent-fargate
80
+ const taskExecutionRole = new iam.Role(this, `task-execution-role`, {
81
+ assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'),
82
+ managedPolicies: [aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonECSTaskExecutionRolePolicy')],
83
+ });
74
84
  // Set up the Fargate task definition
75
85
  this.taskDefinition = new ecs.FargateTaskDefinition(this, 'FargateTaskDef', {
76
86
  cpu: (props.nCpus ?? config_1.DEFAULT_VCPUS) * 1024,
77
87
  memoryLimitMiB: props.memoryLimitGiB ?? (config_1.DEFAULT_MEMORY_GB) * 1024,
78
88
  runtimePlatform: {
79
89
  cpuArchitecture: props.runtimePlatform ?? exports.CPU_ARCHITECTURE_MAP[architecture],
80
- }
90
+ },
91
+ executionRole: taskExecutionRole
81
92
  });
82
93
  // Set up the security group
83
94
  this.securityGroup = new ec2.SecurityGroup(this, 'FargateSecurityGroup', {
@@ -100,4 +111,4 @@ class EcsFargateTaskConstruct extends constructs_1.Construct {
100
111
  }
101
112
  }
102
113
  exports.EcsFargateTaskConstruct = EcsFargateTaskConstruct;
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXFDO0FBQ3JDLHFDQUF1RztBQUN2Ryx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLGlEQUFzRDtBQUN0RCwrREFBaUQ7QUFDakQsc0VBQXdEO0FBQ3hELG1EQUFtRDtBQXFCdEMsUUFBQSxvQkFBb0IsR0FBOEM7SUFDM0UsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU07SUFDdEMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUs7Q0FDdkMsQ0FBQTtBQUVZLFFBQUEsdUJBQXVCLEdBQThDO0lBQzlFLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0lBQ3RDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ3hDLENBQUE7QUEwQ0QsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDbEMsT0FBTyxDQUFjO0lBQ3JCLGNBQWMsQ0FBMkI7SUFDekMsYUFBYSxDQUFvQjtJQUNqQyxtQkFBbUIsQ0FBeUI7SUFFNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1DQUFtQztRQUNuQyxNQUFNLFlBQVksR0FBaUIsS0FBSyxDQUFDLFlBQVksSUFBSSw2QkFBb0IsQ0FBQTtRQUU3RSxzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQzlCLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSw4QkFBcUI7U0FDbEQsQ0FDSixDQUFBO1FBRUQseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUNuRCxHQUFHLEVBQUUsT0FBTztZQUNaLDhCQUE4QixFQUFFLElBQUk7WUFDcEMsbUJBQW1CLEVBQUUsMkJBQWlCLENBQUMsT0FBTztTQUNqRCxDQUFDLENBQUE7UUFFRixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDeEUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxzQkFBYSxDQUFDLEdBQUcsSUFBSTtZQUMxQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLDBCQUFpQixDQUFDLEdBQUcsSUFBSTtZQUNsRSxlQUFlLEVBQUU7Z0JBQ2IsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlLElBQUksNEJBQW9CLENBQUMsWUFBWSxDQUFDO2FBQy9FO1NBQ0osQ0FBQyxDQUFBO1FBRUYsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRTtZQUNyRSxHQUFHLEVBQUUsT0FBTztZQUNaLFdBQVcsRUFBRSxrQ0FBa0M7U0FDbEQsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFO1lBQzVFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FDMUMsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO2dCQUN2RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzNCLFNBQVMsRUFBRTtvQkFDUCxjQUFjLEVBQUUsK0JBQXVCLENBQUMsWUFBWSxDQUFDLENBQUMsY0FBYztpQkFDdkU7YUFDSixDQUFDLENBQ0w7WUFDRCxPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBQzNCLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDakMsWUFBWSxFQUFFLHdCQUFhLENBQUMsUUFBUTthQUN2QyxDQUFDO1NBQ0wsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7QUF4REwsMERBeURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0RFRkFVTFRfQVJDSElURUNUVVJFLCBERUZBVUxUX01BSU5fVlBDX05BTUUsIERFRkFVTFRfTUVNT1JZX0dCLCBERUZBVUxUX1ZDUFVTfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQge0NvbnRhaW5lckluc2lnaHRzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgKiBhcyBlY3JBc3NldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3ItYXNzZXRzXCI7XG5pbXBvcnQge1JldGVudGlvbkRheXN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuXG4vLyBNZW1vcnkgYW5kIENQVSBsaW1pdHMgZm9yIEZhcmdhdGUgdGFza3Ncbi8qXG4yNTYgKC4yNSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiA1MTIgKDAuNSBHQiksIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKVxuXG41MTIgKC41IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpXG5cbjEwMjQgKDEgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQilcblxuMjA0OCAoMiB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcblxuNDA5NiAoNCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcblxuODE5MiAoOCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDE2Mzg0ICgxNiBHQikgYW5kIDYxNDQwICg2MCBHQikgaW4gaW5jcmVtZW50cyBvZiA0MDk2ICg0IEdCKVxuXG4xNjM4NCAoMTYgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogQmV0d2VlbiAzMjc2OCAoMzIgR0IpIGFuZCAxMjI4ODAgKDEyMCBHQikgaW4gaW5jcmVtZW50cyBvZiA4MTkyICg4IEdCKVxuKi9cblxuZXhwb3J0IHR5cGUgQXJjaGl0ZWN0dXJlID0gJ1g4Nl82NCcgfCAnQVJNNjQnXG5cbmV4cG9ydCBjb25zdCBDUFVfQVJDSElURUNUVVJFX01BUDogUmVjb3JkPEFyY2hpdGVjdHVyZSwgZWNzLkNwdUFyY2hpdGVjdHVyZT4gPSB7XG4gICAgWydYODZfNjQnXTogZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgWydBUk02NCddOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0XG59XG5cbmV4cG9ydCBjb25zdCBMQU1CREFfQVJDSElURUNUVVJFX01BUDogUmVjb3JkPEFyY2hpdGVjdHVyZSwgbGFtYmRhLkFyY2hpdGVjdHVyZT4gPSB7XG4gICAgWydYODZfNjQnXTogbGFtYmRhLkFyY2hpdGVjdHVyZS5YODZfNjQsXG4gICAgWydBUk02NCddOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhcmdhdGVFY3NUYXNrQ29uc3RydWN0UHJvcHMge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBWUEMgdG8gdXNlLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBAREVGQVVMVF9NQUlOX1ZQQ19OQU1FIHdpbGwgYmUgdXNlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nXG5cbiAgICAvKipcbiAgICAgKiBUaGUgcnVudGltZSBDUFUgYXJjaGl0ZWN0dXJlLCBlaXRoZXIgWDg2XzY0IG9yIEFSTTY0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX0FSQ0hJVEVDVFVSRS5cbiAgICAgKi9cbiAgICByZWFkb25seSBydW50aW1lUGxhdGZvcm06IGVjcy5DcHVBcmNoaXRlY3R1cmVcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgQ1BVcyB0byB1c2UsIGJldHdlZW4gMC4yNSBhbmQgMTYuIElmIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgaXMgQERFRkFVTFRfVkNQVVMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgbkNwdXM6IG51bWJlciAvLyBOdW1iZXIgb2YgQ1BVcyAoMC4yNSwgMC41LCAxLCAyLCA0LCA4LCAxNilcblxuICAgIC8qKlxuICAgICAqIFRoZSBtZW1vcnkgbGltaXQgaW4gR2lCLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGlzIEBERUZBVUxUX01FTU9SWV9HQi5cbiAgICAgKiBUaGUgbWVtb3J5IGxpbWl0IG11c3QgYmUgYmV0d2VlbiAwLjUgYW5kIDEyMCBHaUIuXG4gICAgICogQnV0IHBsZWFzZSBub3RlIHRoYXQgdGhlIG1lbW9yeSBsaW1pdCB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgQ1BVcywgcGxlYXNlIHJlZmVyIHRvIHRoZSB0YWJsZSBhYm92ZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBtZW1vcnlMaW1pdEdpQjogbnVtYmVyXG5cbiAgICAvKipcbiAgICAgKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBjb250YWluZXIuIElmIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgaXMgQERFRkFVTFRfQVJDSElURUNUVVJFLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlXG5cblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIuIFRoaXMgaXMgYSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbnRhaW5lck5hbWU6IHN0cmluZ1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggdG8gdGhlIERvY2tlcmZpbGUuIFRoaXMgaXMgYSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRvY2tlclBhdGg6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgRWNzRmFyZ2F0ZVRhc2tDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyOiBlY3MuSUNsdXN0ZXJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb25cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb246IGVjcy5Db250YWluZXJEZWZpbml0aW9uXG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmFyZ2F0ZUVjc1Rhc2tDb25zdHJ1Y3RQcm9wcykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgICAgIC8vIFNldCBhcmNoaXRlY3R1cmUgaWYgbm90IHByb3ZpZGVkXG4gICAgICAgIGNvbnN0IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IERFRkFVTFRfQVJDSElURUNUVVJFXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBtYWluIHZwY1xuICAgICAgICBjb25zdCBtYWluVnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKFxuICAgICAgICAgICAgdGhpcywgJ01haW5WcGMnLCB7XG4gICAgICAgICAgICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZSA/PyBERUZBVUxUX01BSU5fVlBDX05BTUVcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgRUNTIGNsdXN0ZXJcbiAgICAgICAgdGhpcy5jbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHRoaXMsICdGYXJnYXRlQ2x1c3RlcicsIHtcbiAgICAgICAgICAgIHZwYzogbWFpblZwYyxcbiAgICAgICAgICAgIGVuYWJsZUZhcmdhdGVDYXBhY2l0eVByb3ZpZGVyczogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5lckluc2lnaHRzVjI6IENvbnRhaW5lckluc2lnaHRzLkVOQUJMRURcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTZXQgdXAgdGhlIEZhcmdhdGUgdGFzayBkZWZpbml0aW9uXG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbih0aGlzLCAnRmFyZ2F0ZVRhc2tEZWYnLCB7XG4gICAgICAgICAgICBjcHU6IChwcm9wcy5uQ3B1cyA/PyBERUZBVUxUX1ZDUFVTKSAqIDEwMjQsXG4gICAgICAgICAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRHaUIgPz8gKERFRkFVTFRfTUVNT1JZX0dCKSAqIDEwMjQsXG4gICAgICAgICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgICAgICAgICBjcHVBcmNoaXRlY3R1cmU6IHByb3BzLnJ1bnRpbWVQbGF0Zm9ybSA/PyBDUFVfQVJDSElURUNUVVJFX01BUFthcmNoaXRlY3R1cmVdLFxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICAgICAgdGhpcy5zZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdGYXJnYXRlU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgICAgIHZwYzogbWFpblZwYyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2VjdXJpdHkgZ3JvdXAgZm9yIEZhcmdhdGUgdGFza3MnXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5jb250YWluZXJEZWZpbml0aW9uID0gdGhpcy50YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoJ0ZhcmdhdGVDb250YWluZXInLCB7XG4gICAgICAgICAgICBjb250YWluZXJOYW1lOiBwcm9wcy5jb250YWluZXJOYW1lLFxuICAgICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tRG9ja2VySW1hZ2VBc3NldChcbiAgICAgICAgICAgICAgICBuZXcgZWNyQXNzZXRzLkRvY2tlckltYWdlQXNzZXQodGhpcywgJ0ZhcmdhdGVEb2NrZXJJbWFnZScsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5OiBwcm9wcy5kb2NrZXJQYXRoLFxuICAgICAgICAgICAgICAgICAgICBidWlsZEFyZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRBUkdFVFBMQVRGT1JNOiBMQU1CREFfQVJDSElURUNUVVJFX01BUFthcmNoaXRlY3R1cmVdLmRvY2tlclBsYXRmb3JtXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ2dpbmc6IGVjcy5Mb2dEcml2ZXIuYXdzTG9ncyh7XG4gICAgICAgICAgICAgICAgc3RyZWFtUHJlZml4OiBwcm9wcy5jb250YWluZXJOYW1lLFxuICAgICAgICAgICAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfV0VFS1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXFDO0FBQ3JDLHFDQUFnRjtBQUNoRix5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLGlEQUFzRDtBQUN0RCwrREFBaUQ7QUFDakQsc0VBQXdEO0FBQ3hELHlEQUEyQztBQUMzQyxtREFBbUQ7QUFDbkQsNERBQXFEO0FBQ3JELGlEQUFrRDtBQXFCckMsUUFBQSxvQkFBb0IsR0FBOEM7SUFDM0UsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU07SUFDdEMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUs7Q0FDdkMsQ0FBQTtBQUVZLFFBQUEsdUJBQXVCLEdBQThDO0lBQzlFLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0lBQ3RDLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO0NBQ3hDLENBQUE7QUEwQ0QsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDbEMsT0FBTyxDQUFjO0lBQ3JCLGNBQWMsQ0FBMkI7SUFDekMsYUFBYSxDQUFvQjtJQUNqQyxtQkFBbUIsQ0FBeUI7SUFFNUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1DQUFtQztRQUNuQyxNQUFNLFlBQVksR0FBaUIsS0FBSyxDQUFDLFlBQVksSUFBSSw2QkFBb0IsQ0FBQTtRQUU3RSxzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQzlCLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxxQkFBUTtTQUNyQyxDQUNKLENBQUE7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ25ELEdBQUcsRUFBRSxPQUFPO1lBQ1osOEJBQThCLEVBQUUsSUFBSTtZQUNwQyxtQkFBbUIsRUFBRSwyQkFBaUIsQ0FBQyxPQUFPO1NBQ2pELENBQUMsQ0FBQTtRQUVGLG1FQUFtRTtRQUNuRSxrSUFBa0k7UUFDbEksOEdBQThHO1FBQzlHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNsRSxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUM7WUFDOUQsZUFBZSxFQUFFLENBQUMsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1NBQzNHLENBQUMsQ0FBQTtRQUVGLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUN4RSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLHNCQUFhLENBQUMsR0FBRyxJQUFJO1lBQzFDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsMEJBQWlCLENBQUMsR0FBRyxJQUFJO1lBQ2xFLGVBQWUsRUFBRTtnQkFDYixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSw0QkFBb0IsQ0FBQyxZQUFZLENBQUM7YUFDL0U7WUFDRCxhQUFhLEVBQUUsaUJBQWlCO1NBQ25DLENBQUMsQ0FBQTtRQUVGLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDckUsR0FBRyxFQUFFLE9BQU87WUFDWixXQUFXLEVBQUUsa0NBQWtDO1NBQ2xELENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1RSxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQzFDLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFDdkQsU0FBUyxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUMzQixTQUFTLEVBQUU7b0JBQ1AsY0FBYyxFQUFFLCtCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFDLGNBQWM7aUJBQ3ZFO2FBQ0osQ0FBQyxDQUNMO1lBQ0QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUMzQixZQUFZLEVBQUUsS0FBSyxDQUFDLGFBQWE7Z0JBQ2pDLFlBQVksRUFBRSx3QkFBYSxDQUFDLFFBQVE7YUFDdkMsQ0FBQztTQUNMLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBakVMLDBEQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtERUZBVUxUX0FSQ0hJVEVDVFVSRSwgREVGQVVMVF9NRU1PUllfR0IsIERFRkFVTFRfVkNQVVN9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7Q29udGFpbmVySW5zaWdodHN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCAqIGFzIGVjckFzc2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHNcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtSZXRlbnRpb25EYXlzfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7VlBDX05BTUV9IGZyb20gXCIuLi9zaGFyZWQtY29uZmlnL25ldHdvcmtpbmdcIjtcbmltcG9ydCB7TWFuYWdlZFBvbGljeX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcblxuLy8gTWVtb3J5IGFuZCBDUFUgbGltaXRzIGZvciBGYXJnYXRlIHRhc2tzXG4vKlxuMjU2ICguMjUgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogNTEyICgwLjUgR0IpLCAxMDI0ICgxIEdCKSwgMjA0OCAoMiBHQilcblxuNTEyICguNSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiAxMDI0ICgxIEdCKSwgMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKVxuXG4xMDI0ICgxIHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDIwNDggKDIgR0IpLCAzMDcyICgzIEdCKSwgNDA5NiAoNCBHQiksIDUxMjAgKDUgR0IpLCA2MTQ0ICg2IEdCKSwgNzE2OCAoNyBHQiksIDgxOTIgKDggR0IpXG5cbjIwNDggKDIgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogQmV0d2VlbiA0MDk2ICg0IEdCKSBhbmQgMTYzODQgKDE2IEdCKSBpbiBpbmNyZW1lbnRzIG9mIDEwMjQgKDEgR0IpXG5cbjQwOTYgKDQgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogQmV0d2VlbiA4MTkyICg4IEdCKSBhbmQgMzA3MjAgKDMwIEdCKSBpbiBpbmNyZW1lbnRzIG9mIDEwMjQgKDEgR0IpXG5cbjgxOTIgKDggdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogQmV0d2VlbiAxNjM4NCAoMTYgR0IpIGFuZCA2MTQ0MCAoNjAgR0IpIGluIGluY3JlbWVudHMgb2YgNDA5NiAoNCBHQilcblxuMTYzODQgKDE2IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IEJldHdlZW4gMzI3NjggKDMyIEdCKSBhbmQgMTIyODgwICgxMjAgR0IpIGluIGluY3JlbWVudHMgb2YgODE5MiAoOCBHQilcbiovXG5cbmV4cG9ydCB0eXBlIEFyY2hpdGVjdHVyZSA9ICdYODZfNjQnIHwgJ0FSTTY0J1xuXG5leHBvcnQgY29uc3QgQ1BVX0FSQ0hJVEVDVFVSRV9NQVA6IFJlY29yZDxBcmNoaXRlY3R1cmUsIGVjcy5DcHVBcmNoaXRlY3R1cmU+ID0ge1xuICAgIFsnWDg2XzY0J106IGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgIFsnQVJNNjQnXTogZWNzLkNwdUFyY2hpdGVjdHVyZS5BUk02NFxufVxuXG5leHBvcnQgY29uc3QgTEFNQkRBX0FSQ0hJVEVDVFVSRV9NQVA6IFJlY29yZDxBcmNoaXRlY3R1cmUsIGxhbWJkYS5BcmNoaXRlY3R1cmU+ID0ge1xuICAgIFsnWDg2XzY0J106IGxhbWJkYS5BcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgIFsnQVJNNjQnXTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYXJnYXRlRWNzVGFza0NvbnN0cnVjdFByb3BzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgVlBDIHRvIHVzZS4gSWYgbm90IHByb3ZpZGVkLCB0aGUgQERFRkFVTFRfTUFJTl9WUENfTkFNRSB3aWxsIGJlIHVzZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdnBjTmFtZT86IHN0cmluZ1xuXG4gICAgLyoqXG4gICAgICogVGhlIHJ1bnRpbWUgQ1BVIGFyY2hpdGVjdHVyZSwgZWl0aGVyIFg4Nl82NCBvciBBUk02NC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpcyBAREVGQVVMVF9BUkNISVRFQ1RVUkUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcnVudGltZVBsYXRmb3JtPzogZWNzLkNwdUFyY2hpdGVjdHVyZVxuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBDUFVzIHRvIHVzZSwgYmV0d2VlbiAwLjI1IGFuZCAxNi4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpcyBAREVGQVVMVF9WQ1BVUy5cbiAgICAgKi9cbiAgICByZWFkb25seSBuQ3B1czogbnVtYmVyIC8vIE51bWJlciBvZiBDUFVzICgwLjI1LCAwLjUsIDEsIDIsIDQsIDgsIDE2KVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1lbW9yeSBsaW1pdCBpbiBHaUIuIElmIG5vdCBwcm92aWRlZCwgdGhlIGRlZmF1bHQgaXMgQERFRkFVTFRfTUVNT1JZX0dCLlxuICAgICAqIFRoZSBtZW1vcnkgbGltaXQgbXVzdCBiZSBiZXR3ZWVuIDAuNSBhbmQgMTIwIEdpQi5cbiAgICAgKiBCdXQgcGxlYXNlIG5vdGUgdGhhdCB0aGUgbWVtb3J5IGxpbWl0IHZhcmllcyBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBDUFVzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIHRhYmxlIGFib3ZlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG1lbW9yeUxpbWl0R2lCOiBudW1iZXJcblxuICAgIC8qKlxuICAgICAqIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGNvbnRhaW5lci4gSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBpcyBAREVGQVVMVF9BUkNISVRFQ1RVUkUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgYXJjaGl0ZWN0dXJlPzogQXJjaGl0ZWN0dXJlXG5cblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIuIFRoaXMgaXMgYSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNvbnRhaW5lck5hbWU6IHN0cmluZ1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggdG8gdGhlIERvY2tlcmZpbGUuIFRoaXMgaXMgYSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRvY2tlclBhdGg6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgRWNzRmFyZ2F0ZVRhc2tDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAgIHB1YmxpYyByZWFkb25seSBjbHVzdGVyOiBlY3MuSUNsdXN0ZXJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb25cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb246IGVjcy5Db250YWluZXJEZWZpbml0aW9uXG5cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRmFyZ2F0ZUVjc1Rhc2tDb25zdHJ1Y3RQcm9wcykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgICAgIC8vIFNldCBhcmNoaXRlY3R1cmUgaWYgbm90IHByb3ZpZGVkXG4gICAgICAgIGNvbnN0IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlID0gcHJvcHMuYXJjaGl0ZWN0dXJlID8/IERFRkFVTFRfQVJDSElURUNUVVJFXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBtYWluIHZwY1xuICAgICAgICBjb25zdCBtYWluVnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKFxuICAgICAgICAgICAgdGhpcywgJ01haW5WcGMnLCB7XG4gICAgICAgICAgICAgICAgdnBjTmFtZTogcHJvcHMudnBjTmFtZSA/PyBWUENfTkFNRVxuICAgICAgICAgICAgfVxuICAgICAgICApXG5cbiAgICAgICAgLy8gU2V0IHVwIHRoZSBFQ1MgY2x1c3RlclxuICAgICAgICB0aGlzLmNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0ZhcmdhdGVDbHVzdGVyJywge1xuICAgICAgICAgICAgdnBjOiBtYWluVnBjLFxuICAgICAgICAgICAgZW5hYmxlRmFyZ2F0ZUNhcGFjaXR5UHJvdmlkZXJzOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbmVySW5zaWdodHNWMjogQ29udGFpbmVySW5zaWdodHMuRU5BQkxFRFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEFsbG93IHRoZSB0YXNrIGRlZmluaXRpb24gcm9sZSBlY3IgYWNjZXNzIHRvIHRoZSBndWFyZGR1dHkgYWdlbnRcbiAgICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2d1YXJkZHV0eS9sYXRlc3QvdWcvcHJlcmVxLXJ1bnRpbWUtbW9uaXRvcmluZy1lY3Mtc3VwcG9ydC5odG1sI2JlZm9yZS1lbmFibGUtcnVudGltZS1tb25pdG9yaW5nLWVjc1xuICAgICAgICAvLyBXaGljaCBpcyBpbiBhbm90aGVyIGFjY291bnQgLSAwMDUyNTc4MjU0NzEuZGtyLmVjci5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2F3cy1ndWFyZGR1dHktYWdlbnQtZmFyZ2F0ZVxuICAgICAgICBjb25zdCB0YXNrRXhlY3V0aW9uUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBgdGFzay1leGVjdXRpb24tcm9sZWAsIHtcbiAgICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWNzLXRhc2tzLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FtYXpvbkVDU1Rhc2tFeGVjdXRpb25Sb2xlUG9saWN5JyldLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgRmFyZ2F0ZSB0YXNrIGRlZmluaXRpb25cbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsICdGYXJnYXRlVGFza0RlZicsIHtcbiAgICAgICAgICAgIGNwdTogKHByb3BzLm5DcHVzID8/IERFRkFVTFRfVkNQVVMpICogMTAyNCxcbiAgICAgICAgICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdEdpQiA/PyAoREVGQVVMVF9NRU1PUllfR0IpICogMTAyNCxcbiAgICAgICAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICAgICAgICAgIGNwdUFyY2hpdGVjdHVyZTogcHJvcHMucnVudGltZVBsYXRmb3JtID8/IENQVV9BUkNISVRFQ1RVUkVfTUFQW2FyY2hpdGVjdHVyZV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhlY3V0aW9uUm9sZTogdGFza0V4ZWN1dGlvblJvbGVcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTZXQgdXAgdGhlIHNlY3VyaXR5IGdyb3VwXG4gICAgICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnRmFyZ2F0ZVNlY3VyaXR5R3JvdXAnLCB7XG4gICAgICAgICAgICB2cGM6IG1haW5WcGMsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlY3VyaXR5IGdyb3VwIGZvciBGYXJnYXRlIHRhc2tzJ1xuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuY29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdGYXJnYXRlQ29udGFpbmVyJywge1xuICAgICAgICAgICAgY29udGFpbmVyTmFtZTogcHJvcHMuY29udGFpbmVyTmFtZSxcbiAgICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbURvY2tlckltYWdlQXNzZXQoXG4gICAgICAgICAgICAgICAgbmV3IGVjckFzc2V0cy5Eb2NrZXJJbWFnZUFzc2V0KHRoaXMsICdGYXJnYXRlRG9ja2VySW1hZ2UnLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeTogcHJvcHMuZG9ja2VyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRBcmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUQVJHRVRQTEFURk9STTogTEFNQkRBX0FSQ0hJVEVDVFVSRV9NQVBbYXJjaGl0ZWN0dXJlXS5kb2NrZXJQbGF0Zm9ybVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dnaW5nOiBlY3MuTG9nRHJpdmVyLmF3c0xvZ3Moe1xuICAgICAgICAgICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyTmFtZSxcbiAgICAgICAgICAgICAgICBsb2dSZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1dFRUtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
package/lambda/index.js CHANGED
@@ -56,7 +56,7 @@ function getPythonUvDockerImage() {
56
56
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
57
57
  }
58
58
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
59
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.21" };
59
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "0.0.22" };
60
60
  // Class constructs, to be used for caching the layers
61
61
  // This means that if there are multiple lambdas throughout the stack
62
62
  // They will all use the same layer
@@ -1,5 +1,39 @@
1
1
  # This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand.
2
2
 
3
+ [[package]]
4
+ name = "annotated-types"
5
+ version = "0.7.0"
6
+ description = "Reusable constraint types to use with typing.Annotated"
7
+ optional = false
8
+ python-versions = ">=3.8"
9
+ groups = ["main"]
10
+ files = [
11
+ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"},
12
+ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
13
+ ]
14
+
15
+ [[package]]
16
+ name = "anyio"
17
+ version = "4.9.0"
18
+ description = "High level compatibility layer for multiple asynchronous event loop implementations"
19
+ optional = false
20
+ python-versions = ">=3.9"
21
+ groups = ["main"]
22
+ files = [
23
+ {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"},
24
+ {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"},
25
+ ]
26
+
27
+ [package.dependencies]
28
+ idna = ">=2.8"
29
+ sniffio = ">=1.1"
30
+ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
31
+
32
+ [package.extras]
33
+ doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
34
+ test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""]
35
+ trio = ["trio (>=0.26.1)"]
36
+
3
37
  [[package]]
4
38
  name = "certifi"
5
39
  version = "2025.4.26"
@@ -127,6 +161,27 @@ files = [
127
161
  {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
128
162
  ]
129
163
 
164
+ [[package]]
165
+ name = "fastapi"
166
+ version = "0.115.12"
167
+ description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
168
+ optional = false
169
+ python-versions = ">=3.8"
170
+ groups = ["main"]
171
+ files = [
172
+ {file = "fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d"},
173
+ {file = "fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681"},
174
+ ]
175
+
176
+ [package.dependencies]
177
+ pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0"
178
+ starlette = ">=0.40.0,<0.47.0"
179
+ typing-extensions = ">=4.8.0"
180
+
181
+ [package.extras]
182
+ all = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=3.1.5)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.18)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"]
183
+ standard = ["email-validator (>=2.0.0)", "fastapi-cli[standard] (>=0.0.5)", "httpx (>=0.23.0)", "jinja2 (>=3.1.5)", "python-multipart (>=0.0.18)", "uvicorn[standard] (>=0.12.0)"]
184
+
130
185
  [[package]]
131
186
  name = "idna"
132
187
  version = "3.10"
@@ -206,6 +261,140 @@ files = [
206
261
  dev = ["pre-commit", "tox"]
207
262
  testing = ["pytest", "pytest-benchmark"]
208
263
 
264
+ [[package]]
265
+ name = "pydantic"
266
+ version = "2.11.7"
267
+ description = "Data validation using Python type hints"
268
+ optional = false
269
+ python-versions = ">=3.9"
270
+ groups = ["main"]
271
+ files = [
272
+ {file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b"},
273
+ {file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db"},
274
+ ]
275
+
276
+ [package.dependencies]
277
+ annotated-types = ">=0.6.0"
278
+ pydantic-core = "2.33.2"
279
+ typing-extensions = ">=4.12.2"
280
+ typing-inspection = ">=0.4.0"
281
+
282
+ [package.extras]
283
+ email = ["email-validator (>=2.0.0)"]
284
+ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""]
285
+
286
+ [[package]]
287
+ name = "pydantic-core"
288
+ version = "2.33.2"
289
+ description = "Core functionality for Pydantic validation and serialization"
290
+ optional = false
291
+ python-versions = ">=3.9"
292
+ groups = ["main"]
293
+ files = [
294
+ {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"},
295
+ {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"},
296
+ {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"},
297
+ {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"},
298
+ {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"},
299
+ {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"},
300
+ {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"},
301
+ {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"},
302
+ {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"},
303
+ {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"},
304
+ {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"},
305
+ {file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"},
306
+ {file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"},
307
+ {file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"},
308
+ {file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"},
309
+ {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"},
310
+ {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"},
311
+ {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"},
312
+ {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"},
313
+ {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"},
314
+ {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"},
315
+ {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"},
316
+ {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"},
317
+ {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"},
318
+ {file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"},
319
+ {file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"},
320
+ {file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"},
321
+ {file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"},
322
+ {file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"},
323
+ {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"},
324
+ {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"},
325
+ {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"},
326
+ {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"},
327
+ {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"},
328
+ {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"},
329
+ {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"},
330
+ {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"},
331
+ {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"},
332
+ {file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"},
333
+ {file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"},
334
+ {file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"},
335
+ {file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"},
336
+ {file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"},
337
+ {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"},
338
+ {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"},
339
+ {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"},
340
+ {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"},
341
+ {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"},
342
+ {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"},
343
+ {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"},
344
+ {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"},
345
+ {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"},
346
+ {file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"},
347
+ {file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"},
348
+ {file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"},
349
+ {file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"},
350
+ {file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"},
351
+ {file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"},
352
+ {file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"},
353
+ {file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"},
354
+ {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"},
355
+ {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"},
356
+ {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"},
357
+ {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"},
358
+ {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"},
359
+ {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"},
360
+ {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"},
361
+ {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"},
362
+ {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"},
363
+ {file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"},
364
+ {file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"},
365
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"},
366
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"},
367
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"},
368
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"},
369
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"},
370
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"},
371
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"},
372
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"},
373
+ {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"},
374
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"},
375
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"},
376
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"},
377
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"},
378
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"},
379
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"},
380
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"},
381
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"},
382
+ {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"},
383
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"},
384
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"},
385
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"},
386
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"},
387
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"},
388
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"},
389
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"},
390
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"},
391
+ {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"},
392
+ {file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"},
393
+ ]
394
+
395
+ [package.dependencies]
396
+ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
397
+
209
398
  [[package]]
210
399
  name = "pytest"
211
400
  version = "7.4.4"
@@ -249,6 +438,63 @@ urllib3 = ">=1.21.1,<3"
249
438
  socks = ["PySocks (>=1.5.6,!=1.5.7)"]
250
439
  use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
251
440
 
441
+ [[package]]
442
+ name = "sniffio"
443
+ version = "1.3.1"
444
+ description = "Sniff out which async library your code is running under"
445
+ optional = false
446
+ python-versions = ">=3.7"
447
+ groups = ["main"]
448
+ files = [
449
+ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
450
+ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
451
+ ]
452
+
453
+ [[package]]
454
+ name = "starlette"
455
+ version = "0.46.2"
456
+ description = "The little ASGI library that shines."
457
+ optional = false
458
+ python-versions = ">=3.9"
459
+ groups = ["main"]
460
+ files = [
461
+ {file = "starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35"},
462
+ {file = "starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5"},
463
+ ]
464
+
465
+ [package.dependencies]
466
+ anyio = ">=3.6.2,<5"
467
+
468
+ [package.extras]
469
+ full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"]
470
+
471
+ [[package]]
472
+ name = "typing-extensions"
473
+ version = "4.14.0"
474
+ description = "Backported and Experimental Type Hints for Python 3.9+"
475
+ optional = false
476
+ python-versions = ">=3.9"
477
+ groups = ["main"]
478
+ files = [
479
+ {file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"},
480
+ {file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"},
481
+ ]
482
+
483
+ [[package]]
484
+ name = "typing-inspection"
485
+ version = "0.4.1"
486
+ description = "Runtime typing introspection tools"
487
+ optional = false
488
+ python-versions = ">=3.9"
489
+ groups = ["main"]
490
+ files = [
491
+ {file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51"},
492
+ {file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28"},
493
+ ]
494
+
495
+ [package.dependencies]
496
+ typing-extensions = ">=4.12.0"
497
+
252
498
  [[package]]
253
499
  name = "urllib3"
254
500
  version = "2.4.0"
@@ -270,4 +516,4 @@ zstd = ["zstandard (>=0.18.0)"]
270
516
  [metadata]
271
517
  lock-version = "2.1"
272
518
  python-versions = "^3.12, <3.13"
273
- content-hash = "228d869db509f06071915ccd60f82b837d6834b365f6499fbe7d7bd426e96196"
519
+ content-hash = "3fd3f5225984e61957a024a4981986f175979a3318b054a8398a3b5208d2ec08"
@@ -16,6 +16,7 @@ repository = "https://github.com/orcabus/platform-cdk-constructs"
16
16
  [tool.poetry.dependencies]
17
17
  python = "^3.12, <3.13"
18
18
  requests = "^2.31.0"
19
+ fastapi = "^0.115.12"
19
20
 
20
21
  [tool.poetry.group.dev]
21
22
  optional = true
@@ -118,6 +118,12 @@ from .update_helpers import (
118
118
  set_is_not_current_fastq_set,
119
119
  )
120
120
 
121
+ # Validation
122
+ from .validation_helpers import (
123
+ validate_ntsm_internal,
124
+ validate_ntsm_external,
125
+ )
126
+
121
127
  # Workflow
122
128
  from .workflow_helpers import (
123
129
  to_fastq_list_row,
@@ -165,6 +171,9 @@ __all__ = [
165
171
  "disallow_additional_fastqs_to_fastq_set",
166
172
  "set_is_current_fastq_set",
167
173
  "set_is_not_current_fastq_set",
174
+ # Validation
175
+ "validate_ntsm_internal",
176
+ "validate_ntsm_external",
168
177
  # Workflow
169
178
  "to_fastq_list_row",
170
179
  "to_fastq_list_rows",
@@ -22,6 +22,7 @@ from functools import reduce
22
22
  from itertools import batched
23
23
  from operator import concat
24
24
  from typing import List, Unpack
25
+ from fastapi.encoders import jsonable_encoder
25
26
 
26
27
  from . import get_fastq_request_response_results, get_fastq_request
27
28
  from .globals import FASTQ_LIST_ROW_ENDPOINT, FASTQ_SET_ENDPOINT
@@ -95,7 +96,7 @@ def get_fastq_sets(**kwargs: Unpack[FastqSetQueryParameters]) -> List[FastqSet]:
95
96
 
96
97
  return get_fastq_request_response_results(
97
98
  FASTQ_SET_ENDPOINT,
98
- params=dict(kwargs)
99
+ params=jsonable_encoder(dict(kwargs))
99
100
  )
100
101
 
101
102
 
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env python3
2
+
3
+ """
4
+ Validate NTSM
5
+ """
6
+ from orcabus_api_tools.fastq import get_fastq_request
7
+ from orcabus_api_tools.fastq.globals import FASTQ_SET_ENDPOINT
8
+
9
+
10
+ def validate_ntsm_internal(fastq_set_id: str) -> bool:
11
+ """
12
+ Hit the fastq set endpoint with :validateNtsmInternal
13
+ """
14
+ return get_fastq_request(
15
+ f"{FASTQ_SET_ENDPOINT}/{fastq_set_id}:validateNtsmInternal"
16
+ )['related']
17
+
18
+
19
+ def validate_ntsm_external(fastq_set_id: str, external_fastq_set_id: str) -> bool:
20
+ """
21
+ Hit the fastq set endpoint with :validateNtsmExternal
22
+ """
23
+ return get_fastq_request(
24
+ f"{FASTQ_SET_ENDPOINT}/{fastq_set_id}:validateNtsmExternal/{external_fastq_set_id}"
25
+ )['related']
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  * A construct which represents a named role that a Lambda function can assume.
8
8
  */
9
9
  class NamedLambdaRole extends aws_iam_1.Role {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.21" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "0.0.22" };
11
11
  constructor(scope, id, props) {
12
12
  super(scope, id, {
13
13
  assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcabus/platform-cdk-constructs",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
15
  * to the provider framework.
16
16
  */
17
17
  class ProviderFunction extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.21" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "0.0.22" };
19
19
  _function;
20
20
  _response;
21
21
  constructor(scope, id, props) {
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
23
23
  * Helper for looking up the shared OrcaBus VPC.
24
24
  */
25
25
  class OrcaBusVpc {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.21" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "0.0.22" };
27
27
  /**
28
28
  * The shared VPC that is used by OrcaBus.
29
29
  * @param scope
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
42
42
  * Helper for looking up the shared compute security group by name.
43
43
  */
44
44
  class OrcaBusSharedComputeSecurityGroup {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.21" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "0.0.22" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope