@things-factory/shell 7.0.1-beta.8 → 7.0.1-rc.0
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/client/themes/app-theme.css +23 -32
- package/client/themes/dark.css +0 -100
- package/client/themes/grist-theme.css +8 -10
- package/client/themes/layout-theme.css +0 -5
- package/client/themes/light.css +0 -100
- package/client/themes/oops-theme.css +2 -2
- package/client/themes/report-theme.css +47 -0
- package/client/themes/state-color.css +1 -1
- package/dist-server/initializers/database.js +6 -6
- package/dist-server/initializers/database.js.map +1 -1
- package/dist-server/middlewares/domain-middleware.js +1 -2
- package/dist-server/middlewares/domain-middleware.js.map +1 -1
- package/dist-server/middlewares/index.js +1 -2
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/pubsub.js +0 -1
- package/dist-server/pubsub.js.map +1 -1
- package/dist-server/routers/global-router.js.map +1 -1
- package/dist-server/schema.js +1 -2
- package/dist-server/schema.js.map +1 -1
- package/dist-server/server-dev.js.map +1 -1
- package/dist-server/server.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-item-type.js +5 -5
- package/dist-server/service/attribute-set/attribute-set-item-type.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-mutation.js +2 -2
- package/dist-server/service/attribute-set/attribute-set-mutation.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-query.js +3 -3
- package/dist-server/service/attribute-set/attribute-set-query.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-type.js +6 -6
- package/dist-server/service/attribute-set/attribute-set-type.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set.js +2 -2
- package/dist-server/service/attribute-set/attribute-set.js.map +1 -1
- package/dist-server/service/common-types/list-param.js +9 -9
- package/dist-server/service/common-types/list-param.js.map +1 -1
- package/dist-server/service/common-types/log.js +2 -2
- package/dist-server/service/common-types/log.js.map +1 -1
- package/dist-server/service/common-types/object-ref.js +2 -2
- package/dist-server/service/common-types/object-ref.js.map +1 -1
- package/dist-server/service/common-types/scalar-any.js.map +1 -1
- package/dist-server/service/common-types/scalar-date.js.map +1 -1
- package/dist-server/service/directive-transaction/transaction.js.map +1 -1
- package/dist-server/service/domain/{domain-Mutation.js → domain-mutation.js} +3 -3
- package/dist-server/service/domain/domain-mutation.js.map +1 -0
- package/dist-server/service/domain/domain-query.js +3 -3
- package/dist-server/service/domain/domain-query.js.map +1 -1
- package/dist-server/service/domain/domain-types.js +6 -6
- package/dist-server/service/domain/domain-types.js.map +1 -1
- package/dist-server/service/domain/domain.js +6 -7
- package/dist-server/service/domain/domain.js.map +1 -1
- package/dist-server/service/domain/index.d.ts +1 -1
- package/dist-server/service/domain/index.js +2 -2
- package/dist-server/service/domain/index.js.map +1 -1
- package/dist-server/service/index.d.ts +1 -1
- package/dist-server/service/subscription-data/data-resolver.js +2 -2
- package/dist-server/service/subscription-data/data-resolver.js.map +1 -1
- package/dist-server/service/subscription-data/data-types.js +2 -2
- package/dist-server/service/subscription-data/data-types.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/typeorm/encrypt-transform.js +1 -1
- package/dist-server/typeorm/encrypt-transform.js.map +1 -1
- package/dist-server/typeorm/get-data-encryption-key.js.map +1 -1
- package/dist-server/typeorm/json5-transform.js.map +1 -1
- package/dist-server/utils/condition-builder.js.map +1 -1
- package/dist-server/utils/get-domain.d.ts +0 -1
- package/dist-server/utils/get-domain.js +7 -8
- package/dist-server/utils/get-domain.js.map +1 -1
- package/dist-server/utils/get-query-builder-from-list-params.js +1 -2
- package/dist-server/utils/get-query-builder-from-list-params.js.map +1 -1
- package/dist-server/utils/get-times-for-period.js +2 -3
- package/dist-server/utils/get-times-for-period.js.map +1 -1
- package/dist-server/utils/list-param-adjuster.js +1 -2
- package/dist-server/utils/list-param-adjuster.js.map +1 -1
- package/dist-server/utils/list-params-converter.js +1 -2
- package/dist-server/utils/list-params-converter.js.map +1 -1
- package/dist-server/utils/list-query-builder.js.map +1 -1
- package/dist-server/utils/publish-progress.js +1 -2
- package/dist-server/utils/publish-progress.js.map +1 -1
- package/package.json +14 -14
- package/server/service/attribute-set/attribute-set-query.ts +1 -1
- package/server/service/domain/domain-query.ts +1 -1
- package/server/service/domain/index.ts +1 -1
- package/dist-server/service/domain/domain-Mutation.js.map +0 -1
- /package/dist-server/service/domain/{domain-Mutation.d.ts → domain-mutation.d.ts} +0 -0
@@ -1,27 +1,14 @@
|
|
1
1
|
body {
|
2
2
|
/* theme color */
|
3
|
-
--primary-color
|
4
|
-
--
|
5
|
-
--secondary-color-rgb: 57, 78, 100;
|
6
|
-
--secondary-color: rgb(var(--secondary-color-rgb));
|
3
|
+
--primary-color: var(--md-sys-color-primary);
|
4
|
+
--secondary-color: var(--md-sys-color-secondary);
|
7
5
|
--focus-color: var(--md-sys-color-on-primary);
|
8
|
-
--primary-background-color: var(--md-sys-color-
|
9
|
-
--secondary-background-color:
|
10
|
-
--md-sys-color-on-primary: #fff;
|
11
|
-
--theme-black-color: rgba(0, 0, 0, 0.9);
|
6
|
+
--primary-background-color: var(--md-sys-color-primary-container);
|
7
|
+
--secondary-background-color: var(--md-sys-color-secondary-container);
|
12
8
|
|
13
9
|
--focus-background-color: var(--md-sys-color-primary);
|
14
|
-
--primary-text-color:
|
15
|
-
--secondary-text-color:
|
16
|
-
|
17
|
-
--opacity-dark-color: rgba(0, 0, 0, 0.4);
|
18
|
-
--opacity-light-color: rgba(255, 255, 255, 0.8);
|
19
|
-
|
20
|
-
/* status color */
|
21
|
-
--status-success-color: #35a24a;
|
22
|
-
--status-warning-color: #ee8d03;
|
23
|
-
--status-danger-color: #d14946;
|
24
|
-
--status-info-color: #398ace;
|
10
|
+
--primary-text-color: var(--md-sys-color-on-primary);
|
11
|
+
--secondary-text-color: var(--md-sys-color-on-secondary);
|
25
12
|
|
26
13
|
/* common style */
|
27
14
|
--border-radius: 4px;
|
@@ -32,12 +19,12 @@ body {
|
|
32
19
|
|
33
20
|
--theme-font: 'Noto', Helvetica;
|
34
21
|
|
35
|
-
--margin-default:
|
36
|
-
--margin-narrow: 4px;
|
37
|
-
--margin-wide:
|
38
|
-
--padding-default: var(--
|
39
|
-
--padding-narrow: var(--
|
40
|
-
--padding-wide: var(--
|
22
|
+
--margin-default: var(--spacing-medium, 8px);
|
23
|
+
--margin-narrow: var(--spacing-small, 4px);
|
24
|
+
--margin-wide: var(--spacing-large, 12px);
|
25
|
+
--padding-default: var(--spacing-medium, 8px);
|
26
|
+
--padding-narrow: var(--spacing-small, 4px);
|
27
|
+
--padding-wide: var(--spacing-large, 12px);
|
41
28
|
|
42
29
|
--scrollbar-thumb-color: rgba(57, 78, 100, 0.5);
|
43
30
|
--scrollbar-thumb-hover-color: var(--md-sys-color-primary);
|
@@ -57,7 +44,7 @@ body {
|
|
57
44
|
|
58
45
|
--page-description-margin: var(--margin-narrow) 0 var(--margin-wide) 0;
|
59
46
|
--page-description-font: normal var(--fontsize-default) / 1.2rem var(--theme-font);
|
60
|
-
--page-description-color: var(--
|
47
|
+
--page-description-color: var(--md-sys-color-on-secondary-container);
|
61
48
|
|
62
49
|
--subtitle-padding: 12px 5px 3px 5px;
|
63
50
|
--subtitle-font: bold 18px var(--theme-font);
|
@@ -65,9 +52,9 @@ body {
|
|
65
52
|
--subtitle-border-bottom: 1px solid var(--md-sys-color-primary);
|
66
53
|
|
67
54
|
/* icon style */
|
68
|
-
--icon-tiny-size: 24px;
|
69
|
-
--icon-default-size:
|
70
|
-
--icon-big-size: 48px;
|
55
|
+
--icon-tiny-size: var(--icon-size-medium, 24px);
|
56
|
+
--icon-default-size: var(--icon-size-large, 32px);
|
57
|
+
--icon-big-size: var(--icon-size-huge, 48px);
|
71
58
|
--icon-default-color: var(--md-sys-color-on-primary);
|
72
59
|
|
73
60
|
/* material design component themes */
|
@@ -82,7 +69,7 @@ body {
|
|
82
69
|
--mdc-button-horizontal-padding: 16px;
|
83
70
|
|
84
71
|
/* button style */
|
85
|
-
--button-background-color:
|
72
|
+
--button-background-color: var(--md-sys-color-surface-variant);
|
86
73
|
--button-background-focus-color: var(--md-sys-color-primary);
|
87
74
|
--button-border: var(--border-dim-color);
|
88
75
|
--button-border-radius: var(--border-radius);
|
@@ -108,7 +95,7 @@ body {
|
|
108
95
|
--th-border-top: 2px solid var(--md-sys-color-secondary);
|
109
96
|
--th-text-transform: capitalize;
|
110
97
|
--th-font: bold var(--fontsize-small) var(--theme-font);
|
111
|
-
--th-color:
|
98
|
+
--th-color: var(--md-sys-color-secondary);
|
112
99
|
|
113
100
|
--tr-background-color: var(--md-sys-color-surface-variant);
|
114
101
|
--tr-background-odd-color: rgba(255, 255, 255, 0.4);
|
@@ -119,7 +106,7 @@ body {
|
|
119
106
|
--td-font: normal 13px var(--theme-font);
|
120
107
|
--td-color: var(--md-sys-color-secondary);
|
121
108
|
|
122
|
-
--label-cell-background-color:
|
109
|
+
--label-cell-background-color: var(--md-sys-color-surface); /* th or td common background color */
|
123
110
|
|
124
111
|
/* form style */
|
125
112
|
--label-font: normal var(--fontsize-default) var(--theme-font);
|
@@ -139,6 +126,10 @@ body {
|
|
139
126
|
--legend-font: bold 16px var(--theme-font);
|
140
127
|
}
|
141
128
|
|
129
|
+
body.dark {
|
130
|
+
caret-color: white;
|
131
|
+
}
|
132
|
+
|
142
133
|
@media only screen and (max-width: 460px) {
|
143
134
|
body {
|
144
135
|
/* subtitle style */
|
package/client/themes/dark.css
CHANGED
@@ -48,104 +48,4 @@
|
|
48
48
|
--md-sys-color-surface-container: rgb(30 31 37);
|
49
49
|
--md-sys-color-surface-container-high: rgb(41 42 47);
|
50
50
|
--md-sys-color-surface-container-highest: rgb(51 52 58);
|
51
|
-
|
52
|
-
/* primary palette */
|
53
|
-
--md-ref-palette-primary0:#000000;
|
54
|
-
--md-ref-palette-primary5:#000E32;
|
55
|
-
--md-ref-palette-primary10:#001848;
|
56
|
-
--md-ref-palette-primary15:#00215E;
|
57
|
-
--md-ref-palette-primary20:#002B74;
|
58
|
-
--md-ref-palette-primary25:#002B74;
|
59
|
-
--md-ref-palette-primary30:#0040A2;
|
60
|
-
--md-ref-palette-primary35:#002B74;
|
61
|
-
--md-ref-palette-primary40:#1957CA;
|
62
|
-
--md-ref-palette-primary50:#3E71E5;
|
63
|
-
--md-ref-palette-primary60:#5C8BFF;
|
64
|
-
--md-ref-palette-primary70:#89A9FF;
|
65
|
-
--md-ref-palette-primary80:#B2C5FF;
|
66
|
-
--md-ref-palette-primary90:#DAE2FF;
|
67
|
-
--md-ref-palette-primary95:#EEF0FF;
|
68
|
-
--md-ref-palette-primary98:#FAF8FF;
|
69
|
-
--md-ref-palette-primary99:#FEFBFF;
|
70
|
-
--md-ref-palette-primary100:#FFFFFF;
|
71
|
-
|
72
|
-
/* secondary palette */
|
73
|
-
--md-ref-palette-secondary0:#000000;
|
74
|
-
--md-ref-palette-secondary5:#00131D;
|
75
|
-
--md-ref-palette-secondary10:#001E2C;
|
76
|
-
--md-ref-palette-secondary15:#00293A;
|
77
|
-
--md-ref-palette-secondary20:#003549;
|
78
|
-
--md-ref-palette-secondary25:#004058;
|
79
|
-
--md-ref-palette-secondary30:#004C68;
|
80
|
-
--md-ref-palette-secondary35:#005978;
|
81
|
-
--md-ref-palette-secondary40:#006689;
|
82
|
-
--md-ref-palette-secondary50:#0080AC;
|
83
|
-
--md-ref-palette-secondary60:#009BCF;
|
84
|
-
--md-ref-palette-secondary70:#00B8F4;
|
85
|
-
--md-ref-palette-secondary80:#79D1FF;
|
86
|
-
--md-ref-palette-secondary90:#C3E8FF;
|
87
|
-
--md-ref-palette-secondary95:#E3F3FF;
|
88
|
-
--md-ref-palette-secondary98:#F5FAFF;
|
89
|
-
--md-ref-palette-secondary99:#FBFCFF;
|
90
|
-
--md-ref-palette-secondary100:#FFFFFF;
|
91
|
-
|
92
|
-
/* tertiary palette */
|
93
|
-
--md-ref-palette-tertiary0:#000000;
|
94
|
-
--md-ref-palette-tertiary5:#00150A;
|
95
|
-
--md-ref-palette-tertiary10:#002113;
|
96
|
-
--md-ref-palette-tertiary15:#002C1B;
|
97
|
-
--md-ref-palette-tertiary20:#003823;
|
98
|
-
--md-ref-palette-tertiary25:#00452B;
|
99
|
-
--md-ref-palette-tertiary30:#005234;
|
100
|
-
--md-ref-palette-tertiary35:#005F3E;
|
101
|
-
--md-ref-palette-tertiary40:#006C47;
|
102
|
-
--md-ref-palette-tertiary50:#00885A;
|
103
|
-
--md-ref-palette-tertiary60:#31A372;
|
104
|
-
--md-ref-palette-tertiary70:#51BF8B;
|
105
|
-
--md-ref-palette-tertiary80:#6EDBA5;
|
106
|
-
--md-ref-palette-tertiary90:#A2F4C7;
|
107
|
-
--md-ref-palette-tertiary95:#BFFFD9;
|
108
|
-
--md-ref-palette-tertiary98:#E8FFEF;
|
109
|
-
--md-ref-palette-tertiary99:#F4FFF5;
|
110
|
-
--md-ref-palette-tertiary100:#FFFFFF;
|
111
|
-
|
112
|
-
/* error palette */
|
113
|
-
--md-ref-palette-error0:#000000;
|
114
|
-
--md-ref-palette-error5:#2d0102;
|
115
|
-
--md-ref-palette-error10:#410304;
|
116
|
-
--md-ref-palette-error15:#540507;
|
117
|
-
--md-ref-palette-error20:#68070a;
|
118
|
-
--md-ref-palette-error25:#7d0b0e;
|
119
|
-
--md-ref-palette-error30:#930f14;
|
120
|
-
--md-ref-palette-error35:#a91319;
|
121
|
-
--md-ref-palette-error40:#bc1620;
|
122
|
-
--md-ref-palette-error50:#e03236;
|
123
|
-
--md-ref-palette-error60:#ff5450;
|
124
|
-
--md-ref-palette-error70:#ff8982;
|
125
|
-
--md-ref-palette-error80:#ffb3ad;
|
126
|
-
--md-ref-palette-error90:#ffdad7;
|
127
|
-
--md-ref-palette-error95:#ffedeb;
|
128
|
-
--md-ref-palette-error98:#fff8f7;
|
129
|
-
--md-ref-palette-error99:#fffbff;
|
130
|
-
--md-ref-palette-error100:#FFFFFF;
|
131
|
-
|
132
|
-
/* neutral palette */
|
133
|
-
--md-ref-palette-neutral0:#000000;
|
134
|
-
--md-ref-palette-neutral5:#111111;
|
135
|
-
--md-ref-palette-neutral10:#1C1C1C;
|
136
|
-
--md-ref-palette-neutral15:#262626;
|
137
|
-
--md-ref-palette-neutral20:#313131;
|
138
|
-
--md-ref-palette-neutral25:#3C3C3C;
|
139
|
-
--md-ref-palette-neutral30:#474747;
|
140
|
-
--md-ref-palette-neutral35:#535353;
|
141
|
-
--md-ref-palette-neutral40:#5F5F5F;
|
142
|
-
--md-ref-palette-neutral50:#787878;
|
143
|
-
--md-ref-palette-neutral60:#929292;
|
144
|
-
--md-ref-palette-neutral70:#ACACAC;
|
145
|
-
--md-ref-palette-neutral80:#C8C8C8;
|
146
|
-
--md-ref-palette-neutral90:#E4E4E4;
|
147
|
-
--md-ref-palette-neutral95:#F0F0F0;
|
148
|
-
--md-ref-palette-neutral98:#F9F9F9;
|
149
|
-
--md-ref-palette-neutral99:#FEFEFE;
|
150
|
-
--md-ref-palette-neutral100:#FFFFFF;
|
151
51
|
}
|
@@ -20,7 +20,7 @@ body {
|
|
20
20
|
|
21
21
|
--grist-input-progress-border: 1px solid rgba(255, 255, 255, 0.5);
|
22
22
|
--grist-input-progress-background: rgba(121, 110, 110, 0.1);
|
23
|
-
--grist-input-progress-bar-background: var(--md-
|
23
|
+
--grist-input-progress-bar-background: var(--md-sys-color-primary-fixed-dim);
|
24
24
|
--grist-input-progress-bar-color: var(--md-sys-color-on-surface-variant);
|
25
25
|
|
26
26
|
--grid-header-background-color: var(--md-sys-color-surface-container-low);
|
@@ -49,12 +49,10 @@ body {
|
|
49
49
|
--grid-record-color-hover: var(--md-sys-color-primary);
|
50
50
|
--grid-record-wide-fontsize: var(--md-sys-typescale-label-large-size, 0.875rem);
|
51
51
|
--grid-record-selected-background-color: var(--md-sys-color-primary-container);
|
52
|
-
--grid-record-selected-color: var(--md-sys-color-primary);
|
53
|
-
--grid-record-focused-background-color: var(--md-sys-color-secondary-container);
|
52
|
+
--grid-record-selected-color: var(--md-sys-color-on-primary-container);
|
54
53
|
--grid-record-focused-border: 1px solid var(--md-sys-color-outline-variant);
|
55
54
|
--grid-record-focused-cell-background-color: var(--md-sys-color-secondary-container);
|
56
55
|
--grid-record-focused-cell-border: 1px dashed var(--md-sys-color-outline);
|
57
|
-
--grid-record-focused-color: var(--md-sys-color-secondary);
|
58
56
|
--grid-record-focused-box-shadow: 0px 2px 0px 0px rgb(0 0 0 / 10%);
|
59
57
|
--grid-record-emphasized-background-color: var(--md-sys-color-secondary-fixed-dim);
|
60
58
|
--grid-record-emphasized-color: var(--md-sys-color-on-secondary-fixed-variant);
|
@@ -72,8 +70,8 @@ body {
|
|
72
70
|
--grid-footer-background-color: var(--md-sys-color-surface-container-low);
|
73
71
|
--grid-footer-font-size: var(--md-sys-typescale-label-large-size, 0.875rem);
|
74
72
|
--grid-footer-color: var(--md-sys-color-primary);
|
75
|
-
--grid-footer-limit-color: var(--md-ref-palette-neutral40);
|
76
|
-
--grid-footer-inactive-color: var(--md-ref-palette-neutral40);
|
73
|
+
--grid-footer-limit-color: var(--md-ref-palette-neutral40, #5f5f5f);
|
74
|
+
--grid-footer-inactive-color: var(--md-ref-palette-neutral40, #5f5f5f);
|
77
75
|
--grid-footer-padding: var(--spacing-small) var(--spacing-medium);
|
78
76
|
|
79
77
|
--data-list-background-color: var(--md-sys-color-surface-container-lowest);
|
@@ -86,7 +84,7 @@ body {
|
|
86
84
|
--data-list-item-disc-color: var(--md-sys-color-tertiary);
|
87
85
|
--data-list-item-etc-label-font: bold 1em/1em var(--theme-font, 'Roboto');
|
88
86
|
--data-list-item-etc-font: normal 0.9em/1em var(--theme-font, 'Roboto');
|
89
|
-
--data-list-item-etc-color: var(--md-ref-palette-neutral50);
|
87
|
+
--data-list-item-etc-color: var(--md-ref-palette-neutral50, #787878);
|
90
88
|
--data-list-item-icon-font: normal 1em/1em;
|
91
89
|
--data-list-item-icon-color: var(--md-sys-color-on-secondary);
|
92
90
|
--data-list-selected-background-color: var(--grid-record-selected-background-color);
|
@@ -108,12 +106,12 @@ body {
|
|
108
106
|
--data-card-item-name-font: bold 1.1em var(--theme-font, 'Roboto');
|
109
107
|
--data-card-item-name-color: var(--md-sys-color-secondary);
|
110
108
|
--data-card-item-name-label-font: normal 0.65em/0.8em var(--theme-font, 'Roboto');
|
111
|
-
--data-card-item-name-label-color:
|
109
|
+
--data-card-item-name-label-color: var(--md-sys-color-secondary);
|
112
110
|
--data-card-item-disc-font: normal 0.9em var(--theme-font, 'Roboto');
|
113
111
|
--data-card-item-disc-color: var(--md-sys-color-tertiary);
|
114
112
|
--data-card-item-etc-label-font: normal 1em/1em var(--theme-font, 'Roboto');
|
115
113
|
--data-card-item-etc-font: normal 0.9em/1em var(--theme-font, 'Roboto');
|
116
|
-
--data-card-item-etc-color: var(--md-ref-palette-neutral50);
|
114
|
+
--data-card-item-etc-color: var(--md-ref-palette-neutral50, #787878);
|
117
115
|
--data-card-item-icon-font: normal 1em/1em;
|
118
116
|
--data-card-item-icon-color: var(--md-sys-color-on-secondary);
|
119
117
|
--data-card-item-btn-border: var(--grid-container-border-color);
|
@@ -142,7 +140,7 @@ body {
|
|
142
140
|
--record-view-edit-border-bottom: 2px solid var(--md-sys-color-primary);
|
143
141
|
--record-view-item-padding: var(--spacing-medium);
|
144
142
|
|
145
|
-
--record-view-footer-background: var(--md-ref-palette-neutral50);
|
143
|
+
--record-view-footer-background: var(--md-ref-palette-neutral50, #787878);
|
146
144
|
--record-view-footer-button-border: var(--grid-container-border-color);
|
147
145
|
--record-view-footer-button-border-width: 0 0 0 1px;
|
148
146
|
--record-view-footer-button-font: 17px;
|
@@ -60,11 +60,6 @@ body {
|
|
60
60
|
--splitter-hover-background-color: rgba(0, 0, 0, 0.1);
|
61
61
|
}
|
62
62
|
|
63
|
-
.dark {
|
64
|
-
--header-bar-background-color: var(--md-sys-color-inverse-primary);
|
65
|
-
--header-bar-color: var(--md-sys-color-primary);
|
66
|
-
}
|
67
|
-
|
68
63
|
@media only screen and (max-width: 460px) {
|
69
64
|
body {
|
70
65
|
--button-container-margin: 0 -15px;
|
package/client/themes/light.css
CHANGED
@@ -48,104 +48,4 @@
|
|
48
48
|
--md-sys-color-surface-container: rgb(238 237 244);
|
49
49
|
--md-sys-color-surface-container-high: rgb(232 231 239);
|
50
50
|
--md-sys-color-surface-container-highest: rgb(227 226 233);
|
51
|
-
|
52
|
-
/* primary palette */
|
53
|
-
--md-ref-palette-primary0: #000000;
|
54
|
-
--md-ref-palette-primary5: #000e32;
|
55
|
-
--md-ref-palette-primary10: #001848;
|
56
|
-
--md-ref-palette-primary15: #00215e;
|
57
|
-
--md-ref-palette-primary20: #002b74;
|
58
|
-
--md-ref-palette-primary25: #002b74;
|
59
|
-
--md-ref-palette-primary30: #0040a2;
|
60
|
-
--md-ref-palette-primary35: #002b74;
|
61
|
-
--md-ref-palette-primary40: #1957ca;
|
62
|
-
--md-ref-palette-primary50: #3e71e5;
|
63
|
-
--md-ref-palette-primary60: #5c8bff;
|
64
|
-
--md-ref-palette-primary70: #89a9ff;
|
65
|
-
--md-ref-palette-primary80: #b2c5ff;
|
66
|
-
--md-ref-palette-primary90: #dae2ff;
|
67
|
-
--md-ref-palette-primary95: #eef0ff;
|
68
|
-
--md-ref-palette-primary98: #faf8ff;
|
69
|
-
--md-ref-palette-primary99: #fefbff;
|
70
|
-
--md-ref-palette-primary100: #ffffff;
|
71
|
-
|
72
|
-
/* secondary palette */
|
73
|
-
--md-ref-palette-secondary0: #000000;
|
74
|
-
--md-ref-palette-secondary5: #00131d;
|
75
|
-
--md-ref-palette-secondary10: #001e2c;
|
76
|
-
--md-ref-palette-secondary15: #00293a;
|
77
|
-
--md-ref-palette-secondary20: #003549;
|
78
|
-
--md-ref-palette-secondary25: #004058;
|
79
|
-
--md-ref-palette-secondary30: #004c68;
|
80
|
-
--md-ref-palette-secondary35: #005978;
|
81
|
-
--md-ref-palette-secondary40: #006689;
|
82
|
-
--md-ref-palette-secondary50: #0080ac;
|
83
|
-
--md-ref-palette-secondary60: #009bcf;
|
84
|
-
--md-ref-palette-secondary70: #00b8f4;
|
85
|
-
--md-ref-palette-secondary80: #79d1ff;
|
86
|
-
--md-ref-palette-secondary90: #c3e8ff;
|
87
|
-
--md-ref-palette-secondary95: #e3f3ff;
|
88
|
-
--md-ref-palette-secondary98: #f5faff;
|
89
|
-
--md-ref-palette-secondary99: #fbfcff;
|
90
|
-
--md-ref-palette-secondary100: #ffffff;
|
91
|
-
|
92
|
-
/* tertiary palette */
|
93
|
-
--md-ref-palette-tertiary0: #000000;
|
94
|
-
--md-ref-palette-tertiary5: #00150a;
|
95
|
-
--md-ref-palette-tertiary10: #002113;
|
96
|
-
--md-ref-palette-tertiary15: #002c1b;
|
97
|
-
--md-ref-palette-tertiary20: #003823;
|
98
|
-
--md-ref-palette-tertiary25: #00452b;
|
99
|
-
--md-ref-palette-tertiary30: #005234;
|
100
|
-
--md-ref-palette-tertiary35: #005f3e;
|
101
|
-
--md-ref-palette-tertiary40: #006c47;
|
102
|
-
--md-ref-palette-tertiary50: #00885a;
|
103
|
-
--md-ref-palette-tertiary60: #31a372;
|
104
|
-
--md-ref-palette-tertiary70: #51bf8b;
|
105
|
-
--md-ref-palette-tertiary80: #6edba5;
|
106
|
-
--md-ref-palette-tertiary90: #a2f4c7;
|
107
|
-
--md-ref-palette-tertiary95: #bfffd9;
|
108
|
-
--md-ref-palette-tertiary98: #e8ffef;
|
109
|
-
--md-ref-palette-tertiary99: #f4fff5;
|
110
|
-
--md-ref-palette-tertiary100: #ffffff;
|
111
|
-
|
112
|
-
/* error palette */
|
113
|
-
--md-ref-palette-error0: #000000;
|
114
|
-
--md-ref-palette-error5: #2d0102;
|
115
|
-
--md-ref-palette-error10: #410304;
|
116
|
-
--md-ref-palette-error15: #540507;
|
117
|
-
--md-ref-palette-error20: #68070a;
|
118
|
-
--md-ref-palette-error25: #7d0b0e;
|
119
|
-
--md-ref-palette-error30: #930f14;
|
120
|
-
--md-ref-palette-error35: #a91319;
|
121
|
-
--md-ref-palette-error40: #bc1620;
|
122
|
-
--md-ref-palette-error50: #e03236;
|
123
|
-
--md-ref-palette-error60: #ff5450;
|
124
|
-
--md-ref-palette-error70: #ff8982;
|
125
|
-
--md-ref-palette-error80: #ffb3ad;
|
126
|
-
--md-ref-palette-error90: #ffdad7;
|
127
|
-
--md-ref-palette-error95: #ffedeb;
|
128
|
-
--md-ref-palette-error98: #fff8f7;
|
129
|
-
--md-ref-palette-error99: #fffbff;
|
130
|
-
--md-ref-palette-error100: #ffffff;
|
131
|
-
|
132
|
-
/* neutral palette */
|
133
|
-
--md-ref-palette-neutral0: #000000;
|
134
|
-
--md-ref-palette-neutral5: #111111;
|
135
|
-
--md-ref-palette-neutral10: #1c1c1c;
|
136
|
-
--md-ref-palette-neutral15: #262626;
|
137
|
-
--md-ref-palette-neutral20: #313131;
|
138
|
-
--md-ref-palette-neutral25: #3c3c3c;
|
139
|
-
--md-ref-palette-neutral30: #474747;
|
140
|
-
--md-ref-palette-neutral35: #535353;
|
141
|
-
--md-ref-palette-neutral40: #5f5f5f;
|
142
|
-
--md-ref-palette-neutral50: #787878;
|
143
|
-
--md-ref-palette-neutral60: #929292;
|
144
|
-
--md-ref-palette-neutral70: #acacac;
|
145
|
-
--md-ref-palette-neutral80: #c8c8c8;
|
146
|
-
--md-ref-palette-neutral90: #e4e4e4;
|
147
|
-
--md-ref-palette-neutral95: #f0f0f0;
|
148
|
-
--md-ref-palette-neutral98: #f9f9f9;
|
149
|
-
--md-ref-palette-neutral99: #fefefe;
|
150
|
-
--md-ref-palette-neutral100: #ffffff;
|
151
51
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
body {
|
2
2
|
/* oops note style */
|
3
3
|
--oops-note-icon-font: normal 24px var(--mdc-icon-font, 'Material Icons');
|
4
|
-
--oops-note-icon-color:
|
5
|
-
--oops-note-icon-border: 2px solid
|
4
|
+
--oops-note-icon-color: var(--md-sys-color-on-surface);
|
5
|
+
--oops-note-icon-border: 2px solid var(--md-sys-color-outline);
|
6
6
|
--oops-note-icon-border-radius: 50px;
|
7
7
|
--oops-note-icon-padding: var(--padding-default);
|
8
8
|
--oops-note-title-margin: 7px 0 2px 0;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
body {
|
2
|
+
--report-background-color: var(--md-sys-color-background);
|
3
|
+
--report-padding: 15px;
|
4
|
+
--report-title-margin: 0 0 0 10px;
|
5
|
+
--report-title-border: none;
|
6
|
+
--report-title-color: var(--md-sys-color-secondary);
|
7
|
+
--report-title-icon-color: var(--md-sys-color-primary);
|
8
|
+
--report-title-icon-margin: 0 3px 2px 0;
|
9
|
+
--report-title-icon-size: 14px;
|
10
|
+
--report-title-with-grid-padding: 0;
|
11
|
+
--report-component-border-radius: var(--border-radius);
|
12
|
+
|
13
|
+
--report-header-background-color: var(--md-sys-color-surface);
|
14
|
+
--report-header-border: 1px solid var(--report-header-border-color);
|
15
|
+
--report-header-border-color: var(--md-sys-color-outline);
|
16
|
+
--report-header-padding: 5px 0 5px 5px;
|
17
|
+
--report-header-color: var(--secondary-text-color);
|
18
|
+
--report-header-font: normal 1em/1.5 var(--theme-font);
|
19
|
+
--report-header-fontsize: 13px;
|
20
|
+
|
21
|
+
--report-record-background-color: #fff;
|
22
|
+
--report-record-odd-background-color: #f6f6f6;
|
23
|
+
--report-record-field-padding: 7px 10px;
|
24
|
+
--report-record-field-border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
25
|
+
--report-record-wide-fontsize: 13px;
|
26
|
+
--report-record-focused-background-color: #ffde3b47;
|
27
|
+
--report-record-focused-border: 1px dashed rgba(0, 0, 0, 0.5);
|
28
|
+
|
29
|
+
--report-totalized-background-color: #efefef;
|
30
|
+
--report-totalized-border: 1px solid rgba(0, 0, 0, 0.1);
|
31
|
+
--report-totalized-color: var(--secondary-text-color);
|
32
|
+
|
33
|
+
--report-grouped-background-color: #607d8bbf;
|
34
|
+
--report-grouped-border: 1px solid rgba(0, 0, 0, 0.2);
|
35
|
+
--report-grouped-color: #fff;
|
36
|
+
}
|
37
|
+
|
38
|
+
@media print {
|
39
|
+
body {
|
40
|
+
--report-header-padding: 5px;
|
41
|
+
--report-record-field-padding: 5px;
|
42
|
+
--report-record-wide-fontsize: 10px;
|
43
|
+
--report-grouped-background-color: #d7d7d7;
|
44
|
+
--report-grouped-color: #000;
|
45
|
+
--report-totalized-color: #000;
|
46
|
+
}
|
47
|
+
}
|
@@ -1,6 +1,11 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.databaseInitializer =
|
3
|
+
exports.databaseInitializer = void 0;
|
4
|
+
exports.getDataSource = getDataSource;
|
5
|
+
exports.addDataSource = addDataSource;
|
6
|
+
exports.removeDataSource = removeDataSource;
|
7
|
+
exports.getDataSourceNames = getDataSourceNames;
|
8
|
+
exports.getRepository = getRepository;
|
4
9
|
const typeorm_1 = require("typeorm");
|
5
10
|
const env_1 = require("@things-factory/env");
|
6
11
|
const path = require('path');
|
@@ -20,7 +25,6 @@ const dataSources = {};
|
|
20
25
|
function getDataSource(name) {
|
21
26
|
return dataSources[name || 'default'];
|
22
27
|
}
|
23
|
-
exports.getDataSource = getDataSource;
|
24
28
|
/**
|
25
29
|
* Adds a new DataSource with the specified name.
|
26
30
|
* @param {string} name - The name of the DataSource to add.
|
@@ -29,7 +33,6 @@ exports.getDataSource = getDataSource;
|
|
29
33
|
function addDataSource(name, dataSource) {
|
30
34
|
dataSources[name] = dataSource;
|
31
35
|
}
|
32
|
-
exports.addDataSource = addDataSource;
|
33
36
|
/**
|
34
37
|
* Removes a DataSource with the specified name.
|
35
38
|
* @param {string} name - The name of the DataSource to remove.
|
@@ -37,7 +40,6 @@ exports.addDataSource = addDataSource;
|
|
37
40
|
function removeDataSource(name) {
|
38
41
|
delete dataSources[name];
|
39
42
|
}
|
40
|
-
exports.removeDataSource = removeDataSource;
|
41
43
|
/**
|
42
44
|
* Returns an array of all registered DataSource names.
|
43
45
|
* @returns {string[]} - An array of DataSource names.
|
@@ -45,7 +47,6 @@ exports.removeDataSource = removeDataSource;
|
|
45
47
|
function getDataSourceNames() {
|
46
48
|
return Object.keys(dataSources);
|
47
49
|
}
|
48
|
-
exports.getDataSourceNames = getDataSourceNames;
|
49
50
|
/**
|
50
51
|
* Returns a repository for the specified entity.
|
51
52
|
* @param {EntityTarget<X>} target - The target entity for which to get the repository.
|
@@ -54,7 +55,6 @@ exports.getDataSourceNames = getDataSourceNames;
|
|
54
55
|
function getRepository(target) {
|
55
56
|
return getDataSource('default').getRepository(target);
|
56
57
|
}
|
57
|
-
exports.getRepository = getRepository;
|
58
58
|
/**
|
59
59
|
* Initializes the database connections and data sources.
|
60
60
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../server/initializers/database.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../server/initializers/database.ts"],"names":[],"mappings":";;;AAoBA,sCAEC;AAOD,sCAEC;AAMD,4CAEC;AAMD,gDAEC;AAOD,sCAEC;AAxDD,qCAAgF;AAEhF,6CAAiE;AAEjE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,IAAI,SAAS,CAAA;AACb,IAAI,CAAC;IACH,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAC7D,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,SAAS,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,WAAW,GAAmC,EAAE,CAAA;AAEtD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAa;IACzC,OAAO,WAAW,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,UAAsB;IAChE,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAI,MAAuB;IACtD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,aAAa,CAAI,MAAM,CAAC,CAAA;AAC1D,CAAC;AAED;;GAEG;AACI,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,oBAAoB,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpD,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAgB,kCACpC,SAAS,GACT,oBAAoB,EACvB,CAAA;QAEF,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAEpC,YAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAE7C,IAAI,oBAAoB,CAAC,IAAI,IAAI,QAAQ,IAAI,oBAAoB,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC;YACvF,MAAM,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;YACjD,MAAM,UAAU,CAAC,WAAW,EAAE,CAAA;YAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,IAAI,oBAAU,iCAC/B,SAAS,GACT,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAC7B,CAAA;YACF,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;YAChC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;YAElC,YAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAlCY,QAAA,mBAAmB,uBAkC/B","sourcesContent":["import { createConnection, DataSource, EntityTarget, Repository } from 'typeorm'\n\nimport { appRootPath, config, logger } from '@things-factory/env'\n\nconst path = require('path')\n\nvar ormconfig\ntry {\n ormconfig = require(path.resolve(appRootPath, 'ormconfig'))\n} catch (e) {\n ormconfig = require('@things-factory/shell/ormconfig')\n}\n\nconst dataSources: { [name: string]: DataSource } = {}\n\n/**\n * Returns the specified DataSource by name.\n * @param {string} name - The name of the DataSource.\n * @returns {DataSource} - The DataSource with the specified name.\n */\nexport function getDataSource(name?: string): DataSource {\n return dataSources[name || 'default']\n}\n\n/**\n * Adds a new DataSource with the specified name.\n * @param {string} name - The name of the DataSource to add.\n * @param {DataSource} dataSource - The DataSource to add.\n */\nexport function addDataSource(name: string, dataSource: DataSource) {\n dataSources[name] = dataSource\n}\n\n/**\n * Removes a DataSource with the specified name.\n * @param {string} name - The name of the DataSource to remove.\n */\nexport function removeDataSource(name: string) {\n delete dataSources[name]\n}\n\n/**\n * Returns an array of all registered DataSource names.\n * @returns {string[]} - An array of DataSource names.\n */\nexport function getDataSourceNames() {\n return Object.keys(dataSources)\n}\n\n/**\n * Returns a repository for the specified entity.\n * @param {EntityTarget<X>} target - The target entity for which to get the repository.\n * @returns {Repository<X>} - The repository for the specified entity.\n */\nexport function getRepository<X>(target: EntityTarget<X>): Repository<X> {\n return getDataSource('default').getRepository<X>(target)\n}\n\n/**\n * Initializes the database connections and data sources.\n */\nexport const databaseInitializer = async () => {\n try {\n const readConnectionConfig = config.get('ormconfig')\n\n const dataSource = await createConnection({\n ...ormconfig,\n ...readConnectionConfig\n })\n\n addDataSource('default', dataSource)\n\n logger.info('Default DataSource established')\n\n if (readConnectionConfig.type == 'sqlite' && readConnectionConfig.synchronize == false) {\n await dataSource.query('PRAGMA foreign_keys=OFF')\n await dataSource.synchronize()\n await dataSource.query('PRAGMA foreign_keys=ON')\n }\n\n if (config.get('ormconfig4Tx')) {\n const dataSource4Tx = new DataSource({\n ...ormconfig,\n ...config.get('ormconfig4Tx')\n })\n await dataSource4Tx.initialize()\n addDataSource('tx', dataSource4Tx)\n\n logger.info('Transaction DataSource established')\n } else {\n addDataSource('tx', dataSource)\n }\n } catch (e) {\n logger.error(e)\n }\n}\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.domainMiddleware =
|
3
|
+
exports.domainMiddleware = domainMiddleware;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const request_ip_1 = tslib_1.__importDefault(require("request-ip"));
|
6
6
|
const utils_1 = require("../utils");
|
@@ -51,5 +51,4 @@ async function domainMiddleware(context, next) {
|
|
51
51
|
context.state.domain = domain;
|
52
52
|
return next();
|
53
53
|
}
|
54
|
-
exports.domainMiddleware = domainMiddleware;
|
55
54
|
//# sourceMappingURL=domain-middleware.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"domain-middleware.js","sourceRoot":"","sources":["../../server/middlewares/domain-middleware.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"domain-middleware.js","sourceRoot":"","sources":["../../server/middlewares/domain-middleware.ts"],"names":[],"mappings":";;AAGA,4CAwDC;;AA3DD,oEAAkC;AAClC,oCAA2C;AAEpC,KAAK,UAAU,gBAAgB,CAAC,OAAY,EAAE,IAAS;IAC5D,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ;;;;WAIG;QACH,MAAM,GAAG,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,oBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAEnG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,kBAAkB;YAClB,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAA;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAA;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAE7B,OAAO,IAAI,EAAE,CAAA;AACf,CAAC","sourcesContent":["import requestIp from 'request-ip'\nimport { getDomainFromURL } from '../utils'\n\nexport async function domainMiddleware(context: any, next: any) {\n var { domain } = context.state\n if (!domain) {\n /*\n * The domainType should be checked only when signin and checkin.\n * For purposes such as API calls, the target domainType may be different from the system domainType.\n * So, we don't check domainType here.\n */\n domain = await getDomainFromURL(context)\n }\n\n if (domain) {\n const ip = requestIp.getClientIp(context.req)\n const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {}\n\n if (Array.isArray(whitelist) && whitelist.length > 0) {\n /* whitelist 우선 */\n const whitelisted =\n Array.isArray(whitelist) &&\n whitelist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (!whitelisted) {\n context.status = 403\n return\n }\n } else {\n const blacklisted =\n Array.isArray(blacklist) &&\n blacklist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (blacklisted) {\n context.status = 403\n return\n }\n }\n\n if (Array.isArray(protectedlist) && protectedlist.length > 0) {\n const safe = protectedlist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n context.state.unsafeIP = !safe\n\n if (!safe) {\n context.state.prohibitedPrivileges = privileges\n }\n }\n }\n\n context.state.domain = domain\n\n return next()\n}\n"]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.initMiddlewares =
|
3
|
+
exports.initMiddlewares = initMiddlewares;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const env_1 = require("@things-factory/env");
|
6
6
|
const domain_middleware_1 = require("./domain-middleware");
|
@@ -36,6 +36,5 @@ function initMiddlewares(app) {
|
|
36
36
|
await next();
|
37
37
|
});
|
38
38
|
}
|
39
|
-
exports.initMiddlewares = initMiddlewares;
|
40
39
|
tslib_1.__exportStar(require("./domain-middleware"), exports);
|
41
40
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/middlewares/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/middlewares/index.ts"],"names":[],"mappings":";;AAIA,0CAoCC;;AAxCD,6CAAoD;AAEpD,2DAAsD;AAEtD,SAAgB,eAAe,CAAC,GAAG;IACjC,GAAG,CAAC,eAAe,GAAG,YAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;IAEtD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAC/B,YAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF;;;OAGG;IACH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,KAAI,GAAG,CAAA;YACnC,OAAO,CAAC,IAAI,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAA;YAE3B,yCAAyC;YACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;OAGG;IACH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAEhC,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,IAAA,oCAAgB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,8DAAmC","sourcesContent":["import { config, logger } from '@things-factory/env'\n\nimport { domainMiddleware } from './domain-middleware'\n\nexport function initMiddlewares(app) {\n app.subdomainOffset = config.get('subdomainOffset', 2)\n\n app.on('error', (err, context) => {\n logger.error(err)\n })\n\n /*\n * Catching downstream errors\n * - recommend to use context.throw, context.assert\n */\n app.use(async (context, next) => {\n try {\n await next()\n } catch (err) {\n context.status = err?.status || 500\n context.body = err?.message\n\n // emitting error to app.on('error', ...)\n context.app.emit('error', err, context)\n }\n })\n\n /*\n * post:graphql 에 대해서는 domain을 확인한다.\n * graphql app을 router에 적용하지 못하기 때문임.\n */\n app.use(async (context, next) => {\n const { method, path } = context\n\n if (method == 'POST' && path.startsWith('/graphql')) {\n return await domainMiddleware(context, next)\n }\n\n await next()\n })\n}\n\nexport * from './domain-middleware'\n"]}
|
package/dist-server/pubsub.js
CHANGED
@@ -17,7 +17,6 @@ const mqtt_1 = require("mqtt");
|
|
17
17
|
const env_1 = require("@things-factory/env");
|
18
18
|
const { middleware, host, port, nodes, topic, options } = env_1.config.get('pubsub', {});
|
19
19
|
let pubsub;
|
20
|
-
exports.pubsub = pubsub;
|
21
20
|
switch (middleware) {
|
22
21
|
case 'mqtt':
|
23
22
|
//@ts-ignore
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../server/pubsub.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;AAEH,2EAAuD;AACvD,6EAAyD;AACzD,+CAA2C;AAC3C,8DAA2B;AAC3B,+BAA8B;AAE9B,6CAAoD;AAGpD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,YAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAElF,IAAI,MAAc,CAAA;
|
1
|
+
{"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../server/pubsub.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module pubsub\n * @description\n * This module provides a Pub/Sub (Publish/Subscribe) mechanism for handling messages and events.\n * Developers can use various middleware options such as MQTT, Redis, Redis Cluster, or Kafka\n * to implement Pub/Sub functionality.\n */\n\nimport { MQTTPubSub } from 'graphql-mqtt-subscriptions'\nimport { RedisPubSub } from 'graphql-redis-subscriptions'\nimport { createPubSub } from 'graphql-yoga'\nimport Redis from 'ioredis'\nimport { connect } from 'mqtt'\n\nimport { config, logger } from '@things-factory/env'\nimport { PubSub } from 'type-graphql'\n\nconst { middleware, host, port, nodes, topic, options } = config.get('pubsub', {})\n\nlet pubsub: PubSub\n\nswitch (middleware) {\n case 'mqtt':\n //@ts-ignore\n pubsub = new MQTTPubSub({\n client: connect('mqtt://' + host, {\n reconnectPeriod: 1000,\n ...options\n }) as any\n })\n break\n case 'redis':\n const redisOption = {\n host,\n port,\n retryStrategy: times => {\n // reconnect after\n return Math.min(times * 50, 2000)\n },\n ...options\n }\n //@ts-ignore\n pubsub = new RedisPubSub({\n publisher: new Redis(redisOption),\n subscriber: new Redis(redisOption)\n })\n break\n case 'redisCluster':\n const cluster = new Redis.Cluster(nodes, options)\n //@ts-ignore\n pubsub = new RedisPubSub({\n publisher: cluster,\n subscriber: cluster\n })\n break\n case 'kafka':\n try {\n /*\n * https://github.com/hatiolab/things-factory/issues/1239\n */\n const { KafkaPubSub } = require('graphql-kafka-subscriptions')\n pubsub = new KafkaPubSub({\n topic,\n host,\n port,\n ...options\n })\n } catch (e) {\n logger.error('graphql-kafka-subscriptions module is not installed, so application can not go further.')\n throw e\n }\n break\n default:\n pubsub = createPubSub()\n break\n}\n\n// kafka pubsub keeps connection and app port with 'ctrl+c' termination.\nconst exitHandler = async evt => {\n //@ts-ignore\n if (pubsub.close) {\n try {\n //@ts-ignore\n await pubsub.close()\n } catch (err) {\n logger.error(err)\n }\n }\n}\n\n/*\n * exit events hint from https://stackoverflow.com/a/14032965/14539284\n */\n\n//do something when app is closing\nprocess.on('exit', exitHandler.bind(null, { name: 'exit', exit: true }))\n\n//catches ctrl+c event\nprocess.on('SIGINT', exitHandler.bind(null, { name: 'SIGINT', exit: true }))\n\n// catches \"kill pid\" (for example: nodemon restart)\nprocess.on('SIGUSR1', exitHandler.bind(null, { name: 'SIGUSR1', exit: true }))\nprocess.on('SIGUSR2', exitHandler.bind(null, { name: 'SIGUSR2', exit: true }))\n\n//catches uncaught exceptions\n// process.on('uncaughtException', exitHandler.bind(null, { name: 'uncaughtException', exit: true }))\n\nexport { pubsub }\n"]}
|