-
-
Save thomasaarholt/22a8308ba634b359deb0f7ce84ad0db5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2024-02-24T21:15:42.552 helix_vcs [INFO] file is untracked | |
2024-02-24T21:15:42.552 helix_vcs [INFO] failed to open diff base for /Users/thomas/oda/dbt-models/snowflake/run.sql | |
2024-02-24T21:15:42.554 helix_lsp::client [INFO] Using custom LSP config: {"enableSnowflakeSyntaxCheck":true,"lspMode":"dbtProject","pythonInfo":{"path":"python"}} | |
2024-02-24T21:15:42.554 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"fileOperations":{"didRename":true,"willRename":true},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"23.10 (5c567f31)"},"initializationOptions":{"enableSnowflakeSyntaxCheck":true,"lspMode":"dbtProject","pythonInfo":{"path":"python"}},"processId":68264,"rootPath":"/Users/thomas/oda/dbt-models/snowflake","rootUri":"file:///Users/thomas/oda/dbt-models/snowflake","workspaceFolders":[{"name":"snowflake","uri":"file:///Users/thomas/oda/dbt-models/snowflake"}]},"id":0} | |
2024-02-24T21:15:43.325 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":1,"message":"(node:68265) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n(Use `node --trace-deprecation ...` to show where the warning was created)"}} | |
2024-02-24T21:15:43.325 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Error, message: "(node:68265) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\n(Use `node --trace-deprecation ...` to show where the warning was created)" } | |
2024-02-24T21:15:43.624 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.363Z: Profile name found: oda_snowflake"}} | |
2024-02-24T21:15:43.624 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.363Z: Profile name found: oda_snowflake" } | |
2024-02-24T21:15:43.624 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.370Z: Starting server for folder /Users/thomas/oda/dbt-models/snowflake."}} | |
2024-02-24T21:15:43.624 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.370Z: Starting server for folder /Users/thomas/oda/dbt-models/snowflake." } | |
2024-02-24T21:15:43.624 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.621Z: manifest.json was parsed. Models, macros, sources were updated"}} | |
2024-02-24T21:15:43.624 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.621Z: manifest.json was parsed. Models, macros, sources were updated" } | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"custom/manifestParsed","params":[null]} | |
2024-02-24T21:15:43.625 helix_term::application [INFO] Ignoring Unhandled notification from Language Server | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"willSave":true,"save":true},"hoverProvider":true,"completionProvider":{"triggerCharacters":[".","(","\"","'"]},"signatureHelpProvider":{"triggerCharacters":["(",",",")"]},"definitionProvider":true,"codeActionProvider":true,"executeCommandProvider":{"commands":["ea812bb1-6d4d-46be-89d9-2e623fc48cb6"]},"workspace":{"fileOperations":{"didRename":{"filters":[{"scheme":"file","pattern":{"glob":"/Users/thomas/oda/dbt-models/snowflake/**/*","matches":"file"}}]}}}}}} | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt <- {"capabilities":{"codeActionProvider":true,"completionProvider":{"triggerCharacters":[".","(","\"","'"]},"definitionProvider":true,"executeCommandProvider":{"commands":["ea812bb1-6d4d-46be-89d9-2e623fc48cb6"]},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",",",")"]},"textDocumentSync":{"change":2,"openClose":true,"save":true,"willSave":true},"workspace":{"fileOperations":{"didRename":{"filters":[{"pattern":{"glob":"/Users/thomas/oda/dbt-models/snowflake/**/*","matches":"file"},"scheme":"file"}]}}}}} | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","method":"initialized","params":{}} | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"enableSnowflakeSyntaxCheck":true,"lspMode":"dbtProject","pythonInfo":{"path":"python"}}}} | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"sql","text":"WITH foo AS (\n SELECT 1 AS id, 'Name1' AS name UNION ALL\n SELECT 2, 'Name2'\n),\n\nbar AS (\n SELECT 1 AS id, 'Address1' AS address UNION ALL\n SELECT 2, 'Address2'\n)\n\nSELECT\n f.id,\n f.name,\n b.address\nFROM foo f\nLEFT JOIN bar b ON f.id = b.id;\n","uri":"file:///Users/thomas/oda/dbt-models/snowflake/run.sql","version":0}}} | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"WizardForDbtCore(TM)/status","params":{"projectPath":"/Users/thomas/oda/dbt-models/snowflake","packagesStatus":{"packagesYmlFound":true},"profilesYmlStatus":{"activeProfileName":"oda_snowflake","profilesYmlPath":"/Users/thomas/oda/dbt-models/profiles.yml"}}} | |
2024-02-24T21:15:43.625 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.624Z: Process 'python -c \"from distutils.sysconfig import get_python_lib; print(get_python_lib())\"' exited with code 0"}} | |
2024-02-24T21:15:43.625 helix_term::application [INFO] Ignoring Unhandled notification from Language Server | |
2024-02-24T21:15:43.625 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.624Z: Process 'python -c \"from distutils.sysconfig import get_python_lib; print(get_python_lib())\"' exited with code 0" } | |
2024-02-24T21:15:43.661 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.628Z: Macro compilation server started on port 32915"}} | |
2024-02-24T21:15:43.661 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.628Z: Macro compilation server started on port 32915" } | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":0,"method":"client/registerCapability","params":{"registrations":[{"id":"ccc88dc6-7e77-4f62-a179-536635130516","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":{"baseUri":"file:///target","pattern":"manifest.json"}}]}}]}} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":1,"method":"client/registerCapability","params":{"registrations":[{"id":"3813491d-0d49-46ac-b863-f11169868658","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":{"baseUri":"file:///Users/thomas/oda/dbt-models/snowflake/models","pattern":"**/*.sql"}}]}}]}} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":2,"method":"client/registerCapability","params":{"registrations":[{"id":"df4c3421-8adf-4ef6-885a-6e94a8681094","method":"workspace/didChangeConfiguration","registerOptions":{}}]}} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":3,"method":"client/registerCapability","params":{"registrations":[{"id":"90165982-86c4-489f-960e-b45c9ea4b96d","method":"workspace/didCreateFiles","registerOptions":{"filters":[{"scheme":"file","pattern":{"glob":"/Users/thomas/oda/dbt-models/snowflake/**/*","matches":"file"}}]}}]}} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","result":null,"id":0} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","result":null,"id":1} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":4,"method":"client/registerCapability","params":{"registrations":[{"id":"1ac68ad2-3581-4ccf-b68e-d6ed969e8f5e","method":"workspace/didRenameFiles","registerOptions":{"filters":[{"scheme":"file","pattern":{"glob":"/Users/thomas/oda/dbt-models/snowflake/**/*","matches":"file"}}]}}]}} | |
2024-02-24T21:15:43.662 helix_term::application [WARN] Ignoring a client/registerCapability request because dynamic capability registration is not enabled. Please report this upstream to the language server | |
2024-02-24T21:15:43.662 helix_term::application [WARN] Ignoring a client/registerCapability request because dynamic capability registration is not enabled. Please report this upstream to the language server | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","result":null,"id":2} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","result":null,"id":3} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":5,"method":"client/registerCapability","params":{"registrations":[{"id":"dd93742f-2206-47d8-a264-4f91d82b6ba2","method":"workspace/didDeleteFiles","registerOptions":{"filters":[{"scheme":"file","pattern":{"glob":"/Users/thomas/oda/dbt-models/snowflake/**/*","matches":"file"}}]}}]}} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.632Z: Profile name found: oda_snowflake"}} | |
2024-02-24T21:15:43.662 helix_term::application [WARN] Ignoring a client/registerCapability request because dynamic capability registration is not enabled. Please report this upstream to the language server | |
2024-02-24T21:15:43.662 helix_term::application [WARN] Ignoring a client/registerCapability request because dynamic capability registration is not enabled. Please report this upstream to the language server | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","result":null,"id":4} | |
2024-02-24T21:15:43.662 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","result":null,"id":5} | |
2024-02-24T21:15:43.662 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.632Z: Profile name found: oda_snowflake" } | |
2024-02-24T21:15:43.664 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:43.663Z: Not supported dbt document kind"}} | |
2024-02-24T21:15:43.664 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:43.663Z: Not supported dbt document kind" } | |
2024-02-24T21:15:45.181 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:45.181Z: Process 'python \"/opt/homebrew/lib/node_modules/@fivetrandevelopers/dbt-language-server/python/script.py\" --version' exited with code 0"}} | |
2024-02-24T21:15:45.181 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:45.181Z: Version 1.6.9"}} | |
2024-02-24T21:15:45.181 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"WizardForDbtCore(TM)/status","params":{"projectPath":"/Users/thomas/oda/dbt-models/snowflake","pythonStatus":{"path":"python"},"dbtStatus":{"versionInfo":{"installedVersion":{"major":1,"minor":6,"patch":9},"latestVersion":{"major":1,"minor":7,"patch":8},"installedAdapters":[{"name":"snowflake","version":{"major":1,"minor":6,"patch":6}}]}}}} | |
2024-02-24T21:15:45.181 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:45.181Z: Process 'python \"/opt/homebrew/lib/node_modules/@fivetrandevelopers/dbt-language-server/python/script.py\" --version' exited with code 0" } | |
2024-02-24T21:15:45.181 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:45.181Z: Version 1.6.9" } | |
2024-02-24T21:15:45.181 helix_term::application [INFO] Ignoring Unhandled notification from Language Server | |
2024-02-24T21:15:47.839 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:47.833Z: Loading ZetaSQL library for snowflake"}} | |
2024-02-24T21:15:47.839 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:47.833Z: Loading ZetaSQL library for snowflake" } | |
2024-02-24T21:15:47.843 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:47.843Z: ZetaSQL library loaded [\"int32\",\"int64\",\"uint32\",\"uint64\",\"bool\",\"boolean\",\"float32\",\"double\",\"float\",\"float64\",\"string\",\"bytes\",\"date\",\"timestamp\",\"time\",\"datetime\",\"interval\",\"geography\",\"bignumeric\",\"json\",\"number\",\"decimal\",\"numeric\",\"int\",\"integer\",\"bigint\",\"smallint\",\"tinyint\",\"byteint\",\"float4\",\"float8\",\"text\",\"timestamp_ntz\",\"timestamp_tz\",\"timestamp_ltz\",\"binary\",\"array\",\"variant\",\"object\",\"double precision\",\"real\"]"}} | |
2024-02-24T21:15:47.843 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:47.843Z: ZetaSQL library loaded [\"int32\",\"int64\",\"uint32\",\"uint64\",\"bool\",\"boolean\",\"float32\",\"double\",\"float\",\"float64\",\"string\",\"bytes\",\"date\",\"timestamp\",\"time\",\"datetime\",\"interval\",\"geography\",\"bignumeric\",\"json\",\"number\",\"decimal\",\"numeric\",\"int\",\"integer\",\"bigint\",\"smallint\",\"tinyint\",\"byteint\",\"float4\",\"float8\",\"text\",\"timestamp_ntz\",\"timestamp_tz\",\"timestamp_ltz\",\"binary\",\"array\",\"variant\",\"object\",\"double precision\",\"real\"]" } | |
2024-02-24T21:15:47.980 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:47.845Z: Starting zetasql on port 13850"}} | |
2024-02-24T21:15:47.980 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:47.845Z: Starting zetasql on port 13850" } | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:47.995Z: Starting to recompile/reanalyze the project"}} | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"$/progress","params":{"token":"Project_Progress","value":{"kind":"begin","title":"Analyzing project"}}} | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"$/progress","params":{"token":"Project_Progress","value":{"kind":"report","message":"dbt compile","percentage":0}}} | |
2024-02-24T21:15:47.998 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:47.995Z: Starting to recompile/reanalyze the project" } | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"custom/clearAllDiagnostics","params":[null]} | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:47.996Z: Starting project compilation"}} | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:47.997Z: {\"dbtVersion\":\"1.6.9\",\"pythonVersion\":\"undefined\",\"initTime\":\"4626.695417\",\"type\":\"snowflake\",\"method\":\"user-password\",\"winWsl\":\"false\",\"enableSnowflakeSyntaxCheck\":\"true\",\"ftUser\":\"false\",\"ds\":\"unknown\"}"}} | |
2024-02-24T21:15:47.998 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"telemetry/event","params":{"name":"log","properties":{"dbtVersion":"1.6.9","pythonVersion":"undefined","initTime":"4626.695417","type":"snowflake","method":"user-password","winWsl":"false","enableSnowflakeSyntaxCheck":"true","ftUser":"false","ds":"unknown"}}} | |
2024-02-24T21:15:47.998 helix_term::application [INFO] Ignoring Unhandled notification from Language Server | |
2024-02-24T21:15:47.998 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:47.996Z: Starting project compilation" } | |
2024-02-24T21:15:47.998 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:47.997Z: {\"dbtVersion\":\"1.6.9\",\"pythonVersion\":\"undefined\",\"initTime\":\"4626.695417\",\"type\":\"snowflake\",\"method\":\"user-password\",\"winWsl\":\"false\",\"enableSnowflakeSyntaxCheck\":\"true\",\"ftUser\":\"false\",\"ds\":\"unknown\"}" } | |
2024-02-24T21:15:47.998 helix_term::application [INFO] Ignoring Unhandled notification from Language Server | |
2024-02-24T21:15:49.275 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:49.274Z: 20:15:49 Running with dbt=1.6.9\n"}} | |
2024-02-24T21:15:49.275 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:49.274Z: 20:15:49 Running with dbt=1.6.9\n" } | |
2024-02-24T21:15:49.486 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":4,"message":"snowflake 2024-02-24T20:15:49.486Z: 20:15:49 Registered adapter: snowflake=1.6.6\n"}} | |
2024-02-24T21:15:49.486 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "snowflake 2024-02-24T20:15:49.486Z: 20:15:49 Registered adapter: snowflake=1.6.6\n" } | |
2024-02-24T21:15:51.516 helix_lsp::transport [INFO] dbt -> {"jsonrpc":"2.0","method":"textDocument/definition","params":{"position":{"character":4,"line":11},"textDocument":{"uri":"file:///Users/thomas/oda/dbt-models/snowflake/run.sql"}},"id":1} | |
2024-02-24T21:15:51.517 helix_lsp::transport [INFO] dbt <- {"jsonrpc":"2.0","id":1,"result":null} | |
2024-02-24T21:15:51.517 helix_lsp::transport [INFO] dbt <- null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment