remult 0.14.7 → 0.14.10

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 (152) hide show
  1. package/LICENSE +21 -0
  2. package/esm/assign.d.ts +1 -0
  3. package/esm/assign.js +5 -0
  4. package/esm/classType.d.ts +3 -0
  5. package/esm/classType.js +1 -0
  6. package/esm/graphql.d.ts +5 -0
  7. package/esm/graphql.js +102 -0
  8. package/esm/index.d.ts +36 -0
  9. package/esm/index.js +30 -0
  10. package/esm/inputTypes.d.ts +9 -0
  11. package/esm/inputTypes.js +9 -0
  12. package/esm/postgres/index.d.ts +2 -0
  13. package/esm/postgres/index.js +2 -0
  14. package/esm/postgres/postgres-data-provider.d.ts +28 -0
  15. package/esm/postgres/postgres-data-provider.js +97 -0
  16. package/esm/postgres/schema-builder.d.ts +15 -0
  17. package/esm/postgres/schema-builder.js +128 -0
  18. package/esm/remult-express.d.ts +5 -0
  19. package/esm/remult-express.js +16 -0
  20. package/esm/remult-knex/index.d.ts +51 -0
  21. package/esm/remult-knex/index.js +381 -0
  22. package/esm/remult-middleware.d.ts +2 -0
  23. package/esm/remult-middleware.js +63 -0
  24. package/esm/remult-mongo.d.ts +9 -0
  25. package/esm/remult-mongo.js +220 -0
  26. package/esm/server/JsonEntityFileStorage.d.ts +7 -0
  27. package/esm/server/JsonEntityFileStorage.js +20 -0
  28. package/esm/server/expressBridge.d.ts +140 -0
  29. package/esm/server/expressBridge.js +668 -0
  30. package/esm/server/index.d.ts +4 -0
  31. package/esm/server/index.js +4 -0
  32. package/esm/server/register-actions-on-server.d.ts +3 -0
  33. package/esm/server/register-actions-on-server.js +24 -0
  34. package/esm/server/register-entities-on-server.d.ts +3 -0
  35. package/esm/server/register-entities-on-server.js +15 -0
  36. package/esm/src/__EntityValueProvider.d.ts +10 -0
  37. package/esm/src/__EntityValueProvider.js +1 -0
  38. package/esm/src/__RowsOfDataForTesting.d.ts +3 -0
  39. package/esm/src/__RowsOfDataForTesting.js +1 -0
  40. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +5 -0
  41. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +113 -0
  42. package/esm/src/backend-tests/my-test.backend-spec.d.ts +1 -0
  43. package/esm/src/backend-tests/my-test.backend-spec.js +49 -0
  44. package/esm/src/column-interfaces.d.ts +95 -0
  45. package/esm/src/column-interfaces.js +7 -0
  46. package/esm/src/column.d.ts +49 -0
  47. package/esm/src/column.js +133 -0
  48. package/esm/src/context.d.ts +124 -0
  49. package/esm/src/context.js +285 -0
  50. package/esm/src/data-api.d.ts +33 -0
  51. package/esm/src/data-api.js +204 -0
  52. package/esm/src/data-interfaces.d.ts +37 -0
  53. package/esm/src/data-interfaces.js +12 -0
  54. package/esm/src/data-providers/array-entity-data-provider.d.ts +22 -0
  55. package/esm/src/data-providers/array-entity-data-provider.js +264 -0
  56. package/esm/src/data-providers/in-memory-database.d.ts +9 -0
  57. package/esm/src/data-providers/in-memory-database.js +16 -0
  58. package/esm/src/data-providers/json-data-provider.d.ts +12 -0
  59. package/esm/src/data-providers/json-data-provider.js +52 -0
  60. package/esm/src/data-providers/rest-data-provider.d.ts +35 -0
  61. package/esm/src/data-providers/rest-data-provider.js +188 -0
  62. package/esm/src/data-providers/sql-database.d.ts +16 -0
  63. package/esm/src/data-providers/sql-database.js +261 -0
  64. package/esm/src/data-providers/web-sql-data-provider.d.ts +18 -0
  65. package/esm/src/data-providers/web-sql-data-provider.js +121 -0
  66. package/esm/src/entity.d.ts +82 -0
  67. package/esm/src/entity.js +1 -0
  68. package/esm/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
  69. package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +139 -0
  70. package/esm/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
  71. package/esm/src/filter/filter-consumer-bridge-to-url-builder.js +1 -0
  72. package/esm/src/filter/filter-interfaces.d.ts +85 -0
  73. package/esm/src/filter/filter-interfaces.js +467 -0
  74. package/esm/src/id-entity.d.ts +4 -0
  75. package/esm/src/id-entity.js +8 -0
  76. package/esm/src/remult3/RepositoryImplementation.d.ts +326 -0
  77. package/esm/src/remult3/RepositoryImplementation.js +1806 -0
  78. package/esm/src/remult3/index.d.ts +2 -0
  79. package/esm/src/remult3/index.js +2 -0
  80. package/esm/src/remult3/remult3.d.ts +312 -0
  81. package/esm/src/remult3/remult3.js +1 -0
  82. package/esm/src/server-action.d.ts +70 -0
  83. package/esm/src/server-action.js +365 -0
  84. package/esm/src/shared-tests/db-tests-setup.d.ts +23 -0
  85. package/esm/src/shared-tests/db-tests-setup.js +66 -0
  86. package/esm/src/shared-tests/db-tests.db-tests.d.ts +26 -0
  87. package/esm/src/shared-tests/db-tests.db-tests.js +723 -0
  88. package/esm/src/shared-tests/deleteAll.d.ts +2 -0
  89. package/esm/src/shared-tests/deleteAll.js +4 -0
  90. package/esm/src/shared-tests/entityWithValidations.d.ts +14 -0
  91. package/esm/src/shared-tests/entityWithValidations.js +53 -0
  92. package/esm/src/shared-tests/index.d.ts +4 -0
  93. package/esm/src/shared-tests/index.js +4 -0
  94. package/esm/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  95. package/esm/src/shared-tests/test-custom-id-column.spec.js +62 -0
  96. package/esm/src/shared-tests/test-special-value.spec.d.ts +10 -0
  97. package/esm/src/shared-tests/test-special-value.spec.js +88 -0
  98. package/esm/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  99. package/esm/src/shared-tests/test-update-with-null.spec.js +47 -0
  100. package/esm/src/sort.d.ts +15 -0
  101. package/esm/src/sort.js +82 -0
  102. package/esm/src/sql-command.d.ts +15 -0
  103. package/esm/src/sql-command.js +1 -0
  104. package/esm/src/tests/Done.d.ts +5 -0
  105. package/esm/src/tests/Done.js +11 -0
  106. package/esm/src/tests/TestDataApiResponse.d.ts +10 -0
  107. package/esm/src/tests/TestDataApiResponse.js +22 -0
  108. package/esm/src/tests/c.d.ts +8 -0
  109. package/esm/src/tests/c.js +22 -0
  110. package/esm/src/tests/createData.d.ts +7 -0
  111. package/esm/src/tests/createData.js +22 -0
  112. package/esm/src/tests/d.d.ts +6 -0
  113. package/esm/src/tests/d.js +19 -0
  114. package/esm/src/tests/dWithPrefilter.d.ts +7 -0
  115. package/esm/src/tests/dWithPrefilter.js +32 -0
  116. package/esm/src/tests/entityForCustomFilter.d.ts +16 -0
  117. package/esm/src/tests/entityForCustomFilter.js +44 -0
  118. package/esm/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  119. package/esm/src/tests/entityWithValidationsOnColumn.js +21 -0
  120. package/esm/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
  121. package/esm/src/tests/frontend-database-tests-setup.spec.js +38 -0
  122. package/esm/src/tests/h.d.ts +6 -0
  123. package/esm/src/tests/h.js +35 -0
  124. package/esm/src/tests/remult-3-entities.d.ts +23 -0
  125. package/esm/src/tests/remult-3-entities.js +72 -0
  126. package/esm/src/tests/tasks.d.ts +6 -0
  127. package/esm/src/tests/tasks.js +24 -0
  128. package/esm/src/tests/testHelper.spec.d.ts +34 -0
  129. package/esm/src/tests/testHelper.spec.js +217 -0
  130. package/esm/src/tests/testModel/models.d.ts +16 -0
  131. package/esm/src/tests/testModel/models.js +31 -0
  132. package/esm/src/validators.d.ts +14 -0
  133. package/esm/src/validators.js +33 -0
  134. package/esm/urlBuilder.d.ts +6 -0
  135. package/esm/urlBuilder.js +19 -0
  136. package/esm/valueConverters.d.ts +12 -0
  137. package/esm/valueConverters.js +169 -0
  138. package/index.d.ts +1 -0
  139. package/index.js +1 -0
  140. package/package.json +22 -1
  141. package/postgres/index.d.ts +1 -0
  142. package/postgres/index.js +1 -0
  143. package/postgres/postgres-data-provider.d.ts +1 -13
  144. package/postgres/postgres-data-provider.js +28 -262
  145. package/postgres/schema-builder.d.ts +15 -0
  146. package/postgres/schema-builder.js +270 -0
  147. package/readme.md +68 -30
  148. package/src/data-providers/web-sql-data-provider.js +4 -3
  149. package/src/entity.d.ts +9 -2
  150. package/src/remult3/RepositoryImplementation.js +11 -3
  151. package/src/shared-tests/test-update-with-null.spec.js +38 -0
  152. package/valueConverters.js +4 -0
@@ -0,0 +1,20 @@
1
+ import * as path from 'path';
2
+ import * as fs from 'fs';
3
+ export class JsonEntityFileStorage {
4
+ constructor(folderPath) {
5
+ this.folderPath = folderPath;
6
+ }
7
+ getItem(entityDbName) {
8
+ let fn = path.join(this.folderPath, entityDbName) + '.json';
9
+ if (fs.existsSync(fn)) {
10
+ return fs.readFileSync(fn).toString();
11
+ }
12
+ return undefined;
13
+ }
14
+ setItem(entityDbName, json) {
15
+ if (!fs.existsSync(this.folderPath)) {
16
+ fs.mkdirSync(this.folderPath);
17
+ }
18
+ return fs.writeFileSync(path.join(this.folderPath, entityDbName) + '.json', json);
19
+ }
20
+ }
@@ -0,0 +1,140 @@
1
+ import { queuedJobInfoResponse } from '../src/server-action';
2
+ import { DataProvider } from '../src/data-interfaces';
3
+ import { DataApi, DataApiRequest, DataApiResponse } from '../src/data-api';
4
+ import { AllowedForInstance, Remult } from '../src/context';
5
+ import { ClassType } from '../classType';
6
+ import { Repository } from '../src/remult3';
7
+ import { IdEntity } from '../src/id-entity';
8
+ export declare type RemultMiddlewareOptions = {
9
+ /** Sets a database connection for Remult.
10
+ *
11
+ * @see [Connecting to a Database](https://remult.dev/docs/databases.html).
12
+ */
13
+ dataProvider?: DataProvider | Promise<DataProvider> | (() => Promise<DataProvider | undefined>);
14
+ disableAutoApi?: boolean;
15
+ queueStorage?: QueueStorage;
16
+ initRequest?: (remult: Remult, origReq: GenericRequest) => Promise<void>;
17
+ initApi?: (remult: Remult) => void | Promise<void>;
18
+ logApiEndPoints?: boolean;
19
+ defaultGetLimit?: number;
20
+ entities?: ClassType<any>[];
21
+ controllers?: ClassType<any>[];
22
+ bodyParser?: boolean;
23
+ rootPath?: string;
24
+ };
25
+ export declare function remultMiddlewareBase(app: GenericRouter, options: RemultMiddlewareOptions): RemultExpressBridge;
26
+ export interface RemultExpressBridge extends GenericRequestHandler {
27
+ getRemult(req: GenericRequest): Promise<Remult>;
28
+ openApiDoc(options: {
29
+ title: string;
30
+ }): any;
31
+ addArea(rootUrl: string): any;
32
+ }
33
+ export interface GenericRequest {
34
+ method: any;
35
+ path: any;
36
+ originalUrl: any;
37
+ query: any;
38
+ body: any;
39
+ params: any;
40
+ }
41
+ export interface GenericResponse {
42
+ status(arg0: number): any;
43
+ statusCode: number;
44
+ json(data: any): any;
45
+ writeHead(status: number): {
46
+ end: VoidFunction;
47
+ };
48
+ }
49
+ export declare type GenericRouter = GenericRequestHandler & {
50
+ route(path: string): SpecificRoute;
51
+ };
52
+ export declare type SpecificRoute = {
53
+ get(handler: GenericRequestHandler): SpecificRoute;
54
+ put(handler: GenericRequestHandler): SpecificRoute;
55
+ post(handler: GenericRequestHandler): SpecificRoute;
56
+ delete(handler: GenericRequestHandler): SpecificRoute;
57
+ };
58
+ export declare type GenericRequestHandler = (req: GenericRequest, res: GenericResponse, next: VoidFunction) => void;
59
+ declare class ExpressBridge {
60
+ private app;
61
+ queue: inProcessQueueHandler;
62
+ initRequest: (remult: Remult, origReq: GenericRequest) => Promise<void>;
63
+ dataProvider: DataProvider | Promise<DataProvider>;
64
+ openApiDoc(options: {
65
+ title: string;
66
+ version?: string;
67
+ }): any;
68
+ backendMethodsOpenApi: {
69
+ path: string;
70
+ allowed: AllowedForInstance<any>;
71
+ tag: string;
72
+ }[];
73
+ constructor(app: GenericRouter, queue: inProcessQueueHandler, initRequest: (remult: Remult, origReq: GenericRequest) => Promise<void>, dataProvider: DataProvider | Promise<DataProvider>);
74
+ logApiEndPoints: boolean;
75
+ private firstArea;
76
+ addArea(rootUrl: string): SiteArea;
77
+ getRemult(req?: GenericRequest): Promise<Remult>;
78
+ }
79
+ export declare class SiteArea {
80
+ private bridge;
81
+ private app;
82
+ private rootUrl;
83
+ private logApiEndpoints;
84
+ constructor(bridge: ExpressBridge, app: GenericRouter, rootUrl: string, logApiEndpoints: boolean);
85
+ add(key: string, dataApiFactory: ((req: Remult) => DataApi)): void;
86
+ process(what: (remult: Remult, myReq: DataApiRequest, myRes: DataApiResponse, origReq: GenericRequest) => Promise<void>): (req: GenericRequest, res: GenericResponse) => Promise<void>;
87
+ getRemult(req: GenericRequest): Promise<Remult>;
88
+ initQueue(): void;
89
+ addAction(action: {
90
+ __register: (reg: (url: string, queue: boolean, allowed: AllowedForInstance<any>, what: ((data: any, req: Remult, res: DataApiResponse) => void)) => void) => void;
91
+ }): void;
92
+ }
93
+ export declare class ExpressRequestBridgeToDataApiRequest implements DataApiRequest {
94
+ private r;
95
+ get(key: string): any;
96
+ constructor(r: GenericRequest);
97
+ }
98
+ declare class inProcessQueueHandler {
99
+ private storage;
100
+ constructor(storage: QueueStorage);
101
+ submitJob(url: string, req: Remult, body: any): Promise<string>;
102
+ mapQueuedAction(url: string, what: (data: any, r: Remult, res: ApiActionResponse) => void): void;
103
+ actions: Map<string, (data: any, r: Remult, res: ApiActionResponse) => void>;
104
+ getJobInfo(queuedJobId: string): Promise<queuedJobInfo>;
105
+ }
106
+ export interface queuedJobInfo {
107
+ info: queuedJobInfoResponse;
108
+ userId: string;
109
+ setErrorResult(error: any): void;
110
+ setResult(result: any): void;
111
+ setProgress(progress: number): void;
112
+ }
113
+ export interface ApiActionResponse {
114
+ error(error: any): void;
115
+ success(result: any): void;
116
+ progress(progress: number): void;
117
+ }
118
+ export interface QueueStorage {
119
+ createJob(url: string, userId: string): Promise<string>;
120
+ getJobInfo(queuedJobId: string): Promise<queuedJobInfo>;
121
+ }
122
+ export declare class EntityQueueStorage implements QueueStorage {
123
+ private repo;
124
+ constructor(repo: Repository<JobsInQueueEntity>);
125
+ sync: Promise<any>;
126
+ doSync<T>(what: () => Promise<T>): Promise<any>;
127
+ getJobInfo(queuedJobId: string): Promise<queuedJobInfo>;
128
+ createJob(url: string, userId: string): Promise<string>;
129
+ }
130
+ export declare class JobsInQueueEntity extends IdEntity {
131
+ userId: string;
132
+ url: string;
133
+ submitTime: Date;
134
+ doneTime: Date;
135
+ result: string;
136
+ done: boolean;
137
+ error: boolean;
138
+ progress: number;
139
+ }
140
+ export {};