miqro 1.5.5 → 1.6.1

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 (89) hide show
  1. package/README.md +42 -2
  2. package/dist/cli.js +8 -9
  3. package/dist/cli.js.map +1 -0
  4. package/dist/cmds/config-bash.js +1 -0
  5. package/dist/cmds/config-bash.js.map +1 -0
  6. package/dist/cmds/config-env.js +1 -0
  7. package/dist/cmds/config-env.js.map +1 -0
  8. package/dist/cmds/config-init.js +2 -0
  9. package/dist/cmds/config-init.js.map +1 -0
  10. package/dist/cmds/config.js +1 -0
  11. package/dist/cmds/config.js.map +1 -0
  12. package/dist/cmds/db-console.js +2 -0
  13. package/dist/cmds/db-console.js.map +1 -0
  14. package/dist/cmds/db-createmodel.js +4 -1
  15. package/dist/cmds/db-createmodel.js.map +1 -0
  16. package/dist/cmds/db-dump-data.js +2 -0
  17. package/dist/cmds/db-dump-data.js.map +1 -0
  18. package/dist/cmds/db-init.js +2 -0
  19. package/dist/cmds/db-init.js.map +1 -0
  20. package/dist/cmds/db-makemigrations.js +3 -0
  21. package/dist/cmds/db-makemigrations.js.map +1 -0
  22. package/dist/cmds/db-push-data.js +30 -4
  23. package/dist/cmds/db-push-data.js.map +1 -0
  24. package/dist/cmds/db-sync-makemigrations.js +3 -0
  25. package/dist/cmds/db-sync-makemigrations.js.map +1 -0
  26. package/dist/cmds/doc-json.js +1 -0
  27. package/dist/cmds/doc-json.js.map +1 -0
  28. package/dist/cmds/doc-md.js +53 -16
  29. package/dist/cmds/doc-md.js.map +1 -0
  30. package/dist/cmds/handler-apiroute-new.js +2 -36
  31. package/dist/cmds/handler-apiroute-new.js.map +1 -0
  32. package/dist/cmds/handler-main-new.d.ts +1 -2
  33. package/dist/cmds/handler-main-new.js +15 -22
  34. package/dist/cmds/handler-main-new.js.map +1 -0
  35. package/dist/cmds/new.d.ts +1 -3
  36. package/dist/cmds/new.js +8 -18
  37. package/dist/cmds/new.js.map +1 -0
  38. package/dist/cmds/start.js +4 -0
  39. package/dist/cmds/start.js.map +1 -0
  40. package/dist/index.d.ts +2 -0
  41. package/dist/index.js +15 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/utils/db/automigrations/deep-diff/index.d.ts +24 -0
  44. package/dist/utils/db/automigrations/deep-diff/index.js +240 -0
  45. package/dist/utils/db/automigrations/deep-diff/index.js.map +1 -0
  46. package/dist/utils/db/automigrations/index.js +17 -0
  47. package/dist/utils/db/automigrations/index.js.map +1 -0
  48. package/dist/utils/db/automigrations/migrate.js +136 -17
  49. package/dist/utils/db/automigrations/migrate.js.map +1 -0
  50. package/dist/utils/db/index.d.ts +3 -3
  51. package/dist/utils/db/index.js +11 -1
  52. package/dist/utils/db/index.js.map +1 -0
  53. package/dist/utils/doc/index.d.ts +10 -8
  54. package/dist/utils/doc/index.js +4 -1
  55. package/dist/utils/doc/index.js.map +1 -0
  56. package/dist/utils/index.d.ts +2 -1
  57. package/dist/utils/index.js +2 -1
  58. package/dist/utils/index.js.map +1 -0
  59. package/dist/utils/templates.d.ts +2 -2
  60. package/dist/utils/templates.js +6 -0
  61. package/dist/utils/templates.js.map +1 -0
  62. package/package.json +9 -15
  63. package/src/cli.ts +62 -0
  64. package/src/cmds/config-bash.ts +18 -0
  65. package/src/cmds/config-env.ts +18 -0
  66. package/src/cmds/config-init.ts +35 -0
  67. package/src/cmds/config.ts +16 -0
  68. package/src/cmds/db-console.ts +35 -0
  69. package/src/cmds/db-createmodel.ts +44 -0
  70. package/src/cmds/db-dump-data.ts +44 -0
  71. package/src/cmds/db-init.ts +42 -0
  72. package/src/cmds/db-makemigrations.ts +12 -0
  73. package/src/cmds/db-push-data.ts +77 -0
  74. package/src/cmds/db-sync-makemigrations.ts +12 -0
  75. package/src/cmds/doc-json.ts +16 -0
  76. package/src/cmds/doc-md.ts +233 -0
  77. package/src/cmds/handler-apiroute-new.ts +67 -0
  78. package/src/cmds/handler-main-new.ts +85 -0
  79. package/src/cmds/new.ts +128 -0
  80. package/src/cmds/start.ts +16 -0
  81. package/src/index.ts +2 -0
  82. package/src/utils/db/automigrations/deep-diff/index.ts +264 -0
  83. package/src/utils/db/automigrations/index.ts +151 -0
  84. package/src/utils/db/automigrations/migrate.ts +888 -0
  85. package/src/utils/db/index.ts +128 -0
  86. package/src/utils/doc/index.ts +31 -0
  87. package/src/utils/index.ts +9 -0
  88. package/src/utils/templates.ts +189 -0
  89. package/tsconfig.json +32 -0
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mainMinimal = exports.main = void 0;
3
+ exports.main = void 0;
4
4
  const core_1 = require("@miqro/core");
5
5
  const fs_1 = require("fs");
6
6
  const path_1 = require("path");
7
7
  const mainTemplates = {
8
- ts: (minimal = false) => `${minimal ? `import { Context, APIRouter, App, checkEnvVariables, getLogger, ReadBuffer, JSONParser } from "@miqro/core";` : `import { APIRouter, App, checkEnvVariables, getLogger } from "@miqro/core";`}
9
- ${!minimal ? `import { middleware } from "@miqro/handlers";\nimport { resolve } from "path";` : ""}
8
+ ts: () => `import { APIRouter, App, checkEnvVariables, getLogger, middleware } from "@miqro/core";
9
+ import { resolve } from "path";
10
10
 
11
11
  /*
12
12
  To be start as a main file
@@ -18,20 +18,16 @@ const [PORT] = checkEnvVariables(["PORT"], ["8080"]);
18
18
  const logger = getLogger("server");
19
19
 
20
20
  const app = new App();
21
- ${!minimal ? `app.use(middleware());\napp.use(APIRouter({
21
+ app.use(middleware());
22
+ app.use(APIRouter({
22
23
  dirname: resolve(__dirname, "api")
23
- }, logger));` : `app.get("/api/health", [ReadBuffer(), JSONParser(), async (ctx: Context) => {
24
- ctx.json({
25
- status: "OK"
26
- });
27
- }]);`}
24
+ }, logger));
28
25
  app.listen(PORT, () => {
29
26
  logger.info("listening on " + PORT);
30
27
  });
31
28
  `,
32
- js: (minimal = false) => `${minimal ? `const { APIRouter, App, checkEnvVariables, getLogger, ReadBuffer, JSONParser } = require("@miqro/core");` : `const { APIRouter, App, checkEnvVariables, getLogger } = require("@miqro/core");`}
33
- ${!minimal ? `const { middleware } = require("@miqro/handlers");
34
- const { resolve } = require("path");` : ""}
29
+ js: () => `const { APIRouter, App, checkEnvVariables, getLogger, middleware } = require("@miqro/core");
30
+ const { resolve } = require("path");
35
31
 
36
32
  /*
37
33
  To be start as a main file
@@ -43,19 +39,16 @@ const [PORT] = checkEnvVariables(["PORT"], ["8080"]);
43
39
  const logger = getLogger("server");
44
40
 
45
41
  const app = new App();
46
- ${!minimal ? `app.use(middleware());\napp.use(APIRouter({
42
+ app.use(middleware());
43
+ app.use(APIRouter({
47
44
  dirname: resolve(__dirname, "api")
48
- }, logger));` : `app.get("/api/health", [ReadBuffer(), JSONParser(), async (ctx) => {
49
- ctx.json({
50
- status: "OK"
51
- });
52
- }]);`}
45
+ }, logger));
53
46
  app.listen(PORT, () => {
54
47
  logger.info("listening on " + PORT);
55
48
  });
56
49
  `
57
50
  };
58
- const main = (minimal = false) => {
51
+ const main = () => {
59
52
  if (process.argv.length !== 4 || process.argv[3].length < 1) {
60
53
  throw new Error(`arguments: <identifier ex: SRC_MAIN>`);
61
54
  }
@@ -65,6 +58,7 @@ const main = (minimal = false) => {
65
58
  if (dots.length > 0) {
66
59
  throw new Error(`identifier cannot contain dots\narguments: <identifier ex: SRC_MAIN>`);
67
60
  }
61
+ (0, core_1.loadConfig)();
68
62
  const path = (0, path_1.resolve)(core_1.ConfigPathResolver.getBaseDirname(), ...split.splice(0, split.length - 1));
69
63
  const ext = (0, fs_1.existsSync)((0, path_1.resolve)(core_1.ConfigPathResolver.getBaseDirname(), "tsconfig.json")) ? "ts" : "js";
70
64
  const filePath = (0, path_1.resolve)(path, `${split[0]}.${ext}`);
@@ -75,8 +69,7 @@ const main = (minimal = false) => {
75
69
  (0, fs_1.mkdirSync)(path, {
76
70
  recursive: true
77
71
  });
78
- (0, fs_1.writeFileSync)(filePath, mainTemplates[ext](minimal));
72
+ (0, fs_1.writeFileSync)(filePath, mainTemplates[ext]());
79
73
  };
80
74
  exports.main = main;
81
- const mainMinimal = () => (0, exports.main)(true);
82
- exports.mainMinimal = mainMinimal;
75
+ //# sourceMappingURL=handler-main-new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-main-new.js","sourceRoot":"","sources":["../../src/cmds/handler-main-new.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,2BAA0D;AAC1D,+BAA+B;AAE/B,MAAM,aAAa,GAAG;IACpB,EAAE,EAAE,GAAG,EAAE,CACP;;;;;;;;;;;;;;;;;;;;CAoBH;IACC,EAAE,EAAE,GAAG,EAAE,CACP;;;;;;;;;;;;;;;;;;;;CAoBH;CACA,CAAA;AAEM,MAAM,IAAI,GAAG,GAAS,EAAE;IAE7B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;KACzD;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAEvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;KACzF;IAED,IAAA,iBAAU,GAAE,CAAC;IAEb,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,yBAAkB,CAAC,cAAc,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhG,MAAM,GAAG,GAAG,IAAA,eAAU,EAAC,IAAA,cAAO,EAAC,yBAAkB,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpG,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACrD,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,gCAAgC,CAAC,CAAC;KACnE;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;IAEpC,IAAA,cAAS,EAAC,IAAI,EAAE;QACd,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,IAAA,kBAAa,EAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC,CAAA;AAjCY,QAAA,IAAI,QAiChB"}
@@ -1,4 +1,2 @@
1
- export declare const mainJS: (minimal?: boolean, typescript?: boolean) => void;
1
+ export declare const mainJS: (typescript?: boolean) => void;
2
2
  export declare const mainTS: () => void;
3
- export declare const mainMinimalJS: () => void;
4
- export declare const mainMinimalTS: () => void;
package/dist/cmds/new.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mainMinimalTS = exports.mainMinimalJS = exports.mainTS = exports.mainJS = void 0;
3
+ exports.mainTS = exports.mainJS = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const utils_1 = require("../utils");
@@ -39,7 +39,7 @@ const packageTemplate = {
39
39
  "license": "ISC"
40
40
  }`
41
41
  };
42
- const mainJS = (minimal = false, typescript = false) => {
42
+ const mainJS = (typescript = false) => {
43
43
  if (process.argv.length !== 4 || process.argv[3].length < 1) {
44
44
  throw new Error(`arguments: <name ex: NEW_APP>`);
45
45
  }
@@ -93,24 +93,14 @@ const mainJS = (minimal = false, typescript = false) => {
93
93
  cwd: appFolder
94
94
  });
95
95
  }
96
- if (!minimal) {
97
- (0, utils_1.execSync)(`npm install @miqro/handlers --save`, {
98
- cwd: appFolder
99
- });
100
- }
101
- (0, utils_1.execSync)(`npx miqro new:main${minimal ? ":minimal" : ""} src_main`, {
96
+ (0, utils_1.execSync)(`npx miqro new:main src_main`, {
97
+ cwd: appFolder
98
+ });
99
+ (0, utils_1.execSync)(`npx miqro new:route src_api_health`, {
102
100
  cwd: appFolder
103
101
  });
104
- if (!minimal) {
105
- (0, utils_1.execSync)(`npx miqro new:route src_api_health`, {
106
- cwd: appFolder
107
- });
108
- }
109
102
  };
110
103
  exports.mainJS = mainJS;
111
- const mainTS = () => (0, exports.mainJS)(false, true);
104
+ const mainTS = () => (0, exports.mainJS)(true);
112
105
  exports.mainTS = mainTS;
113
- const mainMinimalJS = () => (0, exports.mainJS)(true, false);
114
- exports.mainMinimalJS = mainMinimalJS;
115
- const mainMinimalTS = () => (0, exports.mainJS)(true, true);
116
- exports.mainMinimalTS = mainMinimalTS;
106
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/cmds/new.ts"],"names":[],"mappings":";;;AAAA,2BAA0D;AAC1D,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CACnB;aACS,IAAI;;;;;;;;;;;;;;;EAef;IACA,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CACnB;aACS,IAAI;;;;;;;;;;;;;;EAcf;CACD,CAAA;AAEM,MAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,EAAQ,EAAE;IACjD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAEvD,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,kBAAkB,CAAC,CAAC;KACjD;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;IAErC,IAAA,cAAS,EAAC,SAAS,EAAE;QACnB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,cAAc,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzG,IAAA,gBAAQ,EACN,8BAA8B,EAC9B;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAA,gBAAQ,EACN,gCAAgC,EAChC;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAI,UAAU,EAAE;QACd,IAAA,kBAAa,EAAC,IAAA,cAAO,EAAC,SAAS,EAAE,eAAe,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;EAyBrD,CAAC,CAAC;QACA,IAAA,gBAAQ,EAAC,mCAAmC,EAAE;YAC5C,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;QACH,IAAA,gBAAQ,EAAC,oCAAoC,EAAE;YAC7C,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;KACJ;IAED,IAAA,gBAAQ,EACN,6BAA6B,EAC7B;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;IAEF,IAAA,gBAAQ,EACN,oCAAoC,EACpC;QACE,GAAG,EAAE,SAAS;KACf,CACF,CAAC;AACJ,CAAC,CAAA;AAnFY,QAAA,MAAM,UAmFlB;AAEM,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;AAAlC,QAAA,MAAM,UAA4B"}
@@ -3,10 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.main = void 0;
4
4
  const utils_1 = require("../utils");
5
5
  const runner_1 = require("@miqro/runner");
6
+ const core_1 = require("@miqro/core");
6
7
  const main = () => {
7
8
  if (process.argv.length <= 3) {
8
9
  throw new Error(`invalid number of args\nusage: CLUSTER_COUNT=1 [DISABLE_RESTART=true|false] npx miqro start <script> [...args]`);
9
10
  }
11
+ (0, core_1.loadConfig)();
12
+ //execSync(`npx @miqro/runner ${process.argv.slice(3).join(" ")}`);
10
13
  (0, utils_1.execSync)(`${process.argv[0]} ${(0, runner_1.mainPath)()} ${process.argv.slice(3).join(" ")}`);
11
14
  };
12
15
  exports.main = main;
16
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cmds/start.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,0CAAyC;AACzC,sCAAyC;AAElC,MAAM,IAAI,GAAG,GAAS,EAAE;IAE7B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;KACnI;IAED,IAAA,iBAAU,GAAE,CAAC;IAEb,mEAAmE;IACnE,IAAA,gBAAQ,EAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,iBAAQ,GAAE,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjF,CAAC,CAAA;AAVY,QAAA,IAAI,QAUhB"}
package/dist/index.d.ts CHANGED
@@ -0,0 +1,2 @@
1
+ export * from "@miqro/core";
2
+ export * from "@miqro/runner";
package/dist/index.js CHANGED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("@miqro/core"), exports);
14
+ __exportStar(require("@miqro/runner"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B"}
@@ -0,0 +1,24 @@
1
+ declare class Diff<LHS = any, RHS = any> {
2
+ kind: "A" | "E" | "N" | "D";
3
+ path: string[] | undefined;
4
+ rhs: RHS | undefined;
5
+ lhs: LHS | undefined;
6
+ constructor(kind: "A" | "E" | "N" | "D", path: string[] | undefined);
7
+ }
8
+ export declare type PreFilterFunction = (path: any[], key: any) => boolean;
9
+ export interface PreFilterObject<LHS, RHS = LHS> {
10
+ prefilter?(path: any[], key: any): boolean;
11
+ normalize?(currentPath: any, key: any, lhs: LHS, rhs: RHS): [LHS, RHS] | undefined;
12
+ }
13
+ export declare type PreFilter<LHS, RHS = LHS> = PreFilterFunction | PreFilterObject<LHS, RHS>;
14
+ export interface Accumulator<LHS, RHS = LHS> {
15
+ push(diff: Diff<LHS, RHS>): void;
16
+ length: number;
17
+ }
18
+ export declare type Observer<LHS, RHS = LHS> = (diff: Diff<LHS, RHS>) => void;
19
+ export declare type Filter<LHS, RHS = LHS> = (target: LHS, source: RHS, change: Diff<LHS, RHS>) => boolean;
20
+ export declare type DeepDiff<LHS, RHS = LHS> = (lhs: LHS, rhs: RHS, prefilter?: PreFilter<LHS, RHS>) => Array<Diff<LHS, RHS>> | undefined;
21
+ export declare const DEEPDIFF: {
22
+ diff: DeepDiff<any>;
23
+ };
24
+ export {};
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ // https://github.com/flitbit/diff/blob/master/index.js
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DEEPDIFF = void 0;
5
+ class Diff {
6
+ constructor(kind, path) {
7
+ this.kind = kind;
8
+ this.path = path;
9
+ }
10
+ }
11
+ class DiffEdit extends Diff {
12
+ constructor(path, lhs, rhs) {
13
+ super("E", path);
14
+ this.lhs = lhs;
15
+ this.rhs = rhs;
16
+ }
17
+ }
18
+ class DiffNew extends Diff {
19
+ constructor(path, rhs) {
20
+ super("N", path);
21
+ this.rhs = rhs;
22
+ }
23
+ }
24
+ class DiffDeleted extends Diff {
25
+ constructor(path, lhs) {
26
+ super("D", path);
27
+ this.lhs = lhs;
28
+ this.lhs = lhs;
29
+ }
30
+ }
31
+ class DiffArray extends Diff {
32
+ constructor(path, index, item) {
33
+ super("A", path);
34
+ this.index = index;
35
+ this.item = item;
36
+ }
37
+ }
38
+ const realTypeOf = (subject) => {
39
+ const type = typeof subject;
40
+ if (type !== 'object') {
41
+ return type;
42
+ }
43
+ if (subject === Math) {
44
+ return 'math';
45
+ }
46
+ else if (subject === null) {
47
+ return 'null';
48
+ }
49
+ else if (Array.isArray(subject)) {
50
+ return 'array';
51
+ }
52
+ else if (Object.prototype.toString.call(subject) === '[object Date]') {
53
+ return 'date';
54
+ }
55
+ else if (typeof subject.toString === 'function' && /^\/.*\//.test(subject.toString())) {
56
+ return 'regexp';
57
+ }
58
+ return 'object';
59
+ };
60
+ // http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/
61
+ const hashThisString = (string) => {
62
+ let hash = 0;
63
+ if (string.length === 0) {
64
+ return hash;
65
+ }
66
+ for (let i = 0; i < string.length; i++) {
67
+ const char = string.charCodeAt(i);
68
+ hash = ((hash << 5) - hash) + char;
69
+ hash = hash & hash; // Convert to 32bit integer
70
+ }
71
+ return hash;
72
+ };
73
+ // Gets a hash of the given object in an array order-independent fashion
74
+ // also object key order independent (easier since they can be alphabetized)
75
+ const getOrderIndependentHash = (object) => {
76
+ let accum = 0;
77
+ const type = realTypeOf(object);
78
+ if (type === 'array') {
79
+ object.forEach(function (item) {
80
+ // Addition is commutative so this is order indep
81
+ accum += getOrderIndependentHash(item);
82
+ });
83
+ const arrayString = '[type: array, hash: ' + accum + ']';
84
+ return accum + hashThisString(arrayString);
85
+ }
86
+ if (type === 'object') {
87
+ for (const key in object) {
88
+ if (object.hasOwnProperty(key)) {
89
+ const keyValueString = '[ type: object, key: ' + key + ', value hash: ' + getOrderIndependentHash(object[key]) + ']';
90
+ accum += hashThisString(keyValueString);
91
+ }
92
+ }
93
+ return accum;
94
+ }
95
+ // Non object, non array...should be good?
96
+ const stringToHash = '[ type: ' + type + ' ; value: ' + object + ']';
97
+ return accum + hashThisString(stringToHash);
98
+ };
99
+ const deepDiff = (lhs, rhs, changes, prefilter, path, key, stack, orderIndependent) => {
100
+ changes = changes || [];
101
+ path = path || [];
102
+ stack = stack || [];
103
+ const currentPath = path.slice(0);
104
+ if (typeof key !== 'undefined' && key !== null) {
105
+ if (prefilter) {
106
+ if (typeof (prefilter) === 'function' && prefilter(currentPath, key)) {
107
+ return;
108
+ }
109
+ else if (typeof (prefilter) === 'object') {
110
+ if (prefilter.prefilter && prefilter.prefilter(currentPath, key)) {
111
+ return;
112
+ }
113
+ if (prefilter.normalize) {
114
+ const alt = prefilter.normalize(currentPath, key, lhs, rhs);
115
+ if (alt) {
116
+ lhs = alt[0];
117
+ rhs = alt[1];
118
+ }
119
+ }
120
+ }
121
+ }
122
+ currentPath.push(key);
123
+ }
124
+ // Use string comparison for regexes
125
+ if (realTypeOf(lhs) === 'regexp' && realTypeOf(rhs) === 'regexp') {
126
+ lhs = lhs.toString();
127
+ rhs = rhs.toString();
128
+ }
129
+ const ltype = typeof lhs;
130
+ const rtype = typeof rhs;
131
+ let i, j, k, other;
132
+ const ldefined = ltype !== 'undefined' ||
133
+ (stack && (stack.length > 0) && stack[stack.length - 1].lhs &&
134
+ Object.getOwnPropertyDescriptor(stack[stack.length - 1].lhs, key));
135
+ const rdefined = rtype !== 'undefined' ||
136
+ (stack && (stack.length > 0) && stack[stack.length - 1].rhs &&
137
+ Object.getOwnPropertyDescriptor(stack[stack.length - 1].rhs, key));
138
+ if (!ldefined && rdefined) {
139
+ changes.push(new DiffNew(currentPath, rhs));
140
+ }
141
+ else if (!rdefined && ldefined) {
142
+ changes.push(new DiffDeleted(currentPath, lhs));
143
+ }
144
+ else if (realTypeOf(lhs) !== realTypeOf(rhs)) {
145
+ changes.push(new DiffEdit(currentPath, lhs, rhs));
146
+ }
147
+ else if (realTypeOf(lhs) === 'date' && (lhs - rhs) !== 0) {
148
+ changes.push(new DiffEdit(currentPath, lhs, rhs));
149
+ }
150
+ else if (ltype === 'object' && lhs !== null && rhs !== null) {
151
+ for (i = stack.length - 1; i > -1; --i) {
152
+ if (stack[i].lhs === lhs) {
153
+ other = true;
154
+ break;
155
+ }
156
+ }
157
+ if (!other) {
158
+ stack.push({ lhs: lhs, rhs: rhs });
159
+ if (Array.isArray(lhs)) {
160
+ // If order doesn't matter, we need to sort our arrays
161
+ if (orderIndependent) {
162
+ lhs.sort(function (a, b) {
163
+ return getOrderIndependentHash(a) - getOrderIndependentHash(b);
164
+ });
165
+ rhs.sort(function (a, b) {
166
+ return getOrderIndependentHash(a) - getOrderIndependentHash(b);
167
+ });
168
+ }
169
+ i = rhs.length - 1;
170
+ j = lhs.length - 1;
171
+ while (i > j) {
172
+ changes.push(new DiffArray(currentPath, i, new DiffNew(undefined, rhs[i--])));
173
+ }
174
+ while (j > i) {
175
+ changes.push(new DiffArray(currentPath, j, new DiffDeleted(undefined, lhs[j--])));
176
+ }
177
+ for (; i >= 0; --i) {
178
+ deepDiff(lhs[i], rhs[i], changes, prefilter, currentPath, i, stack, orderIndependent);
179
+ }
180
+ }
181
+ else {
182
+ const akeys = Object.keys(lhs).concat(Object.getOwnPropertySymbols(lhs));
183
+ const pkeys = Object.keys(rhs).concat(Object.getOwnPropertySymbols(rhs));
184
+ for (i = 0; i < akeys.length; ++i) {
185
+ k = akeys[i];
186
+ other = pkeys.indexOf(k);
187
+ if (other >= 0) {
188
+ deepDiff(lhs[k], rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);
189
+ pkeys[other] = null;
190
+ }
191
+ else {
192
+ deepDiff(lhs[k], undefined, changes, prefilter, currentPath, k, stack, orderIndependent);
193
+ }
194
+ }
195
+ for (i = 0; i < pkeys.length; ++i) {
196
+ k = pkeys[i];
197
+ if (k) {
198
+ deepDiff(undefined, rhs[k], changes, prefilter, currentPath, k, stack, orderIndependent);
199
+ }
200
+ }
201
+ }
202
+ stack.length = stack.length - 1;
203
+ }
204
+ else if (lhs !== rhs) {
205
+ // lhs is contains a cycle at this element and it differs from rhs
206
+ changes.push(new DiffEdit(currentPath, lhs, rhs));
207
+ }
208
+ }
209
+ else if (lhs !== rhs) {
210
+ if (!(ltype === 'number' && isNaN(lhs) && isNaN(rhs))) {
211
+ changes.push(new DiffEdit(currentPath, lhs, rhs));
212
+ }
213
+ }
214
+ };
215
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
216
+ const observableDiff = (lhs, rhs, observer, prefilter, orderIndependent) => {
217
+ const changes = [];
218
+ deepDiff(lhs, rhs, changes, prefilter, null, null, null, orderIndependent);
219
+ if (observer) {
220
+ for (let i = 0; i < changes.length; ++i) {
221
+ observer(changes[i]);
222
+ }
223
+ }
224
+ return changes;
225
+ };
226
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
227
+ const accumulateDiff = (lhs, rhs, prefilter, accum) => {
228
+ const observer = (accum) ?
229
+ function (difference) {
230
+ if (difference) {
231
+ accum.push(difference);
232
+ }
233
+ } : undefined;
234
+ const changes = observableDiff(lhs, rhs, observer, prefilter);
235
+ return (accum) ? accum : (changes.length) ? changes : undefined;
236
+ };
237
+ exports.DEEPDIFF = {
238
+ diff: accumulateDiff
239
+ };
240
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/db/automigrations/deep-diff/index.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,12 @@ const path_1 = __importDefault(require("path"));
10
10
  const __1 = require("..");
11
11
  const migrate_1 = require("./migrate");
12
12
  const syncMakeMigrationsImpl = () => {
13
+ // Windows support
13
14
  if (!process.env.PWD) {
14
15
  process.env.PWD = process.cwd();
15
16
  }
16
17
  const sequelizeRC = (0, __1.loadSequelizeRC)();
18
+ // noinspection SpellCheckingInspection
17
19
  const logger = (0, core_1.getLogger)("makemigrations");
18
20
  try {
19
21
  if (!fs_1.default.existsSync(sequelizeRC["models-path"])) {
@@ -24,6 +26,7 @@ const syncMakeMigrationsImpl = () => {
24
26
  logger.error("Can't find migrations directory. Use `sequelize init` to create it");
25
27
  return;
26
28
  }
29
+ // load last state
27
30
  let previousState;
28
31
  try {
29
32
  previousState = JSON.parse(fs_1.default.readFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json")).toString());
@@ -35,13 +38,16 @@ const syncMakeMigrationsImpl = () => {
35
38
  };
36
39
  }
37
40
  const { modelsModule } = (0, __1.loadModels)({ ["models-path"]: sequelizeRC["models-path"] });
41
+ // current state
38
42
  const currentState = {
39
43
  revision: previousState.revision + 1,
40
44
  tables: (0, migrate_1.reverseModels)(modelsModule.Sequelize, modelsModule.sequelize, modelsModule.sequelize.models, logger)
41
45
  };
46
+ // backup _current file
42
47
  if (fs_1.default.existsSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json"))) {
43
48
  fs_1.default.writeFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current_bak.json"), fs_1.default.readFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json")));
44
49
  }
50
+ // save current state
45
51
  currentState.revision = previousState.revision + 1;
46
52
  fs_1.default.writeFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json"), JSON.stringify(currentState, null, 4));
47
53
  }
@@ -51,11 +57,14 @@ const syncMakeMigrationsImpl = () => {
51
57
  }
52
58
  };
53
59
  exports.syncMakeMigrationsImpl = syncMakeMigrationsImpl;
60
+ // noinspection SpellCheckingInspection
54
61
  const makemigrationsImpl = () => {
62
+ // Windows support
55
63
  if (!process.env.PWD) {
56
64
  process.env.PWD = process.cwd();
57
65
  }
58
66
  const sequelizeRC = (0, __1.loadSequelizeRC)();
67
+ // noinspection SpellCheckingInspection
59
68
  const logger = (0, core_1.getLogger)("makemigrations");
60
69
  try {
61
70
  if (!fs_1.default.existsSync(sequelizeRC["models-path"])) {
@@ -66,6 +75,7 @@ const makemigrationsImpl = () => {
66
75
  logger.error("Can't find migrations directory. Use `sequelize init` to create it");
67
76
  return;
68
77
  }
78
+ // load last state
69
79
  let previousState;
70
80
  try {
71
81
  previousState = JSON.parse(fs_1.default.readFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json")).toString());
@@ -77,25 +87,31 @@ const makemigrationsImpl = () => {
77
87
  };
78
88
  }
79
89
  const { modelsModule } = (0, __1.loadModels)({ ["models-path"]: sequelizeRC["models-path"] });
90
+ // current state
80
91
  const currentState = {
81
92
  revision: previousState.revision + 1,
82
93
  tables: (0, migrate_1.reverseModels)(modelsModule.Sequelize, modelsModule.sequelize, modelsModule.sequelize.models, logger)
83
94
  };
84
95
  const actions = (0, migrate_1.parseDifference)(previousState.tables, currentState.tables, logger);
96
+ // sort actions
85
97
  (0, migrate_1.sortActions)(actions);
86
98
  const migration = (0, migrate_1.getMigration)(actions);
87
99
  if (migration.commandsUp.length === 0) {
88
100
  logger.info("No changes found");
89
101
  return null;
90
102
  }
103
+ // log migration actions
91
104
  migration.consoleOut.forEach((v) => {
92
105
  logger.info("[Actions] " + v);
93
106
  });
107
+ // backup _current file
94
108
  if (fs_1.default.existsSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json"))) {
95
109
  fs_1.default.writeFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current_bak.json"), fs_1.default.readFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json")));
96
110
  }
111
+ // save current state
97
112
  currentState.revision = previousState.revision + 1;
98
113
  fs_1.default.writeFileSync(path_1.default.join(sequelizeRC["migrations-path"], "_current.json"), JSON.stringify(currentState, null, 4));
114
+ // write migration to file
99
115
  const info = (0, migrate_1.writeMigration)(currentState.revision, migration, sequelizeRC["migrations-path"], "noname", "");
100
116
  logger.info(`New migration to revision ${currentState.revision} has been saved to file '${info.filename}'`);
101
117
  return info.filename;
@@ -106,3 +122,4 @@ const makemigrationsImpl = () => {
106
122
  }
107
123
  };
108
124
  exports.makemigrationsImpl = makemigrationsImpl;
125
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/db/automigrations/index.ts"],"names":[],"mappings":"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"}