@stacksjs/defaults 0.75.114 → 0.75.116

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.
@@ -373,3 +373,12 @@ application timestamp representation. Mixing SQLite datetime text with
373
373
  application ISO text in raw comparisons can give wrong expiry boundaries.
374
374
  Source: core/database/src/types.ts and sql-helpers.ts; see stacks-query-builder
375
375
  for typed tables, raw binding, transaction handles and replica routing.
376
+
377
+ ## Group row locks
378
+
379
+ lockRows(tx, table, ids, { key?, scope? }) from database/runtime acquires
380
+ unique numeric primary keys in deterministic order and returns a map keyed by their
381
+ canonical numeric string value, so padded numeric inputs cannot reverse lock order. Missing scoped rows map to undefined. The caller must supply a
382
+ transaction handle and choose ownership filters; reads, writes and validation
383
+ remain on that handle. This prevents opposite input order from creating a
384
+ lock-order cycle during a transfer, merge or multi-item stock reservation.
@@ -291,3 +291,23 @@ UTC, and returns `{ date, time, timeZone }` from one instant. Supply site and
291
291
  organization zones in that order. Missing/invalid zones fall through; an
292
292
  invalid instant throws. The output uses YYYY-MM-DD and HH:mm and is suitable
293
293
  for comparing local schedule dates and end times, not for elapsed durations.
294
+
295
+ ## Recurrences, coverage and local reporting periods
296
+
297
+ The pure schedule entry exports parseWeeklySchedule, expandWeeklySchedule,
298
+ clockMinutes, addClockMinutes and timeWindowsCover. Recurrence validation
299
+ rejects invalid weekday entries; expansion refuses excessive ranges and
300
+ midnight-crossing durations instead of silently truncating them. Adjacent
301
+ windows can cover one continuous slot. ScheduleInputError carries status 422.
302
+
303
+ localDateRange(from, to, ...zones) converts inclusive calendar days to an
304
+ exclusive-end UTC instant range in a selected valid zone, including DST days.
305
+ Its supported reporting dates are 0101-01-01 through 9999-12-30; unsupported
306
+ boundaries raise ScheduleInputError rather than normalizing to another year.
307
+ netHoursBetween(start, end, breaks) retains full precision; apply display or
308
+ monetary rounding at the final boundary. It performs duration arithmetic,
309
+ not jurisdiction-specific compensation or overtime decisions.
310
+
311
+ localTimeSpan(date, start, end, ...zones) converts a clock interval, including
312
+ next-day ends, to actual instants for cross-site/overnight overlap checks.
313
+ Equal endpoints and non-positive DST-normalized intervals are rejected.
@@ -36,7 +36,7 @@ Browser runtime bindings are documented separately in `stacks-auto-imports`.
36
36
  | `@stacksjs/config` | [`stacks-config`](../stacks-config/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/config/src/index.ts) | 15 |
37
37
  | `@stacksjs/cron` | [`stacks-cron`](../stacks-cron/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/cron/src/index.ts) | 4 |
38
38
  | `@stacksjs/database` | [`stacks-database`](../stacks-database/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/database/src/index.ts) | 106 |
39
- | `@stacksjs/datetime` | [`stacks-datetime`](../stacks-datetime/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/index.ts) | 11 |
39
+ | `@stacksjs/datetime` | [`stacks-datetime`](../stacks-datetime/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/index.ts) | 12 |
40
40
  | `@stacksjs/defaults` | [`stacks-build`](../stacks-build/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/defaults/package.json) | 1 |
41
41
  | `@stacksjs/deploy` | [`stacks-deploy`](../stacks-deploy/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/deploy/package.json) | 1 |
42
42
  | `@stacksjs/desktop-build` | [`stacks-desktop`](../stacks-desktop/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/desktop/src/index.ts) | 11 |
@@ -94,7 +94,7 @@ Browser runtime bindings are documented separately in `stacks-auto-imports`.
94
94
  | `@stacksjs/types` | [`stacks-types`](../stacks-types/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/types/src/index.ts) | 2 |
95
95
  | `@stacksjs/ui` | [`stacks-ui`](../stacks-ui/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/ui/src/index.ts) | 5 |
96
96
  | `@stacksjs/utils` | [`stacks-utils`](../stacks-utils/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/utils/src/index.ts) | 15 |
97
- | `@stacksjs/validation` | [`stacks-validation`](../stacks-validation/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/src/index.ts) | 15 |
97
+ | `@stacksjs/validation` | [`stacks-validation`](../stacks-validation/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/src/index.ts) | 16 |
98
98
  | `@stacksjs/video` | [`stacks-video`](../stacks-video/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/video/src/index.ts) | 3 |
99
99
  | `@stacksjs/whois` | [`stacks-whois`](../stacks-whois/SKILL.md) | [entrypoint](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/whois/src/index.ts) | 4 |
100
100
 
@@ -359,9 +359,9 @@ Guidance: [`stacks-datetime`](../stacks-datetime/SKILL.md). Source: [storage/fra
359
359
 
360
360
  Declared runtime exports: `DateTime`, `addCalendarMonths`, `dateFormat`, `format`, `isoInZone`, `localDateTime`, `now`, `parse`, `zoneOffsetMinutes`, `zonedTimeToUtc`.
361
361
 
362
- Local source modules: [src/calendar.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/calendar.ts), [src/format.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/format.ts), [src/local.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/local.ts), [src/now.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/now.ts), [src/parse.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/parse.ts), [src/zone.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/zone.ts).
362
+ Local source modules: [src/calendar.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/calendar.ts), [src/format.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/format.ts), [src/local.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/local.ts), [src/now.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/now.ts), [src/parse.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/parse.ts), [src/schedule.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/schedule.ts), [src/zone.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/src/zone.ts).
363
363
 
364
- Evidence directory: [11 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
364
+ Evidence directory: [12 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/datetime/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
365
365
 
366
366
  ### @stacksjs/defaults
367
367
 
@@ -907,7 +907,7 @@ Declared runtime exports: `applyConditionals`, `isArray`, `isBoolean`, `isFuncti
907
907
 
908
908
  Local source modules: [src/input.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/src/input.ts), [src/reporter.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/src/reporter.ts), [src/schema.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/src/schema.ts), [src/validator.ts](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/src/validator.ts).
909
909
 
910
- Evidence directory: [15 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
910
+ Evidence directory: [16 retained tests](https://github.com/stacksjs/stacks/blob/main/storage/framework/core/validation/tests). These files are evidence pointers, not a claim that all tests were run for this catalog.
911
911
 
912
912
  ### @stacksjs/video
913
913
 
@@ -8,6 +8,11 @@ allowed-tools: Read Edit Write Bash Grep Glob
8
8
 
9
9
  # Stacks Validation
10
10
 
11
+ `parseEnumListInput(value, field, choices, minItems = 1, maxItems = 100)` from
12
+ `@stacksjs/validation/input` validates every entry and returns unique values in
13
+ input order. Invalid entries reject the whole list; optional empty lists require
14
+ an explicit zero minimum. Use it for channel, role and capability selections.
15
+
11
16
  ## Key Paths
12
17
  - Core package: `storage/framework/core/validation/src/`
13
18
  - Package: `@stacksjs/validation`
@@ -2,7 +2,7 @@
2
2
  "publisher": "Stacks",
3
3
  "name": "vscode-stacks",
4
4
  "displayName": "Stacks",
5
- "version": "0.75.114",
5
+ "version": "0.75.116",
6
6
  "description": "Stacks, built into VS Code: stx templates, pickier linting and formatting, encrypted env files, the dev server preview and every buddy command. No other extensions required.",
7
7
  "license": "MIT",
8
8
  "funding": "https://github.com/sponsors/chrisbbreuer",
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/defaults",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.75.114",
5
+ "version": "0.75.116",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/stacksjs/stacks.git",
@@ -55,7 +55,7 @@
55
55
  "dependencies": {
56
56
  "@iconify-json/f7": "^1.2.2",
57
57
  "@iconify-json/hugeicons": "^1.2.35",
58
- "@stacksjs/mobile": "^0.75.114",
58
+ "@stacksjs/mobile": "^0.75.116",
59
59
  "@stacksjs/sanitizer": "^0.2.422",
60
60
  "@xterm/addon-fit": "^0.11.0",
61
61
  "@xterm/xterm": "^6.0.0",