Skip to content

Commit

Permalink
Merge pull request #2 from BeAllAround/main
Browse files Browse the repository at this point in the history
doc-update
  • Loading branch information
rjrodger committed Jun 13, 2023
2 parents 043a937 + 5b5dfdc commit 94de0e9
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 107 deletions.
115 changes: 21 additions & 94 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,41 +71,24 @@ $ npm install @seneca/stytch-provider @seneca/env seneca-entity @seneca/provider


## Options
* `debug` : boolean <i><small>false</small></i>
* `env` : string <i><small>'test' | 'live'</small></i>


Set plugin options when loading with:
```js


seneca.use('StytchProvider', { name: value, ... })
*None.*


```

<!--END:options-->

<!--START:action-list-->


## Action Patterns

* [role:entity,base:stytch,cmd:load,name:user,zone:provider](#-roleentitybasestytchcmdloadnameuserzoneprovider-)
* [role:entity,base:stytch,cmd:list,name:user,zone:provider](#-roleentitybasestytchcmdlistnameuserzoneprovider-)
* [role:entity,base:stytch,cmd:save,name:user,zone:provider](#-roleentitybasestytchcmdsavenameuserzoneprovider-)
* [role:entity,base:stytch,cmd:remove,name:user,zone:provider](#-roleentitybasestytchcmdremovenameuserzoneprovider-)
* [sys:provider,get:info,provider:stytch](#-sysprovidergetinfoproviderstytch-)

In an action pattern, `role` is the seneca plugin `seneca-entity` - thus: `entity`. It is the `role` of data persistence.

The format for an action pattern used by `seneca-entity` equals to: `'<zone>/<base>/<name>'`
* ["role":"entity","base":"stytch","cmd":"list","name":"session","zone":"provider"](#-roleentitybasestytchcmdlistnamesessionzoneprovider-)
* ["role":"entity","base":"stytch","cmd":"list","name":"user","zone":"provider"](#-roleentitybasestytchcmdlistnameuserzoneprovider-)
* ["role":"entity","base":"stytch","cmd":"load","name":"user","zone":"provider"](#-roleentitybasestytchcmdloadnameuserzoneprovider-)
* ["role":"entity","base":"stytch","cmd":"remove","name":"user","zone":"provider"](#-roleentitybasestytchcmdremovenameuserzoneprovider-)
* ["role":"entity","base":"stytch","cmd":"save","name":"user","zone":"provider"](#-roleentitybasestytchcmdsavenameuserzoneprovider-)
* ["sys":"provider","get":"info","provider":"stytch"](#-sysprovidergetinfoproviderstytch-)

This is, more specifically: [the entity namespace](https://senecajs.org/docs/tutorials/understanding-data-entities.html#zone-base-and-name-the-entity-namespace) concept.

`cmd` is a seneca property provided by `seneca-entity` for a given action pattern: `load|list|save|remove`.

more info on: https://github.com/senecajs/seneca-entity

<!--END:action-list-->

Expand All @@ -114,104 +97,48 @@ more info on: https://github.com/senecajs/seneca-entity

## Action Descriptions

### &laquo; `role:entity,base:stytch,cmd:load,name:user,zone:provider` &raquo;
### &laquo; `"role":"entity","base":"stytch","cmd":"list","name":"session","zone":"provider"` &raquo;

No description provided.

Load Stytch user data into an entity.
```js
let user = await seneca.entity('provider/stytch/user')
.load$('<stytch-user-id>')

Console.log('USER', user)
```
<p name="entity"> Replies With Type: <i>&lt;Entity&gt;</i> where <code>Entity</code> is a set of data fields determined by the sdk and is turned into a seneca data entity. </p>

----------
### &laquo; `role:entity,base:stytch,cmd:list,name:user,zone:provider` &raquo;
### &laquo; `"role":"entity","base":"stytch","cmd":"list","name":"user","zone":"provider"` &raquo;

List Stytch users into an entity.
```js
// list
let user_list = await seneca.entity('provider/stytch/user').list$()
List Stytch data into an entity

Console.log('USER LIST', user_list)
```
The Stytch list users body parameters are also, by default, inherited by this action pattern. So:

```js
await seneca.entity('provider/stytch/user').list$({ limit: Number }) // specify your Stytch parameters
```
Replies With Type: ```<Array<Entity>>``` where ```Array<Entity>``` is a list of SDK data entities

----------
### &laquo; `role:entity,base:stytch,cmd:save,name:user,zone:provider` &raquo;
### &laquo; `"role":"entity","base":"stytch","cmd":"load","name":"user","zone":"provider"` &raquo;

Save/Update Stytch user data from an entity.
Load Stytch data into an entity

```js
// Save and add data
let user = await seneca.entity('provider/stytch/user')
let saved = await user.save$({ user: { email: 'alice@example.com' } })
Console.log('SAVED USER', saved)

// Update and add data
let user_loaded = await user.load$('<stytch-user-id>')
let updated = await user_loaded.data$({ user: { name: { first_name: 'Alice' } } }).save$()
Console.log('UPDATED USER', updated)
```

<p>Check out: <a href="#entity">Entity</a><br> </p>

----------
### &laquo; `role:entity,base:stytch,cmd:remove,name:user,zone:provider` &raquo;
### &laquo; `"role":"entity","base":"stytch","cmd":"remove","name":"user","zone":"provider"` &raquo;

Remove Stytch user from an entity.
Remove Stytch data from an entity

```js
let removed = await seneca.entity('provider/stytch/user').remove$('<stytch-user-id>')
```

<p>Check out: <a href="#entity">Entity</a><br> </p>


----------
### &laquo; `sys:provider,get:info,provider:stytch` &raquo;
### &laquo; `"role":"entity","base":"stytch","cmd":"save","name":"user","zone":"provider"` &raquo;

Get information about the provider.
Update/Save Stytch data into an entity

```js
let pluginInfo = await seneca.post('sys:provider,provider:stytch,get:info')
```
Replies With
```
{
ok: true,
name: '<provider-name>',
version: '<provider-version>',
sdk: {
name: '<sdk-name>',
version: '<sdk-version>',
}
}
```


----------
### &laquo; `"sys":"provider","get":"info","provider":"stytch"` &raquo;

## Exporting and Extending
You can export the SDK instance and use it in your own seneca message.
Get information about the Stytch SDK.

for example
```js
let sdk = seneca.export('StytchProvider/sdk')()

seneca.message('auth:stytch,sys:user', async function (msg, reply) {
let token = msg.token

let out = await sdk.magicLinks.authenticate(token)

return { ok: true, out }
})
----------

```

<!--END:action-desc-->
23 changes: 19 additions & 4 deletions dist/StytchProvider-doc.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
declare const docs: {
get_info: {
desc: string;
declare const _default: {
messages: {
get_info: {
desc: string;
};
load_user: {
desc: string;
};
save_user: {
desc: string;
};
list_user: {
desc: string;
};
remove_user: {
desc: string;
};
};
sections: {};
};
export default docs;
export default _default;
25 changes: 22 additions & 3 deletions dist/StytchProvider-doc.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/StytchProvider-doc.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"test-watch": "jest --coverage --watchAll",
"watch": "tsc -w -d",
"build": "tsc -d",
"doc": "echo seneca-doc -p @seneca/provider FIX-broken",
"doc": "seneca-doc -p @seneca/provider FIX-broken",
"clean": "rm -rf node_modules dist yarn.lock package-lock.json",
"reset": "npm run clean && npm i && npm test",
"repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;",
Expand All @@ -50,7 +50,7 @@
"seneca-promisify": ">=3"
},
"devDependencies": {
"@seneca/doc": "^4.1.0",
"@seneca/doc": "^4.2.4",
"@types/jest": "^29.0.3",
"@types/node": "^18.7.18",
"esbuild": "^0.15.8",
Expand Down
27 changes: 24 additions & 3 deletions src/StytchProvider-doc.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,37 @@
/* Copyright © 2022 Seneca Project Contributors, MIT License. */


const docs = {
const messages = {

get_info: {
desc: 'Get information about the Stytch SDK.',
},
load_user: {
desc: 'Load Stytch data into an entity',
},
save_user: {
desc: 'Update/Save Stytch data into an entity',
},
list_user: {
desc: 'List Stytch data into an entity',
},
remove_user: {
desc: 'Remove Stytch data from an entity',
}


}

export default docs
const sections = {}

export default {
messages,
sections
}

if ('undefined' !== typeof (module)) {
module.exports = docs
module.exports = {
messages,
sections
}
}

0 comments on commit 94de0e9

Please sign in to comment.