Skip to content

Commit

Permalink
Init commit (#1)
Browse files Browse the repository at this point in the history
* init_commit

* Updated target to ES2022 and updated readme
  • Loading branch information
syedhasandigi authored Oct 16, 2024
1 parent b068bf6 commit 32e3d58
Show file tree
Hide file tree
Showing 30 changed files with 7,400 additions and 1 deletion.
6 changes: 6 additions & 0 deletions .depcheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ignores: [
'@swc-node/register',
'prettier-plugin-organize-imports',
'rimraf',
'typescript'
]
4 changes: 4 additions & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Github CODEOWNERS file

# Global code-owners for this repository
* @digicatapult/software-engineering
198 changes: 198 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
name: Release

on:
push:
branches: ['main']
jobs:
preconditions:
runs-on: ubuntu-latest
outputs:
repo_name: ${{ steps.repo_ids.outputs.REPO_NAME }}
org_name: ${{ steps.repo_ids.outputs.ORG_NAME }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check Github token
run: |
if [ -z "${{ secrets.GITHUB_TOKEN }}"]; then
echo "Must provide a GITHUB_TOKEN secret in order to run release workflow"
exit 1
fi
- name: Check npmjs token
run: |
if [ -z "${{ secrets.NPMJS_TOKEN }}"]; then
echo "Must provide a NPMJS_TOKEN secret in order to run release workflow"
exit 1
fi
- name: Get repository identifiers
id: repo_ids
run: |
REPO_NAME=$(echo "${{ github.event.repository.name }}" | tr '[:upper:]' '[:lower:]')
ORG_NAME=$(echo "${{ github.event.repository.owner.name }}" | tr '[:upper:]' '[:lower:]')
echo "REPO_NAME=$REPO_NAME" >> $GITHUB_OUTPUT
echo "ORG_NAME=$ORG_NAME" >> $GITHUB_OUTPUT
static-checks:
name: Run Static Analysis Checks
strategy:
fail-fast: false
matrix:
command: [lint, depcheck, check]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Cache Node.js modules
uses: actions/cache@v4
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Checks
run: npm run ${{ matrix.command }}
tests:
name: Run tests
strategy:
fail-fast: false
matrix:
command: ['test']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Cache Node.js modules
uses: actions/cache@v4
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install wasm tools
run: dotnet workload install wasm-tools
- name: Install Packages
run: npm ci
- name: Build
run: npm run build
- name: Run tests
run: npm run ${{ matrix.command }}
check-version:
name: 'Check version'
runs-on: ubuntu-latest
outputs:
is_new_version: ${{ steps.get_version.outputs.IS_NEW_VERSION }}
version: ${{ steps.get_version.outputs.VERSION }}
build_date: ${{ steps.get_version.outputs.BUILD_DATE }}
is_prerelease: ${{ steps.get_version.outputs.IS_PRERELEASE }}

steps:
- uses: actions/checkout@v4
- name: Check version
id: get_version
uses: digicatapult/check-version@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
publish-gh:
name: 'Publish Github package'
needs:
- preconditions
- static-checks
- tests
- check-version
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '16.x'
registry-url: 'https://npm.pkg.github.com'
scope: '@digicatapult'
- name: Install packages
run: npm ci
- name: Publish to github packages
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

publish-npm:
name: 'Publish package to NPMJS'
needs:
- preconditions
- static-checks
- tests
- check-version
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18.x'
registry-url: 'https://registry.npmjs.org'
scope: '@digicatapult'
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Install wasm tools
run: dotnet workload install wasm-tools
- name: Install packages
run: npm ci
- name: Build
run: npm run build
- name: Publish to npmjs packages
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }}

publish:
name: 'Publish release'
needs: [preconditions, static-checks, tests, check-version]
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}

steps:
- uses: actions/checkout@v4

- name: Build release version
uses: softprops/action-gh-release@v2
with:
token: '${{ secrets.GITHUB_TOKEN }}'
tag_name: ${{ needs.check-version.outputs.version }}
prerelease: false
name: ${{ needs.check-version.outputs.version }}
generate_release_notes: true
- name: Delete release latest
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const { owner, repo } = context.repo
try {
await github.rest.git.deleteRef({ owner, repo, ref: 'tags/latest' })
}
catch (err) {
if (err.status !== 422) throw err
}
- name: Build release latest
uses: softprops/action-gh-release@v2
with:
token: '${{ secrets.GITHUB_TOKEN }}'
tag_name: latest
prerelease: false
name: Latest ${{ needs.check-version.outputs.version }}
generate_release_notes: true
92 changes: 92 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Lint and Test

on:
push:
branches-ignore: ['main']

jobs:
repo_ids:
runs-on: ubuntu-latest
outputs:
repo_name: ${{ steps.repo_ids.outputs.REPO_NAME }}
org_name: ${{ steps.repo_ids.outputs.ORG_NAME }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get repository identifiers
id: repo_ids
run: |
REPO_NAME=$(echo "${{ github.event.repository.name }}" | tr '[:upper:]' '[:lower:]')
ORG_NAME=$(echo "${{ github.event.repository.owner.name }}" | tr '[:upper:]' '[:lower:]')
echo "REPO_NAME=$REPO_NAME" >> $GITHUB_OUTPUT
echo "ORG_NAME=$ORG_NAME" >> $GITHUB_OUTPUT
static-checks:
name: Run Static Analysis Checks
strategy:
fail-fast: false
matrix:
command: [lint, depcheck, check]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Cache Node.js modules
uses: actions/cache@v4
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Lint
run: npm run ${{ matrix.command }}

tests:
name: Run tests
strategy:
fail-fast: false
matrix:
command: ['test']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Cache Node.js modules
uses: actions/cache@v4
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Install wasm tools
run: dotnet workload install wasm-tools
- name: Install Packages
run: npm ci
- name: Build
run: npm run build
- name: Run tests
run: npm run ${{ matrix.command }}

check-version:
name: 'Check version'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check version
id: get_version
uses: digicatapult/check-version@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
bin
obj
build/
12 changes: 12 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.github/
node_modules/
dtdl/
src/
test/
types/
.depcheck
.prettierrc
.swcrc
eslint.config.mjs
package-lock.json
tsconfig.json
9 changes: 9 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"singleQuote": true,
"semi": false,
"trailingComma": "es5",
"printWidth": 120,
"plugins": [
"prettier-plugin-organize-imports"
]
}
32 changes: 32 additions & 0 deletions .swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"$schema": "https://swc.rs/schema.json",
"jsc": {
"parser": {
"syntax": "typescript",
"decorators": true,
"topLevelAwait": true,
"importMeta": true
},
"transform": {
"legacyDecorator": true,
"decoratorMetadata": true,
"useDefineForClassFields": true
},
"minify": {
"compress": {
"unused": true
},
"mangle": true
},
"target": "ES2022",
"experimental": {
"keepImportAttributes": true
}
},
"exclude": [
"__tests__",
"interop"
],
"sourceMaps": true,
"isModule": true
}
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,25 @@
# dtdl-parser
# dtdl-parser library

A library for parsing and validating (DTDL)[https://learn.microsoft.com/en-us/azure/digital-twins/concepts-models] ontologies.

## Installation / Adding to the Package.json

`@digicatapult/dtdl-parser` are available as an [npm package](https://www.npmjs.com/package/@digicatapult/dtdl-parser). In order to use your local version in the project please use `npm link` more on it -> [here](https://docs.npmjs.com/cli/v10/commands/npm-link) and below in this document

```sh
// with npm
npm install @digicatapult/ui-component-library
```

## Basic Usage

Install dependencies

```javascript
import { parseDirectories, validateDirectories, getInterop } from "dtdl-parser"


const parser = await getInterop()
const parsedDtdl = parseDirectories('../dtdl/simple', parser)
```

Loading

0 comments on commit 32e3d58

Please sign in to comment.