0.1.6 • Published 23 days ago

@openfga/syntax-transformer v0.1.6

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
23 days ago

OpenFGA Language

ANTLR Grammar for the OpenFGA DSL and parser from and to the OpenFGA JSON Syntax

Go Reference Release License FOSSA Status Join our community Twitter

Table of Contents

About

OpenFGA is an open source Fine-Grained Authorization solution inspired by Google's Zanzibar paper. It was created by the FGA team at Auth0 based on Auth0 Fine-Grained Authorization (FGA), available under a permissive license (Apache-2) and welcomes community contributions.

OpenFGA is designed to make it easy for application builders to model their permission layer, and to add and integrate fine-grained authorization into their applications. OpenFGA’s design is optimized for reliability and low latency at a high scale.

Resources

About This Repo

This repo contains everything needed to interact with the OpenFGA Authorization Models schema versions 1.1+, in multiple languages (currently, Go and JS are supported).

FeatureImplemented in ANTLR
Basic DSL
Nesting✅ (partial, see #113)
Conditions
FeatureGoJSJava
Transformer from the DSL to JSON and from JSON to DSL
Syntactic Model Validations
Semantic Model Validations❌ (planned, see #99)
Graphing & Utility Methods❌ (planned)❌ (planned)❌ (planned)

Installation

Go

go get github.com/openfga/language/pkg/go

Node

npm install @openfga/syntax-transformer@beta

Usage

Transformer

Go

import "github.com/openfga/language/pkg/go/transformer"

dslString := `model
  schema 1.1
type user
type folder
  relations
    define viewer: [user]`

// Transform from DSL to a JSON string
generatedJsonString, err := transformer.TransformDSLToJSONString(dslString)

// Transform from a JSON string to DSL
generatedDsl, err := transformer.TransformJSONStringToDSL(generatedJsonString)

Node

import { transformer } from "@openfga/syntax-transformer"

let dslString = `model
  schema 1.1
type user
type folder
  relations
    define viewer: [user]`;

// Transform from DSL to a JSON string
const generatedJsonString = transformer.transformDSLToJSONString(dslString)

// Transform from a JSON string to DSL
const generatedDsl = transformer.transformJSONStringToDSL(generatedJsonString)

Java

import dev.openfga.language.DslToJsonTransformer;
import dev.openfga.language.JsonToDslTransformer;

var dslString = """model
  schema 1.1
type user
type folder
  relations
    define viewer: [user]""";

// Transform from DSL to a JSON string
var generatedJsonString = new DslToJsonTransformer().transform(dslString);

// Transform from a JSON string to DSL
var generatedDsl = new JsonToDslTransformer().transform(generatedJsonString);

CLI

Use the FGA CLI

Community Parsers

RepoLicenseMaintainersLanguageSchema v1.0Schema v1.1Package ManagersOther Links
openfga language (syntax-transformer)Apache-2.0@openfgaANTLR (Go and Typescript implementations)<0.1.5Yes (v0.0.8+)npm:@openfga/syntax-transformer - GitHub release (latest SemVer)
openfga-dsl-parserApache-2.0@maxmindlin - @dblclikRustYesNocrates:openfga-dsl-parserpypi:openfga-dsl-parser-pythonWASM - Python
openfga-rsApache-2.0@iammathewRustYesNo
openfga-dsl-parserApache-2.0@craigpastroANTLR & GoYesPartial (requires self). Supports nestingGitHub release (latest SemVer)

Community Wrapper

RepoLicenseMaintainersLanguageSchema v1.0Schema v1.1Package ManagersOther Links
fga cliApache-2.0@openfgaGoNoYesGitHub release (latest SemVer)
fga-transformer-cliMIT@ozee-ioJavascriptYesYesnpm:@openfga/syntax-transformer

Contributing

See CONTRIBUTING.

Author

OpenFGA

License

This project is licensed under the Apache-2.0 license. See the LICENSE file for more info.

0.2.0-beta.17

23 days ago

0.2.0-beta.16

1 month ago

0.2.0-beta.15

1 month ago

0.2.0-beta.14

1 month ago

0.2.0-beta.13

1 month ago

0.2.0-beta.12

2 months ago

0.2.0-beta.11

2 months ago

0.2.0-beta.10

3 months ago

0.2.0-beta.9

4 months ago

0.2.0-beta.8

4 months ago

0.2.0-beta.7

5 months ago

0.2.0-beta.6

5 months ago

0.2.0-beta.2

8 months ago

0.2.0-beta.1

8 months ago

0.2.0-beta.5

6 months ago

0.2.0-beta.4

7 months ago

0.2.0-beta.3

8 months ago

0.1.4

8 months ago

0.1.6

8 months ago

0.1.5

8 months ago

0.1.3

10 months ago

0.1.0

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.0.14

1 year ago

0.0.10

1 year ago

0.0.11

1 year ago

0.0.12

1 year ago

0.0.13

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.5

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago