diff options
| author | mo khan <mo@mokhan.ca> | 2025-07-15 16:37:08 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-07-17 16:30:22 -0600 |
| commit | 45df4d0d9b577fecee798d672695fe24ff57fb1b (patch) | |
| tree | 1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/time/src/format_description/modifier.rs | |
| parent | f94f79608393d4ab127db63cc41668445ef6b243 (diff) | |
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.
Diffstat (limited to 'vendor/time/src/format_description/modifier.rs')
| -rw-r--r-- | vendor/time/src/format_description/modifier.rs | 434 |
1 files changed, 0 insertions, 434 deletions
diff --git a/vendor/time/src/format_description/modifier.rs b/vendor/time/src/format_description/modifier.rs deleted file mode 100644 index 82fca805..00000000 --- a/vendor/time/src/format_description/modifier.rs +++ /dev/null @@ -1,434 +0,0 @@ -//! Various modifiers for components. - -use core::num::NonZeroU16; - -/// Day of the month. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Day { - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// The representation of a month. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum MonthRepr { - /// The number of the month (January is 1, December is 12). - Numerical, - /// The long form of the month name (e.g. "January"). - Long, - /// The short form of the month name (e.g. "Jan"). - Short, -} - -/// Month of the year. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Month { - /// The padding to obtain the minimum width. - pub padding: Padding, - /// What form of representation should be used? - pub repr: MonthRepr, - /// Is the value case sensitive when parsing? - pub case_sensitive: bool, -} - -/// Ordinal day of the year. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Ordinal { - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// The representation used for the day of the week. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum WeekdayRepr { - /// The short form of the weekday (e.g. "Mon"). - Short, - /// The long form of the weekday (e.g. "Monday"). - Long, - /// A numerical representation using Sunday as the first day of the week. - /// - /// Sunday is either 0 or 1, depending on the other modifier's value. - Sunday, - /// A numerical representation using Monday as the first day of the week. - /// - /// Monday is either 0 or 1, depending on the other modifier's value. - Monday, -} - -/// Day of the week. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Weekday { - /// What form of representation should be used? - pub repr: WeekdayRepr, - /// When using a numerical representation, should it be zero or one-indexed? - pub one_indexed: bool, - /// Is the value case sensitive when parsing? - pub case_sensitive: bool, -} - -/// The representation used for the week number. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum WeekNumberRepr { - /// Week 1 is the week that contains January 4. - Iso, - /// Week 1 begins on the first Sunday of the calendar year. - Sunday, - /// Week 1 begins on the first Monday of the calendar year. - Monday, -} - -/// Week within the year. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct WeekNumber { - /// The padding to obtain the minimum width. - pub padding: Padding, - /// What kind of representation should be used? - pub repr: WeekNumberRepr, -} - -/// The representation used for a year value. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum YearRepr { - /// The full value of the year. - Full, - /// All digits except the last two. Includes the sign, if any. - Century, - /// Only the last two digits of the year. - LastTwo, -} - -/// The range of years that are supported. -/// -/// This modifier has no effect when the year repr is [`LastTwo`](YearRepr::LastTwo). -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum YearRange { - /// Years between -9999 and 9999 are supported. - Standard, - /// Years between -999_999 and 999_999 are supported, with the sign being required if the year - /// contains more than four digits. - /// - /// If the `large-dates` feature is not enabled, this variant is equivalent to `Standard`. - Extended, -} - -/// Year of the date. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Year { - /// The padding to obtain the minimum width. - pub padding: Padding, - /// What kind of representation should be used? - pub repr: YearRepr, - /// What range of years is supported? - pub range: YearRange, - /// Whether the value is based on the ISO week number or the Gregorian calendar. - pub iso_week_based: bool, - /// Whether the `+` sign is present when a positive year contains fewer than five digits. - pub sign_is_mandatory: bool, -} - -/// Hour of the day. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Hour { - /// The padding to obtain the minimum width. - pub padding: Padding, - /// Is the hour displayed using a 12 or 24-hour clock? - pub is_12_hour_clock: bool, -} - -/// Minute within the hour. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Minute { - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// AM/PM part of the time. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Period { - /// Is the period uppercase or lowercase? - pub is_uppercase: bool, - /// Is the value case sensitive when parsing? - /// - /// Note that when `false`, the `is_uppercase` field has no effect on parsing behavior. - pub case_sensitive: bool, -} - -/// Second within the minute. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Second { - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// The number of digits present in a subsecond representation. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum SubsecondDigits { - /// Exactly one digit. - One, - /// Exactly two digits. - Two, - /// Exactly three digits. - Three, - /// Exactly four digits. - Four, - /// Exactly five digits. - Five, - /// Exactly six digits. - Six, - /// Exactly seven digits. - Seven, - /// Exactly eight digits. - Eight, - /// Exactly nine digits. - Nine, - /// Any number of digits (up to nine) that is at least one. When formatting, the minimum digits - /// necessary will be used. - OneOrMore, -} - -/// Subsecond within the second. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Subsecond { - /// How many digits are present in the component? - pub digits: SubsecondDigits, -} - -/// Hour of the UTC offset. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct OffsetHour { - /// Whether the `+` sign is present on positive values. - pub sign_is_mandatory: bool, - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// Minute within the hour of the UTC offset. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct OffsetMinute { - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// Second within the minute of the UTC offset. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct OffsetSecond { - /// The padding to obtain the minimum width. - pub padding: Padding, -} - -/// Type of padding to ensure a minimum width. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum Padding { - /// A space character (` `) should be used as padding. - Space, - /// A zero character (`0`) should be used as padding. - Zero, - /// There is no padding. This can result in a width below the otherwise minimum number of - /// characters. - None, -} - -/// Ignore some number of bytes. -/// -/// This has no effect when formatting. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Ignore { - /// The number of bytes to ignore. - pub count: NonZeroU16, -} - -// Needed as `Default` is deliberately not implemented for `Ignore`. The number of bytes to ignore -// must be explicitly provided. -impl Ignore { - /// Create an instance of `Ignore` with the provided number of bytes to ignore. - pub const fn count(count: NonZeroU16) -> Self { - Self { count } - } -} - -/// The precision of a Unix timestamp. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum UnixTimestampPrecision { - /// Seconds since the Unix epoch. - Second, - /// Milliseconds since the Unix epoch. - Millisecond, - /// Microseconds since the Unix epoch. - Microsecond, - /// Nanoseconds since the Unix epoch. - Nanosecond, -} - -/// A Unix timestamp. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct UnixTimestamp { - /// The precision of the timestamp. - pub precision: UnixTimestampPrecision, - /// Whether the `+` sign must be present for a non-negative timestamp. - pub sign_is_mandatory: bool, -} - -/// The end of input. -/// -/// There is currently not customization for this modifier. -#[non_exhaustive] -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct End; - -/// Generate the provided code if and only if `pub` is present. -macro_rules! if_pub { - (pub $(#[$attr:meta])*; $($x:tt)*) => { - $(#[$attr])* - /// - /// This function exists since [`Default::default()`] cannot be used in a `const` context. - /// It may be removed once that becomes possible. As the [`Default`] trait is in the - /// prelude, removing this function in the future will not cause any resolution failures for - /// the overwhelming majority of users; only users who use `#![no_implicit_prelude]` will be - /// affected. As such it will not be considered a breaking change. - $($x)* - }; - ($($_:tt)*) => {}; -} - -/// Implement `Default` for the given type. This also generates an inherent implementation of a -/// `default` method that is `const fn`, permitting the default value to be used in const contexts. -// Every modifier should use this macro rather than a derived `Default`. -macro_rules! impl_const_default { - ($($(#[$doc:meta])* $(@$pub:ident)? $type:ty => $default:expr;)*) => {$( - impl $type { - if_pub! { - $($pub)? - $(#[$doc])*; - pub const fn default() -> Self { - $default - } - } - } - - $(#[$doc])* - impl Default for $type { - fn default() -> Self { - $default - } - } - )*}; -} - -impl_const_default! { - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero). - @pub Day => Self { padding: Padding::Zero }; - /// Creates a modifier that indicates the value uses the - /// [`Numerical`](Self::Numerical) representation. - MonthRepr => Self::Numerical; - /// Creates an instance of this type that indicates the value uses the - /// [`Numerical`](MonthRepr::Numerical) representation, is [padded with zeroes](Padding::Zero), - /// and is case-sensitive when parsing. - @pub Month => Self { - padding: Padding::Zero, - repr: MonthRepr::Numerical, - case_sensitive: true, - }; - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero). - @pub Ordinal => Self { padding: Padding::Zero }; - /// Creates a modifier that indicates the value uses the [`Long`](Self::Long) representation. - WeekdayRepr => Self::Long; - /// Creates a modifier that indicates the value uses the [`Long`](WeekdayRepr::Long) - /// representation and is case-sensitive when parsing. If the representation is changed to a - /// numerical one, the instance defaults to one-based indexing. - @pub Weekday => Self { - repr: WeekdayRepr::Long, - one_indexed: true, - case_sensitive: true, - }; - /// Creates a modifier that indicates that the value uses the [`Iso`](Self::Iso) representation. - WeekNumberRepr => Self::Iso; - /// Creates a modifier that indicates that the value is [padded with zeroes](Padding::Zero) - /// and uses the [`Iso`](WeekNumberRepr::Iso) representation. - @pub WeekNumber => Self { - padding: Padding::Zero, - repr: WeekNumberRepr::Iso, - }; - /// Creates a modifier that indicates the value uses the [`Full`](Self::Full) representation. - YearRepr => Self::Full; - /// Creates a modifier that indicates the value uses the [`Extended`](Self::Extended) range. - YearRange => Self::Extended; - /// Creates a modifier that indicates the value uses the [`Full`](YearRepr::Full) - /// representation, is [padded with zeroes](Padding::Zero), uses the Gregorian calendar as its - /// base, and only includes the year's sign if necessary. - @pub Year => Self { - padding: Padding::Zero, - repr: YearRepr::Full, - range: YearRange::Extended, - iso_week_based: false, - sign_is_mandatory: false, - }; - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero) and - /// has the 24-hour representation. - @pub Hour => Self { - padding: Padding::Zero, - is_12_hour_clock: false, - }; - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero). - @pub Minute => Self { padding: Padding::Zero }; - /// Creates a modifier that indicates the value uses the upper-case representation and is - /// case-sensitive when parsing. - @pub Period => Self { - is_uppercase: true, - case_sensitive: true, - }; - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero). - @pub Second => Self { padding: Padding::Zero }; - /// Creates a modifier that indicates the stringified value contains [one or more - /// digits](Self::OneOrMore). - SubsecondDigits => Self::OneOrMore; - /// Creates a modifier that indicates the stringified value contains [one or more - /// digits](SubsecondDigits::OneOrMore). - @pub Subsecond => Self { digits: SubsecondDigits::OneOrMore }; - /// Creates a modifier that indicates the value only uses a sign for negative values and is - /// [padded with zeroes](Padding::Zero). - @pub OffsetHour => Self { - sign_is_mandatory: false, - padding: Padding::Zero, - }; - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero). - @pub OffsetMinute => Self { padding: Padding::Zero }; - /// Creates a modifier that indicates the value is [padded with zeroes](Padding::Zero). - @pub OffsetSecond => Self { padding: Padding::Zero }; - /// Creates a modifier that indicates the value is [padded with zeroes](Self::Zero). - Padding => Self::Zero; - /// Creates a modifier that indicates the value represents the [number of seconds](Self::Second) - /// since the Unix epoch. - UnixTimestampPrecision => Self::Second; - /// Creates a modifier that indicates the value represents the [number of - /// seconds](UnixTimestampPrecision::Second) since the Unix epoch. The sign is not mandatory. - @pub UnixTimestamp => Self { - precision: UnixTimestampPrecision::Second, - sign_is_mandatory: false, - }; - /// Creates a modifier used to represent the end of input. - @pub End => End; -} |
