npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

pcf-reloader-transformer

v1.3.0

Published

Automatic refreshing of PCF components when embedded on a model-driven App in Dynamics365

Downloads

136

Readme

PCF Reloader Transformation

npm build Coverage Status Libraries.io dependency status for latest release npm NPM

Typescript transformation that enabled automatic reloading of PCF Components when embedded on Model-Driven forms in Dynamics 365.

Table of Contents

Motivation

The PowerApps Component Framework includes a test-harness which automatically reloads the component whenever it changes on disk.

However, the test harness has a couple of downsides

  1. It does not have access to the environment
  2. It does not show you the actual interaction with the surrounding system

In order to test fully, it is neccessary to include the actual component on a form.

However, having to fully reload the form on each change quickly gets annoying. Thus the transformer was born.

Installation

$ npm install -D pcf-reloader-transformer
$ npx ts-patch i

Usage

PCF Reloader in action

The generated code can be found in ./samples/patched.ts and the corresponding compiled javascript can be found in ./tests/samples

Running the transformer

The easiest way of running the transformer is through ts-patch.

TS Patch is automatically installed and enabled when installing this package.

To run the transformer, add it to plugins in your tsconfig.json

{
  "compilerOptions": {
    "plugins": [
      {
        "transform": "pcf-reloader-transformer",
        "type": "config",
      }
    ]
  }
}

For a list of available settings see Settings

Integrating

The transformation injects code in any class that implements ComponentFramework.StandardControl<IInputs, IOutputs>.

The code will listen for messages passed to the PCF Test Harness, unload the PCF, reload the bundle.js, and re-initialize the PCF with the current context.

The code expects the PCF test harness to be running in watch-mode. Start in watch mode by calling npm start watch.

Fiddler

The easiest way to get the updated bundle on the form is to inject it using Fiddler.

After publishing the component for the first time, an AutoResponder rule on the following format:

| If request matches... | then respond with... | | ------------------------------------------------------------------------- | -------------------------------------------------------------- | | REGEX:(?insx).+/WebResources/cc_(?'namespace'[^.]+).([^/]+)/bundle.js | sourcedir${namespace}\out\controls${namespace}\bundle.js |

For details on setting up Fiddler for PCF debugging, see Microsoft Docs.

Settings

The transformer supports the following configuration settings.

The settings are specified as part of the plugin specification in tsconfig.json

The following settings are available:

Debug

Setting: debug Type: boolean Default: false Description: If true, inject calls to the debugger to allow stepping into the dynamically loaded code.

Print Generated

Setting: printGenerated Type: boolean Default: false Description: If true, the generated typescript code will be output to a file alongside the detected file. If the file is named index.ts, the generated file will be index.generated.ts

Show Force Reload

Setting: showForceReload Type: boolean Default: true Description: If true show a reload button in the corner of the component

Use Browser Sync

Setting: useBrowserSync Type: boolean Default: true when PCF Start version >= 1.11.3, false otherwise Description: If true force use of the BrowserSync.io / Socket.io based integration, If false, force use of the WebSocket, If not specified, detect the protocol based on the PCF Start version

Verbose

Setting: verbose Type: boolean Default: false Description: If true, status messages will be printed during the transformation

WS Address

Setting: wsAddress Type: string Default: For websocket: ws://127.0.0.1:8181/ws For BrowserSync: http://localhost:8181 Description: The address to use when listening for update messages.