@mayhem93/nexxus-core-lib 0.0.1 → 0.0.3

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 (87) hide show
  1. package/dist-cjs/common/BuiltinSchemas.js +24 -5
  2. package/dist-cjs/common/BuiltinSchemas.js.map +1 -1
  3. package/dist-cjs/common/FilterQuery.js +5 -18
  4. package/dist-cjs/common/FilterQuery.js.map +1 -1
  5. package/dist-cjs/common/InferModel.js +3 -0
  6. package/dist-cjs/common/InferModel.js.map +1 -0
  7. package/dist-cjs/common/JsonPatch.js +42 -225
  8. package/dist-cjs/common/JsonPatch.js.map +1 -1
  9. package/dist-cjs/common/SchemaValidator.js +100 -29
  10. package/dist-cjs/common/SchemaValidator.js.map +1 -1
  11. package/dist-cjs/index.js +4 -0
  12. package/dist-cjs/index.js.map +1 -1
  13. package/dist-cjs/lib/BaseService.js +6 -6
  14. package/dist-cjs/lib/BaseService.js.map +1 -1
  15. package/dist-cjs/lib/ConfigManager.js +56 -25
  16. package/dist-cjs/lib/ConfigManager.js.map +1 -1
  17. package/dist-cjs/lib/ConfigProvider.js +14 -1
  18. package/dist-cjs/lib/ConfigProvider.js.map +1 -1
  19. package/dist-cjs/lib/Exceptions.js +22 -4
  20. package/dist-cjs/lib/Exceptions.js.map +1 -1
  21. package/dist-cjs/lib/Logger.js +138 -65
  22. package/dist-cjs/lib/Logger.js.map +1 -1
  23. package/dist-cjs/lib/ServiceResolver.js +57 -0
  24. package/dist-cjs/lib/ServiceResolver.js.map +1 -0
  25. package/dist-cjs/models/AppModel.js +17 -3
  26. package/dist-cjs/models/AppModel.js.map +1 -1
  27. package/dist-cjs/models/Application.js +51 -12
  28. package/dist-cjs/models/Application.js.map +1 -1
  29. package/dist-cjs/models/BaseModel.js.map +1 -1
  30. package/dist-cjs/models/BuiltinModel.js +8 -0
  31. package/dist-cjs/models/BuiltinModel.js.map +1 -0
  32. package/dist-cjs/models/User.js +12 -3
  33. package/dist-cjs/models/User.js.map +1 -1
  34. package/dist-esm/common/BuiltinSchemas.js +23 -4
  35. package/dist-esm/common/BuiltinSchemas.js.map +1 -1
  36. package/dist-esm/common/FilterQuery.js +6 -19
  37. package/dist-esm/common/FilterQuery.js.map +1 -1
  38. package/dist-esm/common/InferModel.js +2 -0
  39. package/dist-esm/common/InferModel.js.map +1 -0
  40. package/dist-esm/common/JsonPatch.js +44 -227
  41. package/dist-esm/common/JsonPatch.js.map +1 -1
  42. package/dist-esm/common/SchemaValidator.js +100 -29
  43. package/dist-esm/common/SchemaValidator.js.map +1 -1
  44. package/dist-esm/index.js +4 -0
  45. package/dist-esm/index.js.map +1 -1
  46. package/dist-esm/lib/BaseService.js +8 -8
  47. package/dist-esm/lib/BaseService.js.map +1 -1
  48. package/dist-esm/lib/ConfigManager.js +56 -25
  49. package/dist-esm/lib/ConfigManager.js.map +1 -1
  50. package/dist-esm/lib/ConfigProvider.js +14 -1
  51. package/dist-esm/lib/ConfigProvider.js.map +1 -1
  52. package/dist-esm/lib/Exceptions.js +20 -3
  53. package/dist-esm/lib/Exceptions.js.map +1 -1
  54. package/dist-esm/lib/Logger.js +139 -66
  55. package/dist-esm/lib/Logger.js.map +1 -1
  56. package/dist-esm/lib/ServiceResolver.js +52 -0
  57. package/dist-esm/lib/ServiceResolver.js.map +1 -0
  58. package/dist-esm/models/AppModel.js +17 -3
  59. package/dist-esm/models/AppModel.js.map +1 -1
  60. package/dist-esm/models/Application.js +52 -13
  61. package/dist-esm/models/Application.js.map +1 -1
  62. package/dist-esm/models/BaseModel.js.map +1 -1
  63. package/dist-esm/models/BuiltinModel.js +4 -0
  64. package/dist-esm/models/BuiltinModel.js.map +1 -0
  65. package/dist-esm/models/User.js +11 -2
  66. package/dist-esm/models/User.js.map +1 -1
  67. package/dist-types/common/BuiltinSchemas.d.ts +59 -5
  68. package/dist-types/common/FilterQuery.d.ts +3 -11
  69. package/dist-types/common/InferModel.d.ts +29 -0
  70. package/dist-types/common/JsonPatch.d.ts +4 -45
  71. package/dist-types/common/ModelTypes.d.ts +1 -0
  72. package/dist-types/common/QueuePayloads.d.ts +48 -26
  73. package/dist-types/common/SchemaValidator.d.ts +42 -2
  74. package/dist-types/index.d.ts +4 -0
  75. package/dist-types/lib/BaseService.d.ts +51 -1
  76. package/dist-types/lib/ConfigManager.d.ts +50 -13
  77. package/dist-types/lib/ConfigProvider.d.ts +6 -0
  78. package/dist-types/lib/Exceptions.d.ts +15 -2
  79. package/dist-types/lib/Logger.d.ts +84 -14
  80. package/dist-types/lib/ServiceResolver.d.ts +23 -0
  81. package/dist-types/models/AppModel.d.ts +31 -5
  82. package/dist-types/models/Application.d.ts +36 -8
  83. package/dist-types/models/BaseModel.d.ts +14 -12
  84. package/dist-types/models/BuiltinModel.d.ts +3 -0
  85. package/dist-types/models/User.d.ts +15 -13
  86. package/package.json +4 -4
  87. package/src/schemas/winston-logger.schema.json +51 -6
@@ -1,23 +1,25 @@
1
- import { NexxusApplication, NexxusApplicationModelType } from "./Application";
2
- import { NexxusApplicationUser, NexxusUserModelType } from "./User";
3
- import { NexxusAppModel, NexxusAppModelType } from "./AppModel";
4
- export type AnyNexxusModel = NexxusApplication | NexxusApplicationUser | NexxusAppModel;
5
- export type AnyNexxusModelType = NexxusApplicationModelType | NexxusUserModelType | NexxusAppModelType;
6
- export interface INexxusBaseModel<TType extends string = string> {
1
+ import type { NexxusApplication, INexxusApplication } from "./Application";
2
+ import type { NexxusUser, INexxusUser } from "./User";
3
+ import type { NexxusAppModel, INexxusAppModel } from "./AppModel";
4
+ export declare const MODEL_REGISTRY: {
5
+ readonly application: "application";
6
+ readonly user: "user";
7
+ };
8
+ export type NexxusBuiltinTypeName = typeof MODEL_REGISTRY[keyof typeof MODEL_REGISTRY];
9
+ export type NexxusModelTypeName = NexxusBuiltinTypeName | (string & {});
10
+ export interface INexxusBaseModel<TType extends NexxusModelTypeName = NexxusModelTypeName> {
7
11
  id?: string;
8
12
  createdAt?: number;
9
13
  updatedAt?: number;
10
14
  type: TType;
11
15
  }
12
- export declare const MODEL_REGISTRY: {
13
- readonly application: "application";
14
- readonly user: "user";
15
- };
16
- export type NexxusBuiltinModelTypeName = typeof MODEL_REGISTRY[keyof typeof MODEL_REGISTRY];
17
- export type NexxusModelTypeName = NexxusBuiltinModelTypeName | string;
18
16
  export declare abstract class NexxusBaseModel<T extends INexxusBaseModel = INexxusBaseModel> {
19
17
  protected data: T;
20
18
  static readonly modelType: string | undefined;
21
19
  constructor(data: T);
22
20
  getData(): T;
23
21
  }
22
+ export type AnyNexxusBuiltinModel = NexxusApplication | NexxusUser;
23
+ export type AnyNexxusBuiltinModelData = INexxusApplication | INexxusUser;
24
+ export type AnyNexxusModel = AnyNexxusBuiltinModel | NexxusAppModel;
25
+ export type AnyNexxusModelData = AnyNexxusBuiltinModelData | INexxusAppModel;
@@ -0,0 +1,3 @@
1
+ import { NexxusBaseModel, INexxusBaseModel, NexxusBuiltinTypeName } from "./BaseModel";
2
+ export declare abstract class NexxusBuiltinModel<T extends INexxusBaseModel<NexxusBuiltinTypeName>> extends NexxusBaseModel<T> {
3
+ }
@@ -1,17 +1,19 @@
1
- import { NexxusBaseModel, INexxusBaseModel } from "./BaseModel";
2
- import { NexxusFieldDef } from "../common/ModelTypes";
3
- export type NexxusUserModelType = INexxusBaseModel<'user'> & {
4
- appId: string;
5
- userType: string;
6
- username: string;
7
- password: string | null;
8
- authProviders: Array<string>;
9
- devices: Array<string>;
10
- details?: Record<string, any>;
11
- };
1
+ import { INexxusBaseModel } from "./BaseModel";
2
+ import { NexxusBuiltinModel } from "./BuiltinModel";
3
+ import { NexxusFieldDef, NexxusModelDef } from "../common/ModelTypes";
4
+ import { InferModel } from "../common/InferModel";
5
+ import { NEXXUS_BUILTIN_MODEL_SCHEMAS } from "../common/BuiltinSchemas";
12
6
  export interface NexxusUserDetailSchema {
13
7
  [field: string]: NexxusFieldDef;
14
8
  }
15
- export declare class NexxusApplicationUser extends NexxusBaseModel<NexxusUserModelType> {
16
- constructor(data: NexxusUserModelType);
9
+ export type INexxusUser = INexxusBaseModel<'user'> & InferModel<typeof NEXXUS_BUILTIN_MODEL_SCHEMAS.user> & {
10
+ details?: Record<string, any>;
11
+ };
12
+ export declare class NexxusUser extends NexxusBuiltinModel<INexxusUser> {
13
+ /**
14
+ * Runtime field schema for User records. Optionally overlays a per-userType
15
+ * detail schema (resolved from the owning application) into `details.properties`.
16
+ */
17
+ static getModelSchema(userDetails?: NexxusUserDetailSchema | null): NexxusModelDef;
18
+ constructor(data: INexxusUser);
17
19
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mayhem93/nexxus-core-lib",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Core types and structures used by other Nexxus packages",
5
5
  "main": "dist-cjs/index.js",
6
6
  "module": "dist-esm/index.js",
@@ -17,7 +17,7 @@
17
17
  "dist-*/**",
18
18
  "src/schemas/**/*.json"
19
19
  ],
20
- "homepage": "https://github.com/Mayhem93/nexxus-server/tree/main/src/core",
20
+ "homepage": "https://github.com/Mayhem93/nexxus-lib/tree/main/src/core",
21
21
  "keywords": ["realtime", "sync", "synchronization", "notifications", "backend", "baas"],
22
22
  "author": "Răzvan Botea <contact@razvanbotea.me>",
23
23
  "license": "MPL-2.0",
@@ -25,7 +25,7 @@
25
25
  "@tsconfig/node24": "^24.0.1",
26
26
  "@types/node": "^24.9.1",
27
27
  "concurrently": "^9.2.1",
28
- "typescript": "5.9.3"
28
+ "typescript": "^6.0.0"
29
29
  },
30
30
  "dependencies": {
31
31
  "@types/argparse": "^2.0.17",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "repository": {
42
42
  "type": "git",
43
- "url": "https://github.com/Mayhem93/nexxus-server.git",
43
+ "url": "https://github.com/Mayhem93/nexxus-lib.git",
44
44
  "directory": "src/core"
45
45
  }
46
46
  }
@@ -1,24 +1,69 @@
1
1
  {
2
- "$comment": "logger",
2
+ "$id": "nexxus-winston-logger",
3
3
  "type": "object",
4
4
  "properties": {
5
5
  "level": {
6
6
  "type": "string",
7
- "enum": ["debug", "info", "warn", "error", "critical", "alert", "emerg"]
7
+ "enum": ["debug", "info", "warn", "error", "critical", "alert", "emerg"],
8
+ "default": "info"
8
9
  },
9
10
  "logType": {
10
11
  "type": "string",
11
- "enum": ["text", "json"]
12
+ "enum": ["text", "json"],
13
+ "default": "text"
12
14
  },
13
15
  "timestamps": {
14
- "type": "boolean"
16
+ "type": "boolean",
17
+ "default": true
15
18
  },
16
19
  "colors": {
17
- "type": "boolean"
20
+ "type": "boolean",
21
+ "default": false
22
+ },
23
+ "transports": {
24
+ "type": "array",
25
+ "items": {
26
+ "oneOf": [
27
+ { "$ref": "#/definitions/StdoutTransport" },
28
+ { "$ref": "#/definitions/FileTransport" },
29
+ { "$ref": "#/definitions/CustomTransport" }
30
+ ]
31
+ }
18
32
  }
19
33
  },
20
34
  "required": [
21
35
  "level",
22
36
  "logType"
23
- ]
37
+ ],
38
+ "definitions": {
39
+ "StdoutTransport": {
40
+ "type": "object",
41
+ "properties": {
42
+ "type": { "const": "stdout" }
43
+ },
44
+ "required": ["type"],
45
+ "additionalProperties": false
46
+ },
47
+ "FileTransport": {
48
+ "type": "object",
49
+ "properties": {
50
+ "type": { "const": "file" },
51
+ "filename": { "type": "string" },
52
+ "maxSize": { "type": "number" },
53
+ "maxFiles": { "type": "number" }
54
+ },
55
+ "required": ["type", "filename"],
56
+ "additionalProperties": false
57
+ },
58
+ "CustomTransport": {
59
+ "type": "object",
60
+ "properties": {
61
+ "type": { "type": "string", "not": { "enum": ["stdout", "file"] } },
62
+ "export": { "type": "string" },
63
+ "options": { "type": "object" }
64
+ },
65
+ "required": ["type"],
66
+ "additionalProperties": false
67
+ }
68
+ }
24
69
  }