@opra/core 0.14.0 → 0.16.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 (105) hide show
  1. package/cjs/adapter/adapter.js +89 -293
  2. package/cjs/adapter/http/express-adapter.js +27 -0
  3. package/cjs/adapter/http/http-adapter.js +467 -0
  4. package/cjs/adapter/http/http-request-context.host.js +28 -0
  5. package/cjs/adapter/http/http-request.host.js +14 -0
  6. package/cjs/adapter/http/http-response.host.js +14 -0
  7. package/cjs/adapter/internal/metadata.resource.js +27 -0
  8. package/cjs/adapter/request-context.host.js +30 -0
  9. package/cjs/adapter/request.host.js +19 -0
  10. package/cjs/adapter/response.host.js +20 -0
  11. package/cjs/augmentation/resource.augmentation.js +26 -0
  12. package/cjs/index.js +7 -8
  13. package/esm/adapter/adapter.js +97 -297
  14. package/esm/adapter/http/express-adapter.js +27 -0
  15. package/esm/adapter/http/http-adapter.js +467 -0
  16. package/esm/adapter/http/http-request-context.host.js +28 -0
  17. package/esm/adapter/http/http-request.host.js +14 -0
  18. package/esm/adapter/http/http-response.host.js +14 -0
  19. package/esm/adapter/interfaces/request-context.interface.js +2 -0
  20. package/esm/adapter/interfaces/request.interface.js +2 -0
  21. package/esm/adapter/interfaces/response.interface.js +2 -0
  22. package/esm/adapter/internal/metadata.resource.js +27 -0
  23. package/esm/adapter/request-context.host.js +30 -0
  24. package/esm/adapter/request.host.js +19 -0
  25. package/esm/adapter/response.host.js +20 -0
  26. package/esm/augmentation/resource.augmentation.js +26 -0
  27. package/esm/index.js +13 -11
  28. package/esm/types.js +2 -1
  29. package/i18n/en/error.json +2 -2
  30. package/package.json +11 -8
  31. package/types/adapter/adapter.d.ts +63 -0
  32. package/types/adapter/http/express-adapter.d.ts +11 -0
  33. package/types/adapter/http/http-adapter.d.ts +37 -0
  34. package/types/adapter/http/http-request-context.host.d.ts +16 -0
  35. package/types/adapter/http/http-request.host.d.ts +7 -0
  36. package/types/adapter/http/http-response.host.d.ts +7 -0
  37. package/{esm → types/adapter}/interfaces/logger.interface.d.ts +1 -0
  38. package/types/adapter/interfaces/request-context.interface.d.ts +25 -0
  39. package/types/adapter/interfaces/request.interface.d.ts +13 -0
  40. package/types/adapter/interfaces/response.interface.d.ts +22 -0
  41. package/types/adapter/internal/metadata.resource.d.ts +7 -0
  42. package/types/adapter/request-context.host.d.ts +19 -0
  43. package/types/adapter/request.host.d.ts +26 -0
  44. package/types/adapter/response.host.d.ts +20 -0
  45. package/types/augmentation/resource.augmentation.d.ts +33 -0
  46. package/types/index.d.ts +10 -0
  47. package/cjs/adapter/classes/execution-context.host.js +0 -16
  48. package/cjs/adapter/classes/express-request-wrapper.host.js +0 -36
  49. package/cjs/adapter/classes/express-response-wrapper.host.js +0 -55
  50. package/cjs/adapter/classes/http-execution-context.host.js +0 -28
  51. package/cjs/adapter/classes/metadata.resource.js +0 -22
  52. package/cjs/adapter/express-adapter.js +0 -26
  53. package/cjs/adapter/http-adapter.js +0 -443
  54. package/cjs/adapter/request-contexts/batch-request-context.js +0 -11
  55. package/cjs/adapter/request-contexts/request-context.js +0 -25
  56. package/cjs/adapter/request-contexts/single-request-context.js +0 -14
  57. package/cjs/services/data-service.js +0 -9
  58. package/cjs/services/json-singleton-service.js +0 -96
  59. package/cjs/utils/create-i18n.js +0 -21
  60. package/cjs/utils/get-caller-file.util.js +0 -24
  61. package/esm/adapter/adapter.d.ts +0 -38
  62. package/esm/adapter/classes/execution-context.host.d.ts +0 -10
  63. package/esm/adapter/classes/execution-context.host.js +0 -12
  64. package/esm/adapter/classes/express-request-wrapper.host.d.ts +0 -19
  65. package/esm/adapter/classes/express-request-wrapper.host.js +0 -32
  66. package/esm/adapter/classes/express-response-wrapper.host.d.ts +0 -22
  67. package/esm/adapter/classes/express-response-wrapper.host.js +0 -51
  68. package/esm/adapter/classes/http-execution-context.host.d.ts +0 -13
  69. package/esm/adapter/classes/http-execution-context.host.js +0 -24
  70. package/esm/adapter/classes/metadata.resource.d.ts +0 -8
  71. package/esm/adapter/classes/metadata.resource.js +0 -19
  72. package/esm/adapter/express-adapter.d.ts +0 -11
  73. package/esm/adapter/express-adapter.js +0 -21
  74. package/esm/adapter/http-adapter.d.ts +0 -37
  75. package/esm/adapter/http-adapter.js +0 -439
  76. package/esm/adapter/request-contexts/batch-request-context.d.ts +0 -7
  77. package/esm/adapter/request-contexts/batch-request-context.js +0 -7
  78. package/esm/adapter/request-contexts/request-context.d.ts +0 -22
  79. package/esm/adapter/request-contexts/request-context.js +0 -21
  80. package/esm/adapter/request-contexts/single-request-context.d.ts +0 -10
  81. package/esm/adapter/request-contexts/single-request-context.js +0 -10
  82. package/esm/enums/issue-severity.enum.d.ts +0 -1
  83. package/esm/enums/issue-severity.enum.js +0 -1
  84. package/esm/index.d.ts +0 -11
  85. package/esm/interfaces/execution-context.interface.d.ts +0 -47
  86. package/esm/interfaces/execution-context.interface.js +0 -1
  87. package/esm/interfaces/i18n-options.interface.d.ts +0 -28
  88. package/esm/interfaces/i18n-options.interface.js +0 -1
  89. package/esm/interfaces/logger.interface.js +0 -1
  90. package/esm/interfaces/resource.interface.d.ts +0 -23
  91. package/esm/interfaces/resource.interface.js +0 -1
  92. package/esm/services/data-service.d.ts +0 -2
  93. package/esm/services/data-service.js +0 -5
  94. package/esm/services/json-singleton-service.d.ts +0 -39
  95. package/esm/services/json-singleton-service.js +0 -91
  96. package/esm/utils/create-i18n.d.ts +0 -3
  97. package/esm/utils/create-i18n.js +0 -16
  98. package/esm/utils/get-caller-file.util.d.ts +0 -1
  99. package/esm/utils/get-caller-file.util.js +0 -20
  100. /package/cjs/{interfaces → adapter/interfaces}/logger.interface.js +0 -0
  101. /package/cjs/{enums/issue-severity.enum.js → adapter/interfaces/request-context.interface.js} +0 -0
  102. /package/cjs/{interfaces/execution-context.interface.js → adapter/interfaces/request.interface.js} +0 -0
  103. /package/cjs/{interfaces/i18n-options.interface.js → adapter/interfaces/response.interface.js} +0 -0
  104. /package/{cjs/interfaces/resource.interface.js → esm/adapter/interfaces/logger.interface.js} +0 -0
  105. /package/{esm → types}/types.d.ts +0 -0
@@ -1,39 +0,0 @@
1
- import { DataType, OpraQuery, OpraSchema } from '@opra/common';
2
- import { SingleRequestContext } from '../adapter/request-contexts/single-request-context.js';
3
- import { PartialOutput } from '../types.js';
4
- export interface JsonSingletonServiceOptions<T> {
5
- data: T;
6
- resourceName?: string;
7
- }
8
- export declare class JsonSingletonService<T, TOutput = PartialOutput<T>> {
9
- readonly dataType: DataType;
10
- protected _data?: T;
11
- constructor(dataType: DataType, options?: JsonSingletonServiceOptions<T>);
12
- processRequest(ctx: SingleRequestContext): Promise<any>;
13
- get(options?: JsonSingletonService.GetOptions): TOutput | undefined;
14
- protected _prepare(query: OpraQuery): {
15
- method: OpraSchema.SingletonMethod;
16
- options: any;
17
- keyValue?: any;
18
- values?: any;
19
- args: any[];
20
- };
21
- }
22
- export declare namespace JsonSingletonService {
23
- type CreateOptions = {
24
- query?: string;
25
- pick?: string[];
26
- omit?: string[];
27
- include?: string[];
28
- };
29
- type GetOptions = {
30
- pick?: string[];
31
- omit?: string[];
32
- include?: string[];
33
- };
34
- type UpdateOptions = {
35
- pick?: string[];
36
- omit?: string[];
37
- include?: string[];
38
- };
39
- }
@@ -1,91 +0,0 @@
1
- import isNil from 'lodash.isnil';
2
- import omitBy from 'lodash.omitby';
3
- import { SingletonResourceInfo } from '@opra/common';
4
- export class JsonSingletonService {
5
- constructor(dataType, options) {
6
- this.dataType = dataType;
7
- this._data = options?.data;
8
- }
9
- async processRequest(ctx) {
10
- const prepared = this._prepare(ctx.query);
11
- const fn = this[prepared.method];
12
- if (!fn)
13
- throw new TypeError(`Unimplemented method (${prepared.method})`);
14
- // @ts-ignore
15
- return fn.apply(this, prepared.args);
16
- }
17
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
- get(options) {
19
- return this._data;
20
- }
21
- _prepare(query) {
22
- if (query.resource instanceof SingletonResourceInfo) {
23
- if (query.dataType !== this.dataType)
24
- throw new TypeError(`Query data type (${query.dataType.name}) ` +
25
- `differs from JsonCollectionService data type (${this.dataType.name})`);
26
- }
27
- switch (query.method) {
28
- case 'create': {
29
- const options = omitBy({
30
- pick: query.pick,
31
- omit: query.omit,
32
- include: query.include
33
- }, isNil);
34
- const { data } = query;
35
- return {
36
- method: query.method,
37
- values: data,
38
- options,
39
- args: [data, options]
40
- };
41
- }
42
- case 'get': {
43
- if (query.kind === 'CollectionGetQuery') {
44
- const options = omitBy({
45
- pick: query.pick,
46
- omit: query.omit,
47
- include: query.include
48
- }, isNil);
49
- const keyValue = query.keyValue;
50
- return {
51
- method: query.method,
52
- keyValue,
53
- options,
54
- args: [keyValue, options]
55
- };
56
- }
57
- if (query.kind === 'FieldGetQuery') {
58
- // todo
59
- }
60
- break;
61
- }
62
- case 'update': {
63
- const options = omitBy({
64
- pick: query.pick,
65
- omit: query.omit,
66
- include: query.include
67
- }, isNil);
68
- const { data } = query;
69
- const keyValue = query.keyValue;
70
- return {
71
- method: query.method,
72
- keyValue: query.keyValue,
73
- values: data,
74
- options,
75
- args: [keyValue, data, options]
76
- };
77
- }
78
- case 'delete': {
79
- const options = {};
80
- const keyValue = query.keyValue;
81
- return {
82
- method: query.method,
83
- keyValue,
84
- options,
85
- args: [keyValue, options]
86
- };
87
- }
88
- }
89
- throw new Error(`Unimplemented query type "${query.method}"`);
90
- }
91
- }
@@ -1,3 +0,0 @@
1
- import { I18n } from '@opra/common';
2
- import { I18nOptions } from '../interfaces/i18n-options.interface.js';
3
- export declare function createI18n(options?: I18nOptions): Promise<I18n>;
@@ -1,16 +0,0 @@
1
- import path from 'path';
2
- import { I18n } from '@opra/common';
3
- import { getCallerFile } from './get-caller-file.util.js';
4
- export async function createI18n(options) {
5
- const opts = {
6
- ...options,
7
- };
8
- delete opts.resourceDirs;
9
- const instance = I18n.createInstance(opts);
10
- await instance.init();
11
- await instance.loadResourceDir(path.resolve(getCallerFile(), '../../../i18n'));
12
- if (options?.resourceDirs)
13
- for (const dir of options.resourceDirs)
14
- await instance.loadResourceDir(dir);
15
- return instance;
16
- }
@@ -1 +0,0 @@
1
- export declare function getCallerFile(position?: number): string;
@@ -1,20 +0,0 @@
1
- const PATH_PATTERN = /^(?:file:\/\/)?(.+)$/;
2
- export function getCallerFile(position = 1) {
3
- if (position >= Error.stackTraceLimit) {
4
- throw new TypeError('getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `' +
5
- position + '` and Error.stackTraceLimit was: `' + Error.stackTraceLimit + '`');
6
- }
7
- const oldPrepareStackTrace = Error.prepareStackTrace;
8
- Error.prepareStackTrace = (_, stack) => stack;
9
- const stack = new Error().stack;
10
- Error.prepareStackTrace = oldPrepareStackTrace;
11
- if (stack !== null && typeof stack === 'object') {
12
- // stack[0] holds this file
13
- // stack[1] holds where this function was called
14
- const s = stack[position] ?
15
- stack[position].getFileName() : undefined;
16
- const m = s ? PATH_PATTERN.exec(s) : undefined;
17
- return m ? m[1] : '';
18
- }
19
- return '';
20
- }
File without changes