The official JavaScript SDK for TrueVault. For more information about TrueVault, check out our website and API documentation. To see how the SDK is used in a real application, check out the TrueVault React Sample App. You can also browse the documentation for this SDK.
Note: This SDK is supported on Node JS, AWS Lambda, React Native, and modern browsers (tested in Chrome).
Simply copy this line into your HTML:
<script src="https://unpkg.com/[email protected]/build/index-web.js"></script>
First download the package using yarn or npm.
yarn add truevault
// OR
npm install truevault
Then import the JS SDK into your project:
import TrueVaultClient from 'truevault';
const TrueVaultClient = require('truevault');
Initialize a TrueVaultClient using an access token or API key:
const tvClient = new TrueVaultClient({apiKey: 'your api key'});
You can also create a new TrueVaultClient by logging in:
const tvClient = await TrueVaultClient.login(accountId, username, password, mfaCode);
See the documentation for more info.
The methods in this SDK make asynchronous web requests to TrueVault and return Promises. We recommend using async/await in favor of Promises wherever possible for clarity and conciseness.
async readTrueVaultDocument() {
try {
const response = await tvClient.readDocument(vaultId, documentId);
console.log(response);
} catch (err) {
console.error(err);
}
}
readTrueVaultDocument() {
tvClient.readDocument(vaultId, documentId).then(response => {
console.log(response);
}).catch(err => {
console.error(err);
});
}
Test out the SDK with this simple JSFiddle example.
Make changes to index.js
and then bundle them into build/index.js
with webpack:
yarn install
yarn build
The integration tests are built with Mocha. To run them,
first copy test.env.template
to test.env
and populate test.env
with values from your account. To run tests, do
yarn test
. You can run a subset of tests via yarn test -g [filter regex]
To run in a browser, first rebuild the test file with webpack: yarn build-browser-tests
and then load test/index.html in a browser.
Running in AWS lambda is more complicated:
- Build a version of the tests for inclusion in lambda:
yarn build-lambda-tests
- Create a new Lambda function. Choose Node 8.10 for the runtime,
run-lambda-tests.runTests
for the handler, 5 minutes for the timeout, and supply the generated lambda.zip. - Perform a test invocation to run the tests. They take a few minutes to run, and no output appears until they complete.
This project uses documentationjs. To generate the docs:
rm -rf docs && yarn documentation -- build index.js -f html -o docs
The documentation is available via GitHub Pages.
This SDK is released under the BSD 3-Clause License.
- Update version in
package.json
, update the version in README.md. - Update the changelog in README.md
- Rebuild distribution files; see above
- Rebuild documentation; see above
- Commit
npm publish
- Tag
- CHANGE:
getDocument
updated to support v2 of the Document API
- FEATURE: Add support for managing scoped access tokens
- BUGFIX: Correct issue that prevented setting schema id or owner id when creating documents
- FEATURE: Add support for configuring access token expiration
- FEATURE: Get blob methods return the blob's content type and filename, in addition to the blob itself
- FEATURE: Minify production builds to reduce file size
- FEATURE: Add JSDoc to blob methods
- BUGFIX: Fix error in
readUserSchema
method - CHANGE:
listUsers
now defaults tofull=false
, rather thanfull=true
- CHANGE:
TrueVaultClient
constructor no longer accepts a string parameter; authentication information must be provided as an object - CHANGE:
removeUsersFromGroup
renamed toremoveUsersFromGroupReturnUserIds
- CHANGE:
deleteGroup
returns the deleted group, rather than the top-level TrueVault API response - CHANGE:
deleteBlob
,updateBlobOwner
,updateBlob
,createBlob
,createBlobWithProgress
return the blob's info, rather than the top-level TrueVault API response - CHANGE:
getBlob
andgetBlobWithProgress
return an object with a blob property, rather than just the blob - CHANGE:
startUserMfaEnrollment
now returns the mfa response object rather than the top-level TrueVault API response - CHANGE:
createVault
now returns the vault object rather than the top-level TrueVault API response - CHANGE:
createDocument
,updateDocument
andupdateDocumentOwner
now return the document rather than the top-level TrueVault API response - CHANGE:
getFullGroup
renamed toreadFull
group, and it now returns the group rather than the top-level TrueVault API response - CHANGE:
createSchema
,createUserSchema
,readUserSchema
,updateUserSchema
anddeleteUserSchema
now return the schema rather than the top-level TrueVault API response - CHANGE:
searchUsers
,searchDocuments
, andreadUsers
now decode attributes - CHANGE:
listPasswordResetFlows
returns an array of password reset flows rather than the top-level TrueVault API response - CHANGE:
sendPasswordResetEmail
returns undefined rather than the top-level TrueVault API response - CHANGE:
deleteDocument
returns an object with the deleted document's info, rather than the top-level TrueVault API response - FEATURE: Add support AWS Lambda, NodeJS, and React Native
- FEATURE: Allow specifying status when creating user
- FEATURE: Access token and auth header exposed as properties
- FEATURE: Error objects from failed requests include transaction_id
- FEATURE:
readCurrentUser
now allows settingfull=false
- FEATURE:
listDocuments
now supports specifyingfull
parameter - FEATURE: Add
updateCurrentUser
,listUsersWithStatus
,removeUsersFromGroup
,listVaults
,readVault
,updateVault
,deleteVault
,updateSchema
,readSchema
,listSchema
,deleteSchema
,listDocumentsInSchema
methods