mirror of https://github.com/open-feature/cli.git
added object flag to nestjs go file and tmpl file
Signed-off-by: bbland1 <104288486+bbland1@users.noreply.github.com>
This commit is contained in:
parent
a9b2efe61a
commit
cb8e563bee
|
|
@ -2,6 +2,7 @@ package nestjs
|
|||
|
||||
import (
|
||||
_ "embed"
|
||||
"encoding/json"
|
||||
"text/template"
|
||||
|
||||
"github.com/open-feature/cli/internal/flagset"
|
||||
|
|
@ -28,14 +29,25 @@ func openFeatureType(t flagset.FlagType) string {
|
|||
return "boolean"
|
||||
case flagset.StringType:
|
||||
return "string"
|
||||
case flagset.ObjectType:
|
||||
return "object"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
func toJSONString(value any) string {
|
||||
bytes, err := json.Marshal(value)
|
||||
if err != nil {
|
||||
return "{}"
|
||||
}
|
||||
return string(bytes)
|
||||
}
|
||||
|
||||
func (g *NestJsGenerator) Generate(params *generators.Params[Params]) error {
|
||||
funcs := template.FuncMap{
|
||||
"OpenFeatureType": openFeatureType,
|
||||
"ToJSONString": toJSONString,
|
||||
}
|
||||
|
||||
newParams := &generators.Params[any]{
|
||||
|
|
@ -49,8 +61,6 @@ func (g *NestJsGenerator) Generate(params *generators.Params[Params]) error {
|
|||
// NewGenerator creates a generator for NestJS.
|
||||
func NewGenerator(fs *flagset.Flagset) *NestJsGenerator {
|
||||
return &NestJsGenerator{
|
||||
CommonGenerator: *generators.NewGenerator(fs, map[flagset.FlagType]bool{
|
||||
flagset.ObjectType: true,
|
||||
}),
|
||||
CommonGenerator: *generators.NewGenerator(fs, map[flagset.FlagType]bool{}),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import type {
|
|||
EvaluationDetails,
|
||||
OpenFeatureModuleOptions,
|
||||
} from "@openfeature/nestjs-sdk";
|
||||
import { OpenFeatureModule, BooleanFeatureFlag, StringFeatureFlag, NumberFeatureFlag } from "@openfeature/nestjs-sdk";
|
||||
import { OpenFeatureModule, BooleanFeatureFlag, StringFeatureFlag, NumberFeatureFlag, ObjectFeatureFlag } from "@openfeature/nestjs-sdk";
|
||||
|
||||
import type { GeneratedClient } from "./openfeature";
|
||||
import { getGeneratedClient } from "./openfeature";
|
||||
|
|
@ -100,7 +100,7 @@ interface TypedFeatureProps {
|
|||
* **Details:**
|
||||
* - flag key: `{{ .Key }}`
|
||||
* - description: `{{ .Description }}`
|
||||
* - default value: `{{ .DefaultValue }}`
|
||||
* - default value: `{{ if eq (.Type | OpenFeatureType) "object"}}{{ .DefaultValue | ToJSONString }}{{ else }}{{ .DefaultValue | QuoteString }}{{ end }}`
|
||||
* - type: `{{ .Type | OpenFeatureType }}`
|
||||
*
|
||||
* Usage:
|
||||
|
|
@ -108,13 +108,13 @@ interface TypedFeatureProps {
|
|||
* @Get("/")
|
||||
* public async handleRequest(
|
||||
* @{{ .Key | ToPascal }}()
|
||||
* {{ .Key | ToCamel }}: Observable<EvaluationDetails<number>>,
|
||||
* {{ .Key | ToCamel }}: Observable<EvaluationDetails<{{ .Type | OpenFeatureType }}>>,
|
||||
* )
|
||||
* ```
|
||||
* @param {TypedFeatureProps} props The options for injecting the feature flag.
|
||||
* @returns {ParameterDecorator} The decorator function.
|
||||
*/
|
||||
export function {{ .Key | ToPascal }}(props?: TypedFeatureProps): ParameterDecorator {
|
||||
return {{ .Type | OpenFeatureType | ToPascal }}FeatureFlag({ flagKey: {{ .Key | Quote }}, defaultValue: {{ .DefaultValue | QuoteString }}, ...props });
|
||||
return {{ .Type | OpenFeatureType | ToPascal }}FeatureFlag({ flagKey: {{ .Key | Quote }}, defaultValue: {{ if eq (.Type | OpenFeatureType) "object"}}{{ .DefaultValue | ToJSONString }}{{ else }}{{ .DefaultValue | QuoteString }}{{ end }}, ...props });
|
||||
}
|
||||
{{ end -}}
|
||||
|
|
|
|||
Loading…
Reference in New Issue