@openstax/ts-utils 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/cjs/{fetch.d.ts → fetch/index.d.ts} +1 -1
  2. package/dist/{esm/middleware.d.ts → cjs/middleware/index.d.ts} +2 -2
  3. package/dist/cjs/misc/hashValue.d.ts +2 -3
  4. package/dist/cjs/{pagination.d.ts → pagination/index.d.ts} +1 -1
  5. package/dist/cjs/{pagination.js → pagination/index.js} +3 -3
  6. package/dist/cjs/routing/index.d.ts +0 -3
  7. package/dist/cjs/routing/index.js +7 -9
  8. package/dist/cjs/services/authProvider/decryption.js +5 -5
  9. package/dist/cjs/services/authProvider/index.d.ts +0 -2
  10. package/dist/cjs/services/authProvider/subrequest.js +6 -6
  11. package/dist/cjs/services/documentStore/dynamoEncoding.d.ts +10 -0
  12. package/dist/cjs/services/documentStore/dynamoEncoding.js +52 -0
  13. package/dist/cjs/services/documentStore/index.d.ts +14 -0
  14. package/dist/cjs/services/documentStore/unversioned/dynamodb.d.ts +13 -0
  15. package/dist/cjs/services/documentStore/unversioned/dynamodb.js +51 -0
  16. package/dist/cjs/services/documentStore/unversioned/file-system.d.ts +15 -0
  17. package/dist/cjs/services/documentStore/unversioned/file-system.js +81 -0
  18. package/dist/cjs/services/documentStore/unversioned/index.d.ts +2 -0
  19. package/dist/cjs/services/documentStore/unversioned/index.js +2 -0
  20. package/dist/{esm/services/versionedDocumentStore → cjs/services/documentStore/versioned}/dynamodb.d.ts +6 -11
  21. package/dist/cjs/services/{versionedDocumentStore → documentStore/versioned}/dynamodb.js +27 -70
  22. package/dist/cjs/services/{versionedDocumentStore → documentStore/versioned}/file-system.d.ts +6 -11
  23. package/dist/cjs/services/{versionedDocumentStore → documentStore/versioned}/file-system.js +16 -16
  24. package/dist/cjs/services/{versionedDocumentStore → documentStore/versioned}/index.d.ts +2 -8
  25. package/dist/cjs/services/documentStore/versioned/index.js +2 -0
  26. package/dist/cjs/services/exercisesGateway/index.d.ts +3 -6
  27. package/dist/cjs/services/exercisesGateway/index.js +7 -7
  28. package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -1
  29. package/dist/cjs/types.d.ts +4 -0
  30. package/dist/esm/{fetch.d.ts → fetch/index.d.ts} +1 -1
  31. package/dist/{cjs/middleware.d.ts → esm/middleware/index.d.ts} +2 -2
  32. package/dist/esm/misc/hashValue.d.ts +2 -3
  33. package/dist/esm/{pagination.d.ts → pagination/index.d.ts} +1 -1
  34. package/dist/esm/{pagination.js → pagination/index.js} +3 -3
  35. package/dist/esm/routing/index.d.ts +0 -3
  36. package/dist/esm/routing/index.js +7 -9
  37. package/dist/esm/services/authProvider/decryption.js +5 -5
  38. package/dist/esm/services/authProvider/index.d.ts +0 -2
  39. package/dist/esm/services/authProvider/subrequest.js +6 -6
  40. package/dist/esm/services/documentStore/dynamoEncoding.d.ts +10 -0
  41. package/dist/esm/services/documentStore/dynamoEncoding.js +45 -0
  42. package/dist/esm/services/documentStore/index.d.ts +14 -0
  43. package/dist/esm/services/documentStore/unversioned/dynamodb.d.ts +13 -0
  44. package/dist/esm/services/documentStore/unversioned/dynamodb.js +47 -0
  45. package/dist/esm/services/documentStore/unversioned/file-system.d.ts +15 -0
  46. package/dist/esm/services/documentStore/unversioned/file-system.js +51 -0
  47. package/dist/esm/services/documentStore/unversioned/index.d.ts +2 -0
  48. package/dist/esm/services/documentStore/unversioned/index.js +1 -0
  49. package/dist/{cjs/services/versionedDocumentStore → esm/services/documentStore/versioned}/dynamodb.d.ts +6 -11
  50. package/dist/esm/services/{versionedDocumentStore → documentStore/versioned}/dynamodb.js +17 -60
  51. package/dist/esm/services/{versionedDocumentStore → documentStore/versioned}/file-system.d.ts +6 -11
  52. package/dist/esm/services/{versionedDocumentStore → documentStore/versioned}/file-system.js +16 -16
  53. package/dist/esm/services/{versionedDocumentStore → documentStore/versioned}/index.d.ts +2 -8
  54. package/dist/esm/services/documentStore/versioned/index.js +1 -0
  55. package/dist/esm/services/exercisesGateway/index.d.ts +3 -6
  56. package/dist/esm/services/exercisesGateway/index.js +7 -7
  57. package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -1
  58. package/dist/esm/types.d.ts +4 -0
  59. package/package.json +118 -13
  60. package/dist/cjs/profile.d.ts +0 -61
  61. package/dist/cjs/profile.js +0 -199
  62. package/dist/esm/profile.d.ts +0 -61
  63. package/dist/esm/profile.js +0 -191
  64. /package/dist/cjs/{assertions.d.ts → assertions/index.d.ts} +0 -0
  65. /package/dist/cjs/{assertions.js → assertions/index.js} +0 -0
  66. /package/dist/cjs/{errors.d.ts → errors/index.d.ts} +0 -0
  67. /package/dist/cjs/{errors.js → errors/index.js} +0 -0
  68. /package/dist/cjs/{fetch.js → fetch/index.js} +0 -0
  69. /package/dist/cjs/{guards.d.ts → guards/index.d.ts} +0 -0
  70. /package/dist/cjs/{guards.js → guards/index.js} +0 -0
  71. /package/dist/cjs/{middleware.js → middleware/index.js} +0 -0
  72. /package/dist/cjs/services/{versionedDocumentStore → documentStore}/index.js +0 -0
  73. /package/dist/esm/{assertions.d.ts → assertions/index.d.ts} +0 -0
  74. /package/dist/esm/{assertions.js → assertions/index.js} +0 -0
  75. /package/dist/esm/{errors.d.ts → errors/index.d.ts} +0 -0
  76. /package/dist/esm/{errors.js → errors/index.js} +0 -0
  77. /package/dist/esm/{fetch.js → fetch/index.js} +0 -0
  78. /package/dist/esm/{guards.d.ts → guards/index.d.ts} +0 -0
  79. /package/dist/esm/{guards.js → guards/index.js} +0 -0
  80. /package/dist/esm/{middleware.js → middleware/index.js} +0 -0
  81. /package/dist/esm/services/{versionedDocumentStore → documentStore}/index.js +0 -0
@@ -1,10 +1,10 @@
1
1
  import * as fsModule from 'fs';
2
2
  import path from 'path';
3
- import { hashValue } from '../..';
4
- import { resolveConfigValue } from '../../config';
5
- import { ifDefined } from '../../guards';
3
+ import { hashValue } from '../../..';
4
+ import { resolveConfigValue } from '../../../config';
5
+ import { ifDefined } from '../../../guards';
6
6
  const PAGE_LIMIT = 5;
7
- export const fileSystemVersionedDocumentStore = (initializer) => () => (configProvider) => ({ profile }, hashKey, getAuthor) => {
7
+ export const fileSystemVersionedDocumentStore = (initializer) => () => (configProvider) => (_, hashKey, getAuthor) => {
8
8
  const tableName = resolveConfigValue(configProvider[initializer.configSpace || 'fileSystem'].tableName);
9
9
  const filePath = tableName.then((table) => path.join(initializer.dataDir, table));
10
10
  const { readFile, writeFile } = ifDefined(initializer.fs, fsModule);
@@ -30,14 +30,14 @@ export const fileSystemVersionedDocumentStore = (initializer) => () => (configPr
30
30
  }));
31
31
  let previousSave;
32
32
  return {
33
- loadAllDocumentsTheBadWay: profile.track('versionedDocumentStore.loadAllDocumentsTheBadWay', () => async () => {
33
+ loadAllDocumentsTheBadWay: async () => {
34
34
  await load;
35
35
  return Object.entries(data || []).map(([, versions]) => {
36
36
  const versionsList = Object.values(versions);
37
37
  return versionsList[versionsList.length - 1];
38
38
  });
39
- }),
40
- getVersions: profile.track('versionedDocumentStore.getVersions', () => async (id, startVersion) => {
39
+ },
40
+ getVersions: async (id, startVersion) => {
41
41
  await load;
42
42
  const versions = data === null || data === void 0 ? void 0 : data[hashValue(id)];
43
43
  const versionsList = versions ? Object.values(versions).reverse() : undefined;
@@ -51,8 +51,8 @@ export const fileSystemVersionedDocumentStore = (initializer) => () => (configPr
51
51
  items,
52
52
  nextPageToken: hasMore ? items[items.length - 1].timestamp : undefined
53
53
  };
54
- }),
55
- getItem: profile.track('versionedDocumentStore.getItem', () => async (id, timestamp) => {
54
+ },
55
+ getItem: async (id, timestamp) => {
56
56
  await load;
57
57
  const versions = data === null || data === void 0 ? void 0 : data[hashValue(id)];
58
58
  if (timestamp) {
@@ -60,14 +60,14 @@ export const fileSystemVersionedDocumentStore = (initializer) => () => (configPr
60
60
  }
61
61
  const versionsList = versions ? Object.values(versions) : [];
62
62
  return versionsList[versionsList.length - 1];
63
- }),
64
- prepareItem: profile.track('versionedDocumentStore.prepareItem', () => async (item, ...authorArgs) => {
63
+ },
64
+ prepareItem: async (item, ...authorArgs) => {
65
65
  // this getAuthor type is terrible
66
66
  const author = getAuthor ? await getAuthor(...authorArgs) : authorArgs[0];
67
67
  const timestamp = new Date().getTime();
68
68
  return {
69
69
  document: { ...item, timestamp, author },
70
- save: profile.track('versionedDocumentStore.prepareItem.save', () => async (changes) => {
70
+ save: async (changes) => {
71
71
  await load;
72
72
  await previousSave;
73
73
  const save = previousSave = new Promise(resolve => (async () => {
@@ -80,10 +80,10 @@ export const fileSystemVersionedDocumentStore = (initializer) => () => (configPr
80
80
  writeFile(path, JSON.stringify(data, null, 2), () => resolve(document));
81
81
  })());
82
82
  return await save;
83
- })
83
+ }
84
84
  };
85
- }),
86
- putItem: profile.track('versionedDocumentStore.putItem', () => async (item, ...authorArgs) => {
85
+ },
86
+ putItem: async (item, ...authorArgs) => {
87
87
  await load;
88
88
  await previousSave;
89
89
  const save = previousSave = new Promise(resolve => (async () => {
@@ -98,6 +98,6 @@ export const fileSystemVersionedDocumentStore = (initializer) => () => (configPr
98
98
  writeFile(path, JSON.stringify(data, null, 2), () => resolve(document));
99
99
  })());
100
100
  return await save;
101
- }),
101
+ },
102
102
  };
103
103
  };
@@ -1,9 +1,5 @@
1
+ import { TDocument } from '..';
1
2
  import { dynamoVersionedDocumentStore } from './dynamodb';
2
- export declare type DocumentBaseValueTypes = number | boolean | string | null | DocumentBaseMapType | DocumentBaseListType;
3
- export declare type DocumentBaseMapType = {
4
- [key: string]: DocumentBaseValueTypes;
5
- };
6
- export declare type DocumentBaseListType = DocumentBaseValueTypes[];
7
3
  export declare type VersionedDocumentAuthor = {
8
4
  type: 'user';
9
5
  uuid: string;
@@ -17,7 +13,5 @@ export declare type VersionedDocumentRequiredFields = {
17
13
  timestamp: number;
18
14
  author: VersionedDocumentAuthor;
19
15
  };
20
- export declare type TDocument<T> = {
21
- [k in keyof T]: DocumentBaseValueTypes;
22
- } & VersionedDocumentRequiredFields;
16
+ export declare type VersionedTDocument<T> = TDocument<T> & VersionedDocumentRequiredFields;
23
17
  export declare type VersionedDocumentStoreCreator = typeof dynamoVersionedDocumentStore;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,5 @@
1
1
  import { ConfigProviderForConfig } from '../../config';
2
2
  import { GenericFetch } from '../../fetch';
3
- import { Track } from '../../profile';
4
3
  export declare type Config = {
5
4
  defaultCorrectness?: string;
6
5
  exercisesHost: string;
@@ -63,12 +62,10 @@ export declare const exercisesGateway: <C extends string = "exercises">(initiali
63
62
  defaultCorrectness?: import("../../config").ConfigValueProvider<string> | undefined;
64
63
  exercisesHost: import("../../config").ConfigValueProvider<string>;
65
64
  exercisesAuthToken: import("../../config").ConfigValueProvider<string>;
66
- }; }) => ({ profile }: {
67
- profile: Track;
68
- }) => {
69
- searchDigest: (query: string, page?: any, per_page?: any) => Promise<string>;
65
+ }; }) => (_: {}) => {
66
+ searchDigest: (query: string, page?: number, per_page?: number) => Promise<string>;
70
67
  get: (uuid: string) => Promise<Exercise | undefined>;
71
- search: (query: string, page?: any, per_page?: any) => Promise<ExercisesSearchResultsWithDigest>;
68
+ search: (query: string, page?: number, per_page?: number) => Promise<ExercisesSearchResultsWithDigest>;
72
69
  };
73
70
  export declare type ExercisesGateway = ReturnType<ReturnType<ReturnType<typeof exercisesGateway>>>;
74
71
  export {};
@@ -32,7 +32,7 @@ export const exercisesGateway = (initializer) => (configProvider) => {
32
32
  }
33
33
  return exercise;
34
34
  };
35
- return ({ profile }) => {
35
+ return (_) => {
36
36
  const request = async (method, path, query = undefined) => {
37
37
  const host = (await exercisesHost()).replace(/\/+$/, '');
38
38
  const baseUrl = `${host}/api/${path}`;
@@ -44,22 +44,22 @@ export const exercisesGateway = (initializer) => (configProvider) => {
44
44
  method,
45
45
  });
46
46
  };
47
- const searchDigest = profile.track('searchExercisesDigest', () => async (query, page = 1, per_page = 100) => {
47
+ const searchDigest = async (query, page = 1, per_page = 100) => {
48
48
  const response = await request(METHOD.HEAD, 'exercises', { query, page, per_page });
49
49
  return assertString(response.headers.get('X-Digest'), 'OpenStax Exercises search endpoint HEAD did not return an X-Digest header');
50
- });
51
- const search = profile.track('searchExercises', () => async (query, page = 1, per_page = 100) => {
50
+ };
51
+ const search = async (query, page = 1, per_page = 100) => {
52
52
  const response = await request(METHOD.GET, 'exercises', { query, page, per_page });
53
53
  const digest = assertString(response.headers.get('X-Digest'), 'OpenStax Exercises search endpoint GET did not return an X-Digest header');
54
54
  const { items, total_count } = await response.json();
55
55
  return { digest, items: await Promise.all(items.map(doDefaultCorrectness)), total_count };
56
- });
57
- const get = profile.track('getExercise', () => async (uuid) => {
56
+ };
57
+ const get = async (uuid) => {
58
58
  const response = await request(METHOD.GET, `exercises/${uuid}`);
59
59
  return response.status === 404
60
60
  ? undefined
61
61
  : response.json().then(doDefaultCorrectness);
62
- });
62
+ };
63
63
  return {
64
64
  searchDigest,
65
65
  get,