repository-provider 32.7.17 → 32.7.19

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/README.md CHANGED
@@ -64,6 +64,8 @@ console.log(await readme.string);
64
64
  * [Parameters](#parameters-6)
65
65
  * [getAttribute](#getattribute)
66
66
  * [Parameters](#parameters-7)
67
+ * [getAttributeAndOperator](#getattributeandoperator)
68
+ * [Parameters](#parameters-8)
67
69
  * [default\_attribute](#default_attribute)
68
70
  * [description\_attribute](#description_attribute)
69
71
  * [id\_attribute](#id_attribute)
@@ -71,9 +73,9 @@ console.log(await readme.string);
71
73
  * [title\_attribute](#title_attribute)
72
74
  * [priority\_attribute](#priority_attribute)
73
75
  * [BaseObject](#baseobject)
74
- * [Parameters](#parameters-8)
76
+ * [Parameters](#parameters-9)
75
77
  * [updateAttributes](#updateattributes)
76
- * [Parameters](#parameters-9)
78
+ * [Parameters](#parameters-10)
77
79
  * [update](#update)
78
80
  * [toString](#tostring)
79
81
  * [displayName](#displayname)
@@ -81,7 +83,7 @@ console.log(await readme.string);
81
83
  * [fullCondensedName](#fullcondensedname)
82
84
  * [isWritable](#iswritable)
83
85
  * [equals](#equals)
84
- * [Parameters](#parameters-10)
86
+ * [Parameters](#parameters-11)
85
87
  * [type](#type)
86
88
  * [collectionName](#collectionname)
87
89
  * [attributes](#attributes)
@@ -92,36 +94,36 @@ console.log(await readme.string);
92
94
  * [BaseProvider](#baseprovider)
93
95
  * [Properties](#properties-2)
94
96
  * [equals](#equals-1)
95
- * [Parameters](#parameters-11)
97
+ * [Parameters](#parameters-12)
96
98
  * [repositoryBases](#repositorybases)
97
99
  * [supportsBase](#supportsbase)
98
- * [Parameters](#parameters-12)
99
- * [normalizeRepositoryName](#normalizerepositoryname)
100
100
  * [Parameters](#parameters-13)
101
- * [normalizeGroupName](#normalizegroupname)
101
+ * [normalizeRepositoryName](#normalizerepositoryname)
102
102
  * [Parameters](#parameters-14)
103
+ * [normalizeGroupName](#normalizegroupname)
104
+ * [Parameters](#parameters-15)
103
105
  * [areRepositoryNamesCaseSensitive](#arerepositorynamescasesensitive)
104
106
  * [areGroupNamesCaseSensitive](#aregroupnamescasesensitive)
105
107
  * [parseName](#parsename)
106
- * [Parameters](#parameters-15)
107
- * [createRepository](#createrepository)
108
108
  * [Parameters](#parameters-16)
109
- * [list](#list)
109
+ * [createRepository](#createrepository)
110
110
  * [Parameters](#parameters-17)
111
- * [projects](#projects)
111
+ * [list](#list)
112
112
  * [Parameters](#parameters-18)
113
- * [milestones](#milestones)
113
+ * [projects](#projects)
114
114
  * [Parameters](#parameters-19)
115
- * [repositories](#repositories)
115
+ * [milestones](#milestones)
116
116
  * [Parameters](#parameters-20)
117
- * [branches](#branches)
117
+ * [repositories](#repositories)
118
118
  * [Parameters](#parameters-21)
119
- * [tags](#tags)
119
+ * [branches](#branches)
120
120
  * [Parameters](#parameters-22)
121
- * [hooks](#hooks)
121
+ * [tags](#tags)
122
122
  * [Parameters](#parameters-23)
123
- * [pullRequests](#pullrequests)
123
+ * [hooks](#hooks)
124
124
  * [Parameters](#parameters-24)
125
+ * [pullRequests](#pullrequests)
126
+ * [Parameters](#parameters-25)
125
127
  * [name](#name)
126
128
  * [provider](#provider)
127
129
  * [toJSON](#tojson)
@@ -134,15 +136,15 @@ console.log(await readme.string);
134
136
  * [pullRequestClass](#pullrequestclass)
135
137
  * [instanceIdentifier](#instanceidentifier)
136
138
  * [optionsFromEnvironment](#optionsfromenvironment)
137
- * [Parameters](#parameters-25)
138
- * [areOptionsSufficcient](#areoptionssufficcient)
139
139
  * [Parameters](#parameters-26)
140
- * [initialize](#initialize)
140
+ * [areOptionsSufficcient](#areoptionssufficcient)
141
141
  * [Parameters](#parameters-27)
142
+ * [initialize](#initialize)
143
+ * [Parameters](#parameters-28)
142
144
  * [name](#name-1)
143
145
  * [messageDestination](#messagedestination-1)
144
146
  * [Branch](#branch)
145
- * [Parameters](#parameters-28)
147
+ * [Parameters](#parameters-29)
146
148
  * [Properties](#properties-3)
147
149
  * [url](#url)
148
150
  * [refType](#reftype)
@@ -150,62 +152,62 @@ console.log(await readme.string);
150
152
  * [isDefault](#isdefault)
151
153
  * [delete](#delete)
152
154
  * [commit](#commit)
153
- * [Parameters](#parameters-29)
154
- * [commitIntoPullRequest](#commitintopullrequest)
155
155
  * [Parameters](#parameters-30)
156
- * [removeEntries](#removeentries)
156
+ * [commitIntoPullRequest](#commitintopullrequest)
157
157
  * [Parameters](#parameters-31)
158
- * [createPullRequest](#createpullrequest)
158
+ * [removeEntries](#removeentries)
159
159
  * [Parameters](#parameters-32)
160
- * [createBranch](#createbranch)
160
+ * [createPullRequest](#createpullrequest)
161
161
  * [Parameters](#parameters-33)
162
+ * [createBranch](#createbranch)
163
+ * [Parameters](#parameters-34)
162
164
  * [CommitResult](#commitresult)
163
165
  * [Properties](#properties-4)
164
166
  * [Commit](#commit-1)
165
- * [Parameters](#parameters-34)
167
+ * [Parameters](#parameters-35)
166
168
  * [Properties](#properties-5)
167
169
  * [Hook](#hook)
168
170
  * [Issue](#issue)
169
171
  * [Milestone](#milestone)
170
172
  * [MultiGroupProvider](#multigroupprovider)
171
173
  * [repository](#repository)
172
- * [Parameters](#parameters-35)
173
- * [branch](#branch-1)
174
174
  * [Parameters](#parameters-36)
175
- * [repositoryGroup](#repositorygroup)
175
+ * [branch](#branch-1)
176
176
  * [Parameters](#parameters-37)
177
- * [repositoryGroups](#repositorygroups)
177
+ * [repositoryGroup](#repositorygroup)
178
178
  * [Parameters](#parameters-38)
179
- * [createRepositoryGroup](#createrepositorygroup)
179
+ * [repositoryGroups](#repositorygroups)
180
180
  * [Parameters](#parameters-39)
181
- * [addRepositoryGroup](#addrepositorygroup)
181
+ * [createRepositoryGroup](#createrepositorygroup)
182
182
  * [Parameters](#parameters-40)
183
+ * [addRepositoryGroup](#addrepositorygroup)
184
+ * [Parameters](#parameters-41)
183
185
  * [NamedObject](#namedobject)
184
- * [Parameters](#parameters-41)
186
+ * [Parameters](#parameters-42)
185
187
  * [Properties](#properties-6)
186
188
  * [equals](#equals-2)
187
- * [Parameters](#parameters-42)
189
+ * [Parameters](#parameters-43)
188
190
  * [toJSON](#tojson-1)
189
191
  * [OwnedObject](#ownedobject)
190
- * [Parameters](#parameters-43)
192
+ * [Parameters](#parameters-44)
191
193
  * [delete](#delete-1)
192
194
  * [equals](#equals-3)
193
- * [Parameters](#parameters-44)
195
+ * [Parameters](#parameters-45)
194
196
  * [api](#api)
195
197
  * [url](#url-1)
196
198
  * [provider](#provider-1)
197
199
  * [identifier](#identifier)
198
200
  * [fullName](#fullname-1)
199
201
  * [trace](#trace)
200
- * [Parameters](#parameters-45)
201
- * [info](#info)
202
202
  * [Parameters](#parameters-46)
203
- * [warn](#warn)
203
+ * [info](#info)
204
204
  * [Parameters](#parameters-47)
205
- * [error](#error)
205
+ * [warn](#warn)
206
206
  * [Parameters](#parameters-48)
207
- * [debug](#debug)
207
+ * [error](#error)
208
208
  * [Parameters](#parameters-49)
209
+ * [debug](#debug)
210
+ * [Parameters](#parameters-50)
209
211
  * [repositoryClass](#repositoryclass-1)
210
212
  * [pullRequestClass](#pullrequestclass-1)
211
213
  * [branchClass](#branchclass-1)
@@ -216,14 +218,14 @@ console.log(await readme.string);
216
218
  * [deleteMethodName](#deletemethodname)
217
219
  * [Project](#project)
218
220
  * [PullRequest](#pullrequest)
219
- * [Parameters](#parameters-50)
221
+ * [Parameters](#parameters-51)
220
222
  * [Properties](#properties-7)
221
223
  * [fullName](#fullname-2)
222
224
  * [url](#url-2)
223
225
  * [repository](#repository-1)
224
226
  * [delete](#delete-2)
225
227
  * [merge](#merge)
226
- * [Parameters](#parameters-51)
228
+ * [Parameters](#parameters-52)
227
229
  * [decline](#decline)
228
230
  * [reviews](#reviews)
229
231
  * [identifier](#identifier-1)
@@ -231,9 +233,9 @@ console.log(await readme.string);
231
233
  * [states](#states)
232
234
  * [validMergeMethods](#validmergemethods)
233
235
  * [list](#list-1)
234
- * [Parameters](#parameters-52)
235
- * [open](#open)
236
236
  * [Parameters](#parameters-53)
237
+ * [open](#open)
238
+ * [Parameters](#parameters-54)
237
239
  * [state](#state)
238
240
  * [locked](#locked)
239
241
  * [merged](#merged)
@@ -244,12 +246,12 @@ console.log(await readme.string);
244
246
  * [ref](#ref-1)
245
247
  * [refId](#refid)
246
248
  * [entries](#entries)
247
- * [Parameters](#parameters-54)
249
+ * [Parameters](#parameters-55)
248
250
  * [asyncIterator](#asynciterator)
249
251
  * [maybeEntry](#maybeentry)
250
- * [Parameters](#parameters-55)
251
- * [entry](#entry)
252
252
  * [Parameters](#parameters-56)
253
+ * [entry](#entry)
254
+ * [Parameters](#parameters-57)
253
255
  * [repository](#repository-2)
254
256
  * [fullName](#fullname-3)
255
257
  * [fullCondensedName](#fullcondensedname-1)
@@ -263,25 +265,25 @@ console.log(await readme.string);
263
265
  * [attributes](#attributes-1)
264
266
  * [isProtected](#isprotected-1)
265
267
  * [RepositoryGroup](#repositorygroup-1)
266
- * [Parameters](#parameters-57)
268
+ * [Parameters](#parameters-58)
267
269
  * [Properties](#properties-9)
268
270
  * [attributeMapping](#attributemapping-1)
269
271
  * [type](#type-1)
270
272
  * [homePageURL](#homepageurl-1)
271
273
  * [RepositoryOwner](#repositoryowner)
272
- * [Parameters](#parameters-58)
273
- * [Repository](#repository-3)
274
274
  * [Parameters](#parameters-59)
275
+ * [Repository](#repository-3)
276
+ * [Parameters](#parameters-60)
275
277
  * [Properties](#properties-10)
276
278
  * [slug](#slug)
277
279
  * [entry](#entry-1)
278
- * [Parameters](#parameters-60)
279
- * [entries](#entries-1)
280
280
  * [Parameters](#parameters-61)
281
- * [maybeEntry](#maybeentry-1)
281
+ * [entries](#entries-1)
282
282
  * [Parameters](#parameters-62)
283
- * [commits](#commits)
283
+ * [maybeEntry](#maybeentry-1)
284
284
  * [Parameters](#parameters-63)
285
+ * [commits](#commits)
286
+ * [Parameters](#parameters-64)
285
287
  * [cloneURL](#cloneurl)
286
288
  * [issuesURL](#issuesurl-1)
287
289
  * [homePageURL](#homepageurl-2)
@@ -292,67 +294,67 @@ console.log(await readme.string);
292
294
  * [delete](#delete-3)
293
295
  * [defaultBranch](#defaultbranch)
294
296
  * [branch](#branch-2)
295
- * [Parameters](#parameters-64)
297
+ * [Parameters](#parameters-65)
296
298
  * [hasBranches](#hasbranches)
297
299
  * [branches](#branches-1)
298
- * [Parameters](#parameters-65)
299
- * [createBranch](#createbranch-1)
300
300
  * [Parameters](#parameters-66)
301
- * [addBranch](#addbranch)
301
+ * [createBranch](#createbranch-1)
302
302
  * [Parameters](#parameters-67)
303
- * [deleteBranch](#deletebranch)
303
+ * [addBranch](#addbranch)
304
304
  * [Parameters](#parameters-68)
305
- * [tag](#tag)
305
+ * [deleteBranch](#deletebranch)
306
306
  * [Parameters](#parameters-69)
307
- * [tags](#tags-1)
307
+ * [tag](#tag)
308
308
  * [Parameters](#parameters-70)
309
- * [addTag](#addtag)
309
+ * [tags](#tags-1)
310
310
  * [Parameters](#parameters-71)
311
- * [createPullRequest](#createpullrequest-1)
311
+ * [addTag](#addtag)
312
312
  * [Parameters](#parameters-72)
313
- * [addPullRequest](#addpullrequest)
313
+ * [createPullRequest](#createpullrequest-1)
314
314
  * [Parameters](#parameters-73)
315
+ * [addPullRequest](#addpullrequest)
316
+ * [Parameters](#parameters-74)
315
317
  * [pullRequests](#pullrequests-1)
316
318
  * [pullRequest](#pullrequest-1)
317
- * [Parameters](#parameters-74)
318
- * [deletePullRequest](#deletepullrequest)
319
319
  * [Parameters](#parameters-75)
320
- * [addHook](#addhook)
320
+ * [deletePullRequest](#deletepullrequest)
321
321
  * [Parameters](#parameters-76)
322
- * [createHook](#createhook)
322
+ * [addHook](#addhook)
323
323
  * [Parameters](#parameters-77)
324
+ * [createHook](#createhook)
325
+ * [Parameters](#parameters-78)
324
326
  * [hooks](#hooks-1)
325
327
  * [hook](#hook-1)
326
- * [Parameters](#parameters-78)
327
- * [milestone](#milestone-1)
328
328
  * [Parameters](#parameters-79)
329
- * [project](#project-1)
329
+ * [milestone](#milestone-1)
330
330
  * [Parameters](#parameters-80)
331
- * [application](#application-1)
331
+ * [project](#project-1)
332
332
  * [Parameters](#parameters-81)
333
+ * [application](#application-1)
334
+ * [Parameters](#parameters-82)
333
335
  * [type](#type-2)
334
336
  * [refId](#refid-1)
335
- * [Parameters](#parameters-82)
337
+ * [Parameters](#parameters-83)
336
338
  * [attributes](#attributes-2)
337
339
  * [defaultBranchName](#defaultbranchname)
338
340
  * [Review](#review)
339
341
  * [SingleGroupProvider](#singlegroupprovider)
340
342
  * [repository](#repository-4)
341
- * [Parameters](#parameters-83)
342
- * [repositoryGroup](#repositorygroup-2)
343
343
  * [Parameters](#parameters-84)
344
- * [repositoryGroups](#repositorygroups-1)
344
+ * [repositoryGroup](#repositorygroup-2)
345
345
  * [Parameters](#parameters-85)
346
+ * [repositoryGroups](#repositorygroups-1)
347
+ * [Parameters](#parameters-86)
346
348
  * [Tag](#tag-1)
347
349
  * [refType](#reftype-1)
348
350
  * [asArray](#asarray)
349
- * [Parameters](#parameters-86)
350
- * [stripBaseName](#stripbasename)
351
351
  * [Parameters](#parameters-87)
352
- * [stripBaseNames](#stripbasenames)
352
+ * [stripBaseName](#stripbasename)
353
353
  * [Parameters](#parameters-88)
354
- * [generateBranchName](#generatebranchname)
354
+ * [stripBaseNames](#stripbasenames)
355
355
  * [Parameters](#parameters-89)
356
+ * [generateBranchName](#generatebranchname)
357
+ * [Parameters](#parameters-90)
356
358
 
357
359
  ## Application
358
360
 
@@ -422,7 +424,7 @@ mapAttributes({a:1},{a:"a'"}) // {"a'": 1}
422
424
 
423
425
  ### Parameters
424
426
 
425
- * `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** 
427
+ * `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
426
428
  * `mapping` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
427
429
 
428
430
  Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** keys renamed after mapping
@@ -454,7 +456,7 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
454
456
  * `default` **any?** the default value
455
457
  * `set` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** set the value
456
458
  * `get` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** get the value can be used to calculate default values
457
- * `env` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>)?** environment variable use to provide the value
459
+ * `env` **([Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)> | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))?** environment variable use to provide the value
458
460
 
459
461
  ## tokens
460
462
 
@@ -464,8 +466,6 @@ Split property path into tokens
464
466
 
465
467
  * `string` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
466
468
 
467
- Returns **Iterator<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20;
468
-
469
469
  ## setAttribute
470
470
 
471
471
  Set Object attribute.
@@ -489,6 +489,19 @@ The name may be a property path like 'a.b.c'.
489
489
 
490
490
  Returns **any** value associated with the given property name
491
491
 
492
+ ## getAttributeAndOperator
493
+
494
+ Deliver attribute value and operator.
495
+ The name may be a property path like 'a.b.c <='.
496
+
497
+ ### Parameters
498
+
499
+ * `object` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20;
500
+ * `expression` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
501
+ * `getters` (optional, default `{}`)
502
+
503
+ Returns **\[any, [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)]** value associated with the given property name
504
+
492
505
  ## default\_attribute
493
506
 
494
507
  common attributes
@@ -520,7 +533,7 @@ Creates an instance of BaseObject.
520
533
 
521
534
  ### Parameters
522
535
 
523
- * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**&#x20;
536
+ * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20;
524
537
  * `additionalProperties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**&#x20;
525
538
 
526
539
  ### updateAttributes
@@ -529,8 +542,8 @@ Takes values from options.
529
542
 
530
543
  #### Parameters
531
544
 
532
- * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**&#x20;
533
- * `additionalProperties` &#x20;
545
+ * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20;
546
+ * `additionalProperties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**&#x20;
534
547
 
535
548
  ### update
536
549
 
@@ -1100,8 +1113,7 @@ Object with a name.
1100
1113
 
1101
1114
  * `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20;
1102
1115
  * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**&#x20;
1103
- * `additionalProperties` &#x20;
1104
- * `Object` |
1116
+ * `additionalProperties` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**&#x20;
1105
1117
 
1106
1118
  ### Properties
1107
1119
 
@@ -1552,7 +1564,6 @@ Abstract repository collection.
1552
1564
 
1553
1565
  * `options.description` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** human readable description
1554
1566
  * `options.id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** internal id
1555
- * `options.uuid` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** internal id
1556
1567
  * `options.url` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** home
1557
1568
 
1558
1569
  ### Properties
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repository-provider",
3
- "version": "32.7.17",
3
+ "version": "32.7.19",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -33,13 +33,13 @@
33
33
  "matching-iterator": "^2.0.12"
34
34
  },
35
35
  "devDependencies": {
36
- "ava": "^5.2.0",
37
- "browser-ava": "^1.3.38",
38
- "c8": "^7.13.0",
39
- "documentation": "^14.0.1",
40
- "repository-provider-test-support": "^2.3.5",
41
- "semantic-release": "^21.0.2",
42
- "typescript": "^5.0.4"
36
+ "ava": "^5.3.0",
37
+ "browser-ava": "^1.3.44",
38
+ "c8": "^7.14.0",
39
+ "documentation": "^14.0.2",
40
+ "repository-provider-test-support": "^2.3.6",
41
+ "semantic-release": "^21.0.3s",
42
+ "typescript": "^5.1.3"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=16.20.0"
@@ -65,32 +65,35 @@ export function definePropertiesFromOptions(
65
65
 
66
66
  const path = name.split(/\./);
67
67
  const first = path.shift();
68
- const property = properties[first];
69
68
 
70
- if (path.length) {
71
- const remaining = path.join(".");
69
+ if (first !== undefined) {
70
+ const property = properties[first];
72
71
 
73
- if (property) {
74
- setAttribute(property.value, remaining, value);
75
- } else {
76
- const slice = {};
77
- setAttribute(slice, remaining, value);
78
- properties[first] = { configurable: true, value: slice };
79
- }
80
- } else {
81
- if (value !== undefined) {
82
- const op = Object.getOwnPropertyDescriptor(
83
- object.constructor.prototype,
84
- first
85
- );
86
-
87
- if (op?.set || property?.set) {
88
- applyLater[first] = value;
72
+ if (path.length) {
73
+ const remaining = path.join(".");
74
+
75
+ if (property) {
76
+ setAttribute(property.value, remaining, value);
89
77
  } else {
90
- properties[first] = Object.assign(
91
- { value, writable: attribute.writable },
92
- property
78
+ const slice = {};
79
+ setAttribute(slice, remaining, value);
80
+ properties[first] = { configurable: true, value: slice };
81
+ }
82
+ } else {
83
+ if (value !== undefined) {
84
+ const op = Object.getOwnPropertyDescriptor(
85
+ object.constructor.prototype,
86
+ first
93
87
  );
88
+
89
+ if (op?.set || property?.set) {
90
+ applyLater[first] = value;
91
+ } else {
92
+ properties[first] = Object.assign(
93
+ { value, writable: attribute.writable },
94
+ property
95
+ );
96
+ }
94
97
  }
95
98
  }
96
99
  }
@@ -155,7 +158,7 @@ export function optionJSON(
155
158
  * ```js
156
159
  * mapAttributes({a:1},{a:"a'"}) // {"a'": 1}
157
160
  * ```
158
- * @param {Object} [object]
161
+ * @param {Object} object
159
162
  * @param {Object} mapping
160
163
  * @return {Object} keys renamed after mapping
161
164
  */
package/src/attribute.mjs CHANGED
@@ -10,29 +10,60 @@
10
10
  * @property {any} [default] the default value
11
11
  * @property {Function} [set] set the value
12
12
  * @property {Function} [get] get the value can be used to calculate default values
13
- * @property {string|string[]} [env] environment variable use to provide the value
13
+ * @property {string[]|string} [env] environment variable use to provide the value
14
14
  */
15
15
 
16
16
  /**
17
17
  * Split property path into tokens
18
+ * @generator
18
19
  * @param {string} string
19
- * @return {Iterator<string>}
20
+ * @yields {string}
20
21
  */
21
- function* tokens(string) {
22
+ export function* tokens(string) {
22
23
  let identifier = "";
24
+ let last;
23
25
 
24
26
  for (const c of string) {
25
27
  switch (c) {
26
28
  case "\t":
27
29
  case " ":
30
+ if (identifier.length) {
31
+ yield identifier;
32
+ identifier = "";
33
+ }
34
+ if (last) {
35
+ yield last;
36
+ last = undefined;
37
+ }
28
38
  break;
29
39
 
40
+ case "!":
30
41
  case ">":
31
42
  case "<":
43
+ if (last) {
44
+ yield last;
45
+ }
46
+ last = c;
47
+ break;
48
+
49
+ case "=":
50
+ if (last) {
51
+ yield last + c;
52
+ last = undefined;
53
+ break;
54
+ }
32
55
 
56
+ case "+":
57
+ case "-":
33
58
  case ".":
59
+ case "(":
60
+ case ")":
34
61
  case "[":
35
62
  case "]":
63
+ if (last) {
64
+ yield last;
65
+ last = undefined;
66
+ }
36
67
  if (identifier.length) {
37
68
  yield identifier;
38
69
  identifier = "";
@@ -40,6 +71,10 @@ function* tokens(string) {
40
71
  yield c;
41
72
  break;
42
73
  default:
74
+ if (last) {
75
+ yield last;
76
+ last = undefined;
77
+ }
43
78
  identifier += c;
44
79
  }
45
80
  }
@@ -47,6 +82,9 @@ function* tokens(string) {
47
82
  if (identifier.length) {
48
83
  yield identifier;
49
84
  }
85
+ if (last) {
86
+ yield last;
87
+ }
50
88
  }
51
89
 
52
90
  /**
@@ -81,7 +119,9 @@ export function setAttribute(object, name, value) {
81
119
  }
82
120
  }
83
121
 
84
- lastObject[lastKey] = value;
122
+ if (lastKey) {
123
+ lastObject[lastKey] = value;
124
+ }
85
125
  }
86
126
 
87
127
  /**
@@ -116,3 +156,47 @@ export function getAttribute(object, name) {
116
156
 
117
157
  return object;
118
158
  }
159
+
160
+ /**
161
+ * Deliver attribute value and operator.
162
+ * The name may be a property path like 'a.b.c <='.
163
+ * @param {Object} object
164
+ * @param {string} expression
165
+ * @returns {[any,string]} value associated with the given property name
166
+ */
167
+ export function getAttributeAndOperator(object, expression, getters = {}) {
168
+ let op = "=";
169
+
170
+ for (const token of tokens(expression)) {
171
+ switch (token) {
172
+ case ">=":
173
+ case "<=":
174
+ case ">":
175
+ case "<":
176
+ case "=":
177
+ case "!=":
178
+ op = token;
179
+ break;
180
+ case ".":
181
+ case "[":
182
+ case "]":
183
+ break;
184
+
185
+ default:
186
+ if (object === undefined) {
187
+ break;
188
+ }
189
+
190
+ const g = getters[token];
191
+ if (g) {
192
+ object = g(object);
193
+ } else {
194
+ if (object[token] !== undefined) {
195
+ object = object[token];
196
+ }
197
+ }
198
+ }
199
+ }
200
+
201
+ return [object, op];
202
+ }
@@ -6,7 +6,7 @@ import { description_attribute, id_attribute } from "./attributes.mjs";
6
6
 
7
7
  /**
8
8
  * Creates an instance of BaseObject.
9
- * @param {Object} [options]
9
+ * @param {Object} options
10
10
  * @param {Object} [additionalProperties]
11
11
  */
12
12
  export class BaseObject {
@@ -63,7 +63,8 @@ import { description_attribute, id_attribute } from "./attributes.mjs";
63
63
 
64
64
  /**
65
65
  * Takes values from options.
66
- * @param {Object} [options]
66
+ * @param {Object} options
67
+ * @param {Object} [additionalProperties]
67
68
  */
68
69
  updateAttributes(options, additionalProperties) {
69
70
  definePropertiesFromOptions(