Compare commits

..

1 Commits

Author SHA1 Message Date
renovate[bot]
1493533ce9 Add renovate.json 2023-07-01 02:39:06 +00:00
12 changed files with 378 additions and 312 deletions

199
.circleci/config.yml Normal file
View File

@@ -0,0 +1,199 @@
version: 2
defaults: &defaults
working_directory: ~/project
docker:
- image: cimg/node:lts
aliases:
- &restore_yarn_cache
name: Restore yarn cache
keys:
- yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
- yarn-packages-{{ .Branch }}
- yarn-packages-
- &save_yarn_cache
name: Save yarn cache
paths:
- ~/.cache/yarn
key: yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
jobs:
install:
<<: *defaults
steps:
- checkout
- restore_cache: *restore_yarn_cache
- run: yarn install --frozen-lockfile
- save_cache: *save_yarn_cache
- store_artifacts:
path: package.json
- persist_to_workspace:
root: ~/project
paths:
- .
build:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Build
command: yarn run build
- run:
name: Build sense
command: yarn run sense
- persist_to_workspace:
root: ~/project
paths:
- .
lint:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Lint
command: yarn run eslint
unit-tests:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Run unit tests and publish to codeclimate
command: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
yarn test:unit --runInBand --coverage --reporters=default --reporters=jest-junit
./cc-test-reporter after-build --coverage-input-type lcov --exit-code $?
environment:
JEST_JUNIT_OUTPUT_DIR: ./coverage/junit/
- store_artifacts:
path: coverage
api-spec:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Build API specification
command: yarn run spec
publish-dev:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run: zip -r "sn-network-chart-ext.zip" "./sn-network-chart-ext"
- store_artifacts:
path: ./sn-network-chart-ext.zip
publish:
<<: *defaults
steps:
- attach_workspace:
at: ~/project
- run:
name: Setup npm
command: |
set -eo pipefail
# Amend auth token for access to public npm registry for @nebula.js packages
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
- run:
name: Publish
command: |
set -euo pipefail
PROJ_VER=v$(cat package.json | jq -r '.version')
TAG_NAME=$(git tag --points-at HEAD)
if [ "$TAG_NAME" == "$PROJ_VER" ]
then
echo "Running >> npm publish"
npm publish
fi
api-governance:
machine:
image: ubuntu-2004:current
working_directory: ~/project
steps:
- checkout
- attach_workspace:
at: ~/project
- run:
name: Create version.txt
command: |
set -x
if [ -n "${CIRCLE_TAG}" ]; then
version=${CIRCLE_TAG#v}
else
version=$(git describe --tags --abbrev=7 --match "v*")
version=${version#v}
fi
echo "$version" > ./version.txt
echo "Building $version"
- run:
name: Prepare API Compliance
command: |
docker pull ghcr.io/qlik-download/api-compliance
docker create -v /specs --name specs alpine:3.4 /bin/true
docker cp ./api-specifications/properties.json specs:/specs
- run:
name: Run API Compliance
command: >
VER=$(cat ./version.txt)
docker run --volumes-from specs
-e SPEC_PATHS="e3863ba0-a48d-4034-8a77-1b00ce8a637d@/specs/properties.json"
-e COMMIT_SHA="$CIRCLE_SHA1"
-e RELEASE_TAG="$VER"
-e CREDENTIALS_S3_SECRETKEY="$APICULTURIST_S3"
-e CREDENTIALS_GITHUB="$APICULTURIST_GITHUB"
-e CREDENTIALS_COLONY="$APICULTURIST_TOKEN"
ghcr.io/qlik-download/api-compliance
workflows:
version: 2
build-all:
jobs:
- install
- build:
requires:
- install
- unit-tests:
requires:
- build
- lint:
requires:
- build
- api-spec:
requires:
- install
- publish-dev:
requires:
- build
- publish:
requires:
- build
- unit-tests
- lint
- api-spec
filters:
branches:
only:
- main
- api-governance:
context: api-compliance
filters:
branches:
# Forked pull requests have CIRCLE_BRANCH set to pull/XXX
ignore:
- /pull\/[0-9]+/
- renovate/minor-and-patch
tags:
only:
- /v.*/

View File

@@ -1,19 +0,0 @@
version: "2"
checks:
method-lines:
config:
threshold: 100
method-complexity:
config:
threshold: 10
similar-code:
config:
threshold: 65
identical-code:
config:
threshold: 65
exclude_patterns:
- "src/**/*.test.ts"
- "src/**/*.test.tsx"
- "*config*"
- "test/**/__fixtures__"

View File

@@ -1,38 +0,0 @@
name: "API Governance"
on:
workflow_dispatch:
inputs:
VERSION:
type: string
description: Version to run against
default: ''
SHA:
type: string
description: Sha of tag
default: ''
jobs:
api-gov:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Prepare API Compliance
shell: bash
run: |
docker pull ghcr.io/qlik-download/api-compliance
docker create -v /specs --name specs alpine:3.4 /bin/true
docker cp api-specifications/properties.json specs:/specs/properties.json
- name: Run API Compliance
shell: bash
run: |
docker run --volumes-from specs \
-e SPEC_PATHS="${{ secrets.API_KEY }}@/specs/properties.json" \
-e COMMIT_SHA="${{ inputs.SHA }}" \
-e RELEASE_TAG="${{ inputs.VERSION }}" \
-e CREDENTIALS_S3_SECRETKEY="${{ secrets.APICULTURIST_S3 }}" \
-e CREDENTIALS_GITHUB="${{ secrets.APICULTURIST_GITHUB }}" \
-e CREDENTIALS_COLONY="${{ secrets.APICULTURIST_TOKEN }}" \
ghcr.io/qlik-download/api-compliance

View File

@@ -1,22 +0,0 @@
name: Build
on:
workflow_dispatch:
inputs:
release:
type: boolean
required: true
default: false
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
uses: qlik-oss/sn-gh-workflows/.github/workflows/build.yaml@v1
secrets: inherit
with:
release: ${{ inputs.release || false}}
api_specification_path: api-specifications/properties.json

View File

@@ -1,17 +0,0 @@
name: "Semantic PR"
on:
pull_request_target:
types:
- opened
- edited
- synchronize
jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,166 +3,156 @@
"info": {
"name": "@nebula.js/sn-network-chart:properties",
"description": "Network chart generic object definition",
"version": "1.0.4",
"version": "0.3.0",
"license": "MIT",
"stability": "stable",
"stability": "experimental",
"x-qlik-visibility": "public"
},
"entries": {
"properties": {
"entries": {},
"definitions": {
"module.exports.version": {
"description": "Current version of this generic object definition",
"type": "string"
},
"module.exports.qHyperCubeDef": {
"description": "Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.",
"extends": [
{
"type": "GenericObjectProperties"
"type": "HyperCubeDef"
}
],
"entries": {
"version": {
"description": "Current version of this generic object definition",
"type": "string"
},
"qHyperCubeDef": {
"description": "Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.",
"extends": [
{
"type": "EngineAPI.HyperCubeDef"
}
],
"kind": "object"
},
"showTitles": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"title": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"subtitle": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"footnote": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"edgeType": {
"optional": true,
"defaultValue": "dynamic",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dynamic'"
},
{
"kind": "literal",
"value": "'continuous'"
},
{
"kind": "literal",
"value": "'discrete'"
},
{
"kind": "literal",
"value": "'diagonalCross'"
},
{
"kind": "literal",
"value": "'straightCross'"
},
{
"kind": "literal",
"value": "'horizontal'"
},
{
"kind": "literal",
"value": "'vertical'"
},
{
"kind": "literal",
"value": "'curvedCW'"
},
{
"kind": "literal",
"value": "'curvedCCW'"
},
{
"kind": "literal",
"value": "'cubicBezier'"
}
]
},
"displayEdgeLabel": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"posEdgeLabel": {
"optional": true,
"defaultValue": "top",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'top'"
},
{
"kind": "literal",
"value": "'middle'"
},
{
"kind": "literal",
"value": "'bottom'"
},
{
"kind": "literal",
"value": "'horizontal'"
}
]
},
"nodeShape": {
"optional": true,
"defaultValue": "dot",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dot'"
},
{
"kind": "literal",
"value": "'square'"
},
{
"kind": "literal",
"value": "'star'"
},
{
"kind": "literal",
"value": "'triangle'"
},
{
"kind": "literal",
"value": "'triangleDown'"
},
{
"kind": "literal",
"value": "'diamond'"
}
]
},
"shadowMode": {
"optional": true,
"defaultValue": false,
"type": "boolean"
}
},
"kind": "object"
},
"module.exports.showTitles": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"module.exports.title": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"module.exports.subtitle": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"module.exports.footnote": {
"optional": true,
"defaultValue": "",
"type": "string"
},
"module.exports.edgeType": {
"optional": true,
"defaultValue": "dynamic",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dynamic'"
},
{
"kind": "literal",
"value": "'continuous'"
},
{
"kind": "literal",
"value": "'discrete'"
},
{
"kind": "literal",
"value": "'diagonalCross'"
},
{
"kind": "literal",
"value": "'straightCross'"
},
{
"kind": "literal",
"value": "'horizontal'"
},
{
"kind": "literal",
"value": "'vertical'"
},
{
"kind": "literal",
"value": "'curvedCW'"
},
{
"kind": "literal",
"value": "'curvedCCW'"
},
{
"kind": "literal",
"value": "'cubicBezier'"
}
]
},
"module.exports.displayEdgeLabel": {
"optional": true,
"defaultValue": false,
"type": "boolean"
},
"module.exports.posEdgeLabel": {
"optional": true,
"defaultValue": "top",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'top'"
},
{
"kind": "literal",
"value": "'middle'"
},
{
"kind": "literal",
"value": "'bottom'"
},
{
"kind": "literal",
"value": "'horizontal'"
}
]
},
"module.exports.nodeShape": {
"optional": true,
"defaultValue": "dot",
"kind": "union",
"items": [
{
"kind": "literal",
"value": "'dot'"
},
{
"kind": "literal",
"value": "'square'"
},
{
"kind": "literal",
"value": "'star'"
},
{
"kind": "literal",
"value": "'triangle'"
},
{
"kind": "literal",
"value": "'triangleDown'"
},
{
"kind": "literal",
"value": "'diamond'"
}
]
},
"module.exports.shadowMode": {
"optional": true,
"defaultValue": false,
"type": "boolean"
}
},
"definitions": {}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@nebula.js/sn-network-chart",
"version": "1.0.4",
"version": "0.3.0",
"description": "Displays hierarchical or relational dimensions as nodes and edges´, with measures to show the significance of its links.",
"homepage": "",
"repository": "https://github.com/qlik-oss/network-vis-chart",
@@ -14,7 +14,8 @@
"sense": "nebula sense --meta resources/meta.json && shx cp resources/network_chart_v1.png sn-network-chart-ext",
"eslint": "eslint src",
"spec": "sy from-jsdoc -c ./spec-configs/props.conf.js",
"test:unit": "jest"
"test:unit": "jest",
"prepublishOnly": "shx rm -rf dist && shx rm -rf core/esm && shx rm -rf sn-network-chart-ext && yarn build && yarn sense"
},
"files": [
"api-specifications",
@@ -43,6 +44,6 @@
"vis-network": "9.1.6"
},
"peerDependencies": {
"@nebula.js/stardust": ">=1.7.0"
"@nebula.js/stardust": ">=1.0.0"
}
}

View File

@@ -1,11 +1,9 @@
> **Warning** This repository is now archived and will not be updated
# @nebula.js/sn-network-chart
> This repository was originally published to foster collaboration and engagement with developers as they customized or developed visualizations, but due to customer feedback and usage data, it is now moved back to closed source. Moving this and other projects back to closed source will support better integration with internal build and test tooling, and free up resources for investment in these and other visualizations.
The network chart is built using [visjs network visualization](https://github.com/visjs/vis-network) to display networks of nodes and edges. It was originally forked from [miclae76/network-vis-chart](miclae76/network-vis-chart) and has since been converted to use Nebula.
# sn-network-chart
A network chart to be used with nebula.js, built using [visjs network visualization](https://github.com/visjs/vis-network) to display networks of nodes and edges.
## Legacy build
The chart before Nebula conversion and dependency updates can be found on the *release/legacy* branch.
## Requirements

View File

@@ -1,4 +0,0 @@
## Legacy build
The chart before Nebula conversion and dependency updates can be found on the *release/legacy* branch.
Originally forked from [miclae76/network-vis-chart](miclae76/network-vis-chart) and has since been converted to use Nebula.

6
renovate.json Normal file
View File

@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>qlik-oss/renovate-config"
]
}

View File

@@ -1,48 +1,27 @@
const path = require("path");
const path = require('path');
const pkg = require(path.resolve(__dirname, "../package.json")); // eslint-disable-line
const pkg = require(path.resolve(__dirname, '../package.json')); // eslint-disable-line
module.exports = {
fromJsdoc: {
glob: ["./src/extension/properties.js"],
api: {
stability: "stable",
visibility: "public",
properties: {
"x-qlik-visibility": "public",
},
name: `${pkg.name}:properties`,
version: pkg.version,
description: "Network chart generic object definition",
},
output: {
sort: {
alpha: false,
},
file: "./api-specifications/properties.json",
},
parse: {
types: {
GenericObjectProperties: {
url: "https://qlik.dev/apis/json-rpc/qix/schemas#%23%2Fdefinitions%2Fschemas%2Fentries%2FGenericObjectProperties",
},
undefined: {},
"EngineAPI.ValueExpression": {
url: "https://qlik.dev/apis/json-rpc/qix/schemas#%23%2Fdefinitions%2Fschemas%2Fentries%2FValueExpression",
},
"EngineAPI.HyperCubeDef": {
url: "https://qlik.dev/apis/json-rpc/qix/schemas#%23%2Fdefinitions%2Fschemas%2Fentries%2FListObjectDef",
},
},
glob: ["./src/extension/properties.js"],
package: path.resolve(__dirname, "../package.json"),
api: {
stability: "experimental",
properties: {
"x-qlik-visibility": "public",
},
visibility: "public",
name: `${pkg.name}:properties`,
version: pkg.version,
description: "Network chart generic object definition",
},
toDts: {
spec: "./api-specifications/properties.json",
output: {
file: "./types/index.d.ts",
},
dependencies: {
references: ["qlik-engineapi"],
output: {
file: path.resolve(__dirname, "../api-specifications/properties.json"),
},
parse: {
types: {
NxMeasure: {},
HyperCubeDef: {},
},
},
};

View File

@@ -1,9 +1,4 @@
/**
* @type {object}
* @extends {GenericObjectProperties}
* @entry
*/
const properties = {
export default {
/**
* Current version of this generic object definition
* @type {string}
@@ -11,7 +6,7 @@ const properties = {
version: process.env.PACKAGE_VERSION,
/**
* Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.
* @extends {EngineAPI.HyperCubeDef}
* @extends {HyperCubeDef}
*/
qHyperCubeDef: {
qDimensions: [],
@@ -59,6 +54,4 @@ const properties = {
* @type {boolean=}
*/
shadowMode: false,
};
export default properties;
};