@furystack/rest-service 7.0.11 → 7.0.13

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 (143) hide show
  1. package/esm/actions/error-action.spec.d.ts +2 -0
  2. package/esm/actions/error-action.spec.d.ts.map +1 -0
  3. package/esm/actions/error-action.spec.js +47 -0
  4. package/esm/actions/error-action.spec.js.map +1 -0
  5. package/esm/actions/get-current-user.spec.d.ts +2 -0
  6. package/esm/actions/get-current-user.spec.d.ts.map +1 -0
  7. package/esm/actions/get-current-user.spec.js +19 -0
  8. package/esm/actions/get-current-user.spec.js.map +1 -0
  9. package/esm/actions/is-authenticated.spec.d.ts +2 -0
  10. package/esm/actions/is-authenticated.spec.d.ts.map +1 -0
  11. package/esm/actions/is-authenticated.spec.js +18 -0
  12. package/esm/actions/is-authenticated.spec.js.map +1 -0
  13. package/esm/actions/login-action.spec.d.ts +2 -0
  14. package/esm/actions/login-action.spec.d.ts.map +1 -0
  15. package/esm/actions/login-action.spec.js +34 -0
  16. package/esm/actions/login-action.spec.js.map +1 -0
  17. package/esm/actions/logout-action.spec.d.ts +2 -0
  18. package/esm/actions/logout-action.spec.d.ts.map +1 -0
  19. package/esm/actions/logout-action.spec.js +22 -0
  20. package/esm/actions/logout-action.spec.js.map +1 -0
  21. package/esm/actions/not-found-action.spec.d.ts +2 -0
  22. package/esm/actions/not-found-action.spec.d.ts.map +1 -0
  23. package/esm/actions/not-found-action.spec.js +16 -0
  24. package/esm/actions/not-found-action.spec.js.map +1 -0
  25. package/esm/add-cors-header.spec.d.ts +2 -0
  26. package/esm/add-cors-header.spec.d.ts.map +1 -0
  27. package/esm/add-cors-header.spec.js +98 -0
  28. package/esm/add-cors-header.spec.js.map +1 -0
  29. package/esm/api-manager.js +4 -4
  30. package/esm/api-manager.js.map +1 -1
  31. package/esm/authenticate.spec.d.ts +2 -0
  32. package/esm/authenticate.spec.d.ts.map +1 -0
  33. package/esm/authenticate.spec.js +58 -0
  34. package/esm/authenticate.spec.js.map +1 -0
  35. package/esm/authorize.spec.d.ts +2 -0
  36. package/esm/authorize.spec.d.ts.map +1 -0
  37. package/esm/authorize.spec.js +54 -0
  38. package/esm/authorize.spec.js.map +1 -0
  39. package/esm/endpoint-generators/create-delete-endpoint.spec.d.ts +2 -0
  40. package/esm/endpoint-generators/create-delete-endpoint.spec.d.ts.map +1 -0
  41. package/esm/endpoint-generators/create-delete-endpoint.spec.js +34 -0
  42. package/esm/endpoint-generators/create-delete-endpoint.spec.js.map +1 -0
  43. package/esm/endpoint-generators/create-get-collection-endpoint.spec.d.ts +2 -0
  44. package/esm/endpoint-generators/create-get-collection-endpoint.spec.d.ts.map +1 -0
  45. package/esm/endpoint-generators/create-get-collection-endpoint.spec.js +156 -0
  46. package/esm/endpoint-generators/create-get-collection-endpoint.spec.js.map +1 -0
  47. package/esm/endpoint-generators/create-get-entity-endpoint.spec.d.ts +2 -0
  48. package/esm/endpoint-generators/create-get-entity-endpoint.spec.d.ts.map +1 -0
  49. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js +74 -0
  50. package/esm/endpoint-generators/create-get-entity-endpoint.spec.js.map +1 -0
  51. package/esm/endpoint-generators/create-patch-endpoint.spec.d.ts +2 -0
  52. package/esm/endpoint-generators/create-patch-endpoint.spec.d.ts.map +1 -0
  53. package/esm/endpoint-generators/create-patch-endpoint.spec.js +37 -0
  54. package/esm/endpoint-generators/create-patch-endpoint.spec.js.map +1 -0
  55. package/esm/endpoint-generators/create-post-endpoint.spec.d.ts +2 -0
  56. package/esm/endpoint-generators/create-post-endpoint.spec.d.ts.map +1 -0
  57. package/esm/endpoint-generators/create-post-endpoint.spec.js +35 -0
  58. package/esm/endpoint-generators/create-post-endpoint.spec.js.map +1 -0
  59. package/esm/endpoint-generators/utils.js +2 -0
  60. package/esm/endpoint-generators/utils.js.map +1 -1
  61. package/esm/helpers.spec.d.ts +2 -0
  62. package/esm/helpers.spec.d.ts.map +1 -0
  63. package/esm/helpers.spec.js +34 -0
  64. package/esm/helpers.spec.js.map +1 -0
  65. package/esm/http-authentication-settings.js +7 -8
  66. package/esm/http-authentication-settings.js.map +1 -1
  67. package/esm/http-user-context.js +24 -21
  68. package/esm/http-user-context.js.map +1 -1
  69. package/esm/http-user-context.spec.d.ts +3 -0
  70. package/esm/http-user-context.spec.d.ts.map +1 -0
  71. package/esm/http-user-context.spec.js +269 -0
  72. package/esm/http-user-context.spec.js.map +1 -0
  73. package/esm/incoming-message-extensions.spec.d.ts +2 -0
  74. package/esm/incoming-message-extensions.spec.d.ts.map +1 -0
  75. package/esm/incoming-message-extensions.spec.js +38 -0
  76. package/esm/incoming-message-extensions.spec.js.map +1 -0
  77. package/esm/mime-types.spec.d.ts +2 -0
  78. package/esm/mime-types.spec.d.ts.map +1 -0
  79. package/esm/mime-types.spec.js +14 -0
  80. package/esm/mime-types.spec.js.map +1 -0
  81. package/esm/models/default-session.js +8 -0
  82. package/esm/models/default-session.js.map +1 -1
  83. package/esm/rest-service.integration.spec.d.ts +2 -0
  84. package/esm/rest-service.integration.spec.d.ts.map +1 -0
  85. package/esm/rest-service.integration.spec.js +156 -0
  86. package/esm/rest-service.integration.spec.js.map +1 -0
  87. package/esm/rest.integration.test.d.ts +89 -0
  88. package/esm/rest.integration.test.d.ts.map +1 -0
  89. package/esm/rest.integration.test.js +154 -0
  90. package/esm/rest.integration.test.js.map +1 -0
  91. package/esm/schema-validator/schema-validation-error.js +1 -0
  92. package/esm/schema-validator/schema-validation-error.js.map +1 -1
  93. package/esm/schema-validator/schema-validator.d.ts +1 -2
  94. package/esm/schema-validator/schema-validator.d.ts.map +1 -1
  95. package/esm/schema-validator/schema-validator.js +3 -2
  96. package/esm/schema-validator/schema-validator.js.map +1 -1
  97. package/esm/schema-validator/schema-validator.test.d.ts +2 -0
  98. package/esm/schema-validator/schema-validator.test.d.ts.map +1 -0
  99. package/esm/schema-validator/schema-validator.test.js +61 -0
  100. package/esm/schema-validator/schema-validator.test.js.map +1 -0
  101. package/esm/server-manager.js +12 -12
  102. package/esm/server-manager.js.map +1 -1
  103. package/esm/server-response-extensions.spec.d.ts +2 -0
  104. package/esm/server-response-extensions.spec.d.ts.map +1 -0
  105. package/esm/server-response-extensions.spec.js +52 -0
  106. package/esm/server-response-extensions.spec.js.map +1 -0
  107. package/esm/static-server-manager.js +26 -26
  108. package/esm/static-server-manager.js.map +1 -1
  109. package/esm/static-server-manager.spec.d.ts +2 -0
  110. package/esm/static-server-manager.spec.d.ts.map +1 -0
  111. package/esm/static-server-manager.spec.js +216 -0
  112. package/esm/static-server-manager.spec.js.map +1 -0
  113. package/esm/utils.js +2 -1
  114. package/esm/utils.js.map +1 -1
  115. package/esm/validate.integration.spec.d.ts +2 -0
  116. package/esm/validate.integration.spec.d.ts.map +1 -0
  117. package/esm/validate.integration.spec.js +211 -0
  118. package/esm/validate.integration.spec.js.map +1 -0
  119. package/package.json +11 -11
  120. package/src/actions/error-action.spec.ts +1 -1
  121. package/src/actions/get-current-user.spec.ts +1 -1
  122. package/src/actions/is-authenticated.spec.ts +1 -1
  123. package/src/actions/login-action.spec.ts +2 -2
  124. package/src/actions/logout-action.spec.ts +2 -2
  125. package/src/actions/not-found-action.spec.ts +1 -1
  126. package/src/add-cors-header.spec.ts +1 -1
  127. package/src/authenticate.spec.ts +3 -3
  128. package/src/authorize.spec.ts +2 -2
  129. package/src/endpoint-generators/create-delete-endpoint.spec.ts +3 -3
  130. package/src/endpoint-generators/create-get-collection-endpoint.spec.ts +3 -3
  131. package/src/endpoint-generators/create-get-entity-endpoint.spec.ts +3 -3
  132. package/src/endpoint-generators/create-patch-endpoint.spec.ts +3 -3
  133. package/src/endpoint-generators/create-post-endpoint.spec.ts +3 -3
  134. package/src/helpers.spec.ts +4 -4
  135. package/src/http-user-context.spec.ts +3 -3
  136. package/src/mime-types.spec.ts +1 -1
  137. package/src/rest-service.integration.spec.ts +4 -4
  138. package/src/rest.integration.test.ts +2 -3
  139. package/src/schema-validator/schema-validator.test.ts +4 -4
  140. package/src/schema-validator/schema-validator.ts +6 -5
  141. package/src/server-response-extensions.spec.ts +1 -1
  142. package/src/static-server-manager.spec.ts +15 -15
  143. package/src/validate.integration.spec.ts +4 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-collection-endpoint.spec.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,156 @@
1
+ import { usingAsync } from '@furystack/utils';
2
+ import { Injector } from '@furystack/inject';
3
+ import { MockClass, setupContext } from './utils.js';
4
+ import { createGetCollectionEndpoint } from './create-get-collection-endpoint.js';
5
+ import { serializeToQueryString } from '@furystack/rest';
6
+ import { getDataSetFor, getRepository } from '@furystack/repository';
7
+ import { useRestService } from '../helpers.js';
8
+ import { describe, it, expect } from 'vitest';
9
+ const addMockEntities = async (i) => await getRepository(i)
10
+ .getDataSetFor(MockClass, 'id')
11
+ .add(i, { id: 'mock1', value: '4' }, { id: 'mock2', value: '3' }, { id: 'mock3', value: '2' }, { id: 'mock4', value: '1' });
12
+ describe('createGetCollectionEndpoint', () => {
13
+ it('Should return the collection without filter / order', async () => {
14
+ await usingAsync(new Injector(), async (i) => {
15
+ setupContext(i);
16
+ await useRestService({
17
+ injector: i,
18
+ root: '/api',
19
+ port: 1112,
20
+ api: {
21
+ GET: {
22
+ '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
23
+ },
24
+ },
25
+ });
26
+ await addMockEntities(i);
27
+ const count = await getDataSetFor(i, MockClass, 'id').count(i);
28
+ const allEntities = await getDataSetFor(i, MockClass, 'id').find(i, {});
29
+ const response = await fetch('http://127.0.0.1:1112/api/entities', { method: 'GET' });
30
+ expect(response.ok).toBe(true);
31
+ const json = await response.json();
32
+ expect(response.status).toBe(200);
33
+ expect(json.count).toBe(count);
34
+ expect(json.entries).toEqual(allEntities);
35
+ });
36
+ });
37
+ it('Should return entities in order', async () => {
38
+ await usingAsync(new Injector(), async (i) => {
39
+ setupContext(i);
40
+ await useRestService({
41
+ injector: i,
42
+ root: '/api',
43
+ port: 1113,
44
+ api: {
45
+ GET: {
46
+ '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
47
+ },
48
+ },
49
+ });
50
+ await addMockEntities(i);
51
+ const findOptions = { order: { value: 'ASC' } };
52
+ const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
53
+ const orderedEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
54
+ const response = await fetch(`http://127.0.0.1:1113/api/entities?${serializeToQueryString({ findOptions })}`, {
55
+ method: 'GET',
56
+ });
57
+ expect(response.ok).toBe(true);
58
+ const json = await response.json();
59
+ expect(response.status).toBe(200);
60
+ expect(json.count).toBe(count);
61
+ expect(json.entries).toEqual(orderedEntities);
62
+ });
63
+ });
64
+ it('Should return entities with filtering', async () => {
65
+ await usingAsync(new Injector(), async (i) => {
66
+ setupContext(i);
67
+ await useRestService({
68
+ injector: i,
69
+ root: '/api',
70
+ port: 1113,
71
+ api: {
72
+ GET: {
73
+ '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
74
+ },
75
+ },
76
+ });
77
+ await addMockEntities(i);
78
+ const findOptions = {
79
+ filter: { id: { $ne: 'mock2' } },
80
+ };
81
+ const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
82
+ const filteredEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
83
+ expect(filteredEntities).not.toContainEqual({ id: 'mock2', value: '3' });
84
+ const response = await fetch(`http://127.0.0.1:1113/api/entities?${serializeToQueryString({ findOptions })}`, {
85
+ method: 'GET',
86
+ });
87
+ expect(response.ok).toBe(true);
88
+ const json = await response.json();
89
+ expect(response.status).toBe(200);
90
+ expect(json.count).toBe(count);
91
+ expect(json.entries).toEqual(filteredEntities);
92
+ });
93
+ });
94
+ it('Should return entities with selecting specific fields', async () => {
95
+ await usingAsync(new Injector(), async (i) => {
96
+ setupContext(i);
97
+ await useRestService({
98
+ injector: i,
99
+ root: '/api',
100
+ port: 1113,
101
+ api: {
102
+ GET: {
103
+ '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
104
+ },
105
+ },
106
+ });
107
+ await addMockEntities(i);
108
+ const findOptions = {
109
+ select: ['id'],
110
+ };
111
+ const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
112
+ const selectedEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
113
+ selectedEntities.forEach((e) => expect(e.value).toBeUndefined());
114
+ const response = await fetch(`http://127.0.0.1:1113/api/entities?${serializeToQueryString({ findOptions })}`, {
115
+ method: 'GET',
116
+ });
117
+ expect(response.ok).toBe(true);
118
+ const json = await response.json();
119
+ expect(response.status).toBe(200);
120
+ expect(json.count).toBe(count);
121
+ expect(json.entries).toEqual(selectedEntities);
122
+ });
123
+ });
124
+ it('Should return entities with top/skip', async () => {
125
+ await usingAsync(new Injector(), async (i) => {
126
+ setupContext(i);
127
+ await useRestService({
128
+ injector: i,
129
+ root: '/api',
130
+ port: 1113,
131
+ api: {
132
+ GET: {
133
+ '/entities': createGetCollectionEndpoint({ model: MockClass, primaryKey: 'id' }),
134
+ },
135
+ },
136
+ });
137
+ await addMockEntities(i);
138
+ const findOptions = {
139
+ skip: 1,
140
+ top: 2,
141
+ };
142
+ const count = await getDataSetFor(i, MockClass, 'id').count(i, findOptions.filter);
143
+ const topSkipEntities = await getDataSetFor(i, MockClass, 'id').find(i, findOptions);
144
+ expect(topSkipEntities).not.toContainEqual({ id: 'mock1', value: '4' });
145
+ expect(topSkipEntities).not.toContainEqual({ id: 'mock4', value: '1' });
146
+ const response = await fetch(`http://127.0.0.1:1113/api/entities?${serializeToQueryString({ findOptions })}`, {
147
+ method: 'GET',
148
+ });
149
+ expect(response.status).toBe(200);
150
+ const json = await response.json();
151
+ expect(json.count).toBe(count);
152
+ expect(json.entries).toEqual(topSkipEntities);
153
+ });
154
+ });
155
+ });
156
+ //# sourceMappingURL=create-get-collection-endpoint.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-collection-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-collection-endpoint.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-get-entity-endpoint.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-entity-endpoint.spec.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-entity-endpoint.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
1
+ import { usingAsync } from '@furystack/utils';
2
+ import { Injector } from '@furystack/inject';
3
+ import { serializeToQueryString } from '@furystack/rest';
4
+ import { MockClass, setupContext } from './utils.js';
5
+ import { createGetEntityEndpoint } from './create-get-entity-endpoint.js';
6
+ import { getDataSetFor } from '@furystack/repository';
7
+ import { useRestService } from '../helpers.js';
8
+ import { describe, it, expect } from 'vitest';
9
+ describe('createGetEntityEndpoint', () => {
10
+ it('Should return the entity', async () => {
11
+ await usingAsync(new Injector(), async (i) => {
12
+ setupContext(i);
13
+ await useRestService({
14
+ injector: i,
15
+ root: '/api',
16
+ port: 1113,
17
+ api: {
18
+ GET: {
19
+ '/:id': createGetEntityEndpoint({ model: MockClass, primaryKey: 'id' }),
20
+ },
21
+ },
22
+ });
23
+ const mockEntity = { id: 'mock', value: 'mock' };
24
+ await getDataSetFor(i, MockClass, 'id').add(i, mockEntity);
25
+ const response = await fetch('http://127.0.0.1:1113/api/mock', { method: 'GET' });
26
+ expect(response.status).toBe(200);
27
+ const body = await response.json();
28
+ expect(body).toEqual(mockEntity);
29
+ });
30
+ });
31
+ it('Should return the entity with the selected fields', async () => {
32
+ await usingAsync(new Injector(), async (i) => {
33
+ setupContext(i);
34
+ await useRestService({
35
+ injector: i,
36
+ root: '/api',
37
+ port: 1114,
38
+ api: {
39
+ GET: {
40
+ '/:id': createGetEntityEndpoint({ model: MockClass, primaryKey: 'id' }),
41
+ },
42
+ },
43
+ });
44
+ const mockEntity = { id: 'mock', value: 'mock' };
45
+ await getDataSetFor(i, MockClass, 'id').add(i, mockEntity);
46
+ const response = await fetch(`http://127.0.0.1:1114/api/mock?${serializeToQueryString({ select: ['id'] })}`, {
47
+ method: 'GET',
48
+ });
49
+ expect(response.status).toBe(200);
50
+ const body = await response.json();
51
+ expect(body).toEqual({ id: mockEntity.id });
52
+ });
53
+ });
54
+ it('Should return 404 if no entity has been found', async () => {
55
+ await usingAsync(new Injector(), async (i) => {
56
+ setupContext(i);
57
+ await useRestService({
58
+ injector: i,
59
+ root: '/api',
60
+ port: 1115,
61
+ api: {
62
+ GET: {
63
+ '/:id': createGetEntityEndpoint({ model: MockClass, primaryKey: 'id' }),
64
+ },
65
+ },
66
+ });
67
+ const result = await fetch(`http://127.0.0.1:1115/api/mock`, { method: 'GET' });
68
+ expect(result.status).toBe(404);
69
+ const body = await result.json();
70
+ expect(body).toEqual({ message: 'Entity not found' });
71
+ });
72
+ });
73
+ });
74
+ //# sourceMappingURL=create-get-entity-endpoint.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-get-entity-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-get-entity-endpoint.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-patch-endpoint.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-patch-endpoint.spec.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-patch-endpoint.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { usingAsync } from '@furystack/utils';
2
+ import { Injector } from '@furystack/inject';
3
+ import { createPatchEndpoint } from './create-patch-endpoint.js';
4
+ import { MockClass, setupContext } from './utils.js';
5
+ import { getDataSetFor } from '@furystack/repository';
6
+ import { useRestService } from '../helpers.js';
7
+ import { describe, it, expect } from 'vitest';
8
+ describe('createPatchEndpoint', () => {
9
+ it('Should update the entity and report the success', async () => {
10
+ await usingAsync(new Injector(), async (i) => {
11
+ setupContext(i);
12
+ await useRestService({
13
+ injector: i,
14
+ root: '/api',
15
+ port: 1116,
16
+ api: {
17
+ PATCH: {
18
+ '/:id': createPatchEndpoint({ model: MockClass, primaryKey: 'id' }),
19
+ },
20
+ },
21
+ });
22
+ await getDataSetFor(i, MockClass, 'id').add(i, { id: 'mock', value: 'mock' });
23
+ const countBeforeDelete = await getDataSetFor(i, MockClass, 'id').count(i);
24
+ expect(countBeforeDelete).toBe(1);
25
+ const response = await fetch('http://127.0.0.1:1116/api/mock', {
26
+ method: 'PATCH',
27
+ body: JSON.stringify({ value: 'updated' }),
28
+ });
29
+ expect(response.status).toBe(200);
30
+ const body = await response.json();
31
+ expect(body).toEqual({});
32
+ const updated = await getDataSetFor(i, MockClass, 'id').get(i, 'mock');
33
+ expect(updated?.value).toBe('updated');
34
+ });
35
+ });
36
+ });
37
+ //# sourceMappingURL=create-patch-endpoint.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-patch-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-patch-endpoint.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,MAAM,cAAc,CAAwD;gBAC1E,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI;gBACV,GAAG,EAAE;oBACH,KAAK,EAAE;wBACL,MAAM,EAAE,mBAAmB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;qBACpE;iBACF;aACF,CAAC,CAAA;YACF,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YAE7E,MAAM,iBAAiB,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1E,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAEjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gCAAgC,EAAE;gBAC7D,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;aAC3C,CAAC,CAAA;YACF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACxB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACtE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-post-endpoint.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-post-endpoint.spec.d.ts","sourceRoot":"","sources":["../../src/endpoint-generators/create-post-endpoint.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { usingAsync } from '@furystack/utils';
2
+ import { Injector } from '@furystack/inject';
3
+ import { createPostEndpoint } from './create-post-endpoint.js';
4
+ import { MockClass, setupContext } from './utils.js';
5
+ import { useRestService } from '../helpers.js';
6
+ import { getDataSetFor } from '@furystack/repository';
7
+ import { describe, it, expect } from 'vitest';
8
+ describe('createPostEndpoint', () => {
9
+ it('Should create the entity and report the success', async () => {
10
+ await usingAsync(new Injector(), async (i) => {
11
+ setupContext(i);
12
+ await useRestService({
13
+ injector: i,
14
+ root: '/api',
15
+ port: 1117,
16
+ api: {
17
+ POST: {
18
+ '/': createPostEndpoint({ model: MockClass, primaryKey: 'id' }),
19
+ },
20
+ },
21
+ });
22
+ const entityToPost = { id: 'mock', value: 'posted' };
23
+ const response = await fetch('http://127.0.0.1:1117/api', {
24
+ method: 'POST',
25
+ body: JSON.stringify(entityToPost),
26
+ });
27
+ expect(response.status).toBe(201);
28
+ const body = await response.json();
29
+ expect(body).toEqual(entityToPost);
30
+ const posted = await getDataSetFor(i, MockClass, 'id').get(i, entityToPost.id);
31
+ expect(posted?.value).toBe('posted');
32
+ });
33
+ });
34
+ });
35
+ //# sourceMappingURL=create-post-endpoint.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-post-endpoint.spec.js","sourceRoot":"","sources":["../../src/endpoint-generators/create-post-endpoint.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,YAAY,CAAC,CAAC,CAAC,CAAA;YACf,MAAM,cAAc,CAAmD;gBACrE,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE;wBACJ,GAAG,EAAE,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;qBAChE;iBACF;aACF,CAAC,CAAA;YACF,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;YACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,2BAA2B,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;aACnC,CAAC,CAAA;YACF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAClC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;YAC9E,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -4,6 +4,8 @@ import '@furystack/repository';
4
4
  import '../helpers.js';
5
5
  import { getRepository } from '@furystack/repository';
6
6
  export class MockClass {
7
+ id;
8
+ value;
7
9
  }
8
10
  export const setupContext = (i) => {
9
11
  addStore(i, new InMemoryStore({
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/endpoint-generators/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,uBAAuB,CAAA;AAC9B,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,OAAO,SAAS;CAGrB;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAW,EAAE,EAAE;IAC1C,QAAQ,CACN,CAAC,EACD,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CACH;SACE,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,UAAU;KACvB,CAAC,CACH;SACA,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,WAAW;KACxB,CAAC,CACH,CAAA;IACH,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/endpoint-generators/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,uBAAuB,CAAA;AAC9B,OAAO,eAAe,CAAA;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,OAAO,SAAS;IACpB,EAAE,CAAS;IACX,KAAK,CAAS;CACf;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAW,EAAE,EAAE;IAC1C,QAAQ,CACN,CAAC,EACD,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CACH;SACE,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,UAAU;KACvB,CAAC,CACH;SACA,QAAQ,CACP,IAAI,aAAa,CAAC;QAChB,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,WAAW;KACxB,CAAC,CACH,CAAA;IACH,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=helpers.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.spec.d.ts","sourceRoot":"","sources":["../src/helpers.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { Injector } from '@furystack/inject';
2
+ import { usingAsync } from '@furystack/utils';
3
+ import { ApiManager } from './api-manager.js';
4
+ import { HttpAuthenticationSettings } from './http-authentication-settings.js';
5
+ import { useHttpAuthentication, useRestService, useStaticFiles } from './helpers.js';
6
+ import { StaticServerManager } from './static-server-manager.js';
7
+ import { describe, it, expect } from 'vitest';
8
+ describe('Injector extensions', () => {
9
+ describe('useHttpAuthentication', () => {
10
+ it('Should set up HTTP Authentication', async () => {
11
+ await usingAsync(new Injector(), async (i) => {
12
+ useHttpAuthentication(i);
13
+ expect(i.cachedSingletons.get(HttpAuthenticationSettings)).toBeDefined();
14
+ });
15
+ });
16
+ });
17
+ describe('useRestService()', () => {
18
+ it('Should set up a REST service', async () => {
19
+ await usingAsync(new Injector(), async (i) => {
20
+ await useRestService({ injector: i, api: {}, root: '/', port: 1234 });
21
+ expect(i.cachedSingletons.get(ApiManager)).toBeDefined();
22
+ });
23
+ });
24
+ });
25
+ describe('useRestService()', () => {
26
+ it('Should set up a REST service', async () => {
27
+ await usingAsync(new Injector(), async (i) => {
28
+ await useStaticFiles({ injector: i, baseUrl: '/', path: '.', port: 1234 });
29
+ expect(i.cachedSingletons.get(StaticServerManager)).toBeDefined();
30
+ });
31
+ });
32
+ });
33
+ });
34
+ //# sourceMappingURL=helpers.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.spec.js","sourceRoot":"","sources":["../src/helpers.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,qBAAqB,CAAC,CAAC,CAAC,CAAA;gBACxB,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC1E,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACrE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC1D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC1E,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YACnE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -10,16 +10,15 @@ import { DefaultSession } from './models/default-session.js';
10
10
  /**
11
11
  * Authentication settings object for FuryStack HTTP Api
12
12
  */
13
- export let HttpAuthenticationSettings = class HttpAuthenticationSettings {
14
- constructor() {
15
- this.model = User;
16
- this.getUserStore = (sm) => sm.getStoreFor(User, 'username');
17
- this.getSessionStore = (sm) => sm.getStoreFor(DefaultSession, 'sessionId');
18
- this.cookieName = 'fss';
19
- this.enableBasicAuth = true;
20
- }
13
+ let HttpAuthenticationSettings = class HttpAuthenticationSettings {
14
+ model = User;
15
+ getUserStore = (sm) => sm.getStoreFor(User, 'username');
16
+ getSessionStore = (sm) => sm.getStoreFor(DefaultSession, 'sessionId');
17
+ cookieName = 'fss';
18
+ enableBasicAuth = true;
21
19
  };
22
20
  HttpAuthenticationSettings = __decorate([
23
21
  Injectable({ lifetime: 'singleton' })
24
22
  ], HttpAuthenticationSettings);
23
+ export { HttpAuthenticationSettings };
25
24
  //# sourceMappingURL=http-authentication-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;GAEG;AAEI,WAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAAhC;QACE,UAAK,GAAyB,IAA4B,CAAA;QAE1D,iBAAY,GAAsE,CAAC,EAAE,EAAE,EAAE,CAC9F,EAAE,CAAC,WAAW,CAAqB,IAAW,EAAE,UAAU,CAAC,CAAA;QAEtD,oBAAe,GAA4E,CAAC,EAAE,EAAE,EAAE,CACvG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAuD,CAAA;QAE5F,eAAU,GAAG,KAAK,CAAA;QAClB,oBAAe,GAAG,IAAI,CAAA;IAC/B,CAAC;CAAA,CAAA;AAXY,0BAA0B;IADtC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,0BAA0B,CAWtC"}
1
+ {"version":3,"file":"http-authentication-settings.js","sourceRoot":"","sources":["../src/http-authentication-settings.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;GAEG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAC9B,KAAK,GAAyB,IAA4B,CAAA;IAE1D,YAAY,GAAsE,CAAC,EAAE,EAAE,EAAE,CAC9F,EAAE,CAAC,WAAW,CAAqB,IAAW,EAAE,UAAU,CAAC,CAAA;IAEtD,eAAe,GAA4E,CAAC,EAAE,EAAE,EAAE,CACvG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAuD,CAAA;IAE5F,UAAU,GAAG,KAAK,CAAA;IAClB,eAAe,GAAG,IAAI,CAAA;CAC9B,CAAA;AAXY,0BAA0B;IADtC,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,0BAA0B,CAWtC"}
@@ -15,27 +15,26 @@ import { randomBytes } from 'crypto';
15
15
  /**
16
16
  * Injectable UserContext for FuryStack HTTP Api
17
17
  */
18
- export let HttpUserContext = class HttpUserContext {
19
- constructor() {
20
- this.getUserStore = () => this.authentication.getUserStore(this.storeManager);
21
- this.getSessionStore = () => this.authentication.getSessionStore(this.storeManager);
22
- this.getUserByName = async (userName) => {
23
- const userStore = this.getUserStore();
24
- const users = await userStore.find({ filter: { username: { $eq: userName } }, top: 2 });
25
- if (users.length !== 1) {
26
- throw new UnauthenticatedError();
27
- }
28
- return users[0];
29
- };
30
- this.getSessionById = async (sessionId) => {
31
- const sessionStore = this.getSessionStore();
32
- const sessions = await sessionStore.find({ filter: { sessionId: { $eq: sessionId } }, top: 2 });
33
- if (sessions.length !== 1) {
34
- throw new UnauthenticatedError();
35
- }
36
- return sessions[0];
37
- };
38
- }
18
+ let HttpUserContext = class HttpUserContext {
19
+ getUserStore = () => this.authentication.getUserStore(this.storeManager);
20
+ getSessionStore = () => this.authentication.getSessionStore(this.storeManager);
21
+ getUserByName = async (userName) => {
22
+ const userStore = this.getUserStore();
23
+ const users = await userStore.find({ filter: { username: { $eq: userName } }, top: 2 });
24
+ if (users.length !== 1) {
25
+ throw new UnauthenticatedError();
26
+ }
27
+ return users[0];
28
+ };
29
+ getSessionById = async (sessionId) => {
30
+ const sessionStore = this.getSessionStore();
31
+ const sessions = await sessionStore.find({ filter: { sessionId: { $eq: sessionId } }, top: 2 });
32
+ if (sessions.length !== 1) {
33
+ throw new UnauthenticatedError();
34
+ }
35
+ return sessions[0];
36
+ };
37
+ user;
39
38
  /**
40
39
  * @param request The request to be authenticated
41
40
  * @returns if the current user is authenticated
@@ -148,6 +147,9 @@ export let HttpUserContext = class HttpUserContext {
148
147
  await this.getSessionStore().remove(...sessions.map((s) => s[sessionStore.primaryKey]));
149
148
  }
150
149
  }
150
+ authentication;
151
+ storeManager;
152
+ authenticator;
151
153
  };
152
154
  __decorate([
153
155
  Injected(HttpAuthenticationSettings),
@@ -164,4 +166,5 @@ __decorate([
164
166
  HttpUserContext = __decorate([
165
167
  Injectable({ lifetime: 'scoped' })
166
168
  ], HttpUserContext);
169
+ export { HttpUserContext };
167
170
  //# sourceMappingURL=http-user-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-user-context.js","sourceRoot":"","sources":["../src/http-user-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Injector } from '@furystack/inject';
2
+ export declare const prepareInjector: (i: Injector) => Promise<void>;
3
+ //# sourceMappingURL=http-user-context.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-user-context.spec.d.ts","sourceRoot":"","sources":["../src/http-user-context.spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAQ5C,eAAO,MAAM,eAAe,MAAa,QAAQ,kBAMhD,CAAA"}