Giter Site home page Giter Site logo

connector-framework's Introduction

iTwin Connector Framework

Build Status

The @itwin/connector-framework package contains the classes which comprise the framework necessary to author iModel Connectors. In previous versions <= 2.x of the iTwin.js (iModel.js) SDK, it was included as part of the monorepo under IModelBridge. Going forward it will be a separate repository.

Documentation

Lifecycle policy

The main branch used for 2.x, based on iTwin.js 4.x, will be the default location for all fixes and enhancements. Patches will only be back-ported to 1.x if they are considered critical or related to security.

Version 1.x of the connector framework will be supported as long as iTwin.js 3.x is supported. Please refer to the iTwin.js API deprecation policy.

Running the Integration Tests

You may want to run the integration test and see the results hosted on the iModelHub. This is possible by setting a few environment variables to specify private/confidential parameters such as iTwin (project) id and iModel id, an AuthClient id, and user name and password.

An example .env file may look like ...

test_client_id=<client id here in quotes>
test_redirect_uri=<uri here in quotes>
test_scopes="imodels:modify imodels:read itwin-platform"

test_user_name=<valid email here in quotes>
test_user_password=<password corresponding>

# leave imjs_url_prefix undefined(or comment out) for prod
imjs_url_prefix = "qa-"

# if you optionally wish to authenticate with a callback URL and 
# bypass the default authentication for the Integration tests,
# you can specify test_callbackUrl
# test_callbackUrl=<url goes here>

Quick Upgrade Guide

To port TypeScript/JavaScript connectors based on previous versions <= 2.x of of the iTwin.js (iModel.js) SDK, the following changes must be made

  1. The word "itwin" replaces "imodel" and "connector" replaces "bridge".

  2. TypeScript source files should import the new classes from @itwin/connector-framework.

    e.g.

    import { BaseConnector } from "@itwin/connector-framework";
  3. package.json should include a dependency for @itwin/connector-framework

    {
      "dependencies": {
        "@itwin/connector-framework": "latest"
       }
    }
  4. The following scopes are required: imodels:modify imodels:read

Refer to write-a-connector documentation for more details

Note:

NPM version 7.X and up is recommended. If you are using a lower version, you will have to manually install Peer Dependencies.

Changelog

For any PR with changes beyond something exceedingly minor, an update changelog will be required for a pull request. This changelog can be added to CHANGELOG.md manually in a similar format to what is already there.

connector-framework's People

Contributors

admccarthy1 avatar akshay-madhukar avatar aruniverse avatar ben-polinsky avatar dependabot[bot] avatar jackson-at-bentley avatar jchick-bentley avatar swwilson-bsi avatar ziyzhu avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

connector-framework's Issues

Package does not export `JobArgs` for `ConnectorRunner`

JobArgs defined in Args.ts is not an object type and can't be constructed by importing the the npm package @itwin/connector-framework.

import { JobArgs } from '@itwin/connector-framework';

ConnectorRunner.test.ts uses the relative import import { JobArgs } from "../../Args";.

`ConnectorRunner` should not invoke `require` in `loadConnector`

// ConnectorRunner.ts

private async loadConnector(connectorFile: string) {
  // eslint-disable-next-line @typescript-eslint/no-var-requires
  const connectorClass = require(connectorFile).default;
  this._connector = await connectorClass.create();
}

A connector is a subtype of BaseConnector and should be passed to the connector runner as an instance.

Invoking require seems like a bad idea in an npm package for two reasons.

  • The import is relative to the file that called require. This means users of our API must specify their connector relative to node_modules, or use an absolute path.
  • Our API does not support connectors written as ES modules. Users are required to compile to CommonJS.

If we want the connector constructor to be asynchronous, we can pass the class object to the connector runner, or make create an instance method.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.