Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.json]
indent_size = 2

[*.{yml,yaml}]
indent_size = 2
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
* text=auto eol=lf

# Keep Windows shell scripts with CRLF for compatibility.
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf
86 changes: 86 additions & 0 deletions .github/workflows/ghp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: GitHub Pages
on:
push:
branches: [ "outlook" ]
workflow_dispatch:
inputs:
VITE_IO_BRIDGE_URL:
description: 'Optional bridge URL override for this run (e.g. https://bridge.example.com)'
required: false
type: string

#concurrency:
# group: pages
# cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest

permissions:
contents: read
id-token: write

steps:
- name: Checkout bridge-examples
uses: actions/checkout@v6
with:
path: bridge-examples
- name: Checkout connect-js
uses: actions/checkout@v6
with:
repository: InteropIO/connect-js
ref: cb-next-4.3
token: '${{ secrets.PAT }}'
path: connect-js

- name: Use Node 20 for connect-js build
uses: actions/setup-node@v6
with:
node-version: 20
cache: npm
cache-dependency-path: connect-js/package-lock.json

- name: Build connect-js
working-directory: connect-js/
env:
LICENSE_KEY: ${{ secrets.IO_CB_LICENSE_KEY }}
run: |
npm ci
npm run build

- name: Use project Node version for office build
uses: actions/setup-node@v6
with:
node-version-file: bridge-examples/.node-version
cache: npm
cache-dependency-path: bridge-examples/office/package-lock.json
- name: Install dependencies
working-directory: bridge-examples/office
run: npm ci
- name: Build
working-directory: bridge-examples/office
run: npm run build
env:
VITE_IO_BRIDGE_URL: ${{ github.event.inputs.VITE_IO_BRIDGE_URL || vars.VITE_IO_BRIDGE_URL }}
VITE_AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }}
VITE_AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
VITE_AUTH0_AUDIENCE: ${{ secrets.AUTH0_AUDIENCE }}
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v4
with:
path: bridge-examples/office/dist

deploy:
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.idea/
.env
.secrets/
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24.14.1
2 changes: 0 additions & 2 deletions README.md

This file was deleted.

147 changes: 147 additions & 0 deletions office/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
## This is an example .env file for io.Bridge
## Copy this file as .env and fill in the required values

###############################################################################
## License key for io.Bridge ##
###############################################################################

## License key for io.Bridge (Required). Specify it as a string.
IO_BRIDGE_LICENSE_KEY=
## Alternatively, you can specify the path to a file containing the license key.
#IO_BRIDGE_LICENSE_KEY_FILE=./.secrets/io-bridge-license.key

###############################################################################
## Server ##
###############################################################################

## The PORT for io.Bridge server to bind on (Optional, default is 8084)
#IO_BRIDGE_SERVER_PORT=8084

## The host for io.Bridge server to bind on (Optional, default is '0.0.0.0' i.e. any local IP)
#IO_BRIDGE_SERVER_HOST=127.0.0.1

## The path to file where the resolved io.Bridge server is bound (Optional)
#IO_BRIDGE_PRINT_PORT=./io-bridge-address.json

###############################################################################
## Auth ##
###############################################################################

## Authentication type. For example 'none', 'basic' or 'oauth2'
#IO_BRIDGE_SERVER_AUTH_TYPE=oauth2

## Basic Authentication Realm
IO_BRIDGE_SERVER_AUTH_BASIC_REALM=interop.io

## OAuth2 JWT Issuer URI (used by io.Bridge server for token validation)
#IO_BRIDGE_SERVER_AUTH_OAUTH2_JWT_ISSUERURI=

## OAuth2 JWT Audience (used by io.Bridge server for token validation)
#IO_BRIDGE_SERVER_AUTH_OAUTH2_JWT_AUDIENCE=

###############################################################################
## Mesh ##
###############################################################################

## The ping interval for mesh (Optional, default is 30s)
#IO_BRIDGE_MESH_PING_INTERVAL=30s

###############################################################################
## Gateway ##
###############################################################################

## If you want to embed gateway (Optional, default is false)
#IO_BRIDGE_GATEWAY_ENABLED=true

###############################################################################
## CORS ##
###############################################################################

## Allow origins for CORS (Optional, default is *)
## The special value * allows all origins.
## You can also specify multiple origins separated by commas.
## You can use regular expressions to match origins, for example:
## - http:\/\/localhost(:d+)? matches http://localhost, http://localhost:8080, etc.
## - file:\/\/.* matches any file URL
## - null is a way to support specific 'null' origin set by the client, for example when using about:blank in a browser
#IO_BRIDGE_SERVER_CORS_ALLOW_ORIGIN=/http:\/\/localhost(:d+)?/,/file:\/\/.*/,null

## Allow methods for CORS (Optional, default is GET,HEAD). The special value * allows all methods.
#IO_BRIDGE_SERVER_CORS_ALLOW_METHODS=GET,POST,DELETE

## Which headers a pre-flight request can list as allowed for use during an actual request. (Optional, default is *)
#IO_BRIDGE_SERVER_CORS_ALLOW_HEADERS=*

## Which headers that an actual response might have and can be exposed to the clients (Optional)
#IO_BRIDGE_SERVER_CORS_EXPOSE_HEADERS=X-Authorization

## How long (in seconds) response from a pre-flight request can be cached by clients (Optional, default is 3600 i.e. 1 hour)
#IO_BRIDGE_SERVER_CORS_MAX_AGE=3600

## If you want to allow credentials in CORS (Optional, default is false), cannot be true if allow origins is set to *
## Setting this to true will impact how allow origins, methods and headers are processed
#IO_BRIDGE_SERVER_CORS_ALLOW_CREDENTIALS=true

## If you want to allow private network access (PNA) in CORS (Optional, default is false), cannot be true if allow origins is set to *
#IO_BRIDGE_SERVER_CORS_ALLOW_PRIVATE_NETWORK=true

## If you want to completely disable CORS handling (Optional, default is false)
#IO_BRIDGE_SERVER_CORS_DISABLED=true

###############################################################################
## Logging
###############################################################################

## This is the logging layout to use. The default is 'ecs' which is the Elastic Common Schema.
## Other options are 'logstash'
LOGGING_LAYOUT=ecs

## The logging level to use. The default is 'info'.
## Supported levels are: trace, debug, info, warn, error and off
#LOGGING_LEVEL=debug

#LOGGING_LEVEL_GATEWAY_BRIDGE=debug
#LOGGING_LEVEL_GATEWAY_SERVER=info
#LOGGING_LEVEL_GATEWAY_SERVER_HTTP=debug

LOGGING_LEVEL_GATEWAY=info

###############################################################################
## Web App Configuration (Vite)
## Variables prefixed with VITE_ are exposed to the browser (required by Vite)
###############################################################################

## License key for io.Connect Browser Platform (Required for web app)
## Note: This is a DIFFERENT license than IO_BRIDGE_LICENSE_KEY above.
## - VITE_IO_CB_LICENSE_KEY is for the browser platform (client-side)
VITE_IO_CB_LICENSE_KEY=

## io.Bridge URL for browser platform and gateway connection (Optional, default is https://gw-bridge-examples.interop.io)
#VITE_IO_BRIDGE_URL=https://localhost:8084
VITE_AUTH0_DOMAIN=
VITE_AUTH0_CLIENT_ID=
VITE_AUTH0_AUDIENCE=

## Auth0 scopes for the browser app (Optional, default is "openid profile email")
#VITE_AUTH0_SCOPE=openid profile email

###############################################################################
## Desktop Gateway (Optional — falls back to IO_BRIDGE_* then VITE_*)
## Use these to configure the gateway independently from the bridge/browser
###############################################################################

## io.Bridge URL for the gateway mesh connection (falls back to VITE_IO_BRIDGE_URL)
#IO_GATEWAY_BRIDGE_URL=

## Auth0 Issuer URI for the gateway (falls back to IO_BRIDGE_SERVER_AUTH_OAUTH2_JWT_ISSUERURI, then https://<VITE_AUTH0_DOMAIN>)
#IO_GATEWAY_AUTH_ISSUERURI=

## Auth0 Client ID for the gateway (falls back to VITE_AUTH0_CLIENT_ID)
#IO_GATEWAY_AUTH_CLIENT_ID=

## Auth0 Audience for the gateway (falls back to IO_BRIDGE_SERVER_AUTH_OAUTH2_JWT_AUDIENCE, then VITE_AUTH0_AUDIENCE)
#IO_GATEWAY_AUTH_AUDIENCE=

## Auth0 scopes for the desktop gateway (Optional, default is "openid email offline_access")
## offline_access is required for automatic token refresh
#IO_GATEWAY_AUTH0_SCOPE=openid email offline_access
3 changes: 3 additions & 0 deletions office/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dist/
node_modules/
public/static/modals/
Loading
Loading