From 45df4d0d9b577fecee798d672695fe24ff57fb1b Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 15 Jul 2025 16:37:08 -0600 Subject: feat: migrate from Cedar to SpiceDB authorization system This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema. --- vendor/itertools/src/repeatn.rs | 83 ----------------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 vendor/itertools/src/repeatn.rs (limited to 'vendor/itertools/src/repeatn.rs') diff --git a/vendor/itertools/src/repeatn.rs b/vendor/itertools/src/repeatn.rs deleted file mode 100644 index d86ad9fa..00000000 --- a/vendor/itertools/src/repeatn.rs +++ /dev/null @@ -1,83 +0,0 @@ -use std::iter::FusedIterator; - -/// An iterator that produces *n* repetitions of an element. -/// -/// See [`repeat_n()`](crate::repeat_n) for more information. -#[must_use = "iterators are lazy and do nothing unless consumed"] -#[derive(Clone, Debug)] -pub struct RepeatN { - pub(crate) elt: Option, - n: usize, -} - -/// Create an iterator that produces `n` repetitions of `element`. -pub fn repeat_n(element: A, n: usize) -> RepeatN -where - A: Clone, -{ - if n == 0 { - RepeatN { elt: None, n } - } else { - RepeatN { - elt: Some(element), - n, - } - } -} - -impl Iterator for RepeatN -where - A: Clone, -{ - type Item = A; - - fn next(&mut self) -> Option { - if self.n > 1 { - self.n -= 1; - self.elt.as_ref().cloned() - } else { - self.n = 0; - self.elt.take() - } - } - - fn size_hint(&self) -> (usize, Option) { - (self.n, Some(self.n)) - } - - fn fold(self, mut init: B, mut f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - match self { - Self { elt: Some(elt), n } => { - debug_assert!(n > 0); - init = (1..n).map(|_| elt.clone()).fold(init, &mut f); - f(init, elt) - } - _ => init, - } - } -} - -impl DoubleEndedIterator for RepeatN -where - A: Clone, -{ - #[inline] - fn next_back(&mut self) -> Option { - self.next() - } - - #[inline] - fn rfold(self, init: B, f: F) -> B - where - F: FnMut(B, Self::Item) -> B, - { - self.fold(init, f) - } -} - -impl ExactSizeIterator for RepeatN where A: Clone {} - -impl FusedIterator for RepeatN where A: Clone {} -- cgit v1.2.3