@sap/cds 8.0.3 → 8.1.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/CHANGELOG.md +40 -0
- package/_i18n/i18n_bg.properties +113 -0
- package/_i18n/i18n_el.properties +113 -0
- package/_i18n/i18n_he.properties +113 -0
- package/_i18n/i18n_hr.properties +113 -0
- package/_i18n/i18n_kk.properties +113 -0
- package/_i18n/i18n_sh.properties +113 -0
- package/_i18n/i18n_sk.properties +113 -0
- package/_i18n/i18n_sl.properties +113 -0
- package/_i18n/i18n_uk.properties +113 -0
- package/lib/compile/etc/_localized.js +8 -20
- package/lib/dbs/cds-deploy.js +1 -0
- package/lib/env/cds-requires.js +1 -0
- package/lib/env/defaults.js +1 -1
- package/lib/env/plugins.js +22 -6
- package/lib/linked/validate.js +1 -1
- package/lib/log/cds-log.js +2 -2
- package/lib/srv/protocols/hcql.js +5 -5
- package/lib/srv/protocols/http.js +23 -11
- package/lib/test/expect.js +1 -1
- package/lib/utils/cds-test.js +4 -4
- package/libx/_runtime/common/composition/insert.js +1 -1
- package/libx/_runtime/common/error/utils.js +2 -1
- package/libx/_runtime/common/generic/input.js +2 -5
- package/libx/_runtime/common/generic/stream.js +18 -3
- package/libx/_runtime/common/utils/cqn2cqn4sql.js +5 -2
- package/libx/_runtime/db/query/read.js +18 -9
- package/libx/_runtime/fiori/lean-draft.js +2 -2
- package/libx/_runtime/hana/customBuilder/CustomReferenceBuilder.js +1 -1
- package/libx/_runtime/messaging/enterprise-messaging-utils/registerEndpoints.js +2 -2
- package/libx/_runtime/messaging/event-broker.js +76 -24
- package/libx/common/assert/utils.js +1 -57
- package/libx/odata/middleware/batch.js +86 -40
- package/libx/odata/middleware/body-parser.js +2 -3
- package/libx/odata/middleware/operation.js +11 -11
- package/libx/odata/middleware/read.js +1 -1
- package/libx/odata/parse/grammar.peggy +6 -1
- package/libx/odata/parse/parser.js +1 -1
- package/libx/odata/utils/metadata.js +18 -44
- package/libx/rest/middleware/error.js +9 -2
- package/libx/rest/middleware/parse.js +1 -1
- package/package.json +1 -1
- package/libx/common/assert/index.js +0 -228
- package/libx/common/assert/type-relaxed.js +0 -39
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#Text Types
|
|
2
|
+
#
|
|
3
|
+
#XACT: Text with explicit importance for accessibility.
|
|
4
|
+
#XBUT: Button
|
|
5
|
+
#XCKL: Checkbox
|
|
6
|
+
#XFLD: Field label
|
|
7
|
+
#XLNK: Hyperlink
|
|
8
|
+
#XMIT: Menu item (Menu item, either top-level like "File" or lower-level like "Save as...")
|
|
9
|
+
#XMSG: Message
|
|
10
|
+
#XRBL: Radio button
|
|
11
|
+
#XSEL: Selection (Values in a drop-down list, or a status. For example: "In Process", "Shipped" or "Open".)
|
|
12
|
+
#XTIT: Title (or heading) of a non-actionable user interface element like a column, wizard, or screen area.
|
|
13
|
+
#XTOL: Explanatory text for an UI element, such as a tooltip, input help.
|
|
14
|
+
#YINS: Instruction for a user, for example, a permanent text on a screen that introduces a group of fields.
|
|
15
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
16
|
+
#For text elements that are not supposed to be translated, use the text type NOTR
|
|
17
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
18
|
+
#Recommended pattern
|
|
19
|
+
#
|
|
20
|
+
#<TextType>:<AdditionalContextInformation>
|
|
21
|
+
#If there is a maximum length restriction, please indicate as shown below.
|
|
22
|
+
#<TextType>,<MaximumLength>:<AdditionalContextInformation>
|
|
23
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
24
|
+
# This is the resource bundle for foundation
|
|
25
|
+
# __ldi.translation.uuid=dd6c5800-b108-11e8-be90-bd1cf6ac87fb
|
|
26
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
#XTIT: Created By (Answer to: "Which user has created a certain entity?")
|
|
29
|
+
CreatedBy=Kreirao
|
|
30
|
+
|
|
31
|
+
#XTIT: Created On (Answer to: "When has a certain entity been created?")
|
|
32
|
+
CreatedAt=Kreirano
|
|
33
|
+
|
|
34
|
+
#XTIT: Changed By (Answer to: "Which user has changed a certain entity?")
|
|
35
|
+
ChangedBy=Promenio
|
|
36
|
+
|
|
37
|
+
#XTIT: Changed On (Answer to: "When has a certain entity been changed?")
|
|
38
|
+
ChangedAt=Promenjeno
|
|
39
|
+
|
|
40
|
+
#XTIT: Currency
|
|
41
|
+
Currency=Valuta
|
|
42
|
+
|
|
43
|
+
#XTIT: Currency Code
|
|
44
|
+
CurrencyCode=\u0160ifra valute
|
|
45
|
+
|
|
46
|
+
#XTIT: Currency Code Description
|
|
47
|
+
CurrencyCode.Description=\u0160ifra valute odre\u0111ena prema ISO 4217
|
|
48
|
+
|
|
49
|
+
#XTIT: Currency Symbol
|
|
50
|
+
CurrencySymbol=Simbol valute
|
|
51
|
+
|
|
52
|
+
#XTIT: Currency Minor Unit Fractions (Answer to: "How many fractions has a currency's minor unit?", e.g. "0" or "2")
|
|
53
|
+
CurrencyMinorUnit=Manja jedinica valute
|
|
54
|
+
|
|
55
|
+
#XTIT: Country/Region
|
|
56
|
+
Country=Zemlja/regija
|
|
57
|
+
|
|
58
|
+
#XTIT: Country/Region Code
|
|
59
|
+
CountryCode=\u0160ifra zemlje/regije
|
|
60
|
+
|
|
61
|
+
#XTIT: Country/Region Code Description
|
|
62
|
+
CountryCode.Description=\u0160ifra zemlje/regije odre\u0111ena prema ISO 3166-1
|
|
63
|
+
|
|
64
|
+
#XTIT: Language
|
|
65
|
+
Language=Jezik
|
|
66
|
+
|
|
67
|
+
#XTIT: Language Code
|
|
68
|
+
LanguageCode=\u0160ifra jezika
|
|
69
|
+
|
|
70
|
+
#XTIT: Language Code Description
|
|
71
|
+
LanguageCode.Description=\u0160ifra jezika odre\u0111ena prema ISO 639-1
|
|
72
|
+
|
|
73
|
+
#XTIT Time zone code
|
|
74
|
+
TimeZoneCode=\u0160ifra vremenske zone
|
|
75
|
+
|
|
76
|
+
#XTIT: User Identifier
|
|
77
|
+
UserID=ID korisnika
|
|
78
|
+
|
|
79
|
+
#XTIT: Any kind of name
|
|
80
|
+
Name=Ime
|
|
81
|
+
|
|
82
|
+
#XTIT: Any kind of description
|
|
83
|
+
Description=Opis
|
|
84
|
+
|
|
85
|
+
#XTOL: A user's unique Indentifier
|
|
86
|
+
UserID.Description=Jedinstveni ID korisnika
|
|
87
|
+
|
|
88
|
+
#XTIT: Admin data for a draft document
|
|
89
|
+
Draft_DraftAdministrativeData=Nacrt administrativnih podataka
|
|
90
|
+
|
|
91
|
+
#XTIT: Technical ID of a draft document
|
|
92
|
+
Draft_DraftUUID=Nacrt (tehni\u010Dki ID)
|
|
93
|
+
|
|
94
|
+
#XTIT: Creation time of a draft
|
|
95
|
+
Draft_CreationDateTime=Nacrt kreiran
|
|
96
|
+
|
|
97
|
+
#XTIT: User created the draft
|
|
98
|
+
Draft_CreatedByUser=Nacrt kreirao
|
|
99
|
+
|
|
100
|
+
#XTIT: The current user (me) created the draft
|
|
101
|
+
Draft_DraftIsCreatedByMe=Nacrt \u010Diji sam autor
|
|
102
|
+
|
|
103
|
+
#XTIT: Time a draft was last changed on
|
|
104
|
+
Draft_LastChangeDateTime=Nacrt poslednji put promenjen
|
|
105
|
+
|
|
106
|
+
#XTIT: User that changed the draft last
|
|
107
|
+
Draft_LastChangedByUser=Nacrt poslednji put promenio
|
|
108
|
+
|
|
109
|
+
#XTIT: User that is working on the draft
|
|
110
|
+
Draft_InProcessByUser=Nacrt koji obra\u0111uje
|
|
111
|
+
|
|
112
|
+
#XTIT: The current user (me) is working on the draft
|
|
113
|
+
Draft_DraftIsProcessedByMe=Nacrt koji obra\u0111ujem
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#Text Types
|
|
2
|
+
#
|
|
3
|
+
#XACT: Text with explicit importance for accessibility.
|
|
4
|
+
#XBUT: Button
|
|
5
|
+
#XCKL: Checkbox
|
|
6
|
+
#XFLD: Field label
|
|
7
|
+
#XLNK: Hyperlink
|
|
8
|
+
#XMIT: Menu item (Menu item, either top-level like "File" or lower-level like "Save as...")
|
|
9
|
+
#XMSG: Message
|
|
10
|
+
#XRBL: Radio button
|
|
11
|
+
#XSEL: Selection (Values in a drop-down list, or a status. For example: "In Process", "Shipped" or "Open".)
|
|
12
|
+
#XTIT: Title (or heading) of a non-actionable user interface element like a column, wizard, or screen area.
|
|
13
|
+
#XTOL: Explanatory text for an UI element, such as a tooltip, input help.
|
|
14
|
+
#YINS: Instruction for a user, for example, a permanent text on a screen that introduces a group of fields.
|
|
15
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
16
|
+
#For text elements that are not supposed to be translated, use the text type NOTR
|
|
17
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
18
|
+
#Recommended pattern
|
|
19
|
+
#
|
|
20
|
+
#<TextType>:<AdditionalContextInformation>
|
|
21
|
+
#If there is a maximum length restriction, please indicate as shown below.
|
|
22
|
+
#<TextType>,<MaximumLength>:<AdditionalContextInformation>
|
|
23
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
24
|
+
# This is the resource bundle for foundation
|
|
25
|
+
# __ldi.translation.uuid=dd6c5800-b108-11e8-be90-bd1cf6ac87fb
|
|
26
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
#XTIT: Created By (Answer to: "Which user has created a certain entity?")
|
|
29
|
+
CreatedBy=Vytvoril
|
|
30
|
+
|
|
31
|
+
#XTIT: Created On (Answer to: "When has a certain entity been created?")
|
|
32
|
+
CreatedAt=Vytvoren\u00E9 d\u0148a
|
|
33
|
+
|
|
34
|
+
#XTIT: Changed By (Answer to: "Which user has changed a certain entity?")
|
|
35
|
+
ChangedBy=Zmenil
|
|
36
|
+
|
|
37
|
+
#XTIT: Changed On (Answer to: "When has a certain entity been changed?")
|
|
38
|
+
ChangedAt=Zmenen\u00E9 d\u0148a
|
|
39
|
+
|
|
40
|
+
#XTIT: Currency
|
|
41
|
+
Currency=Mena
|
|
42
|
+
|
|
43
|
+
#XTIT: Currency Code
|
|
44
|
+
CurrencyCode=K\u00F3d meny
|
|
45
|
+
|
|
46
|
+
#XTIT: Currency Code Description
|
|
47
|
+
CurrencyCode.Description=K\u00F3d meny pod\u013Ea normy ISO 4217
|
|
48
|
+
|
|
49
|
+
#XTIT: Currency Symbol
|
|
50
|
+
CurrencySymbol=Symbol meny
|
|
51
|
+
|
|
52
|
+
#XTIT: Currency Minor Unit Fractions (Answer to: "How many fractions has a currency's minor unit?", e.g. "0" or "2")
|
|
53
|
+
CurrencyMinorUnit=Menov\u00E9 men\u0161ie jednotkov\u00E9 zlomky
|
|
54
|
+
|
|
55
|
+
#XTIT: Country/Region
|
|
56
|
+
Country=\u0160t\u00E1t/regi\u00F3n
|
|
57
|
+
|
|
58
|
+
#XTIT: Country/Region Code
|
|
59
|
+
CountryCode=K\u00F3d \u0161t\u00E1tu/regi\u00F3nu
|
|
60
|
+
|
|
61
|
+
#XTIT: Country/Region Code Description
|
|
62
|
+
CountryCode.Description=K\u00F3d \u0161t\u00E1tu/regi\u00F3nu pod\u013Ea normy ISO 3166-1
|
|
63
|
+
|
|
64
|
+
#XTIT: Language
|
|
65
|
+
Language=Jazyk
|
|
66
|
+
|
|
67
|
+
#XTIT: Language Code
|
|
68
|
+
LanguageCode=K\u00F3d jazyka
|
|
69
|
+
|
|
70
|
+
#XTIT: Language Code Description
|
|
71
|
+
LanguageCode.Description=K\u00F3d jazyka pod\u013Ea normy ISO 639-1
|
|
72
|
+
|
|
73
|
+
#XTIT Time zone code
|
|
74
|
+
TimeZoneCode=K\u00F3d \u010Dasov\u00E9ho p\u00E1sma
|
|
75
|
+
|
|
76
|
+
#XTIT: User Identifier
|
|
77
|
+
UserID=ID pou\u017E\u00EDvate\u013Ea
|
|
78
|
+
|
|
79
|
+
#XTIT: Any kind of name
|
|
80
|
+
Name=N\u00E1zov
|
|
81
|
+
|
|
82
|
+
#XTIT: Any kind of description
|
|
83
|
+
Description=Popis
|
|
84
|
+
|
|
85
|
+
#XTOL: A user's unique Indentifier
|
|
86
|
+
UserID.Description=Jedine\u010Dn\u00E9 ID pou\u017E\u00EDvate\u013Ea
|
|
87
|
+
|
|
88
|
+
#XTIT: Admin data for a draft document
|
|
89
|
+
Draft_DraftAdministrativeData=N\u00E1vrh administrat\u00EDvnych \u00FAdajov
|
|
90
|
+
|
|
91
|
+
#XTIT: Technical ID of a draft document
|
|
92
|
+
Draft_DraftUUID=N\u00E1vrh (technick\u00E9 ID)
|
|
93
|
+
|
|
94
|
+
#XTIT: Creation time of a draft
|
|
95
|
+
Draft_CreationDateTime=N\u00E1vrh vytvoren\u00FD d\u0148a
|
|
96
|
+
|
|
97
|
+
#XTIT: User created the draft
|
|
98
|
+
Draft_CreatedByUser=N\u00E1vrh vytvoril
|
|
99
|
+
|
|
100
|
+
#XTIT: The current user (me) created the draft
|
|
101
|
+
Draft_DraftIsCreatedByMe=N\u00E1vrh vytvoril mnou
|
|
102
|
+
|
|
103
|
+
#XTIT: Time a draft was last changed on
|
|
104
|
+
Draft_LastChangeDateTime=N\u00E1vrh naposledy zmenen\u00FD d\u0148a
|
|
105
|
+
|
|
106
|
+
#XTIT: User that changed the draft last
|
|
107
|
+
Draft_LastChangedByUser=N\u00E1vrh naposledy zmenil
|
|
108
|
+
|
|
109
|
+
#XTIT: User that is working on the draft
|
|
110
|
+
Draft_InProcessByUser=N\u00E1vrh v spracovan\u00ED od (meno)
|
|
111
|
+
|
|
112
|
+
#XTIT: The current user (me) is working on the draft
|
|
113
|
+
Draft_DraftIsProcessedByMe=N\u00E1vrh v spracovan\u00ED od (ja)
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#Text Types
|
|
2
|
+
#
|
|
3
|
+
#XACT: Text with explicit importance for accessibility.
|
|
4
|
+
#XBUT: Button
|
|
5
|
+
#XCKL: Checkbox
|
|
6
|
+
#XFLD: Field label
|
|
7
|
+
#XLNK: Hyperlink
|
|
8
|
+
#XMIT: Menu item (Menu item, either top-level like "File" or lower-level like "Save as...")
|
|
9
|
+
#XMSG: Message
|
|
10
|
+
#XRBL: Radio button
|
|
11
|
+
#XSEL: Selection (Values in a drop-down list, or a status. For example: "In Process", "Shipped" or "Open".)
|
|
12
|
+
#XTIT: Title (or heading) of a non-actionable user interface element like a column, wizard, or screen area.
|
|
13
|
+
#XTOL: Explanatory text for an UI element, such as a tooltip, input help.
|
|
14
|
+
#YINS: Instruction for a user, for example, a permanent text on a screen that introduces a group of fields.
|
|
15
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
16
|
+
#For text elements that are not supposed to be translated, use the text type NOTR
|
|
17
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
18
|
+
#Recommended pattern
|
|
19
|
+
#
|
|
20
|
+
#<TextType>:<AdditionalContextInformation>
|
|
21
|
+
#If there is a maximum length restriction, please indicate as shown below.
|
|
22
|
+
#<TextType>,<MaximumLength>:<AdditionalContextInformation>
|
|
23
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
24
|
+
# This is the resource bundle for foundation
|
|
25
|
+
# __ldi.translation.uuid=dd6c5800-b108-11e8-be90-bd1cf6ac87fb
|
|
26
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
#XTIT: Created By (Answer to: "Which user has created a certain entity?")
|
|
29
|
+
CreatedBy=Kreiral
|
|
30
|
+
|
|
31
|
+
#XTIT: Created On (Answer to: "When has a certain entity been created?")
|
|
32
|
+
CreatedAt=Kreirano dne
|
|
33
|
+
|
|
34
|
+
#XTIT: Changed By (Answer to: "Which user has changed a certain entity?")
|
|
35
|
+
ChangedBy=Spremenil
|
|
36
|
+
|
|
37
|
+
#XTIT: Changed On (Answer to: "When has a certain entity been changed?")
|
|
38
|
+
ChangedAt=Spremenjeno dne
|
|
39
|
+
|
|
40
|
+
#XTIT: Currency
|
|
41
|
+
Currency=Valuta
|
|
42
|
+
|
|
43
|
+
#XTIT: Currency Code
|
|
44
|
+
CurrencyCode=Koda valute
|
|
45
|
+
|
|
46
|
+
#XTIT: Currency Code Description
|
|
47
|
+
CurrencyCode.Description=Koda valute, kot jo dolo\u010Da ISO 4217
|
|
48
|
+
|
|
49
|
+
#XTIT: Currency Symbol
|
|
50
|
+
CurrencySymbol=Simbol valute
|
|
51
|
+
|
|
52
|
+
#XTIT: Currency Minor Unit Fractions (Answer to: "How many fractions has a currency's minor unit?", e.g. "0" or "2")
|
|
53
|
+
CurrencyMinorUnit=Deli manj\u0161e enote valute
|
|
54
|
+
|
|
55
|
+
#XTIT: Country/Region
|
|
56
|
+
Country=Dr\u017Eava/regija
|
|
57
|
+
|
|
58
|
+
#XTIT: Country/Region Code
|
|
59
|
+
CountryCode=Koda dr\u017Eave/regije
|
|
60
|
+
|
|
61
|
+
#XTIT: Country/Region Code Description
|
|
62
|
+
CountryCode.Description=Koda dr\u017Eave/regije, kot jo dolo\u010Da ISO 3166-1
|
|
63
|
+
|
|
64
|
+
#XTIT: Language
|
|
65
|
+
Language=Jezik
|
|
66
|
+
|
|
67
|
+
#XTIT: Language Code
|
|
68
|
+
LanguageCode=Koda jezika
|
|
69
|
+
|
|
70
|
+
#XTIT: Language Code Description
|
|
71
|
+
LanguageCode.Description=Koda jezika, kot jo dolo\u010Da ISO 639-1
|
|
72
|
+
|
|
73
|
+
#XTIT Time zone code
|
|
74
|
+
TimeZoneCode=Koda \u010Dasovnega pasa
|
|
75
|
+
|
|
76
|
+
#XTIT: User Identifier
|
|
77
|
+
UserID=ID uporabnika
|
|
78
|
+
|
|
79
|
+
#XTIT: Any kind of name
|
|
80
|
+
Name=Ime
|
|
81
|
+
|
|
82
|
+
#XTIT: Any kind of description
|
|
83
|
+
Description=Opis
|
|
84
|
+
|
|
85
|
+
#XTOL: A user's unique Indentifier
|
|
86
|
+
UserID.Description=Enozna\u010Dni ID uporabnika
|
|
87
|
+
|
|
88
|
+
#XTIT: Admin data for a draft document
|
|
89
|
+
Draft_DraftAdministrativeData=Osnutek administrativnih podatkov
|
|
90
|
+
|
|
91
|
+
#XTIT: Technical ID of a draft document
|
|
92
|
+
Draft_DraftUUID=Osnutek (tehni\u010Dni ID)
|
|
93
|
+
|
|
94
|
+
#XTIT: Creation time of a draft
|
|
95
|
+
Draft_CreationDateTime=Osnutek, ki je bil kreiran dne
|
|
96
|
+
|
|
97
|
+
#XTIT: User created the draft
|
|
98
|
+
Draft_CreatedByUser=Osnutek, ki ga je kreiral
|
|
99
|
+
|
|
100
|
+
#XTIT: The current user (me) created the draft
|
|
101
|
+
Draft_DraftIsCreatedByMe=Osnutek, ki sem ga kreiral jaz
|
|
102
|
+
|
|
103
|
+
#XTIT: Time a draft was last changed on
|
|
104
|
+
Draft_LastChangeDateTime=Osnutek, ki je bil nazadnje spremenjen dne
|
|
105
|
+
|
|
106
|
+
#XTIT: User that changed the draft last
|
|
107
|
+
Draft_LastChangedByUser=Osnutek, ki ga je nazadnje spremenil
|
|
108
|
+
|
|
109
|
+
#XTIT: User that is working on the draft
|
|
110
|
+
Draft_InProcessByUser=Osnutek obdeluje
|
|
111
|
+
|
|
112
|
+
#XTIT: The current user (me) is working on the draft
|
|
113
|
+
Draft_DraftIsProcessedByMe=Osnutek, ki ga obdelujem
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#Text Types
|
|
2
|
+
#
|
|
3
|
+
#XACT: Text with explicit importance for accessibility.
|
|
4
|
+
#XBUT: Button
|
|
5
|
+
#XCKL: Checkbox
|
|
6
|
+
#XFLD: Field label
|
|
7
|
+
#XLNK: Hyperlink
|
|
8
|
+
#XMIT: Menu item (Menu item, either top-level like "File" or lower-level like "Save as...")
|
|
9
|
+
#XMSG: Message
|
|
10
|
+
#XRBL: Radio button
|
|
11
|
+
#XSEL: Selection (Values in a drop-down list, or a status. For example: "In Process", "Shipped" or "Open".)
|
|
12
|
+
#XTIT: Title (or heading) of a non-actionable user interface element like a column, wizard, or screen area.
|
|
13
|
+
#XTOL: Explanatory text for an UI element, such as a tooltip, input help.
|
|
14
|
+
#YINS: Instruction for a user, for example, a permanent text on a screen that introduces a group of fields.
|
|
15
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
16
|
+
#For text elements that are not supposed to be translated, use the text type NOTR
|
|
17
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
18
|
+
#Recommended pattern
|
|
19
|
+
#
|
|
20
|
+
#<TextType>:<AdditionalContextInformation>
|
|
21
|
+
#If there is a maximum length restriction, please indicate as shown below.
|
|
22
|
+
#<TextType>,<MaximumLength>:<AdditionalContextInformation>
|
|
23
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
24
|
+
# This is the resource bundle for foundation
|
|
25
|
+
# __ldi.translation.uuid=dd6c5800-b108-11e8-be90-bd1cf6ac87fb
|
|
26
|
+
#----------------------------------------------------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
#XTIT: Created By (Answer to: "Which user has created a certain entity?")
|
|
29
|
+
CreatedBy=\u0410\u0432\u0442\u043E\u0440 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F
|
|
30
|
+
|
|
31
|
+
#XTIT: Created On (Answer to: "When has a certain entity been created?")
|
|
32
|
+
CreatedAt=\u0414\u0430\u0442\u0430 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F
|
|
33
|
+
|
|
34
|
+
#XTIT: Changed By (Answer to: "Which user has changed a certain entity?")
|
|
35
|
+
ChangedBy=\u0410\u0432\u0442\u043E\u0440 \u0437\u043C\u0456\u043D\u0438
|
|
36
|
+
|
|
37
|
+
#XTIT: Changed On (Answer to: "When has a certain entity been changed?")
|
|
38
|
+
ChangedAt=\u0414\u0430\u0442\u0430 \u0437\u043C\u0456\u043D\u0435\u043D\u043D\u044F
|
|
39
|
+
|
|
40
|
+
#XTIT: Currency
|
|
41
|
+
Currency=\u0412\u0430\u043B\u044E\u0442\u0430
|
|
42
|
+
|
|
43
|
+
#XTIT: Currency Code
|
|
44
|
+
CurrencyCode=\u041A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u0438
|
|
45
|
+
|
|
46
|
+
#XTIT: Currency Code Description
|
|
47
|
+
CurrencyCode.Description=\u041A\u043E\u0434 \u0432\u0430\u043B\u044E\u0442\u0438, \u044F\u043A \u0432\u043A\u0430\u0437\u0430\u043D\u043E \u0432 ISO 4217
|
|
48
|
+
|
|
49
|
+
#XTIT: Currency Symbol
|
|
50
|
+
CurrencySymbol=\u0421\u0438\u043C\u0432\u043E\u043B \u0432\u0430\u043B\u044E\u0442\u0438
|
|
51
|
+
|
|
52
|
+
#XTIT: Currency Minor Unit Fractions (Answer to: "How many fractions has a currency's minor unit?", e.g. "0" or "2")
|
|
53
|
+
CurrencyMinorUnit=\u041C\u0435\u043D\u0448\u0456 \u0447\u0430\u0441\u0442\u043A\u0438 \u043E\u0434\u0438\u043D\u0438\u0446\u0456 \u0432\u0430\u043B\u044E\u0442\u0438
|
|
54
|
+
|
|
55
|
+
#XTIT: Country/Region
|
|
56
|
+
Country=\u041A\u0440\u0430\u0457\u043D\u0430/\u0440\u0435\u0433\u0456\u043E\u043D
|
|
57
|
+
|
|
58
|
+
#XTIT: Country/Region Code
|
|
59
|
+
CountryCode=\u041A\u043E\u0434 \u043A\u0440\u0430\u0457\u043D\u0438/\u0440\u0435\u0433\u0456\u043E\u043D\u0443
|
|
60
|
+
|
|
61
|
+
#XTIT: Country/Region Code Description
|
|
62
|
+
CountryCode.Description=\u041A\u043E\u0434 \u043A\u0440\u0430\u0457\u043D\u0438/\u0440\u0435\u0433\u0456\u043E\u043D\u0443, \u044F\u043A \u0432\u043A\u0430\u0437\u0430\u043D\u043E \u0432 ISO 3166-1
|
|
63
|
+
|
|
64
|
+
#XTIT: Language
|
|
65
|
+
Language=\u041C\u043E\u0432\u0430
|
|
66
|
+
|
|
67
|
+
#XTIT: Language Code
|
|
68
|
+
LanguageCode=\u041A\u043E\u0434 \u043C\u043E\u0432\u0438
|
|
69
|
+
|
|
70
|
+
#XTIT: Language Code Description
|
|
71
|
+
LanguageCode.Description=\u041A\u043E\u0434 \u043C\u043E\u0432\u0438, \u044F\u043A \u0432\u043A\u0430\u0437\u0430\u043D\u043E \u0432 ISO 639-1
|
|
72
|
+
|
|
73
|
+
#XTIT Time zone code
|
|
74
|
+
TimeZoneCode=\u041A\u043E\u0434 \u0447\u0430\u0441\u043E\u0432\u043E\u0433\u043E \u043F\u043E\u044F\u0441\u0443
|
|
75
|
+
|
|
76
|
+
#XTIT: User Identifier
|
|
77
|
+
UserID=\u0406\u0414 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
|
|
78
|
+
|
|
79
|
+
#XTIT: Any kind of name
|
|
80
|
+
Name=\u0406\u043C\u2019\u044F
|
|
81
|
+
|
|
82
|
+
#XTIT: Any kind of description
|
|
83
|
+
Description=\u041E\u043F\u0438\u0441
|
|
84
|
+
|
|
85
|
+
#XTOL: A user's unique Indentifier
|
|
86
|
+
UserID.Description=\u0423\u043D\u0456\u043A\u0430\u043B\u044C\u043D\u0438\u0439 \u0406\u0414 \u043A\u043E\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430
|
|
87
|
+
|
|
88
|
+
#XTIT: Admin data for a draft document
|
|
89
|
+
Draft_DraftAdministrativeData=\u0410\u0434\u043C\u0456\u043D\u0456\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043D\u0456 \u0434\u0430\u043D\u0456 \u0447\u0435\u0440\u043D\u0435\u0442\u043A\u0438
|
|
90
|
+
|
|
91
|
+
#XTIT: Technical ID of a draft document
|
|
92
|
+
Draft_DraftUUID=\u0427\u0435\u0440\u043D\u0435\u0442\u043A\u0430 (\u0442\u0435\u0445\u043D\u0456\u0447\u043D\u0438\u0439 \u0406\u0414)
|
|
93
|
+
|
|
94
|
+
#XTIT: Creation time of a draft
|
|
95
|
+
Draft_CreationDateTime=\u0414\u0430\u0442\u0430 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F \u0447\u0435\u0440\u043D\u0435\u0442\u043A\u0438
|
|
96
|
+
|
|
97
|
+
#XTIT: User created the draft
|
|
98
|
+
Draft_CreatedByUser=\u0410\u0432\u0442\u043E\u0440 \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u043D\u044F \u0447\u0435\u0440\u043D\u0435\u0442\u043A\u0438
|
|
99
|
+
|
|
100
|
+
#XTIT: The current user (me) created the draft
|
|
101
|
+
Draft_DraftIsCreatedByMe=\u0427\u0435\u0440\u043D\u0435\u0442\u043A\u0430, \u0441\u0442\u0432\u043E\u0440\u0435\u043D\u0430 \u043C\u043D\u043E\u044E
|
|
102
|
+
|
|
103
|
+
#XTIT: Time a draft was last changed on
|
|
104
|
+
Draft_LastChangeDateTime=\u0414\u0430\u0442\u0430 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u0437\u043C\u0456\u043D\u0438 \u0447\u0435\u0440\u043D\u0435\u0442\u043A\u0438
|
|
105
|
+
|
|
106
|
+
#XTIT: User that changed the draft last
|
|
107
|
+
Draft_LastChangedByUser=\u0410\u0432\u0442\u043E\u0440 \u043E\u0441\u0442\u0430\u043D\u043D\u044C\u043E\u0457 \u0437\u043C\u0456\u043D\u0438 \u0447\u0435\u0440\u043D\u0435\u0442\u043A\u0438
|
|
108
|
+
|
|
109
|
+
#XTIT: User that is working on the draft
|
|
110
|
+
Draft_InProcessByUser=\u041F\u043E\u0442\u043E\u0447\u043D\u0438\u0439 \u0430\u0432\u0442\u043E\u0440 \u043E\u0431\u0440\u043E\u0431\u043A\u0438 \u0447\u0435\u0440\u043D\u0435\u0442\u043A\u0438
|
|
111
|
+
|
|
112
|
+
#XTIT: The current user (me) is working on the draft
|
|
113
|
+
Draft_DraftIsProcessedByMe=\u0427\u0435\u0440\u043D\u0435\u0442\u043A\u0430, \u044F\u043A\u0443 \u043D\u0430\u0440\u0430\u0437\u0456 \u043E\u0431\u0440\u043E\u0431\u043B\u044F\u044E \u044F
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
const cds = require('../..'), {env} = cds
|
|
2
2
|
const DEBUG = cds.debug('alpha|_localized')
|
|
3
|
+
const _legacy_sqlite = cds.env.requires.kinds['legacy-sqlite'].impl
|
|
3
4
|
const _locales_4sql = {
|
|
4
5
|
sqlite : env.i18n.for_sqlite || env.i18n.for_sql || [],
|
|
5
6
|
plain : env.i18n.for_sql || [],
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
const { _localized_entries } = env.cdsc.cv2 || {}
|
|
9
8
|
const _been_here = Symbol('is _localized')
|
|
10
9
|
|
|
11
10
|
|
|
@@ -15,13 +14,11 @@ const _been_here = Symbol('is _localized')
|
|
|
15
14
|
* compiler, create additional views localized_<locale>_<views>
|
|
16
15
|
*/
|
|
17
16
|
function unfold_ddl (ddl, csn, o={}) { // NOSONAR
|
|
18
|
-
|
|
19
|
-
if (
|
|
20
|
-
const _locales = _locales_4sql[o.dialect]; if (!_locales) return ddl
|
|
17
|
+
const db = env.requires.db || env.requires.kinds.sql
|
|
18
|
+
const locales = db.impl === _legacy_sqlite && _locales_4sql[o.dialect]; if (!locales) return ddl
|
|
21
19
|
const localized_views = ddl.filter (each => each.startsWith('CREATE VIEW localized_') || each.startsWith('DROP VIEW localized_'))
|
|
22
|
-
// REVISIT: analyze ddl statements. Problem is with schevo calling this function containing only drops
|
|
23
20
|
for (const localized_view of localized_views) {
|
|
24
|
-
for (const locale of
|
|
21
|
+
for (const locale of locales) ddl.push (localized_view
|
|
25
22
|
.replace (/localized_/g, `localized_${locale}_`)
|
|
26
23
|
.replace (/\.locale = 'en'/g, `.locale = '${locale}'`)
|
|
27
24
|
)
|
|
@@ -45,25 +42,17 @@ function unfold_csn (m) { // NOSONAR
|
|
|
45
42
|
DEBUG && DEBUG ('unfolding csn...')
|
|
46
43
|
const pass2 = []
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
if (o.fewerLocalizedViews) for (let each in m.definitions) {
|
|
51
|
-
const d = m.definitions [each]
|
|
52
|
-
if (d.$localized && d.elements && !d.elements.localized) delete d.$localized
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const _conf = env.requires.db || env.requires.sql || env.requires.kinds.sql
|
|
56
|
-
const _on_sqlite = _conf.kind === 'sqlite' || _conf.dialect === 'sqlite'
|
|
57
|
-
const _locales = !o.fewerLocalizedViews && !o.betterSqliteSessionVariables && _on_sqlite && _locales_4sql.sqlite
|
|
45
|
+
const db = env.requires.db || env.requires.kinds.sql
|
|
46
|
+
const locales = db.impl === _legacy_sqlite && _locales_4sql.sqlite
|
|
58
47
|
|
|
59
48
|
// Pass 1 - add localized.<locale> entities and views
|
|
60
49
|
for (const each in cds.linked(m).definitions) {
|
|
61
50
|
const d = m.definitions [each]
|
|
62
51
|
// Add localized.<entry> for all entities having localized views in db
|
|
63
|
-
if (
|
|
52
|
+
if (_is_localized(d)) {
|
|
64
53
|
_add_proxy4 (d,`localized.${each}`, x => pass2.push([x]))
|
|
65
54
|
// if running on sqlite add additional localized.<locale>. views
|
|
66
|
-
if (
|
|
55
|
+
if (locales) for (const locale of locales) {
|
|
67
56
|
_add_proxy4 (d,`localized.${locale}.${each}`, x => pass2.push([x,locale]))
|
|
68
57
|
}
|
|
69
58
|
}
|
|
@@ -104,4 +93,3 @@ const _is_localized = d => d.own('$localized') // as set by compiler in compile.
|
|
|
104
93
|
|
|
105
94
|
// feature-toggled exports
|
|
106
95
|
module.exports = { unfold_csn, unfold_ddl }
|
|
107
|
-
if (!env.features.localized) Object.assign (module.exports, { unfold_csn: x=>x, unfold_ddl: x=>x })
|
package/lib/dbs/cds-deploy.js
CHANGED
|
@@ -400,6 +400,7 @@ if (!module.parent) (async function CLI () {
|
|
|
400
400
|
if (o.username) (db.credentials ??= {}).username = o.username
|
|
401
401
|
if (o.password) (db.credentials ??= {}).password = o.password
|
|
402
402
|
}
|
|
403
|
+
db = await cds.connect.to(db);
|
|
403
404
|
db = await cds.deploy('*',o).to(db)
|
|
404
405
|
} finally {
|
|
405
406
|
await db?.disconnect?.()
|
package/lib/env/cds-requires.js
CHANGED
package/lib/env/defaults.js
CHANGED
|
@@ -40,6 +40,7 @@ const defaults = module.exports = {
|
|
|
40
40
|
|
|
41
41
|
server: {
|
|
42
42
|
force_exit_timeout: 1111,
|
|
43
|
+
body_parser: undefined, // Allows to configure all body parser options, e.g. limit
|
|
43
44
|
cors: !production, // CORS middleware is off in production
|
|
44
45
|
index: !production, // index page is off in production
|
|
45
46
|
port: 4004,
|
|
@@ -68,7 +69,6 @@ const defaults = module.exports = {
|
|
|
68
69
|
// skip_unused: 'all',
|
|
69
70
|
skip_unused: true,
|
|
70
71
|
deploy_data_onconflict: 'insert',
|
|
71
|
-
localized: true,
|
|
72
72
|
assert_integrity: false,
|
|
73
73
|
precise_timestamps: false,
|
|
74
74
|
ieee754compatible: undefined,
|
package/lib/env/plugins.js
CHANGED
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
// REVISIT: we should have a real modular plugin technique for cds.env
|
|
2
2
|
module.exports = function add_mtx_env (env) {
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
if (cds_load_mismatch()) return env
|
|
5
|
+
|
|
6
|
+
const mtx_env = _require('@sap/cds-mtxs/env')
|
|
5
7
|
if (mtx_env) {
|
|
6
8
|
const {requires} = env, {kinds} = requires
|
|
7
9
|
Object.assign (env, mtx_env, {requires})
|
|
8
10
|
Object.assign (requires, mtx_env.requires, {kinds})
|
|
9
11
|
Object.assign (kinds, mtx_env.requires?.kinds)
|
|
10
12
|
}
|
|
13
|
+
return env
|
|
14
|
+
}
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
function _require (id) {
|
|
17
|
+
try { return module.require(id) }
|
|
18
|
+
catch(e) { if (e.code !== 'MODULE_NOT_FOUND') throw e }
|
|
19
|
+
}
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
// Anticipates if loading mtxs would load a _different_ @sap/cds than this one, which we must avoid.
|
|
22
|
+
// May happen in PNPM setups that add all global installs to NODE_PATH. Seen in BAS.
|
|
23
|
+
function cds_load_mismatch() {
|
|
24
|
+
const cds = require('..')
|
|
25
|
+
try {
|
|
26
|
+
const mtxs = require.resolve('@sap/cds-mtxs')
|
|
27
|
+
const cds2 = require.resolve('@sap/cds/package.json', { paths:[mtxs] })
|
|
28
|
+
const csd2Home = cds.utils.path.resolve(cds2, '..')
|
|
29
|
+
if (csd2Home !== cds.home) {
|
|
30
|
+
return true
|
|
31
|
+
}
|
|
32
|
+
// console.log('home', cds.home, 'other', otherCdsHome)
|
|
33
|
+
} catch(e) { if (e.code !== 'MODULE_NOT_FOUND') throw e }
|
|
18
34
|
}
|
package/lib/linked/validate.js
CHANGED
|
@@ -204,7 +204,7 @@ class entity extends struct {
|
|
|
204
204
|
/** Actions are struct-like, with their parameters as elements to validate. */
|
|
205
205
|
class action extends struct {
|
|
206
206
|
validate (data, path, ctx) {
|
|
207
|
-
|
|
207
|
+
super.validate (data, path, ctx, this.params || {})
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
|
package/lib/log/cds-log.js
CHANGED
|
@@ -45,11 +45,11 @@ exports.loggers = {}
|
|
|
45
45
|
function cds_log (module, options) { // NOSONAR
|
|
46
46
|
const id = module?.match(/^[^|]+/)[0] || 'cds', cache = log.loggers
|
|
47
47
|
const cached = cache[id]
|
|
48
|
-
if (cached &&
|
|
48
|
+
if (cached && options == undefined) return cached // Note: SILENT = 0, so falsy check on option would be wrong
|
|
49
49
|
|
|
50
50
|
let label = options?.label || options?.prefix || cached?.label || id
|
|
51
51
|
let level = typeof options === 'object' ? options.level : options
|
|
52
|
-
if (
|
|
52
|
+
if (level == undefined) level = DEBUG_matches(module) ? DEBUG : conf.levels[id] || INFO
|
|
53
53
|
if (typeof level === 'string') level = log.levels [level.toUpperCase()]
|
|
54
54
|
if (cached && cached.level === level) return cached
|
|
55
55
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const express = require('express')
|
|
2
2
|
const cds = require('../../index')
|
|
3
|
-
const
|
|
3
|
+
const DEBUG = cds.debug('hcql')
|
|
4
4
|
const { inspect } = require('util')
|
|
5
5
|
|
|
6
6
|
class HCQLAdapter extends require('./http') {
|
|
@@ -14,8 +14,8 @@ class HCQLAdapter extends require('./http') {
|
|
|
14
14
|
*/
|
|
15
15
|
.get('/\\$csn', (_, res) => res.json(this.schema))
|
|
16
16
|
|
|
17
|
-
.use(express.json()) //> for application/json -> cqn
|
|
18
|
-
.use(express.text()) //> for text/plain -> cql -> cqn
|
|
17
|
+
.use(express.json(this.body_parser_options)) //> for application/json -> cqn
|
|
18
|
+
.use(express.text(this.body_parser_options)) //> for text/plain -> cql -> cqn
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Convenience route for REST-style request formats like that:
|
|
@@ -36,7 +36,7 @@ class HCQLAdapter extends require('./http') {
|
|
|
36
36
|
*/
|
|
37
37
|
.use((req, res, next) => {
|
|
38
38
|
let q = this.query4(req)
|
|
39
|
-
|
|
39
|
+
DEBUG?.(inspect(q,{depth:11,colors:true}))
|
|
40
40
|
return srv.run(q).then(r => res.json(r)).catch(next)
|
|
41
41
|
})
|
|
42
42
|
}
|
|
@@ -46,7 +46,7 @@ class HCQLAdapter extends require('./http') {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
query4 (req) {
|
|
49
|
-
if (typeof req.body === 'string') return cds.parse.cql(req.body)
|
|
49
|
+
if (typeof req.body === 'string') return req.body = cds.parse.cql(req.body)
|
|
50
50
|
return req.body //> a plain CQN object
|
|
51
51
|
}
|
|
52
52
|
}
|