Compare commits

..

19 Commits

Author SHA1 Message Date
Ronald A. Richardson
24d897f3bb works for managing both composer and npm packages, next is to add auth + payment gateway 2023-12-05 09:59:03 +08:00
Ronald A. Richardson
3f1a4bd720 working with both npm and composer for extensions 2023-12-04 17:23:12 +08:00
Ronald A. Richardson
c2457e11b6 updated plugin submodules 2023-11-29 18:04:36 +08:00
Ronald A. Richardson
e4c0def323 WIP use verdaccio as fleetbase extensions repository 2023-11-29 18:01:34 +08:00
Ron
e3acd28c18 Merge pull request #162 from fleetbase/dev-v0.3.1
v0.3.1
2023-11-24 17:39:37 +08:00
Ronald A. Richardson
313b6e63a8 added other extensions 2023-11-24 17:30:53 +08:00
Ronald A. Richardson
a7ed7ee935 resolved conflicts for merge 2023-11-24 17:25:37 +08:00
Ronald A. Richardson
1e28d9d8d8 Upgraded dependencies with patches and improvements for improved UX 2023-11-24 17:20:03 +08:00
Ron
0c31b54fde Merge pull request #159 from fleetbase/fix-deploy-workflow
Fix CD workflow
2023-11-22 16:40:41 +08:00
Ronald A. Richardson
f6b83e5638 upgraded to aws-actions/configure-aws-credentials@v4 2023-11-22 16:39:04 +08:00
Ronald A. Richardson
b30ee818fc added api/auth.json to gitignore 2023-11-22 16:34:30 +08:00
Ronald A. Richardson
6ec9ad59d3 few patches for flespi extension integration 2023-11-17 13:38:55 +08:00
Ron
10ff2e066b Merge pull request #156 from fleetbase/dev-v0.3.0
v0.3.0
2023-11-16 19:01:14 +08:00
Ronald A. Richardson
f56db88ad6 fleetops: fix filters, improve drawer component w/ state, several patches and upgrades 2023-11-16 18:49:17 +08:00
Ron
033cf5cfe0 Merge pull request #155 from fleetbase/dev-v0.2.9
v0.2.9
2023-11-09 17:21:56 +08:00
Ronald A. Richardson
4a4dc76e60 Added scheduler feature, scope/live map drawer feature, and bug fixes and dependency upgrades 2023-11-09 17:04:10 +08:00
Ron
a52af94b00 Merge pull request #154 from fleetbase/dev-v0.2.8
v0.2.8
2023-11-06 20:12:39 +08:00
Ronald A. Richardson
9c4daf7a68 fix dependencies 2023-11-06 19:55:42 +08:00
Ronald A. Richardson
a8904ba112 Full refactor of management section, upgrade of dependencies 2023-11-06 19:39:11 +08:00
31 changed files with 1739 additions and 1621 deletions

View File

@@ -35,7 +35,7 @@ jobs:
echo "STACK=$(basename $GITHUB_REF)" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_NUMBER }}:role/${{ env.PROJECT }}-${{ env.STACK }}-deployer
role-session-name: github

8
.gitignore vendored
View File

@@ -3,6 +3,8 @@
.env.backup
.phpunit.result.cache
.pnpm-store
.npmrc
*/.npmrc
docker-compose.override.yml
npm-debug.log
yarn-error.log
@@ -14,6 +16,7 @@ api/storage/public
api/vendor
api/composer.dev.json
api/composer-install-dev.sh
api/auth.json
act.sh
composer-auth.json
packages/billing-api
@@ -22,4 +25,7 @@ packages/flespi-engine
packages/flespi-integration
packages/projectargus-engine
docker/database/*
docker/database/mysql/*
docker/database/mysql/*
verdaccio/storage/*
verdaccio/config/htpasswd
verdaccio/plugins/*/node_modules

9
.gitmodules vendored
View File

@@ -39,3 +39,12 @@
[submodule "docs/api-reference"]
path = docs/api-reference
url = git@github.com:fleetbase/api-reference.git
[submodule "verdaccio/plugins/verdaccio-composer-middleware"]
path = verdaccio/plugins/verdaccio-composer-middleware
url = git@github.com:fleetbase/verdaccio-composer-middleware.git
[submodule "verdaccio/plugins/verdaccio-fleetbase-extensions-middleware"]
path = verdaccio/plugins/verdaccio-fleetbase-extensions-middleware
url = git@github.com:fleetbase/verdaccio-fleetbase-extensions-middleware.git
[submodule "verdaccio/plugins/verdaccio-fleetbase-s3-storage"]
path = verdaccio/plugins/verdaccio-fleetbase-s3-storage
url = git@github.com:fleetbase/verdaccio-fleetbase-s3-storage.git

View File

@@ -10,8 +10,8 @@
"require": {
"php": "^7.3|^8.0",
"fleetbase/core-api": "^1.3.2",
"fleetbase/fleetops-api": "^0.3.1",
"fleetbase/storefront-api": "^0.2.2",
"fleetbase/fleetops-api": "^0.3.5",
"fleetbase/storefront-api": "^0.2.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.75",

766
api/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -77,7 +77,7 @@ export default class ConsoleController extends Controller {
*
* @var {Array}
*/
@tracked hiddenSidebarRoutes = ['console.home', 'console.extensions', 'console.notifications'];
@tracked hiddenSidebarRoutes = ['console.home', 'console.extensions', 'console.extensions.index', 'console.notifications'];
/**
* Installed extensions.

View File

@@ -10,7 +10,7 @@ export default class Company extends Model {
@attr('string') owner_uuid;
@attr('string') logo_uuid;
@attr('string') backdrop_uuid;
@attr('string') address_uuid;
@attr('string') place_uuid;
/** @relationships */
@belongsTo('file') logo;

View File

@@ -0,0 +1,10 @@
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default class ConsoleExtensionsIndexRoute extends Route {
@service fetch;
model(params) {
return this.fetch.get('extensions');
}
}

View File

@@ -0,0 +1,2 @@
{{page-title "Index"}}
{{outlet}}

View File

@@ -43,7 +43,8 @@ module.exports = function (environment) {
driverImage: getenv('DEFAULT_DRIVER_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
userImage: getenv('DEFAULT_USER_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
contactImage: getenv('DEFAULT_CONTACT_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
vehicleImage: getenv('DEFAULT_VEHICLE_IMAGE', 'https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/vehicle-icons/light_commercial_van.svg'),
vendorImage: getenv('DEFAULT_VENDOR_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
vehicleImage: getenv('DEFAULT_VEHICLE_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/vehicle-placeholder.png'),
vehicleAvatar: getenv('DEFAUL_VEHICLE_AVATAR', 'https://flb-assets.s3-ap-southeast-1.amazonaws.com/static/vehicle-icons/mini_bus.svg'),
},

View File

@@ -43,7 +43,7 @@ module.exports = function (defaults) {
postcssMixins,
postcssPresetEnv({ stage: 1 }),
postcssEach,
tailwind('./tailwind.js'),
tailwind('./tailwind.config.js'),
autoprefixer,
],
},

View File

@@ -1,6 +1,6 @@
{
"name": "@fleetbase/console",
"version": "0.2.7",
"version": "0.3.1",
"private": true,
"description": "Fleetbase Console",
"repository": "",
@@ -25,25 +25,25 @@
},
"dependencies": {
"@ember/legacy-built-in-components": "^0.4.1",
"@fleetbase/ember-core": "^0.1.6",
"@fleetbase/ember-ui": "^0.2.2",
"@fleetbase/ember-core": "^0.1.8",
"@fleetbase/ember-ui": "^0.2.6",
"@fleetbase/fleetops-data": "^0.1.5",
"@fleetbase/fleetops-engine": "^0.3.5",
"@fleetbase/storefront-engine": "^0.2.4",
"@fleetbase/dev-engine": "^0.1.9",
"@fleetbase/iam-engine": "^0.0.7",
"@fleetbase/fleetops-engine": "^0.3.1",
"@fleetbase/fleetops-data": "^0.1.1",
"@fleetbase/storefront-engine": "^0.2.2",
"@fleetbase/leaflet-routing-machine": "^3.2.16",
"@fortawesome/ember-fontawesome": "^0.4.1",
"ember-intl": "^6.0.0-beta.6",
"ember-changeset": "^4.1.2",
"ember-changeset-validations": "^4.1.1",
"ember-composable-helpers": "^5.0.0",
"ember-concurrency": "^3.0.0",
"ember-concurrency-decorators": "^2.0.3",
"ember-intl": "6.0.0-beta.6",
"ember-math-helpers": "^2.18.2",
"ember-power-select": "^6.0.1",
"ember-prism": "^0.13.0",
"ember-radio-button": "^3.0.0-beta.1",
"ember-radio-button": "3.0.0-beta.1",
"ember-tag-input": "^3.1.0",
"fleetbase-extensions-indexer": "^0.0.4",
"postcss-at-rules-variables": "^0.3.0",
@@ -67,7 +67,7 @@
"dragula": "^3.7.3",
"ember-auto-import": "^2.4.2",
"ember-cli": "~4.6.0",
"ember-cli-app-version": "^5.0.0",
"ember-cli-app-version": "^6.0.1",
"ember-cli-babel": "^7.26.11",
"ember-cli-dependency-checker": "^3.3.1",
"ember-cli-dotenv": "^3.1.0",
@@ -125,9 +125,9 @@
},
"pnpm": {
"overrides": {
"@fleetbase/fleetops-data": "^0.1.1",
"@fleetbase/ember-core": "^0.1.5",
"@fleetbase/ember-ui": "^0.2.2"
"@fleetbase/fleetops-data": "^0.1.5",
"@fleetbase/ember-core": "^0.1.8",
"@fleetbase/ember-ui": "^0.2.6"
}
},
"prettier": {

2183
console/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,7 @@ Router.map(function () {
});
this.route('console', { path: '/' }, function () {
this.route('home', { path: '/' });
this.route('extensions');
this.route('extensions', function () {});
this.route('notifications');
this.route('account', function () {
this.route('virtual', { path: '/:slug/:view' });

View File

@@ -0,0 +1,11 @@
import { module, test } from 'qunit';
import { setupTest } from '@fleetbase/console/tests/helpers';
module('Unit | Route | console/extensions/index', function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup('route:console/extensions/index');
assert.ok(route);
});
});

View File

@@ -23,6 +23,34 @@ services:
SOCKETCLUSTER_WORKERS: 10
SOCKETCLUSTER_BROKERS: 10
verdaccio:
# image: verdaccio/verdaccio
build:
context: ./verdaccio
dockerfile: Dockerfile
user: root
environment:
- VERDACCIO_PORT=4873
ports:
- '4873:4873'
volumes:
- './verdaccio/storage:/verdaccio/storage'
- './verdaccio/config:/verdaccio/conf'
- './verdaccio/plugins:/verdaccio/plugins'
minio:
image: minio/minio
restart: always
command: server /data --console-address ":9001"
environment:
MINIO_ACCESS_KEY: 'foobar'
MINIO_SECRET_KEY: '1234567e'
ports:
- 9000:9000
- 9001:9001
volumes:
- ./verdaccio/minio:/data
console:
ports:
- "4200:4200"

5
verdaccio/Dockerfile Normal file
View File

@@ -0,0 +1,5 @@
FROM verdaccio/verdaccio
USER root
ADD plugins /verdaccio/plugins
RUN cd /verdaccio/plugins && sh install.sh
ADD config/config.yaml /verdaccio/conf/config.yaml

229
verdaccio/config/config.yaml Executable file
View File

@@ -0,0 +1,229 @@
#
# This is the default configuration file. It allows all users to do anything,
# please read carefully the documentation and best practices to
# improve security.
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/5.x/conf
#
# Read about the best practices
# https://verdaccio.org/docs/best
# path to a directory with all packages
storage: ../storage
# path to a directory with plugins to include
plugins: ../plugins
# https://verdaccio.org/docs/webui
web:
title: Fleetbase Extensions
# comment out to disable gravatar support
# gravatar: false
# by default packages are ordercer ascendant (asc|desc)
# sort_packages: asc
# convert your UI to the dark side
# darkMode: true
# html_cache: true
# by default all features are displayed
# login: true
# showInfo: true
# showSettings: true
# In combination with darkMode you can force specific theme
# showThemeSwitch: true
# showFooter: true
# showSearch: true
# showRaw: true
# showDownloadTarball: true
# HTML tags injected after manifest <scripts/>
# scriptsBodyAfter:
# - '<script type="text/javascript" src="https://my.company.com/customJS.min.js"></script>'
# HTML tags injected before ends </head>
# metaScripts:
# - '<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>'
# - '<script type="text/javascript" src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js"></script>'
# - '<meta name="robots" content="noindex" />'
# HTML tags injected first child at <body/>
# bodyBefore:
# - '<div id="myId">html before webpack scripts</div>'
# Public path for template manifest scripts (only manifest)
# publicPath: http://somedomain.org/
# customized storage
store:
'@fleetbase/verdaccio-fleetbase-s3-storage':
bucket: fleetbase-registry
keyPrefix: flb
region: ap-southeast-1
endpoint: http://minio:9000
accessKeyId: foobar
secretAccessKey: 1234567e
s3ForcePathStyle: true
# https://verdaccio.org/docs/configuration#authentication
auth:
htpasswd:
file: ./htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
# max_users: 1000
# Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt".
algorithm: bcrypt # by default is crypt, but is recommended use bcrypt for new installations
# Rounds number for "bcrypt", will be ignored for other algorithms.
# rounds: 10
# https://verdaccio.org/docs/configuration#uplinks
# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
# Learn how to protect your packages
# https://verdaccio.org/docs/protect-your-dependencies/
# https://verdaccio.org/docs/configuration#packages
packages:
'@fleetbase/*':
access: $authenticated
publish: $authenticated
storage: local-storage
'@flb/*':
access: $authenticated
publish: $authenticated
storage: local-storage
'@flb-extension/*':
access: $authenticated
publish: $authenticated
storage: local-storage
'@*/*':
# scoped packages
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all
# allow all known users to publish/publish packages
# (anyone can register by default, remember?)
publish: $authenticated
unpublish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
# To improve your security configuration and avoid dependency confusion
# consider removing the proxy property for private packages
# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages
# https://verdaccio.org/docs/configuration#server
# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections.
# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout.
# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough.
server:
keepAliveTimeout: 60
# Allow `req.ip` to resolve properly when Verdaccio is behind a proxy or load-balancer
# See: https://expressjs.com/en/guide/behind-proxies.html
# trustProxy: '127.0.0.1'
# https://verdaccio.org/docs/configuration#offline-publish
# publish:
# allow_offline: false
# https://verdaccio.org/docs/configuration#url-prefix
# url_prefix: /verdaccio/
# VERDACCIO_PUBLIC_URL='https://somedomain.org';
# url_prefix: '/my_prefix'
# // url -> https://somedomain.org/my_prefix/
# VERDACCIO_PUBLIC_URL='https://somedomain.org';
# url_prefix: '/'
# // url -> https://somedomain.org/
# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix';
# url_prefix: '/second_prefix'
# // url -> https://somedomain.org/second_prefix/'
# https://verdaccio.org/docs/configuration#security
# security:
# api:
# legacy: true
# jwt:
# sign:
# expiresIn: 29d
# verify:
# someProp: [value]
# web:
# sign:
# expiresIn: 1h # 1 hour by default
# verify:
# someProp: [value]
# https://verdaccio.org/docs/configuration#user-rate-limit
# userRateLimit:
# windowMs: 50000
# max: 1000
# https://verdaccio.org/docs/configuration#max-body-size
max_body_size: 300mb
# https://verdaccio.org/docs/configuration#listen-port
# listen:
# - localhost:4873 # default value
# - http://localhost:4873 # same thing
# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY)
# - https://example.org:4873 # if you want to use https
# - "[::1]:4873" # ipv6
# - unix:/tmp/verdaccio.sock # unix socket
# The HTTPS configuration is useful if you do not consider use a HTTP Proxy
# https://verdaccio.org/docs/configuration#https
# https:
# key: ./path/verdaccio-key.pem
# cert: ./path/verdaccio-cert.pem
# ca: ./path/verdaccio-csr.pem
# https://verdaccio.org/docs/configuration#proxy
# http_proxy: http://something.local/
# https_proxy: https://something.local/
# https://verdaccio.org/docs/configuration#notifications
# notify:
# method: POST
# headers: [{ "Content-Type": "application/json" }]
# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
middlewares:
audit:
enabled: true
'@fleetbase/verdaccio-fleetbase-extensions-middleware':
enabled: true
'@fleetbase/verdaccio-composer-middleware':
enabled: true
# https://verdaccio.org/docs/logger
# log settings
log: { type: stdout, format: pretty, level: debug }
#experiments:
# # support for npm token command
# token: false
# # disable writing body size to logs, read more on ticket 1912
# bytesin_off: false
# # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string
# tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}'
# # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file
# tarball_url_redirect(packageName, filename) {
# const signedUrl = // generate a signed url
# return signedUrl;
# }
# translate your registry, api i18n not available yet
# i18n:
# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md
# web: en-US

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Save the current working directory
current_dir=$(pwd)
# Navigate to the directory containing the plugins
cd /verdaccio/plugins
# Find all child directories and run npm install if package.json exists
for dir in */; do
if [[ -f "${dir}package.json" ]]; then
echo "Running npm install in $dir"
cd "$dir"
npm install
npm run build
cd "$current_dir" # Go back to the original directory
else
echo "No package.json found in $dir, skipping..."
fi
done
echo "npm install completed for all verdaccio plugins."
# Install verdaccio-* directories globally
for dir in verdaccio-*; do
if [ -d "$dir" ]; then
echo "Installing $dir globally..."
npm install -g "./$dir"
fi
done
echo "Global installation of verdaccio plugins completed."

View File

@@ -0,0 +1,19 @@
#!/bin/bash
# Save the current working directory
current_dir=$(pwd)
# Navigate to the directory containing the plugins
cd /verdaccio/plugins
# Find all child directories and run npm install if package.json exists
for dir in */; do
if [[ -f "${dir}package-lock.json" ]]; then
echo "Running npm build in $dir"
cd "$dir"
npm run build
cd "$current_dir"
else
echo "No package-lock.json found in $dir, skipping..."
fi
done