Browse Source

Merge branch 'next' of github.com:Budibase/budibase into feature/logo-api

pull/1461/head
mike12345567 5 years ago
parent
commit
7e10dc16b3
  1. 8
      hosting/envoy.dev.yaml.hbs
  2. 6
      packages/bbui/src/Menu/Item.svelte
  3. 2
      packages/builder/cypress.json
  4. 2
      packages/builder/package.json
  5. 2
      packages/builder/src/components/backend/DataTable/Table.svelte
  6. 2
      packages/builder/src/components/settings/tabs/DangerZone.svelte
  7. 2
      packages/builder/src/components/start/AppCard.svelte
  8. 4
      packages/builder/src/components/start/AppList.svelte
  9. 2
      packages/builder/src/components/start/CreateAppModal.svelte
  10. 18
      packages/builder/src/pages/builder/_layout.svelte
  11. 13
      packages/builder/src/pages/builder/admin/index.svelte
  12. 0
      packages/builder/src/pages/builder/app/[application]/_reset.svelte
  13. 0
      packages/builder/src/pages/builder/app/[application]/automate/[automation]/_layout.svelte
  14. 0
      packages/builder/src/pages/builder/app/[application]/automate/[automation]/index.svelte
  15. 0
      packages/builder/src/pages/builder/app/[application]/automate/_layout.svelte
  16. 0
      packages/builder/src/pages/builder/app/[application]/automate/index.svelte
  17. 0
      packages/builder/src/pages/builder/app/[application]/data/_layout.svelte
  18. 0
      packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/[query]/_layout.svelte
  19. 0
      packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte
  20. 0
      packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/_layout.svelte
  21. 0
      packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/index.svelte
  22. 0
      packages/builder/src/pages/builder/app/[application]/data/datasource/_layout.svelte
  23. 0
      packages/builder/src/pages/builder/app/[application]/data/datasource/index.svelte
  24. 0
      packages/builder/src/pages/builder/app/[application]/data/index.svelte
  25. 0
      packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/_layout.svelte
  26. 0
      packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/index.svelte
  27. 0
      packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/relationship/[selectedRow]/[selectedField]/index.svelte
  28. 0
      packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/relationship/[selectedRow]/index.svelte
  29. 0
      packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/relationship/index.svelte
  30. 0
      packages/builder/src/pages/builder/app/[application]/data/table/_layout.svelte
  31. 0
      packages/builder/src/pages/builder/app/[application]/data/table/index.svelte
  32. 0
      packages/builder/src/pages/builder/app/[application]/data/view/[selectedView]/_layout.svelte
  33. 0
      packages/builder/src/pages/builder/app/[application]/data/view/[selectedView]/index.svelte
  34. 0
      packages/builder/src/pages/builder/app/[application]/deploy/_layout.svelte
  35. 0
      packages/builder/src/pages/builder/app/[application]/deploy/index.svelte
  36. 0
      packages/builder/src/pages/builder/app/[application]/design/[assetType]/[asset]/_fallback.svelte
  37. 0
      packages/builder/src/pages/builder/app/[application]/design/[assetType]/_layout.svelte
  38. 0
      packages/builder/src/pages/builder/app/[application]/design/[assetType]/index.svelte
  39. 0
      packages/builder/src/pages/builder/app/[application]/design/_layout.svelte
  40. 0
      packages/builder/src/pages/builder/app/[application]/design/index.svelte
  41. 0
      packages/builder/src/pages/builder/app/[application]/index.svelte
  42. 0
      packages/builder/src/pages/builder/app/[application]/settings/_layout.svelte
  43. 0
      packages/builder/src/pages/builder/app/[application]/settings/index.svelte
  44. 0
      packages/builder/src/pages/builder/app/index.svelte
  45. 0
      packages/builder/src/pages/builder/auth/index.svelte
  46. 0
      packages/builder/src/pages/builder/auth/login.svelte
  47. 0
      packages/builder/src/pages/builder/index.svelte
  48. 28
      packages/builder/src/pages/builder/portal/_layout.svelte
  49. 0
      packages/builder/src/pages/builder/portal/apps/_layout.svelte
  50. 2
      packages/builder/src/pages/builder/portal/apps/index.svelte
  51. 0
      packages/builder/src/pages/builder/portal/index.svelte
  52. 0
      packages/builder/src/pages/builder/portal/oauth/index.svelte
  53. 0
      packages/builder/src/pages/builder/portal/oauth/logos/Google.svelte
  54. 0
      packages/builder/src/pages/builder/portal/settings/_layout.svelte
  55. 0
      packages/builder/src/pages/builder/portal/settings/general.svelte
  56. 0
      packages/builder/src/pages/builder/portal/settings/index.svelte
  57. 2
      packages/builder/src/pages/index.svelte
  58. 2
      packages/builder/vite.config.js
  59. 895
      packages/builder/yarn.lock
  60. 1687
      packages/client/yarn.lock
  61. 2
      packages/server/package.json
  62. 7
      packages/server/yarn.lock
  63. 12
      packages/string-templates/yarn.lock

8
hosting/envoy.dev.yaml.hbs

@ -19,7 +19,7 @@ static_resources:
# special case to redirect specifically the route path
# to the builder, if this were a prefix then it would break minio
- match: { path: "/" }
redirect: { path_redirect: "/app/" }
redirect: { path_redirect: "/builder/" }
- match: { prefix: "/db/" }
route:
@ -42,14 +42,14 @@ static_resources:
route:
cluster: builder-dev
- match: { prefix: "/app/" }
- match: { prefix: "/builder/" }
route:
cluster: builder-dev
- match: { prefix: "/app" }
- match: { prefix: "/builder" }
route:
cluster: builder-dev
prefix_rewrite: "/app/"
prefix_rewrite: "/builder/"
# minio is on the default route because this works
# best, minio + AWS SDK doesn't handle path proxy

6
packages/bbui/src/Menu/Item.svelte

@ -37,3 +37,9 @@
{/if}
<span class="spectrum-Menu-itemLabel"><slot /></span>
</li>
<style>
.spectrum-Menu-itemIcon {
align-self: center;
}
</style>

2
packages/builder/cypress.json

@ -1,5 +1,5 @@
{
"baseUrl": "http://localhost:10000/app/",
"baseUrl": "http://localhost:10000/builder/",
"video": true,
"projectId": "bmbemn",
"env": {

2
packages/builder/package.json

@ -74,7 +74,7 @@
"@spectrum-css/vars": "^3.0.1",
"codemirror": "^5.59.0",
"downloadjs": "1.4.7",
"lodash": "4.17.13",
"lodash": "4.17.21",
"posthog-js": "1.4.5",
"remixicon": "2.5.0",
"shortid": "2.2.15",

2
packages/builder/src/components/backend/DataTable/Table.svelte

@ -59,7 +59,7 @@
const selectRelationship = ({ tableId, rowId, fieldName }) => {
$goto(
`/app/builder/${$params.application}/data/table/${tableId}/relationship/${rowId}/${fieldName}`
`/builder/app/${$params.application}/data/table/${tableId}/relationship/${rowId}/${fieldName}`
)
}

2
packages/builder/src/components/settings/tabs/DangerZone.svelte

@ -11,7 +11,7 @@
const id = $params.application
await del(`/api/applications/${id}`)
loading = false
$goto("/app")
$goto("/builder")
}
</script>

2
packages/builder/src/components/start/AppCard.svelte

@ -36,7 +36,7 @@
<Layout noPadding gap="XS">
<div class="preview" use:gradient />
<div class="title">
<Link href={`/app/builder/${_id}`}>
<Link href={`/builder/app/${_id}`}>
<Heading size="XS">
{name}
</Heading>

4
packages/builder/src/components/start/AppList.svelte

@ -13,13 +13,13 @@
{/each}
</div>
{:else}
<div>No apps</div>
<div>No apps found.</div>
{/if}
<style>
.appList {
display: grid;
grid-gap: 50px;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
</style>

2
packages/builder/src/components/start/CreateAppModal.svelte

@ -112,7 +112,7 @@
}
const userResp = await api.post(`/api/users/metadata/self`, user)
await userResp.json()
$goto(`./${appJson._id}`)
window.location = `/builder/app/${appJson._id}`
} catch (error) {
console.error(error)
notifications.error(error)

18
packages/builder/src/pages/app/_layout.svelte → packages/builder/src/pages/builder/_layout.svelte

@ -4,24 +4,30 @@
import { auth } from "stores/backend"
import { admin } from "stores/portal"
let checked = false
let loaded = false
$: hasAdminUser = !!$admin?.checklist?.adminUser
onMount(async () => {
await admin.init()
await auth.checkAuth()
if (!$admin?.checklist?.adminUser) {
loaded = true
})
// Force creation of an admin user if one doesn't exist
$: {
if (loaded && !hasAdminUser) {
$goto("./admin")
}
checked = true
})
}
// Redirect to log in at any time if the user isn't authenticated
$: {
if (checked && !$auth.user) {
if (loaded && hasAdminUser && !$auth.user) {
$goto("./auth/login")
}
}
</script>
{#if checked}
{#if loaded}
<slot />
{/if}

13
packages/builder/src/pages/app/admin/index.svelte → packages/builder/src/pages/builder/admin/index.svelte

@ -2,15 +2,14 @@
import {
Button,
Heading,
Label,
notifications,
Layout,
Input,
Body,
} from "@budibase/bbui"
import { goto } from "@roxi/routify"
import { onMount } from "svelte"
import api from "builderStore/api"
import { admin } from "stores/portal"
let adminUser = {}
@ -18,13 +17,15 @@
try {
// Save the admin user
const response = await api.post(`/api/admin/users/init`, adminUser)
const json = await response.json()
if (response.status !== 200) throw new Error(json.message)
notifications.success(`Admin user created.`)
if (response.status !== 200) {
throw new Error(json.message)
}
notifications.success(`Admin user created`)
await admin.init()
$goto("../portal")
} catch (err) {
notifications.error(`Failed to create admin user.`)
notifications.error(`Failed to create admin user`)
}
}
</script>

0
packages/builder/src/pages/app/builder/[application]/_reset.svelte → packages/builder/src/pages/builder/app/[application]/_reset.svelte

0
packages/builder/src/pages/app/builder/[application]/automate/[automation]/_layout.svelte → packages/builder/src/pages/builder/app/[application]/automate/[automation]/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/automate/[automation]/index.svelte → packages/builder/src/pages/builder/app/[application]/automate/[automation]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/automate/_layout.svelte → packages/builder/src/pages/builder/app/[application]/automate/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/automate/index.svelte → packages/builder/src/pages/builder/app/[application]/automate/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/datasource/[selectedDatasource]/[query]/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/[query]/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte → packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/[query]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/datasource/[selectedDatasource]/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/datasource/[selectedDatasource]/index.svelte → packages/builder/src/pages/builder/app/[application]/data/datasource/[selectedDatasource]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/datasource/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/datasource/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/datasource/index.svelte → packages/builder/src/pages/builder/app/[application]/data/datasource/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/index.svelte → packages/builder/src/pages/builder/app/[application]/data/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/[selectedTable]/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/[selectedTable]/index.svelte → packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/[selectedTable]/relationship/[selectedRow]/[selectedField]/index.svelte → packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/relationship/[selectedRow]/[selectedField]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/[selectedTable]/relationship/[selectedRow]/index.svelte → packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/relationship/[selectedRow]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/[selectedTable]/relationship/index.svelte → packages/builder/src/pages/builder/app/[application]/data/table/[selectedTable]/relationship/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/table/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/table/index.svelte → packages/builder/src/pages/builder/app/[application]/data/table/index.svelte

0
packages/builder/src/pages/app/builder/[application]/data/view/[selectedView]/_layout.svelte → packages/builder/src/pages/builder/app/[application]/data/view/[selectedView]/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/data/view/[selectedView]/index.svelte → packages/builder/src/pages/builder/app/[application]/data/view/[selectedView]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/deploy/_layout.svelte → packages/builder/src/pages/builder/app/[application]/deploy/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/deploy/index.svelte → packages/builder/src/pages/builder/app/[application]/deploy/index.svelte

0
packages/builder/src/pages/app/builder/[application]/design/[assetType]/[asset]/_fallback.svelte → packages/builder/src/pages/builder/app/[application]/design/[assetType]/[asset]/_fallback.svelte

0
packages/builder/src/pages/app/builder/[application]/design/[assetType]/_layout.svelte → packages/builder/src/pages/builder/app/[application]/design/[assetType]/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/design/[assetType]/index.svelte → packages/builder/src/pages/builder/app/[application]/design/[assetType]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/design/_layout.svelte → packages/builder/src/pages/builder/app/[application]/design/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/design/index.svelte → packages/builder/src/pages/builder/app/[application]/design/index.svelte

0
packages/builder/src/pages/app/builder/[application]/index.svelte → packages/builder/src/pages/builder/app/[application]/index.svelte

0
packages/builder/src/pages/app/builder/[application]/settings/_layout.svelte → packages/builder/src/pages/builder/app/[application]/settings/_layout.svelte

0
packages/builder/src/pages/app/builder/[application]/settings/index.svelte → packages/builder/src/pages/builder/app/[application]/settings/index.svelte

0
packages/builder/src/pages/app/builder/index.svelte → packages/builder/src/pages/builder/app/index.svelte

0
packages/builder/src/pages/app/auth/index.svelte → packages/builder/src/pages/builder/auth/index.svelte

0
packages/builder/src/pages/app/auth/login.svelte → packages/builder/src/pages/builder/auth/login.svelte

0
packages/builder/src/pages/app/index.svelte → packages/builder/src/pages/builder/index.svelte

28
packages/builder/src/pages/app/portal/_layout.svelte → packages/builder/src/pages/builder/portal/_layout.svelte

@ -35,19 +35,19 @@
onMount(getInfo)
let menu = [
{ title: "Apps", href: "/app/portal/apps" },
{ title: "Drafts", href: "/app/portal/drafts" },
{ title: "Users", href: "/app/portal/users", heading: "Manage" },
{ title: "Groups", href: "/app/portal/groups" },
{ title: "Auth", href: "/app/portal/oauth" },
{ title: "Email", href: "/app/portal/email" },
{ title: "Apps", href: "/builder/portal/apps" },
{ title: "Drafts", href: "/builder/portal/drafts" },
{ title: "Users", href: "/builder/portal/users", heading: "Manage" },
{ title: "Groups", href: "/builder/portal/groups" },
{ title: "Auth", href: "/builder/portal/oauth" },
{ title: "Email", href: "/builder/portal/email" },
{
title: "General",
href: "/app/portal/settings/general",
href: "/builder/portal/settings/general",
heading: "Settings",
},
{ title: "Theming", href: "/app/portal/theming" },
{ title: "Account", href: "/app/portal/account" },
{ title: "Theming", href: "/builder/portal/theming" },
{ title: "Account", href: "/builder/portal/account" },
]
</script>
@ -89,7 +89,7 @@
<MenuItem icon="LogOut" on:click={auth.logout}>Log out</MenuItem>
</ActionMenu>
</div>
<div>
<div class="content">
<slot />
</div>
</div>
@ -100,17 +100,20 @@
<style>
.container {
min-height: 100vh;
height: 100%;
display: grid;
grid-template-columns: 250px 1fr;
align-items: stretch;
}
.nav {
background: var(--background);
border-right: var(--border-light);
overflow: auto;
}
.main {
display: grid;
grid-template-rows: auto 1fr;
overflow: hidden;
}
.branding {
display: grid;
@ -156,4 +159,7 @@
text-overflow: ellipsis;
font-weight: 500;
}
.content {
overflow: auto;
}
</style>

0
packages/builder/src/pages/app/portal/apps/_layout.svelte → packages/builder/src/pages/builder/portal/apps/_layout.svelte

2
packages/builder/src/pages/app/portal/apps/index.svelte → packages/builder/src/pages/builder/portal/apps/index.svelte

@ -65,7 +65,7 @@
{#if layout === "grid"}
<AppList />
{:else}
Table
Table view.
{/if}
</Layout>
<Modal

0
packages/builder/src/pages/app/portal/index.svelte → packages/builder/src/pages/builder/portal/index.svelte

0
packages/builder/src/pages/app/portal/oauth/index.svelte → packages/builder/src/pages/builder/portal/oauth/index.svelte

0
packages/builder/src/pages/app/portal/oauth/logos/Google.svelte → packages/builder/src/pages/builder/portal/oauth/logos/Google.svelte

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
packages/builder/src/pages/app/portal/settings/_layout.svelte → packages/builder/src/pages/builder/portal/settings/_layout.svelte

0
packages/builder/src/pages/app/portal/settings/general.svelte → packages/builder/src/pages/builder/portal/settings/general.svelte

0
packages/builder/src/pages/app/portal/settings/index.svelte → packages/builder/src/pages/builder/portal/settings/index.svelte

2
packages/builder/src/pages/index.svelte

@ -1,4 +1,4 @@
<script>
import { goto } from "@roxi/routify"
$goto("./app")
$goto("./builder")
</script>

2
packages/builder/vite.config.js

@ -6,7 +6,7 @@ import path from "path"
export default ({ mode }) => {
const isProduction = mode === "production"
return {
base: "/app/",
base: "/builder/",
build: {
minify: isProduction,
outDir: "../server/builder",

895
packages/builder/yarn.lock

File diff suppressed because it is too large

1687
packages/client/yarn.lock

File diff suppressed because it is too large

2
packages/server/package.json

@ -109,7 +109,7 @@
"koa-send": "5.0.0",
"koa-session": "5.12.0",
"koa-static": "5.0.0",
"lodash": "4.17.13",
"lodash": "4.17.21",
"mongodb": "3.6.3",
"mssql": "6.2.3",
"mysql": "2.18.1",

7
packages/server/yarn.lock

@ -6099,12 +6099,7 @@ lodash.xor@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6"
integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY=
lodash@4.17.13:
version "4.17.13"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.13.tgz#0bdc3a6adc873d2f4e0c4bac285df91b64fc7b93"
integrity sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA==
lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
lodash@4.17.21, lodash@^4.14.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==

12
packages/string-templates/yarn.lock

@ -2181,9 +2181,9 @@ handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6:
typeof-article "^0.1.1"
handlebars@^4.0.11, handlebars@^4.7.6:
version "4.7.6"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
version "4.7.7"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
dependencies:
minimist "^1.2.5"
neo-async "^2.6.0"
@ -3339,9 +3339,9 @@ lodash.templatesettings@^4.0.0:
lodash._reinterpolate "^3.0.0"
lodash@^4.17.19, lodash@^4.17.20:
version "4.17.20"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
log-ok@^0.1.1:
version "0.1.1"

Loading…
Cancel
Save