Skip to content

Commit

Permalink
Fixed up typescript type generation in extension
Browse files Browse the repository at this point in the history
  • Loading branch information
jimmyaxod committed Nov 27, 2023
1 parent 0d9b195 commit 45c36aa
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 24 deletions.
2 changes: 1 addition & 1 deletion extension/generator/typescript/generated.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Code generated by scale-extension 0.4.5, DO NOT EDIT.
// Code generated by scale-signature 0.4.5, DO NOT EDIT.
// output: types

import { Encoder, Decoder, Kind } from "@loopholelabs/polyglot"
Expand Down
39 changes: 21 additions & 18 deletions extension/generator/typescript/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@ import (
polyglotVersion "github.com/loopholelabs/polyglot/version"

interfacesVersion "github.com/loopholelabs/scale-extension-interfaces/version"
"github.com/loopholelabs/scale/signature"
scaleVersion "github.com/loopholelabs/scale/version"

"github.com/loopholelabs/scale/extension"
"github.com/loopholelabs/scale/extension/generator/typescript/templates"
"github.com/loopholelabs/scale/signature/generator/typescript"

"github.com/loopholelabs/scale/signature/generator/utils"
)
Expand Down Expand Up @@ -128,7 +130,8 @@ func init() {

// Generator is the typescript generator
type Generator struct {
templ *template.Template
templ *template.Template
signature *typescript.Generator
}

// New creates a new typescript generator
Expand All @@ -138,35 +141,35 @@ func New() (*Generator, error) {
return nil, err
}

sig, err := typescript.New()
if err != nil {
return nil, err
}

return &Generator{
templ: templ,
templ: templ,
signature: sig,
}, nil
}

// GenerateTypes generates the types for the extension
//
// This is not transpiled to javascript and does not include source maps or type definitions
func (g *Generator) GenerateTypes(extensionSchema *extension.Schema, packageName string) ([]byte, error) {
schema, err := extensionSchema.CloneWithDisabledAccessorsValidatorsAndModifiers()
if err != nil {
return nil, err
signatureSchema := &signature.Schema{
Version: extensionSchema.Version,
Enums: extensionSchema.Enums,
Models: extensionSchema.Models,
}

if packageName == "" {
packageName = defaultPackageName
}
signatureSchema.SetHasLengthValidator(extensionSchema.HasLengthValidator())
signatureSchema.SetHasCaseModifier(extensionSchema.HasCaseModifier())
signatureSchema.SetHasLimitValidator(extensionSchema.HasLimitValidator())
signatureSchema.SetHasRegexValidator(extensionSchema.HasRegexValidator())

buf := new(bytes.Buffer)
err = g.templ.ExecuteTemplate(buf, "types.ts.templ", map[string]any{
"extension_schema": schema,
"generator_version": strings.TrimPrefix(scaleVersion.Version(), "v"),
"package_name": packageName,
})
if err != nil {
return nil, err
}
s, err := g.signature.GenerateTypes(signatureSchema, packageName)

return []byte(formatTS(buf.String())), nil
return s, err
}

func (g *Generator) GenerateInterfaces(extensionSchema *extension.Schema, packageName string, version string) ([]byte, error) {
Expand Down
10 changes: 5 additions & 5 deletions extension/generator/typescript/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,37 +33,37 @@ func TestGenerator(t *testing.T) {

interfaces, err := GenerateInterfaces(s, packageName, "v0.1.0")
require.NoError(t, err)
os.WriteFile("./interfaces.txt", interfaces, 0644)
//os.WriteFile("./interfaces.txt", interfaces, 0644)

Check failure on line 36 in extension/generator/typescript/generator_test.go

View workflow job for this annotation

GitHub Actions / golang

commentFormatting: put a space between `//` and comment text (gocritic)

expInterfaces, err := os.ReadFile("./interfaces.txt")
require.NoError(t, err)
require.Equal(t, string(expInterfaces), string(interfaces))

formatted, err := GenerateTypes(s, "types")
require.NoError(t, err)
os.WriteFile("./generated.txt", formatted, 0644)
//os.WriteFile("./generated.txt", formatted, 0644)

Check failure on line 44 in extension/generator/typescript/generator_test.go

View workflow job for this annotation

GitHub Actions / golang

commentFormatting: put a space between `//` and comment text (gocritic)

expTypes, err := os.ReadFile("./generated.txt")
require.NoError(t, err)
require.Equal(t, string(expTypes), string(formatted))

host, err := GenerateHost(s, packageName, "v0.1.0")
require.NoError(t, err)
os.WriteFile("./host.txt", host, 0644)
//os.WriteFile("./host.txt", host, 0644)

Check failure on line 52 in extension/generator/typescript/generator_test.go

View workflow job for this annotation

GitHub Actions / golang

commentFormatting: put a space between `//` and comment text (gocritic)
expHost, err := os.ReadFile("./host.txt")
require.NoError(t, err)
require.Equal(t, string(expHost), string(host))

guest, err := GenerateGuest(s, packageName, "v0.1.0")
require.NoError(t, err)
os.WriteFile("./guest.txt", guest, 0644)
//os.WriteFile("./guest.txt", guest, 0644)
expGuest, err := os.ReadFile("./guest.txt")
require.NoError(t, err)
require.Equal(t, string(expGuest), string(guest))

mod, err := GeneratePackageJSON(packageName, "v0.1.0")
require.NoError(t, err)
os.WriteFile("./packagejson.txt", mod, 0644)
//os.WriteFile("./packagejson.txt", mod, 0644)
expMod, err := os.ReadFile("./packagejson.txt")
require.NoError(t, err)
require.Equal(t, string(expMod), string(mod))
Expand Down

0 comments on commit 45c36aa

Please sign in to comment.