[ 'name' => [ new Assert\NotNull(), new Assert\Type('string'), new Assert\Length(['min' => 1]), ], 'language' => [ new Assert\NotNull(), new Assert\Type('string'), new Assert\Choice([ 'node', 'php', ]), ], 'type' => [ new Assert\NotNull(), new Assert\Type('string'), new Assert\Choice([ 'drupal-project', 'fractal', 'php-library', ]), ], 'project_root' => [ new Assert\NotNull(), new Assert\Type('string'), ], 'database' => new Assert\Optional(), 'drupal' => new Assert\Optional(), 'docker-compose' => new Assert\Optional(), 'dockerfile' => new Assert\Optional(), // TODO: this should be a boolean if present. 'justfile' => new Assert\Optional(), 'node' => new Assert\Optional(), 'php' => new Assert\Optional(), 'web' => new Assert\Optional(), ], 'allowExtraFields' => false, 'allowMissingFields' => true, ], ); return $validator->validate( constraints: $constraint, groups: $groups, value: $configurationData, ); } }