@onetype/framework 2.0.49 → 2.0.52

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 (104) hide show
  1. package/addons/core/commands/front/directives/run.js +1 -1
  2. package/addons/core/commands/front/directives/submit.js +1 -1
  3. package/addons/core/commands/front/functions/api.js +1 -1
  4. package/addons/core/database/back/addon.js +14 -0
  5. package/addons/core/database/back/events/addon.init.js +42 -0
  6. package/addons/core/database/back/events/addon.item.init.js +24 -0
  7. package/addons/core/database/back/functions/item/create.js +92 -0
  8. package/addons/core/database/back/functions/item/delete.js +34 -0
  9. package/addons/core/database/back/functions/item/save.js +13 -0
  10. package/addons/core/database/back/functions/item/update.js +90 -0
  11. package/addons/core/database/back/functions/items/builder.js +160 -0
  12. package/addons/core/database/back/functions/items/filter.js +32 -0
  13. package/addons/core/database/back/functions/items/filters.js +7 -0
  14. package/addons/core/database/back/functions/items/find.js +28 -0
  15. package/addons/core/database/back/functions/items/methods/aggregate.js +15 -0
  16. package/addons/core/database/back/functions/items/methods/count.js +12 -0
  17. package/addons/core/database/back/functions/items/methods/exists.js +8 -0
  18. package/addons/core/database/back/functions/items/methods/many.js +13 -0
  19. package/addons/core/database/back/functions/items/methods/one.js +8 -0
  20. package/addons/core/database/back/functions/items/methods/plain.js +29 -0
  21. package/addons/core/database/back/functions/items/methods/query.js +33 -0
  22. package/addons/core/database/back/functions/items/methods.js +142 -0
  23. package/addons/core/database/back/functions/items/transform/join.js +63 -0
  24. package/addons/core/database/back/functions/items/transform/translate.js +57 -0
  25. package/addons/core/database/back/functions/items/validation.js +125 -0
  26. package/addons/core/database/back/item/catch/add.js +1 -1
  27. package/addons/core/database/back/items/commands/create.js +54 -0
  28. package/addons/core/database/back/items/commands/delete.js +62 -0
  29. package/addons/core/database/back/items/commands/find.js +118 -0
  30. package/addons/core/database/back/items/commands/update.js +70 -0
  31. package/addons/core/database/back/load.js +27 -26
  32. package/addons/core/database/front/events/addon.init.js +42 -0
  33. package/addons/core/database/front/functions/create.js +11 -0
  34. package/addons/core/database/front/functions/delete.js +10 -0
  35. package/addons/core/database/front/functions/find.js +96 -142
  36. package/addons/core/database/front/functions/update.js +12 -0
  37. package/addons/float/popup/css/popup.css +141 -18
  38. package/addons/float/popup/js/addon.js +5 -0
  39. package/addons/float/popup/js/functions/confirm.js +100 -0
  40. package/addons/float/popup/js/functions/toast.js +1 -1
  41. package/addons/float/popup/js/items/directives/tooltip.js +5 -1
  42. package/addons/render/directives/front/addon.js +5 -0
  43. package/addons/render/directives/front/functions/process/data.js +19 -1
  44. package/addons/render/directives/front/functions/process/locale.js +46 -0
  45. package/addons/render/directives/front/functions/process.js +4 -1
  46. package/addons/render/directives/front/items/self/660-form.js +74 -163
  47. package/addons/render/directives/front/items/self/750-html.js +1 -1
  48. package/addons/render/elements/front/items/self/form/button/button.css +9 -0
  49. package/addons/render/elements/front/items/self/form/button/button.js +1 -1
  50. package/addons/render/elements/front/items/self/form/color/color.css +1 -1
  51. package/addons/render/elements/front/items/self/form/color/color.js +25 -10
  52. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.css +410 -0
  53. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.js +191 -0
  54. package/addons/render/elements/front/items/self/form/field/field.css +18 -4
  55. package/addons/render/elements/front/items/self/form/field/field.js +6 -1
  56. package/addons/render/elements/front/items/self/form/section/section.js +3 -1
  57. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +8 -3
  58. package/addons/render/pages/core/addon.js +1 -1
  59. package/addons/render/pages/front/items/directives/change.js +1 -1
  60. package/addons/render/pages/front/styles/page.css +0 -7
  61. package/addons/render/transforms/js/functions/data.js +21 -2
  62. package/lib/src/classes/addon/class.js +0 -16
  63. package/lib/src/classes/addon/classes/item/class.js +0 -2
  64. package/lib/src/classes/addon/classes/item/mixins/get.js +0 -1
  65. package/lib/src/classes/addon/classes/render/mixins/compile.js +3 -2
  66. package/lib/src/classes/addon/mixins/items.js +2 -0
  67. package/lib/src/mixins/addons.js +2 -0
  68. package/lib/src/mixins/data.js +10 -9
  69. package/lib/src/mixins/emitter.js +5 -1
  70. package/lib/src/mixins/form.js +4 -0
  71. package/lib/src/mixins/function.js +6 -1
  72. package/lib/src/mixins/language.js +55 -0
  73. package/lib/src/mixins/locale.js +49 -0
  74. package/lib/src/onetype.js +6 -11
  75. package/package.json +1 -1
  76. package/addons/core/database/back/events/addon.add.js +0 -18
  77. package/addons/core/database/back/events/middleware/addon.items.find.js +0 -24
  78. package/addons/core/database/back/events/middleware/item.crud.create.js +0 -24
  79. package/addons/core/database/back/events/middleware/item.crud.delete.js +0 -24
  80. package/addons/core/database/back/events/middleware/item.crud.update.js +0 -24
  81. package/addons/core/database/back/functions/create.js +0 -6
  82. package/addons/core/database/back/functions/delete.js +0 -6
  83. package/addons/core/database/back/functions/find/builder.js +0 -160
  84. package/addons/core/database/back/functions/find/count.js +0 -12
  85. package/addons/core/database/back/functions/find/filter.js +0 -37
  86. package/addons/core/database/back/functions/find/filters.js +0 -7
  87. package/addons/core/database/back/functions/find/many.js +0 -93
  88. package/addons/core/database/back/functions/find/methods.js +0 -235
  89. package/addons/core/database/back/functions/find/plain.js +0 -25
  90. package/addons/core/database/back/functions/find/validation.js +0 -214
  91. package/addons/core/database/back/functions/find.js +0 -25
  92. package/addons/core/database/back/functions/update.js +0 -6
  93. package/addons/core/database/back/item/functions/create.js +0 -94
  94. package/addons/core/database/back/item/functions/delete.js +0 -25
  95. package/addons/core/database/back/item/functions/find.js +0 -19
  96. package/addons/core/database/back/item/functions/save.js +0 -15
  97. package/addons/core/database/back/item/functions/transaction.js +0 -17
  98. package/addons/core/database/back/item/functions/update.js +0 -76
  99. package/addons/core/database/back/items/commands/expose.js +0 -321
  100. package/addons/core/database/front/events/addon.add.js +0 -13
  101. package/lib/src/classes/addon/classes/item/mixins/crud.js +0 -28
  102. package/lib/src/classes/addon/mixins/find.js +0 -12
  103. package/lib/src/classes/addon/mixins/table.js +0 -35
  104. package/lib/src/mixins/dependencies.js +0 -104
@@ -13,7 +13,7 @@
13
13
  display: flex;
14
14
  align-items: flex-start;
15
15
  gap: var(--ot-spacing-l);
16
- padding: var(--ot-spacing-m);
16
+ padding: calc(var(--ot-spacing-m) * 1.3) var(--ot-spacing-m);
17
17
  width: 100%;
18
18
  }
19
19
 
@@ -52,12 +52,26 @@
52
52
  flex: 1;
53
53
  min-width: 200px;
54
54
  max-width: 420px;
55
+ display: flex;
56
+ justify-content: flex-end;
57
+ width: inherit;
55
58
  }
56
59
 
57
- /* Border variant */
58
60
 
59
- .e-2109a6b9 > .holder.border-bottom { border-bottom: 1px solid var(--ot-bg-2-border); }
60
- .e-2109a6b9:last-child > .holder.border-bottom { border-bottom: none; }
61
+ /* Position bottom */
62
+
63
+ .e-2109a6b9 > .holder.bottom
64
+ {
65
+ flex-direction: column;
66
+ gap: var(--ot-spacing-m);
67
+ }
68
+
69
+ .e-2109a6b9 > .holder.bottom > .input
70
+ {
71
+ min-width: 0;
72
+ max-width: none;
73
+ width: 100%;
74
+ }
61
75
 
62
76
  /* Size variants */
63
77
 
@@ -16,6 +16,11 @@ onetype.AddonReady('elements', (elements) =>
16
16
  type: 'string',
17
17
  value: ''
18
18
  },
19
+ position: {
20
+ type: 'string',
21
+ value: 'right',
22
+ options: ['right', 'bottom']
23
+ },
19
24
  variant: {
20
25
  type: 'array',
21
26
  value: [],
@@ -25,7 +30,7 @@ onetype.AddonReady('elements', (elements) =>
25
30
  render: function()
26
31
  {
27
32
  return `
28
- <div :class="'holder ' + variant.join(' ')">
33
+ <div :class="'holder ' + position + ' ' + variant.join(' ')">
29
34
  <div class="info">
30
35
  <label ot-if="label" class="label">{{ label }}</label>
31
36
  <p ot-if="description" class="description">{{ description }}</p>
@@ -24,9 +24,11 @@ onetype.AddonReady('elements', (elements) =>
24
24
  },
25
25
  render: function()
26
26
  {
27
+ this.hasHeader = !!this.title || !!this.description;
28
+
27
29
  return `
28
30
  <div :class="'holder ' + variant.join(' ')">
29
- <div class="header">
31
+ <div ot-if="hasHeader" class="header">
30
32
  <h3 ot-if="title" class="title">{{ title }}</h3>
31
33
  <p ot-if="description" class="description">{{ description }}</p>
32
34
  </div>
@@ -61,6 +61,11 @@
61
61
 
62
62
  /* Size variants */
63
63
 
64
- .e-1a8b6ac1 > .holder.size-s > .tab { padding: var(--ot-spacing-x) var(--ot-spacing-s); font-size: var(--ot-size-s); }
65
- .e-1a8b6ac1 > .holder.size-m > .tab { padding: var(--ot-spacing-s) var(--ot-spacing-m); font-size: var(--ot-size-m); }
66
- .e-1a8b6ac1 > .holder.size-l > .tab { padding: var(--ot-spacing-m) var(--ot-spacing-l); font-size: var(--ot-size-m); }
64
+ .e-1a8b6ac1 > .holder.size-s { height: var(--ot-height-s); }
65
+ .e-1a8b6ac1 > .holder.size-s > .tab { height: 100%; padding: 0 var(--ot-spacing-s); font-size: var(--ot-size-s); }
66
+
67
+ .e-1a8b6ac1 > .holder.size-m { height: var(--ot-height-m); }
68
+ .e-1a8b6ac1 > .holder.size-m > .tab { height: 100%; padding: 0 var(--ot-spacing-m); font-size: var(--ot-size-m); }
69
+
70
+ .e-1a8b6ac1 > .holder.size-l { height: var(--ot-height-l); }
71
+ .e-1a8b6ac1 > .holder.size-l > .tab { height: 100%; padding: 0 var(--ot-spacing-l); font-size: var(--ot-size-m); }
@@ -2,7 +2,7 @@ import onetype from '#framework/load.js';
2
2
 
3
3
  const pages = onetype.Addon('pages', (addon) =>
4
4
  {
5
- addon.Field('id', ['string']);
5
+ addon.Field('id', ['string|number']);
6
6
  addon.Field('route', ['string|array'], null, (value) =>
7
7
  {
8
8
  const base = onetype.Base();
@@ -8,7 +8,7 @@ onetype.AddonReady('directives', function(directives)
8
8
  category: 'navigation',
9
9
  trigger: 'node',
10
10
  order: 666,
11
- strict: false,
11
+ strict: true,
12
12
  tag: 'ot-page',
13
13
  attributes: {
14
14
  'route': ['string', null, true],
@@ -14,15 +14,8 @@
14
14
  {
15
15
  position: relative;
16
16
  overflow: auto;
17
- scrollbar-width: thin;
18
- scrollbar-color: var(--ot-bg-4) var(--ot-bg-1);
19
17
  }
20
18
 
21
- .ot-page-area::-webkit-scrollbar { width: 8px; height: 8px; }
22
- .ot-page-area::-webkit-scrollbar-track { background: var(--ot-bg-1); }
23
- .ot-page-area::-webkit-scrollbar-thumb { background: var(--ot-bg-4); border-radius: 4px; }
24
- .ot-page-area::-webkit-scrollbar-thumb:hover { background: var(--ot-bg-4-hover); }
25
-
26
19
  .ot-page-area > div
27
20
  {
28
21
  height: 100%;
@@ -8,9 +8,28 @@ transforms.Fn('data', function(config, node)
8
8
 
9
9
  const attribute = 'ot-' + name;
10
10
  const raw = node.getAttribute(attribute);
11
- const value = raw !== null ? onetype.Function(raw, {}, false) : undefined;
11
+ let value = raw;
12
12
 
13
- data[name] = onetype.DataDefineOne(typeof value === 'undefined' ? raw : value, definition);
13
+ if(raw !== null)
14
+ {
15
+ const type = Array.isArray(definition) ? definition[0] : (definition && definition.type);
16
+
17
+ if(type !== 'string')
18
+ {
19
+ try
20
+ {
21
+ const evaluated = onetype.Function(raw, {}, false);
22
+
23
+ if(evaluated !== undefined)
24
+ {
25
+ value = evaluated;
26
+ }
27
+ }
28
+ catch(e) {}
29
+ }
30
+ }
31
+
32
+ data[name] = onetype.DataDefineOne(value, definition);
14
33
 
15
34
  if(raw !== null)
16
35
  {
@@ -4,8 +4,6 @@ import AddonFields from './mixins/fields.js';
4
4
  import AddonItems from './mixins/items.js';
5
5
  import AddonRemove from './mixins/remove.js';
6
6
  import AddonFunctions from './mixins/functions.js';
7
- import AddonTable from './mixins/table.js';
8
- import AddonFind from './mixins/find.js';
9
7
  import AddonRender from './mixins/render.js';
10
8
 
11
9
  class OneTypeAddon
@@ -17,18 +15,6 @@ class OneTypeAddon
17
15
 
18
16
  this.store = {};
19
17
 
20
- this.table =
21
- {
22
- name: null,
23
- callbacks:
24
- {
25
- get: [],
26
- create: [],
27
- update: [],
28
- delete: []
29
- }
30
- };
31
-
32
18
  this.fields =
33
19
  {
34
20
  data: {},
@@ -76,8 +62,6 @@ Object.assign(OneTypeAddon.prototype, AddonFields);
76
62
  Object.assign(OneTypeAddon.prototype, AddonItems);
77
63
  Object.assign(OneTypeAddon.prototype, AddonRemove);
78
64
  Object.assign(OneTypeAddon.prototype, AddonFunctions);
79
- Object.assign(OneTypeAddon.prototype, AddonTable);
80
- Object.assign(OneTypeAddon.prototype, AddonFind);
81
65
  Object.assign(OneTypeAddon.prototype, AddonRender);
82
66
 
83
67
  export default OneTypeAddon;
@@ -2,7 +2,6 @@ import AddonItemGet from './mixins/get.js';
2
2
  import AddonItemSet from './mixins/set.js';
3
3
  import AddonItemRemove from './mixins/remove.js';
4
4
  import AddonItemFunctions from './mixins/functions.js';
5
- import AddonItemCrud from './mixins/crud.js';
6
5
  import AddonItemStore from './mixins/store.js';
7
6
 
8
7
  class OneTypeAddonItem
@@ -19,7 +18,6 @@ Object.assign(OneTypeAddonItem.prototype, AddonItemGet);
19
18
  Object.assign(OneTypeAddonItem.prototype, AddonItemSet);
20
19
  Object.assign(OneTypeAddonItem.prototype, AddonItemRemove);
21
20
  Object.assign(OneTypeAddonItem.prototype, AddonItemFunctions);
22
- Object.assign(OneTypeAddonItem.prototype, AddonItemCrud);
23
21
  Object.assign(OneTypeAddonItem.prototype, AddonItemStore);
24
22
 
25
23
  export default OneTypeAddonItem;
@@ -34,7 +34,6 @@ const AddonItemGet =
34
34
  value = callback(value, this);
35
35
  });
36
36
 
37
-
38
37
  try
39
38
  {
40
39
  if(field?.define)
@@ -2,7 +2,7 @@ import onetype from '#framework/load.js';
2
2
 
3
3
  const RenderCompile =
4
4
  {
5
- Compile(html, data = null)
5
+ Compile(html, data = null, options = {})
6
6
  {
7
7
  const element = this.DOMCreateElement(html);
8
8
 
@@ -24,7 +24,8 @@ const RenderCompile =
24
24
  nodes: {},
25
25
  time: 0,
26
26
  walk: true,
27
- children: true
27
+ children: true,
28
+ locale: options.locale !== undefined ? options.locale : true
28
29
  };
29
30
 
30
31
  if(data)
@@ -62,6 +62,8 @@ const AddonItems =
62
62
 
63
63
  let item = new OneTypeAddonItem(this, {});
64
64
 
65
+ this.onetype.Emit('@addon.item.init', item);
66
+
65
67
  if(!('id' in object))
66
68
  {
67
69
  object.id = this.items.id++;
@@ -20,6 +20,8 @@ const OneTypeAddons =
20
20
 
21
21
  const addon = new OneTypeAddon(this, name);
22
22
 
23
+ this.Emit('@addon.init', addon);
24
+
23
25
  this.addons.data[name] = addon;
24
26
 
25
27
  then && then(addon);
@@ -39,7 +39,8 @@ const OneTypeData =
39
39
  }
40
40
  catch (error)
41
41
  {
42
- throw this.Error(400, 'Error in field :field:.', {field: key});
42
+ error.path = [key].concat(error.path || []);
43
+ throw error;
43
44
  }
44
45
  }
45
46
 
@@ -68,7 +69,11 @@ const OneTypeData =
68
69
  {
69
70
  if(parsed.required)
70
71
  {
71
- throw this.Error(400, 'Expected :type:.', {type: parsed.type});
72
+ throw this.Error(400, 'Expected :type:, got :got:.', {
73
+ type: parsed.type,
74
+ got: value === null ? 'null' : (value === undefined ? 'undefined' : (Array.isArray(value) ? 'array' : typeof value)),
75
+ value: value
76
+ });
72
77
  }
73
78
 
74
79
  value = value === null ? null : undefined;
@@ -100,7 +105,8 @@ const OneTypeData =
100
105
  }
101
106
  catch (error)
102
107
  {
103
- throw this.Error(400, 'Error at array index :index:.', {index: i});
108
+ error.path = ['[' + i + ']'].concat(error.path || []);
109
+ throw error;
104
110
  }
105
111
  }
106
112
  }
@@ -119,12 +125,7 @@ const OneTypeData =
119
125
  }
120
126
  catch (error)
121
127
  {
122
- if (error.message.includes('Error at') || error.message.includes('Error in field'))
123
- {
124
- throw error;
125
- }
126
-
127
- throw this.Error(400, 'Data validation error.');
128
+ throw error;
128
129
  }
129
130
  },
130
131
 
@@ -25,7 +25,11 @@ const OneTypeEmitter =
25
25
  }
26
26
  catch(error)
27
27
  {
28
- this.Error(500, 'Error in emitter callback.', {name});
28
+ this.Error(500, 'Error in emitter callback :name: — :reason:', {
29
+ name,
30
+ reason: error.message,
31
+ stack: error.stack
32
+ });
29
33
  }
30
34
  }
31
35
 
@@ -50,14 +50,18 @@ const OneTypeForm =
50
50
  if(input.type === 'checkbox')
51
51
  {
52
52
  input.checked = !!value;
53
+ input.dispatchEvent(new Event('change', { bubbles: true }));
53
54
  }
54
55
  else if(input.type === 'radio')
55
56
  {
56
57
  input.checked = input.value === value;
58
+ input.dispatchEvent(new Event('change', { bubbles: true }));
57
59
  }
58
60
  else
59
61
  {
60
62
  input.value = value;
63
+ input.dispatchEvent(new Event('input', { bubbles: true }));
64
+ input.dispatchEvent(new Event('change', { bubbles: true }));
61
65
  }
62
66
  });
63
67
  });
@@ -27,7 +27,12 @@ const OneTypeFunction =
27
27
  }
28
28
  catch (error)
29
29
  {
30
- this.Error(500, 'Function error on :expression:.', {expression});
30
+ this.Error(500, 'Function error on :expression: — :reason:', {
31
+ expression,
32
+ reason: error.message,
33
+ data: Object.keys(data),
34
+ stack: error.stack
35
+ });
31
36
  return undefined;
32
37
  }
33
38
  },
@@ -0,0 +1,55 @@
1
+ const OneTypeLanguage =
2
+ {
3
+ Language(value)
4
+ {
5
+ if(typeof value === 'undefined')
6
+ {
7
+ return this.LanguageGet();
8
+ }
9
+
10
+ this.LanguageSet(value);
11
+ },
12
+
13
+ LanguageGet()
14
+ {
15
+ return this.StateGet('language', 'EN');
16
+ },
17
+
18
+ LanguageSet(value)
19
+ {
20
+ this.LanguageValidate(value);
21
+ this.StateSet('language', value);
22
+ },
23
+
24
+ Languages(value)
25
+ {
26
+ if(typeof value === 'undefined')
27
+ {
28
+ return this.LanguagesGet();
29
+ }
30
+
31
+ this.LanguagesSet(value);
32
+ },
33
+
34
+ LanguagesGet()
35
+ {
36
+ return this.StateGet('languages', []);
37
+ },
38
+
39
+ LanguagesSet(value)
40
+ {
41
+ this.StateSet('languages', value);
42
+ },
43
+
44
+ LanguageValidate(code)
45
+ {
46
+ if(typeof code !== 'string' || !/^[A-Z]{2}$/.test(code))
47
+ {
48
+ throw this.Error(400, 'Language must be a 2-letter uppercase code, received: :code:.', {code});
49
+ }
50
+
51
+ return code;
52
+ }
53
+ };
54
+
55
+ export default OneTypeLanguage;
@@ -0,0 +1,49 @@
1
+ const OneTypeLocale =
2
+ {
3
+ LocaleGet(text, key = null)
4
+ {
5
+ const language = this.Language();
6
+ const hash = this.GenerateHash(key ? key + ':' + text : text);
7
+ const locales = this.LocalesGet(language);
8
+
9
+ if(hash in locales)
10
+ {
11
+ return locales[hash];
12
+ }
13
+
14
+ this.LocaleSet(text, key);
15
+
16
+ return text;
17
+ },
18
+
19
+ LocaleSet(text, key = null)
20
+ {
21
+ const language = this.Language();
22
+ const hash = this.GenerateHash(key ? key + ':' + text : text);
23
+ const locales = this.LocalesGet(language);
24
+
25
+ locales[hash] = text;
26
+ this.LocalesSet(language, locales);
27
+ },
28
+
29
+ LocalesGet(language)
30
+ {
31
+ const locales = this.StateGet('locales', {});
32
+
33
+ if(language in locales)
34
+ {
35
+ return locales[language]
36
+ }
37
+
38
+ return {};
39
+ },
40
+
41
+ LocalesSet(language, values)
42
+ {
43
+ const locales = this.StateGet('locales', {});
44
+ locales[language] = values;
45
+ this.StateSet('locales', locales);
46
+ }
47
+ };
48
+
49
+ export default OneTypeLocale;
@@ -6,7 +6,6 @@ import OneTypeBinaries from './mixins/binaries.js';
6
6
  import OneTypeString from './mixins/string.js';
7
7
  import OneTypeEmitter from './mixins/emitter.js';
8
8
  import OneTypeMiddleware from './mixins/middleware.js';
9
- import OneTypeDependencies from './mixins/dependencies.js';
10
9
  import OneTypeFunction from './mixins/function.js';
11
10
  import OneTypeOverrides from './mixins/overrides.js';
12
11
  import OneTypeDOM from './mixins/dom.js';
@@ -22,6 +21,8 @@ import OneTypeAssets from './mixins/assets.js';
22
21
  import OneTypeObserver from './mixins/observer.js';
23
22
  import OneTypeMarkdown from './mixins/markdown.js';
24
23
  import OneTypeBase from './mixins/base.js';
24
+ import OneTypeLanguage from './mixins/language.js';
25
+ import OneTypeLocale from './mixins/locale.js';
25
26
 
26
27
  class OneType
27
28
  {
@@ -41,14 +42,6 @@ class OneType
41
42
  }
42
43
  };
43
44
 
44
- this.dependencies = {
45
- items: {},
46
- callbacks: {
47
- add: [],
48
- remove: []
49
- }
50
- };
51
-
52
45
  this.data =
53
46
  {
54
47
  schemas: {},
@@ -59,7 +52,8 @@ class OneType
59
52
  this.$ot =
60
53
  {
61
54
  get: (key, value = undefined) => this.StateGet(key, undefined),
62
- set: (key, value) => this.StateSet(key, value)
55
+ set: (key, value) => this.StateSet(key, value),
56
+ t: (text, key) => this.LocaleGet(text, key)
63
57
  };
64
58
 
65
59
  this.ObserverStart();
@@ -74,7 +68,6 @@ Object.assign(OneType.prototype, OneTypeData);
74
68
  Object.assign(OneType.prototype, OneTypeBinaries);
75
69
  Object.assign(OneType.prototype, OneTypeString);
76
70
  Object.assign(OneType.prototype, OneTypeMiddleware);
77
- Object.assign(OneType.prototype, OneTypeDependencies);
78
71
  Object.assign(OneType.prototype, OneTypeFunction);
79
72
  Object.assign(OneType.prototype, OneTypeOverrides);
80
73
  Object.assign(OneType.prototype, OneTypeDOM);
@@ -90,5 +83,7 @@ Object.assign(OneType.prototype, OneTypeAssets);
90
83
  Object.assign(OneType.prototype, OneTypeObserver);
91
84
  Object.assign(OneType.prototype, OneTypeMarkdown);
92
85
  Object.assign(OneType.prototype, OneTypeBase);
86
+ Object.assign(OneType.prototype, OneTypeLanguage);
87
+ Object.assign(OneType.prototype, OneTypeLocale);
93
88
 
94
89
  export default OneType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onetype/framework",
3
- "version": "2.0.49",
3
+ "version": "2.0.52",
4
4
  "description": "OneType Framework — Full-stack isomorphic JavaScript framework built from scratch. One addon abstraction powers databases, servers, commands, pages, directives, queues, and more.",
5
5
  "type": "module",
6
6
  "main": "lib/load.js",
@@ -1,18 +0,0 @@
1
- import onetype from '#framework/load.js';
2
-
3
- onetype.EmitOn('@addon.add', (addon) =>
4
- {
5
- addon.expose = null;
6
-
7
- addon.Expose = function(config)
8
- {
9
- config = onetype.DataDefine(config, {
10
- filter: ['array', []],
11
- sort: ['array', []],
12
- select: ['array', []],
13
- callback: ['function']
14
- });
15
-
16
- addon.expose = config;
17
- };
18
- });
@@ -1,24 +0,0 @@
1
- import onetype from '#framework/load.js';
2
- import database from '#database/addon.js';
3
-
4
- onetype.MiddlewareIntercept('addon.items.find', (middleware) =>
5
- {
6
- let { addon, table, connection } = middleware.value;
7
-
8
- if(!table.name)
9
- {
10
- throw onetype.Error(400, 'Addon must have table name set.');
11
- }
12
-
13
- if(typeof connection === 'string')
14
- {
15
- connection = database.ItemGet(connection)?.Get('connection');
16
- }
17
-
18
- if(!connection)
19
- {
20
- throw onetype.Error(500, 'Database connection is not present.');
21
- }
22
-
23
- middleware.value.response = database.Fn('find', connection, table, addon);
24
- });
@@ -1,24 +0,0 @@
1
- import onetype from '#framework/load.js';
2
- import database from '#database/addon.js';
3
-
4
- onetype.MiddlewareIntercept('item.crud.create', async (middleware) =>
5
- {
6
- let { item, table, connection } = middleware.value;
7
-
8
- if(!table.name)
9
- {
10
- throw onetype.Error(400, 'Addon must have table name set.');
11
- }
12
-
13
- if(typeof connection === 'string')
14
- {
15
- connection = database.ItemGet(connection)?.Get('connection');
16
- }
17
-
18
- if(!connection)
19
- {
20
- throw onetype.Error(500, 'Database connection is not present.');
21
- }
22
-
23
- middleware.value.response = database.Fn('create', connection, table, item);
24
- });
@@ -1,24 +0,0 @@
1
- import onetype from '#framework/load.js';
2
- import database from '#database/addon.js';
3
-
4
- onetype.MiddlewareIntercept('item.crud.delete', async (middleware) =>
5
- {
6
- let { item, table, connection } = middleware.value;
7
-
8
- if(!table.name)
9
- {
10
- throw onetype.Error(400, 'Addon must have table name set.');
11
- }
12
-
13
- if(typeof connection === 'string')
14
- {
15
- connection = database.ItemGet(connection)?.Get('connection');
16
- }
17
-
18
- if(!connection)
19
- {
20
- throw onetype.Error(500, 'Database connection is not present.');
21
- }
22
-
23
- middleware.value.response = database.Fn('delete', connection, table, item);
24
- });
@@ -1,24 +0,0 @@
1
- import onetype from '#framework/load.js';
2
- import database from '#database/addon.js';
3
-
4
- onetype.MiddlewareIntercept('item.crud.update', async (middleware) =>
5
- {
6
- let { item, table, connection } = middleware.value;
7
-
8
- if(!table.name)
9
- {
10
- throw onetype.Error(400, 'Addon must have table name set.');
11
- }
12
-
13
- if(typeof connection === 'string')
14
- {
15
- connection = database.ItemGet(connection)?.Get('connection');
16
- }
17
-
18
- if(!connection)
19
- {
20
- throw onetype.Error(500, 'Database connection is not present.');
21
- }
22
-
23
- middleware.value.response = database.Fn('update', connection, table, item);
24
- });
@@ -1,6 +0,0 @@
1
- import database from '#database/addon.js';
2
-
3
- database.Fn('create', async function(connection, table, item)
4
- {
5
- return database.Fn('item.create', item, item.addon, connection);
6
- });
@@ -1,6 +0,0 @@
1
- import database from '#database/addon.js';
2
-
3
- database.Fn('delete', async function(connection, table, item)
4
- {
5
- return database.Fn('item.delete', item, connection);
6
- });