JSPM

@apolitical/sdk

13.0.0-beta.3
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 385
    • Score
      100M100P100Q101734F
    • License MIT

    Browser library to interact with Apolitical's APIs

    Package Exports

    • @apolitical/sdk
    • @apolitical/sdk/build/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@apolitical/sdk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    Apolitical SDK

    Browser library to interact with Apolitical's APIs

    Requirements

    Requires the following to run:

    Installation

    Install with yarn:

    yarn add @apolitical/sdk

    Available Scripts

    In the project directory, you can run:

    yarn test

    Runs the test (and the interactive mode can be enabled with --watchAll).

    yarn build

    Builds the library for production to the build folder. It correctly bundles the code on production mode and optimizes the build for the best performance.

    Usage

    The recommended way to use @apolitical/sdk is to load the SDK first:

    const loadSdk = require('@apolitical/sdk');
    
    const sdk = loadSdk({
      origin: window.origin || window.location.origin,
      errorsContext: {
        apiKey: decodeBase64(process.env.REACT_APP_GCP_ERRORS_API_KEY),
        serviceName: 'some-service',
      },
    });

    And then, you can use all the functionality provided by the SDK. For example:

    sdk.people.users.read('me').then((result) => {
      console.info('User:', result);
    });

    Folders & files structure

    Here's the library's folders structure:

    /lib
      /apis
        /api-1
          /resources
          /handlers
      /contentful
        /content-type-1
      /helpers
      /solvers

    APIs folder

    Under /lib/apis/ we implement functionality to directly interact with the Apolitical APIs.

    Each API will have its own folder, for example, /lib/apis/people/ for People API.

    Inside the API folder itself, there are two other folders

    • /lib/apis/people/resources: The resources folder holds each RESTful resource on the API and implements CRUD operations
    • /lib/apis/people/handlers: The handlers folder holds functions that require calling the same API more than one time (or in some particular way that cannot be done by using the CRUD operations)

    Contentful folder

    Under /lib/contentful/ we implement functionality to interact with Contentful Delivery (and Preview) API.

    Each content type will have it's own folder, for example, /lib/contentful/questions/ for the Q&A Question content type.

    Internally, the functionality will be implemented with the help of the @apolitical/content module.

    Helpers folder

    Under /lib/helpers/ we implement reusable functionality that helps implementing internal logic within the SDK.

    Solvers folder

    Under /lib/solvers/ we implement high level functionality based on the functionality provided by internal APIs and Contentful.

    For example, the buildQuestion.js is a function that reads a question from Contentful, and then, read the author data from the People API.