@spinajs/intl-orm 1.2.127 → 1.2.135

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.
package/lib/decorators.js CHANGED
@@ -12,6 +12,7 @@ function Translate() {
12
12
  else {
13
13
  columnDesc.Translate = true;
14
14
  }
15
+ model.Translatable = true;
15
16
  }, true);
16
17
  }
17
18
  exports.Translate = Translate;
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;AAAA,sCAA4E;AAE5E,SAAgB,SAAS;IACvB,OAAO,IAAA,gCAA0B,EAAC,CAAC,KAAuB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE;YACf,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC,CAAC;SACnE;aAAM;YACL,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;SAC7B;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAVD,8BAUC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;AAAA,sCAA4E;AAE5E,SAAgB,SAAS;IACvB,OAAO,IAAA,gCAA0B,EAAC,CAAC,KAAuB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE;YACf,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC,CAAC;SACnE;aAAM;YACL,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;SAC7B;QAEA,KAAa,CAAC,YAAY,GAAG,IAAI,CAAC;IACrC,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAZD,8BAYC"}
package/lib/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { IBuilderMiddleware, IModelDescriptor, ModelBase, Orm, OrmRelation, SelectQueryBuilder } from '@spinajs/orm';
1
+ import { IModelDescriptor, ModelBase, Orm, OrmRelation, SelectQueryBuilder, QueryBuilder, QueryMiddleware, IBuilderMiddleware } from '@spinajs/orm';
2
2
  import { TranslationSource } from '@spinajs/intl';
3
3
  declare module '@spinajs/orm' {
4
4
  interface ISelectBuilderExtensions<T = any> {
5
5
  translate(lang: string): this;
6
+ translated: boolean;
6
7
  }
7
8
  interface IColumnDescriptor {
8
9
  Translate: boolean;
@@ -20,10 +21,14 @@ export declare class IntlModelMiddleware implements IBuilderMiddleware {
20
21
  protected _relationQuery: SelectQueryBuilder;
21
22
  protected _description: IModelDescriptor;
22
23
  constructor(_lang: string, _relationQuery: SelectQueryBuilder, _description: IModelDescriptor);
24
+ afterQueryCreation(_query: QueryBuilder<any>): void;
23
25
  afterQuery(data: any[]): any[];
24
26
  modelCreation(_: any): ModelBase;
25
27
  afterHydration(data: ModelBase[]): Promise<any[]>;
26
28
  }
29
+ export declare class IntlQueryMiddleware extends QueryMiddleware {
30
+ afterQueryCreation(builder: QueryBuilder): void;
31
+ }
27
32
  export declare class DbTranslationSource extends TranslationSource {
28
33
  load(): Promise<{
29
34
  [x: string]: any;
package/lib/index.js CHANGED
@@ -12,13 +12,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.DbTranslationSource = exports.IntlModelMiddleware = exports.IntlModelRelation = void 0;
15
+ exports.DbTranslationSource = exports.IntlQueryMiddleware = exports.IntlModelMiddleware = exports.IntlModelRelation = void 0;
16
16
  const di_1 = require("@spinajs/di");
17
17
  const orm_1 = require("@spinajs/orm");
18
18
  const intl_1 = require("@spinajs/intl");
19
19
  const lodash_1 = __importDefault(require("lodash"));
20
20
  const IntlTranslation_1 = require("./models/IntlTranslation");
21
21
  const IntlResource_1 = require("./models/IntlResource");
22
+ const language_1 = require("./language");
23
+ const configuration_1 = require("@spinajs/configuration");
22
24
  let IntlModelRelation = class IntlModelRelation extends orm_1.OrmRelation {
23
25
  constructor(_lang, _orm, _query, _mDescriptor, _parentRelation) {
24
26
  super(_orm, _query, {
@@ -52,6 +54,7 @@ class IntlModelMiddleware {
52
54
  this._relationQuery = _relationQuery;
53
55
  this._description = _description;
54
56
  }
57
+ afterQueryCreation(_query) { }
55
58
  afterQuery(data) {
56
59
  return data;
57
60
  }
@@ -61,6 +64,7 @@ class IntlModelMiddleware {
61
64
  async afterHydration(data) {
62
65
  const self = this;
63
66
  const pks = data.map((d) => {
67
+ // do this as one pass
64
68
  return d[this._description.PrimaryKey];
65
69
  });
66
70
  const hydrateMiddleware = {
@@ -78,7 +82,7 @@ class IntlModelMiddleware {
78
82
  relData.forEach((rd) => {
79
83
  d[rd.Column] = rd.Value;
80
84
  });
81
- d.Language = this._lang;
85
+ d.Language = self._lang;
82
86
  });
83
87
  },
84
88
  };
@@ -94,6 +98,13 @@ class IntlModelMiddleware {
94
98
  }
95
99
  exports.IntlModelMiddleware = IntlModelMiddleware;
96
100
  orm_1.SelectQueryBuilder.prototype['translate'] = function (lang) {
101
+ /**
102
+ * Cannot translate query that cames from translation middleware !
103
+ */
104
+ if (this.Owner !== null && this.Owner instanceof IntlModelRelation) {
105
+ return;
106
+ }
107
+ this.translated = true;
97
108
  const descriptor = (0, orm_1.extractModelDescriptor)(this._model);
98
109
  const relInstance = this._container.resolve(IntlModelRelation, [lang, this._container.get(orm_1.Orm), this, descriptor, this._owner]);
99
110
  relInstance.execute();
@@ -106,6 +117,21 @@ orm_1.SelectQueryBuilder.prototype['translate'] = function (lang) {
106
117
  this._relations.push(relInstance);
107
118
  return this;
108
119
  };
120
+ let IntlQueryMiddleware = class IntlQueryMiddleware extends orm_1.QueryMiddleware {
121
+ afterQueryCreation(builder) {
122
+ if (builder instanceof orm_1.SelectQueryBuilder && !builder.translated) {
123
+ const lang = (0, language_1.guessLanguage)();
124
+ const defaultLanguage = di_1.DI.get(configuration_1.Configuration).get('intl.defaultLocale');
125
+ if (lang && defaultLanguage !== lang) {
126
+ builder.translate(lang);
127
+ }
128
+ }
129
+ }
130
+ };
131
+ IntlQueryMiddleware = __decorate([
132
+ (0, di_1.Injectable)(orm_1.QueryMiddleware)
133
+ ], IntlQueryMiddleware);
134
+ exports.IntlQueryMiddleware = IntlQueryMiddleware;
109
135
  let DbTranslationSource = class DbTranslationSource extends intl_1.TranslationSource {
110
136
  async load() {
111
137
  const translations = await IntlTranslation_1.IntlTranslation.all();
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function guessLanguage(lang?: string): string;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guessLanguage = void 0;
4
+ const configuration_1 = require("@spinajs/configuration");
5
+ const di_1 = require("@spinajs/di");
6
+ const node_async_hooks_1 = require("node:async_hooks");
7
+ function guessLanguage(lang) {
8
+ let selectedLang = lang;
9
+ if (!selectedLang) {
10
+ const store = di_1.DI.get(node_async_hooks_1.AsyncLocalStorage);
11
+ if (store) {
12
+ const storage = di_1.DI.get(node_async_hooks_1.AsyncLocalStorage).getStore();
13
+ if (!storage || !storage.language) {
14
+ selectedLang = di_1.DI.get(configuration_1.Configuration).get('intl.defaultLocale');
15
+ }
16
+ else {
17
+ selectedLang = storage.language;
18
+ }
19
+ }
20
+ else {
21
+ selectedLang = di_1.DI.get(configuration_1.Configuration).get('intl.defaultLocale');
22
+ }
23
+ }
24
+ return selectedLang;
25
+ }
26
+ exports.guessLanguage = guessLanguage;
27
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../src/language.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AACvD,oCAAiC;AAEjC,uDAAqD;AAErD,SAAgB,aAAa,CAAC,IAAa;IACzC,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,KAAK,GAAG,OAAE,CAAC,GAAG,CAAC,oCAAiB,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,OAAE,CAAC,GAAG,CAAC,oCAAiB,CAAC,CAAC,QAAQ,EAAuB,CAAC;YAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACjC,YAAY,GAAG,OAAE,CAAC,GAAG,CAAC,6BAAa,CAAC,CAAC,GAAG,CAAS,oBAAoB,CAAC,CAAC;aACxE;iBAAM;gBACL,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;aACjC;SACF;aAAM;YACL,YAAY,GAAG,OAAE,CAAC,GAAG,CAAC,6BAAa,CAAC,CAAC,GAAG,CAAS,oBAAoB,CAAC,CAAC;SACxE;KACF;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAjBD,sCAiBC"}
package/lib/model.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { ModelBase } from '@spinajs/orm';
2
- export declare class IntlModelBase extends ModelBase {
2
+ export declare class Translatable extends ModelBase {
3
3
  Language: string;
4
4
  /**
5
5
  * Reloads entity with proper translation
6
6
  *
7
7
  * @param lang - language to load
8
8
  */
9
- translate(lang: string): Promise<void>;
9
+ translate(lang?: string): Promise<void>;
10
10
  update(): Promise<void>;
11
11
  }
package/lib/model.js CHANGED
@@ -3,32 +3,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.IntlModelBase = void 0;
6
+ exports.Translatable = void 0;
7
+ const di_1 = require("@spinajs/di");
7
8
  const orm_1 = require("@spinajs/orm");
8
9
  const lodash_1 = __importDefault(require("lodash"));
9
10
  const IntlResource_1 = require("./models/IntlResource");
10
- class IntlModelBase extends orm_1.ModelBase {
11
+ const configuration_1 = require("@spinajs/configuration");
12
+ const language_1 = require("./language");
13
+ class Translatable extends orm_1.ModelBase {
11
14
  /**
12
15
  * Reloads entity with proper translation
13
16
  *
14
17
  * @param lang - language to load
15
18
  */
16
19
  async translate(lang) {
20
+ const selectedLang = (0, language_1.guessLanguage)(lang);
17
21
  const translations = await IntlResource_1.IntlResource.where({
18
22
  ResourceId: this.PrimaryKeyValue,
19
23
  Resource: this.constructor.name,
20
- Lang: lang,
24
+ Lang: selectedLang,
21
25
  });
22
26
  translations.forEach((rd) => {
23
27
  this[rd.Column] = rd.Value;
24
28
  });
25
- this.Language = lang;
29
+ this.Language = selectedLang;
26
30
  }
27
31
  async update() {
28
- if (!this.Language) {
32
+ const selectedLang = (0, language_1.guessLanguage)(this.Language);
33
+ const defaultLanguage = di_1.DI.get(configuration_1.Configuration).get('intl.defaultLocale');
34
+ if (!selectedLang || defaultLanguage === selectedLang) {
29
35
  await super.update();
30
36
  }
31
37
  else {
38
+ this.Language = selectedLang;
32
39
  // TODO: temporaty use uniqyBy, pls FIX model descriptor proper handling in ORM module
33
40
  const tColumns = lodash_1.default.uniqBy(this.ModelDescriptor.Columns.filter((c) => c.Translate), 'Name');
34
41
  const { query } = this.createUpdateQuery();
@@ -57,5 +64,5 @@ class IntlModelBase extends orm_1.ModelBase {
57
64
  }
58
65
  }
59
66
  }
60
- exports.IntlModelBase = IntlModelBase;
67
+ exports.Translatable = Translatable;
61
68
  //# sourceMappingURL=model.js.map
package/lib/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;AAAA,sCAA0D;AAC1D,oDAAuB;AACvB,wDAAqD;AAErD,MAAa,aAAc,SAAQ,eAAS;IAG1C;;;;OAIG;IACI,KAAK,CAAC,SAAS,CAAC,IAAY;QACjC,MAAM,YAAY,GAAG,MAAM,2BAAY,CAAC,KAAK,CAAC;YAC5C,UAAU,EAAE,IAAI,CAAC,eAAe;YAChC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC/B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACzB,IAAY,CAAE,EAAU,CAAC,MAAM,CAAC,GAAI,EAAU,CAAC,KAAK,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;SACtB;aAAM;YACL,sFAAsF;YACtF,MAAM,QAAQ,GAAG,gBAAC,CAAC,MAAM,CACvB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACvD,MAAM,CACP,CAAC;YAEF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE3C,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE;gBAC5C,IAAY,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;aACvE;YAED,6BAA6B;YAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAEtD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aAChF;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,OAAO,IAAI,2BAAY,CAAC;oBACtB,UAAU,EAAE,IAAI,CAAC,eAAe;oBAChC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;oBAC/B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,IAAI,EAAE,IAAI,CAAC,QAAQ;oBACnB,KAAK,EAAG,IAAY,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC7B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,4CAA4C;YAC5C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,MAAM,CAAC,CAAC,MAAM,CAAC,qBAAe,CAAC,cAAc,CAAC,CAAC;aAChD;SACF;IACH,CAAC;CACF;AA9DD,sCA8DC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinajs/intl-orm",
3
- "version": "1.2.127",
3
+ "version": "1.2.135",
4
4
  "description": "Internationalization support for ORM module",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -41,15 +41,15 @@
41
41
  "@spinajs/configuration": "^1.2.127",
42
42
  "@spinajs/di": "^1.2.127",
43
43
  "@spinajs/exceptions": "^1.2.127",
44
- "@spinajs/intl": "^1.2.127",
44
+ "@spinajs/intl": "^1.2.135",
45
45
  "@spinajs/log": "^1.2.127",
46
- "@spinajs/orm": "^1.2.127",
46
+ "@spinajs/orm": "^1.2.135",
47
47
  "@spinajs/reflection": "^1.2.127",
48
48
  "luxon": "^2.4.0",
49
49
  "typescript-mix": "^3.1.3"
50
50
  },
51
51
  "devDependencies": {
52
- "@spinajs/orm-sqlite": "^1.2.127"
52
+ "@spinajs/orm-sqlite": "^1.2.135"
53
53
  },
54
- "gitHead": "53b022d0e70b7f2689ac984578b52afb0fd9e967"
54
+ "gitHead": "8a7fde1b1fbada9c1b6fb65603ba1aadd5bb1126"
55
55
  }