markscript-uservices

The runtime library to deploy remote proxies of uServices from and to Marklogic

Usage no npm install needed!

<script type="module">
  import markscriptUservices from 'https://cdn.skypack.dev/markscript-uservices';
</script>

README

MarkScript uServices runtime Library

Overview

Deploy remote proxies of uServices from Marklogic.

Usage

Install:

npm install markscript-uservices

Basic Usage:

To use this as part of a MarkScript build, add this property to the root of your build options:

import {UServicesPlugin} from 'markscript-uservices'

let buildOptions = {
  plugins: {
    uservices: [UServicesPlugin, {}]
  }
  // etc
}

For a uService on Marklogic:

import * as mu from 'markscript-uservices'
import {Observable} from 'uservices'
import {Message} from '../common/models/message'
import {ChatService} from '../common/services/chatService'

@mu.mlService()
export class ChatService extends extends mu.AbstractMLService {
  @mu.mlMethod({
    method: 'put'
  })
  sendMessage(message: Message): Promise<boolean> {
    xdmp.documentInsert('/chatMessages/' + message.timestamp, message)
    resolve(true)
  }

  @mu.mlEvent({
    states: ['create', 'modify'],
    scope: '/chatMessages/'
  })
  messageBroadcast(): Observable<Message> {
    return this.observableFactory().map(function(doc: Doc<Message>{
      return doc.value
    })
  }
}

Then to proxy that to another tier:

import {createRemoteProxy} from 'markscript-uservices'
import * as RxRouter from 'koa-rx-router'

let router = new RxRouter()
let chatService = createRemoteProxy(chatSpec, client, router)