revet-core

📁 revethq/skills 📅 6 days ago
1
总安装量
1
周安装量
#49972
全站排名
安装命令
npx skills add https://github.com/revethq/skills --skill revet-core

Agent 安装分布

amp 1
opencode 1
kimi-cli 1
codex 1
claude-code 1

Skill 文档

Revet Core Library

Lightweight shared domain models used across Revet libraries. Zero external dependencies beyond Kotlin stdlib and Java 8+ APIs.

Dependency Coordinates

Group ID: com.revethq Artifact ID: revet-core Version: 0.1.0

Gradle

implementation("com.revethq:revet-core:0.1.0")

Maven

<dependency>
    <groupId>com.revethq</groupId>
    <artifactId>revet-core</artifactId>
    <version>0.1.0</version>
</dependency>

Domain Models

Identifier

package com.revethq.core

data class Identifier(
    val system: String? = null,
    val value: String? = null
)

Represents an external identifier with a system namespace and value.

Usage:

val identifier = Identifier(
    system = "urn:oid:2.16.840.1.113883.4.1",
    value = "123-45-6789"
)

SchemaValidation

package com.revethq.core

import java.time.OffsetDateTime
import java.util.UUID

data class SchemaValidation(
    val schemaId: UUID? = null,
    val isValid: Boolean = false,
    val validatedOn: OffsetDateTime? = null
)

Records schema validation state for a resource.

Usage:

val validation = SchemaValidation(
    schemaId = UUID.fromString("..."),
    isValid = true,
    validatedOn = OffsetDateTime.now()
)

Metadata

package com.revethq.core

data class Metadata(
    val identifiers: List<Identifier> = emptyList(),
    val schemaValidations: List<SchemaValidation> = emptyList(),
    val properties: Map<String, Any> = emptyMap()
)

Aggregate metadata container combining:

  • Multiple external identifiers
  • Schema validation history
  • Extensible key-value properties

Usage:

val metadata = Metadata(
    identifiers = listOf(
        Identifier(system = "saml", value = "user@idp.com"),
        Identifier(system = "scim", value = "external-id-123")
    ),
    schemaValidations = listOf(validation),
    properties = mapOf(
        "customField" to "value",
        "tier" to "premium"
    )
)

Extension Points

Properties Map

The properties: Map<String, Any> field in Metadata is the primary extension point:

  • Add custom attributes without modifying core classes
  • Store domain-specific metadata
  • Maintain forward compatibility

Multiple Identifier Systems

Support multiple external identifiers per resource:

  • SAML NameID
  • SCIM externalId
  • OIDC subject
  • Custom enterprise identifiers

Multi-Schema Validation

Track validation against multiple schemas:

  • Validate same resource against different schema versions
  • Record validation history with timestamps

Characteristics

  • Zero Dependencies: Pure Kotlin + Java stdlib
  • Immutable by Default: Data classes encourage immutable patterns
  • Type-Safe: Full Kotlin null safety
  • Composition: Metadata aggregates, doesn’t extend

Used By

  • revet-iam – User, Group, Policy, and other entities include metadata: Metadata
  • revet-auth – Application, Client, Scope entities use Metadata