store.js 613 B

1234567891011121314151617181920212223242526
  1. /**
  2. * Simple file-based datastore
  3. *
  4. * @flow
  5. */
  6. import path from 'path';
  7. import fs from 'mz/fs';
  8. import mkdirp from 'mkdirp-promise';
  9. export class Store {
  10. dir = path.join(__dirname, 'store');
  11. async load(uri: string): Promise<Object> {
  12. const filename = path.join(this.dir, uri);
  13. const data = await fs.readFile(filename, 'utf8');
  14. const config = JSON.parse(data);
  15. return config;
  16. }
  17. async save(uri: string, config: Object): Promise<void> {
  18. await mkdirp(this.dir);
  19. const filename = path.join(this.dir, uri);
  20. await fs.writeFile(filename, JSON.stringify(config), 'utf8');
  21. }
  22. }