@entity-access/server-pages 1.0.8 → 1.0.11

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 (72) hide show
  1. package/dist/ServerPages.d.ts +1 -0
  2. package/dist/ServerPages.d.ts.map +1 -1
  3. package/dist/ServerPages.js +5 -0
  4. package/dist/ServerPages.js.map +1 -1
  5. package/dist/core/camelToChain.d.ts +3 -0
  6. package/dist/core/camelToChain.d.ts.map +1 -0
  7. package/dist/core/camelToChain.js +6 -0
  8. package/dist/core/camelToChain.js.map +1 -0
  9. package/dist/routes/api/entity/get.d.ts +7 -0
  10. package/dist/routes/api/entity/get.d.ts.map +1 -0
  11. package/dist/routes/api/entity/get.js +33 -0
  12. package/dist/routes/api/entity/get.js.map +1 -0
  13. package/dist/routes/api/entity/index.d.ts +11 -0
  14. package/dist/routes/api/entity/index.d.ts.map +1 -0
  15. package/dist/routes/api/entity/index.js +167 -0
  16. package/dist/routes/api/entity/index.js.map +1 -0
  17. package/dist/routes/api/entity/model/get.d.ts +7 -0
  18. package/dist/routes/api/entity/model/get.d.ts.map +1 -0
  19. package/dist/routes/api/entity/model/get.js +23 -0
  20. package/dist/routes/api/entity/model/get.js.map +1 -0
  21. package/dist/routes/api/entity/model.ts/get.d.ts +7 -0
  22. package/dist/routes/api/entity/model.ts/get.d.ts.map +1 -0
  23. package/dist/routes/api/entity/model.ts/get.js +23 -0
  24. package/dist/routes/api/entity/model.ts/get.js.map +1 -0
  25. package/dist/routes/api/entity/query/get.d.ts +6 -0
  26. package/dist/routes/api/entity/query/get.d.ts.map +1 -0
  27. package/dist/routes/api/entity/query/get.js +27 -0
  28. package/dist/routes/api/entity/query/get.js.map +1 -0
  29. package/dist/services/EntityAccessServer.d.ts +19 -0
  30. package/dist/services/EntityAccessServer.d.ts.map +1 -0
  31. package/dist/services/EntityAccessServer.js +77 -0
  32. package/dist/services/EntityAccessServer.js.map +1 -0
  33. package/dist/services/GraphService.d.ts +7 -0
  34. package/dist/services/GraphService.d.ts.map +1 -0
  35. package/dist/services/GraphService.js +72 -0
  36. package/dist/services/GraphService.js.map +1 -0
  37. package/dist/services/IndentedStringWriter.d.ts +12 -0
  38. package/dist/services/IndentedStringWriter.d.ts.map +1 -0
  39. package/dist/services/IndentedStringWriter.js +28 -0
  40. package/dist/services/IndentedStringWriter.js.map +1 -0
  41. package/dist/services/ModelService.d.ts +36 -0
  42. package/dist/services/ModelService.d.ts.map +1 -0
  43. package/dist/services/ModelService.js +188 -0
  44. package/dist/services/ModelService.js.map +1 -0
  45. package/dist/services/StringHelper.d.ts +6 -0
  46. package/dist/services/StringHelper.d.ts.map +1 -0
  47. package/dist/services/StringHelper.js +30 -0
  48. package/dist/services/StringHelper.js.map +1 -0
  49. package/dist/socket/SocketNamespace.d.ts +14 -0
  50. package/dist/socket/SocketNamespace.d.ts.map +1 -0
  51. package/dist/socket/SocketNamespace.js +76 -0
  52. package/dist/socket/SocketNamespace.js.map +1 -0
  53. package/dist/socket/SocketService.d.ts +15 -0
  54. package/dist/socket/SocketService.d.ts.map +1 -0
  55. package/dist/socket/SocketService.js +37 -0
  56. package/dist/socket/SocketService.js.map +1 -0
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/package.json +2 -1
  59. package/src/ServerPages.ts +6 -0
  60. package/src/core/camelToChain.ts +9 -0
  61. package/src/routes/api/entity/get.tsx +32 -0
  62. package/src/routes/api/entity/index.tsx +178 -0
  63. package/src/routes/api/entity/model/get.tsx +16 -0
  64. package/src/routes/api/entity/model.ts/get.tsx +16 -0
  65. package/src/routes/api/entity/query/get.ts +19 -0
  66. package/src/services/EntityAccessServer.ts +121 -0
  67. package/src/services/GraphService.ts +86 -0
  68. package/src/services/IndentedStringWriter.ts +33 -0
  69. package/src/services/ModelService.ts +257 -0
  70. package/src/services/StringHelper.ts +31 -0
  71. package/src/socket/SocketNamespace.ts +90 -0
  72. package/src/socket/SocketService.ts +34 -0
@@ -0,0 +1,72 @@
1
+ import SchemaRegistry from "@entity-access/entity-access/dist/decorators/SchemaRegistry.js";
2
+ import ModelService from "./ModelService.js";
3
+ class GraphService {
4
+ static prepareGraph(body) {
5
+ const r = this.prepare(body, new Map());
6
+ return r;
7
+ }
8
+ static prepare(body, visited) {
9
+ if (Array.isArray(body)) {
10
+ const r = [];
11
+ for (const iterator of body) {
12
+ r.push(this.prepare(iterator, visited));
13
+ }
14
+ return r;
15
+ }
16
+ if (!body) {
17
+ return body;
18
+ }
19
+ if (typeof body !== "object") {
20
+ return body;
21
+ }
22
+ if (body instanceof Date) {
23
+ return body;
24
+ }
25
+ let $id = visited.get(body);
26
+ if ($id) {
27
+ return { $ref: $id };
28
+ }
29
+ $id = visited.size + 1;
30
+ visited.set(body, $id);
31
+ const appendToGraph = body[this.appendToGraph]?.() ?? {};
32
+ const copy = {
33
+ $id,
34
+ ...appendToGraph
35
+ };
36
+ // check constructor
37
+ const { constructor } = Object.getPrototypeOf(body);
38
+ if (constructor !== Object) {
39
+ copy["$type"] = SchemaRegistry.entityNameForClass(constructor);
40
+ }
41
+ body = body[this.toGraph]?.() ?? body;
42
+ for (const key in body) {
43
+ if (ModelService.ignore(constructor, key)) {
44
+ continue;
45
+ }
46
+ if (Object.prototype.hasOwnProperty.call(body, key)) {
47
+ const element = body[key];
48
+ copy[key] = this.prepare(element, visited);
49
+ continue;
50
+ }
51
+ const e = body[key];
52
+ switch (typeof e) {
53
+ case "number":
54
+ case "boolean":
55
+ case "bigint":
56
+ case "string":
57
+ copy[key] = e;
58
+ continue;
59
+ case "object":
60
+ if (e instanceof Date) {
61
+ copy[key] = e;
62
+ }
63
+ continue;
64
+ }
65
+ }
66
+ return copy;
67
+ }
68
+ }
69
+ GraphService.toGraph = Symbol("toGraph");
70
+ GraphService.appendToGraph = Symbol("toGraph");
71
+ export default GraphService;
72
+ //# sourceMappingURL=GraphService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphService.js","sourceRoot":"","sources":["../../src/services/GraphService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export default class IndentedStringWriter {
2
+ private indentChar;
3
+ get indent(): number;
4
+ set indent(value: number);
5
+ private indention;
6
+ private prefix;
7
+ private content;
8
+ constructor(indentChar?: string);
9
+ writeLine(text?: string): void;
10
+ toString(): string;
11
+ }
12
+ //# sourceMappingURL=IndentedStringWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndentedStringWriter.d.ts","sourceRoot":"","sources":["../../src/services/IndentedStringWriter.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAkBzB,OAAO,CAAC,UAAU;IAhB9B,IAAW,MAAM,IAAI,MAAM,CAE1B;IACD,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,EAO9B;IAED,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAM;gBAED,UAAU,SAAS;IAIhC,SAAS,CAAC,IAAI,GAAE,MAAW;IAM3B,QAAQ;CAIlB"}
@@ -0,0 +1,28 @@
1
+ export default class IndentedStringWriter {
2
+ get indent() {
3
+ return this.indention;
4
+ }
5
+ set indent(value) {
6
+ this.indention = value;
7
+ let p = "";
8
+ for (let index = 0; index < value; index++) {
9
+ p += this.indentChar;
10
+ }
11
+ this.prefix = p;
12
+ }
13
+ constructor(indentChar = " ") {
14
+ this.indentChar = indentChar;
15
+ this.indention = 0;
16
+ this.prefix = "";
17
+ this.content = "";
18
+ }
19
+ writeLine(text = "") {
20
+ for (const iterator of text.split("\n")) {
21
+ this.content = this.content.concat(this.prefix, iterator.trimStart(), "\n");
22
+ }
23
+ }
24
+ toString() {
25
+ return this.content;
26
+ }
27
+ }
28
+ //# sourceMappingURL=IndentedStringWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndentedStringWriter.js","sourceRoot":"","sources":["../../src/services/IndentedStringWriter.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAErC,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAW,MAAM,CAAC,KAAa;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;YACzC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAMD,YAAoB,aAAa,MAAM;QAAnB,eAAU,GAAV,UAAU,CAAS;QAJ/B,cAAS,GAAW,CAAC,CAAC;QACtB,WAAM,GAAG,EAAE,CAAC;QACZ,YAAO,GAAG,EAAE,CAAC;IAIrB,CAAC;IAEM,SAAS,CAAC,OAAe,EAAE;QAC9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CAEJ"}
@@ -0,0 +1,36 @@
1
+ import EntityContext from "@entity-access/entity-access/dist/model/EntityContext.js";
2
+ import { IClassOf } from "@entity-access/entity-access/dist/decorators/IClassOf.js";
3
+ interface IModelProperty {
4
+ type?: string;
5
+ name?: string;
6
+ enum?: readonly string[];
7
+ help?: string;
8
+ ignore?: boolean;
9
+ readonly?: boolean;
10
+ }
11
+ export declare function JsonProperty(mp?: IModelProperty): (target: any, name: any) => void;
12
+ export declare const IgnoreJsonProperty: (target: any, name: any) => void;
13
+ export declare const ReadOnlyJsonProperty: (target: any, name: any) => void;
14
+ export interface IEntityKey {
15
+ name: string;
16
+ type: string;
17
+ }
18
+ export interface IEntityPropertyInfo extends IEntityKey {
19
+ isNullable?: boolean;
20
+ }
21
+ export interface IEntityNavigationProperty extends IEntityKey {
22
+ isCollection?: boolean;
23
+ }
24
+ export interface IEntityModel {
25
+ name?: string;
26
+ keys?: IEntityKey[];
27
+ properties?: IEntityPropertyInfo[];
28
+ navigationProperties?: IEntityNavigationProperty[];
29
+ }
30
+ export default class ModelService {
31
+ static ignore(t: IClassOf<any>, key: string): boolean;
32
+ static getModel(context: EntityContext): IEntityModel[];
33
+ static getModelDeclaration(context: EntityContext): string;
34
+ }
35
+ export {};
36
+ //# sourceMappingURL=ModelService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelService.d.ts","sourceRoot":"","sources":["../../src/services/ModelService.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,0DAA0D,CAAC;AAIpF,UAAU,cAAc;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,wBAAgB,YAAY,CAAC,EAAE,GAAE,cAAmB,oCAMnD;AAED,eAAO,MAAM,kBAAkB,kCAAiC,CAAC;AAEjE,eAAO,MAAM,oBAAoB,kCAAoC,CAAC;AAEtE,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAA0B,SAAQ,UAAU;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACtD;AAuFD,MAAM,CAAC,OAAO,OAAO,YAAY;WAEf,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM;WAIpC,QAAQ,CAAC,OAAO,EAAE,aAAa;WAU/B,mBAAmB,CAAC,OAAO,EAAE,aAAa;CAoG3D"}
@@ -0,0 +1,188 @@
1
+ import IndentedStringWriter from "./IndentedStringWriter.js";
2
+ import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
3
+ const modelProperties = Symbol("modelProperty");
4
+ export function JsonProperty(mp = {}) {
5
+ return (target, name) => {
6
+ mp.type ??= Reflect.getMetadata("design:type", target, name);
7
+ mp.name ??= name;
8
+ (target[modelProperties] ??= {})[name] = mp;
9
+ ;
10
+ };
11
+ }
12
+ export const IgnoreJsonProperty = JsonProperty({ ignore: true });
13
+ export const ReadOnlyJsonProperty = JsonProperty({ readonly: true });
14
+ const columnFrom = (c) => {
15
+ return {
16
+ name: c.name,
17
+ type: c.type?.name ?? c.type.toString(),
18
+ isNullable: !!c.nullable
19
+ };
20
+ };
21
+ const relationFrom = (r) => {
22
+ return {
23
+ name: r.name,
24
+ isCollection: r.isCollection,
25
+ type: r.relatedEntity.entityName
26
+ };
27
+ };
28
+ const modelFrom = (type) => {
29
+ const model = {
30
+ name: type.entityName,
31
+ keys: type.keys.map(columnFrom),
32
+ properties: type.columns.map(columnFrom),
33
+ navigationProperties: type.relations.map(relationFrom)
34
+ };
35
+ return model;
36
+ };
37
+ const getJSType = (column) => {
38
+ const { type, enum: enumValues } = column;
39
+ if (enumValues) {
40
+ return enumValues.map((x) => JSON.stringify(x)).join(" | ");
41
+ }
42
+ switch (type) {
43
+ case Number:
44
+ return "number";
45
+ case BigInt:
46
+ return "bigint";
47
+ case String:
48
+ return "string";
49
+ case Boolean:
50
+ return "boolean";
51
+ case Date:
52
+ case DateTime:
53
+ return "DateTime";
54
+ }
55
+ if (typeof type == "function") {
56
+ const mps = type.prototype[modelProperties];
57
+ if (mps) {
58
+ return `{ ${Object.entries(mps).map(([key, p]) => `${key}?: ${getJSType(p)}`).join(";")} }`;
59
+ }
60
+ return type.name;
61
+ }
62
+ return "any";
63
+ };
64
+ const getDefaults = (column) => {
65
+ if (column.generated) {
66
+ return;
67
+ }
68
+ if (column.key) {
69
+ return;
70
+ }
71
+ if (column.fkRelation) {
72
+ return;
73
+ }
74
+ const { type, enum: enumValues } = column;
75
+ if (enumValues) {
76
+ return [column.name, JSON.stringify(enumValues[0])];
77
+ }
78
+ switch (type) {
79
+ case Number:
80
+ return [column.name, "0"];
81
+ case BigInt:
82
+ return [column.name, "0n"];
83
+ case String:
84
+ return [column.name, `""`];
85
+ case Boolean:
86
+ return [column.name, "false"];
87
+ case Date:
88
+ return [column.name, "new DefaultFactory(() => new Date())"];
89
+ case DateTime:
90
+ return [column.name, "new DefaultFactory(() => new DateTime())"];
91
+ }
92
+ return;
93
+ };
94
+ export default class ModelService {
95
+ static ignore(t, key) {
96
+ return t.prototype?.[modelProperties]?.[key]?.ignore;
97
+ }
98
+ static getModel(context) {
99
+ const model = [];
100
+ for (const [type] of context.model.sources) {
101
+ const entityType = context.model.getEntityType(type);
102
+ model.push(modelFrom(entityType));
103
+ }
104
+ return model;
105
+ }
106
+ static getModelDeclaration(context) {
107
+ const writer = new IndentedStringWriter("\t");
108
+ writer.writeLine(`import DateTime from "@web-atoms/date-time/dist/DateTime";
109
+ import type IClrEntity from "@web-atoms/entity/dist/models/IClrEntity";
110
+ import { ICollection, IGeometry, IModel, Model, DefaultFactory } from "@web-atoms/entity/dist/services/BaseEntityService";
111
+ `);
112
+ for (const [type] of context.model.sources) {
113
+ const entityType = context.model.getEntityType(type);
114
+ const entityName = entityType.entityName;
115
+ const name = entityType.typeClass.name;
116
+ const defaults = [];
117
+ writer.writeLine(`export interface I${name} extends IClrEntity {`);
118
+ writer.indent++;
119
+ const enums = [];
120
+ const set = new Set();
121
+ const keys = [];
122
+ const mps = type.prototype[modelProperties];
123
+ for (const column of entityType.columns) {
124
+ if (column.key) {
125
+ keys.push(column.name);
126
+ }
127
+ set.add(column.name);
128
+ const jsonProperties = mps?.[column.name];
129
+ if (jsonProperties?.ignore) {
130
+ continue;
131
+ }
132
+ const isReadonly = column.generated || jsonProperties?.readonly ? " readonly " : "";
133
+ if (jsonProperties?.help) {
134
+ writer.writeLine(`/** ${jsonProperties.help} */`);
135
+ }
136
+ if (column.enum) {
137
+ enums.push(`export const ${name}${column.name[0].toUpperCase()}${column.name.substring(1)}Array = ${JSON.stringify(column.enum.map((x) => ({ label: x, value: x })))};`);
138
+ }
139
+ const jsType = getJSType(column);
140
+ if (column.nullable) {
141
+ writer.writeLine(`${isReadonly}${column.name}?: ${jsType} | null;`);
142
+ }
143
+ else {
144
+ writer.writeLine(`${isReadonly}${column.name}?: ${jsType};`);
145
+ const defs = getDefaults(column);
146
+ if (defs) {
147
+ const [k, v] = defs;
148
+ defaults.push(`${k}: ${v}`);
149
+ }
150
+ }
151
+ }
152
+ // additional model properties...
153
+ if (mps) {
154
+ for (const [key, property] of Object.entries(mps)) {
155
+ if (set.has(key)) {
156
+ continue;
157
+ }
158
+ const jsType = getJSType(property);
159
+ if (property.help) {
160
+ writer.writeLine(`/** ${property.help} */`);
161
+ }
162
+ writer.writeLine(`${key}?: ${jsType};`);
163
+ }
164
+ }
165
+ for (const relation of entityType.relations) {
166
+ if (relation.isCollection) {
167
+ writer.writeLine(`${relation.name}?: ICollection<I${relation.relatedTypeClass.name}>;`);
168
+ }
169
+ else {
170
+ writer.writeLine(`${relation.name}?: I${relation.relatedTypeClass.name};`);
171
+ }
172
+ }
173
+ writer.indent--;
174
+ writer.writeLine(`}`);
175
+ writer.writeLine();
176
+ if (enums.length) {
177
+ for (const iterator of enums) {
178
+ writer.writeLine(iterator);
179
+ }
180
+ writer.writeLine();
181
+ }
182
+ writer.writeLine(`export const ${name}: IModel<I${name}> = new Model<I${name}>("${entityName}", ${JSON.stringify(keys)}, { ${defaults.join(",")} });`);
183
+ writer.writeLine();
184
+ }
185
+ return writer.toString();
186
+ }
187
+ }
188
+ //# sourceMappingURL=ModelService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelService.js","sourceRoot":"","sources":["../../src/services/ModelService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const StringHelper: {
2
+ replaceAll: (text: string, search: string, replace: string) => string;
3
+ remove00: (text: string) => string;
4
+ extractFloat: (text: string, def?: number) => number;
5
+ };
6
+ //# sourceMappingURL=StringHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringHelper.d.ts","sourceRoot":"","sources":["../../src/services/StringHelper.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;uBACF,MAAM,UAAU,MAAM,WAAW,MAAM;qBAezC,MAAM;yBAOF,MAAM,QAAO,MAAM;CAO3C,CAAC"}
@@ -0,0 +1,30 @@
1
+ export const StringHelper = {
2
+ replaceAll: (text, search, replace) => {
3
+ if (!text || !search) {
4
+ return text;
5
+ }
6
+ let index = 0;
7
+ do {
8
+ index = text.indexOf(search, index);
9
+ if (index === -1) {
10
+ break;
11
+ }
12
+ text = text.substring(0, index) + replace + text.substring(index + search.length);
13
+ } while (true);
14
+ return text;
15
+ },
16
+ remove00: (text) => {
17
+ if (!text) {
18
+ return text;
19
+ }
20
+ return text.replace(/\x00/g, "");
21
+ },
22
+ extractFloat: (text, def = 0) => {
23
+ const group = /(\d+)/.exec(text);
24
+ if (group?.length) {
25
+ return parseFloat(group[0]);
26
+ }
27
+ return def;
28
+ }
29
+ };
30
+ //# sourceMappingURL=StringHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringHelper.js","sourceRoot":"","sources":["../../src/services/StringHelper.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,UAAU,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE;QAC1D,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,GAAG,CAAC;YACA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;YACV,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC,QAAO,IAAI,EAAE;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,YAAY,EAAE,CAAC,IAAY,EAAE,MAAc,CAAC,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAChB,OAAO,UAAU,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Namespace, Server, Socket } from "socket.io";
2
+ export declare function Receive(target: any, key: any): void;
3
+ export declare function Send(target: typeof SocketNamespace, key: any): {
4
+ value: (this: SocketNamespace, room: any, ...args: any[]) => boolean;
5
+ };
6
+ export default abstract class SocketNamespace {
7
+ static server: Namespace;
8
+ static attach(server: Server, name?: string): void;
9
+ protected room: string;
10
+ protected socket: Socket;
11
+ abstract join(...a: any[]): any;
12
+ leave(): void | Promise<void>;
13
+ }
14
+ //# sourceMappingURL=SocketNamespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketNamespace.d.ts","sourceRoot":"","sources":["../../src/socket/SocketNamespace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOtD,wBAAgB,OAAO,CAAC,MAAM,KAAA,EAAE,GAAG,KAAA,QAYlC;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,OAAO,eAAe,EAAE,GAAG,KAAA;kBACvB,eAAe,sBAAkB,GAAG,EAAE;EAMtE;AAED,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,eAAe;IAEzC,OAAc,MAAM,EAAE,SAAS,CAAC;WAElB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAyClD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,GAAG,EAAE;IAE1B,KAAK;CAIR"}
@@ -0,0 +1,76 @@
1
+ /* eslint-disable no-console */
2
+ import { ServiceProvider, injectServiceKeysSymbol } from "@entity-access/entity-access/dist/di/di.js";
3
+ import { parse } from "cookie";
4
+ import { camelToChain } from "../core/camelToChain.js";
5
+ import TokenService from "../services/TokenService.js";
6
+ import CookieService from "../services/CookieService.js";
7
+ import SessionUser from "../core/SessionUser.js";
8
+ export function Receive(target, key) {
9
+ const method = target[key];
10
+ target[key] = async function (...a) {
11
+ const types = method[injectServiceKeysSymbol];
12
+ if (types) {
13
+ for (let index = a.length; index < types.length; index++) {
14
+ const element = ServiceProvider.resolve(this, types[index]);
15
+ a.push(element);
16
+ }
17
+ }
18
+ return method.apply(this, a);
19
+ };
20
+ }
21
+ export function Send(target, key) {
22
+ const value = function (room, ...args) {
23
+ return target.server?.to(room)?.emit(key, ...args);
24
+ };
25
+ return {
26
+ value
27
+ };
28
+ }
29
+ export default class SocketNamespace {
30
+ static attach(server, name) {
31
+ if (!name) {
32
+ name = this.name;
33
+ if (name.endsWith("Namespace")) {
34
+ name = name.substring(0, name.length - "Namespace".length);
35
+ }
36
+ name = camelToChain(name);
37
+ }
38
+ console.log(`Listening Sockets on /${name}`);
39
+ const s = server.of("/" + name);
40
+ this.server = s;
41
+ const tokenService = ServiceProvider.resolve(this, TokenService);
42
+ const cookieService = ServiceProvider.resolve(this, CookieService);
43
+ s.on("connection", (socket) => {
44
+ socket.onAny(async (methodName, ...args) => {
45
+ const cookies = parse(socket.request.headers.cookie);
46
+ const cookie = cookies[tokenService.authCookieName];
47
+ const sessionUser = await cookieService.createSessionUserFromCookie(cookie, socket.handshake.address);
48
+ const scope = ServiceProvider.createScope(this);
49
+ try {
50
+ scope.add(SessionUser, sessionUser);
51
+ const socketEvent = scope.create(this);
52
+ socketEvent.socket = socket;
53
+ const method = socketEvent[methodName];
54
+ const types = method[injectServiceKeysSymbol];
55
+ if (types) {
56
+ for (let index = args.length; index < types.length; index++) {
57
+ const element = scope.resolve(types[index]);
58
+ args.push(element);
59
+ }
60
+ }
61
+ await socketEvent[methodName](...args);
62
+ }
63
+ catch (error) {
64
+ console.error(error);
65
+ }
66
+ finally {
67
+ scope.dispose();
68
+ }
69
+ });
70
+ });
71
+ }
72
+ leave() {
73
+ return this.socket.leave(this.room);
74
+ }
75
+ }
76
+ //# sourceMappingURL=SocketNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketNamespace.js","sourceRoot":"","sources":["../../src/socket/SocketNamespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ /// <reference types="node" resolution-mode="require"/>
4
+ import { Http2SecureServer } from "http2";
5
+ import { Server as HttpServer } from "http";
6
+ import { Server as HttpsServer } from "https";
7
+ import { Server } from "socket.io";
8
+ export default class SocketService {
9
+ private tokenService;
10
+ private cookieService;
11
+ private server;
12
+ constructor();
13
+ attach(server: Http2SecureServer | HttpsServer | HttpServer): Server;
14
+ }
15
+ //# sourceMappingURL=SocketService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketService.d.ts","sourceRoot":"","sources":["../../src/socket/SocketService.ts"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAK3C,MAAM,CAAC,OAAO,OAAO,aAAa;IAG9B,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,MAAM,CAAS;;IAMvB,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM;CAOvE"}
@@ -0,0 +1,37 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ /* eslint-disable no-console */
11
+ import Inject, { RegisterSingleton } from "@entity-access/entity-access/dist/di/di.js";
12
+ import { Server } from "socket.io";
13
+ import CookieService from "../services/CookieService.js";
14
+ import TokenService from "../services/TokenService.js";
15
+ let SocketService = class SocketService {
16
+ constructor() {
17
+ this.server = new Server();
18
+ }
19
+ attach(server) {
20
+ this.server.attach(server);
21
+ return this.server;
22
+ }
23
+ };
24
+ __decorate([
25
+ Inject,
26
+ __metadata("design:type", TokenService)
27
+ ], SocketService.prototype, "tokenService", void 0);
28
+ __decorate([
29
+ Inject,
30
+ __metadata("design:type", CookieService)
31
+ ], SocketService.prototype, "cookieService", void 0);
32
+ SocketService = __decorate([
33
+ RegisterSingleton,
34
+ __metadata("design:paramtypes", [])
35
+ ], SocketService);
36
+ export default SocketService;
37
+ //# sourceMappingURL=SocketService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketService.js","sourceRoot":"","sources":["../../src/socket/SocketService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAMvF,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAC3C,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AAGxC,IAAM,aAAa,GAAnB,MAAM,aAAa;IAU9B;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,MAAoD;QAEvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CAEJ,CAAA;AAlBW;IADP,MAAM;8BACe,YAAY;mDAAC;AAG3B;IADP,MAAM;8BACgB,aAAa;oDAAC;AANpB,aAAa;IADjC,iBAAiB;;GACG,aAAa,CAqBjC;eArBoB,aAAa"}