riverbankcms 0.2.2 → 0.4.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/README.md +14 -0
- package/dist/acceptance/matrix.mjs +60 -3
- package/dist/cli/index.mjs +3559 -2162
- package/dist/cli/init-docs/content/cli-reference.md +36 -3
- package/dist/cli/init-docs/content/content-management.md +38 -4
- package/dist/{eventUpsertInputSchema-CzMX5BZI.mjs → eventUpsertInputSchema-Dg60PKJI.mjs} +7 -10
- package/dist/{load-config-Boa0tkmk.mjs → load-config-Co37ncZD.mjs} +1 -1
- package/dist/load-config-Dz8ygC-Z.mjs +5 -0
- package/dist/{plan-2c4zVtlW.mjs → plan-CaWqAqfn.mjs} +1 -1
- package/dist/scaffold/index.mjs +2 -2
- package/dist/{sdk-event-upsert-BCZUdIrL.mjs → sdk-event-upsert-C6zsxDcf.mjs} +1 -1
- package/dist/{sdk-peer-DiZYsNXj.mjs → sdk-peer-DZNUBvf5.mjs} +2 -2
- package/dist/{src-XEJYAKbQ.mjs → src-BRAF1Dee.mjs} +673 -1
- package/dist/{style-3BjmymXd.mjs → style-TmApGKZX.mjs} +10338 -9944
- package/dist/testing.mjs +4 -4
- package/package.json +1 -1
- package/dist/load-config-226EuL6w.mjs +0 -5
|
@@ -203,7 +203,6 @@ riverbankcms pull --output ./src/content
|
|
|
203
203
|
| `--yes` | Skip confirmation prompt |
|
|
204
204
|
| `--local-media` | Download media referenced by identifiers to content/media |
|
|
205
205
|
| `--sync-media` | Sync media files between environments |
|
|
206
|
-
| `--overwrite-media` | When using `--sync-media`, overwrite target media on checksum mismatch |
|
|
207
206
|
| `--with-theme` | Also pull theme when pulling all content |
|
|
208
207
|
| `--name <name>` | Theme name for `pull theme` / `pull --with-theme` (default: current) |
|
|
209
208
|
| `--no-meta` | Skip writing `.meta/` and media manifest files (content files still written) |
|
|
@@ -265,14 +264,12 @@ If unrelated local files would be included by a broad scope, stage a temporary c
|
|
|
265
264
|
| `--dry-run` | Show changes without applying |
|
|
266
265
|
| `--yes` | Skip confirmation (required for `--env=remote` or `--env=both`) |
|
|
267
266
|
| `--force` | Push even if remote is newer (skip stale check) |
|
|
268
|
-
| `--force-update-asset` | Replace CMS media when identifiers conflict (local media sync only) |
|
|
269
267
|
| `--allow-truncated` | Push even if remote content was truncated (may cause incomplete sync) |
|
|
270
268
|
| `--diff-detail <mode>` | Diff verbosity carried in the `--json` envelope: `summary` (default) or `full` |
|
|
271
269
|
| `--json-diff [mode]` | **[Deprecated]** Alias of `--diff-detail`; folded into the `--json` envelope (warns on stderr) |
|
|
272
270
|
| `--with-config` | Push SDK schema/config before dependent file content |
|
|
273
271
|
| `--with-theme` | Also push theme when pushing all content |
|
|
274
272
|
| `--sync-media` | Sync media files from local to remote environment |
|
|
275
|
-
| `--overwrite-media` | When using `--sync-media`, overwrite target media on checksum mismatch |
|
|
276
273
|
| `--merge-remote` | Plan an entries/pages three-way merge for `--env=remote` that preserves remote edits |
|
|
277
274
|
| `--delete-orphaned` | Delete CMS entries not present in local files |
|
|
278
275
|
| `--auto-pull-stale` | Automatically pull stale content and retry push |
|
|
@@ -420,6 +417,42 @@ export default defineConfig({
|
|
|
420
417
|
|
|
421
418
|
**Status Sync**: Push automatically syncs draft/published status based on the `status` field in your local content files. If local content is "published" but remote is "draft", push will publish it. If local is "draft" but remote is "published", push will unpublish it.
|
|
422
419
|
|
|
420
|
+
### settings booking configure
|
|
421
|
+
|
|
422
|
+
Configure the site's booking vertical and selected presets through the
|
|
423
|
+
purpose-built settings operation:
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# Ask the server for an authoritative preview; do not write
|
|
427
|
+
riverbankcms settings booking configure \
|
|
428
|
+
--vertical fitness_pt \
|
|
429
|
+
--preset fitness_pt.group_training \
|
|
430
|
+
--dry-run --json
|
|
431
|
+
|
|
432
|
+
# Apply locally, or target production with --env=remote --yes
|
|
433
|
+
riverbankcms settings booking configure \
|
|
434
|
+
--vertical fitness_pt \
|
|
435
|
+
--preset fitness_pt.group_training \
|
|
436
|
+
--yes
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
Options:
|
|
440
|
+
|
|
441
|
+
| Option | Description |
|
|
442
|
+
| --- | --- |
|
|
443
|
+
| `--vertical <vertical>` | Required canonical booking vertical identifier |
|
|
444
|
+
| `--preset <preset>` | Required preset identifier; repeat for multiple presets |
|
|
445
|
+
| `--dry-run` | Show the server-authoritative preview without writing |
|
|
446
|
+
| `--yes` | Skip confirmation; required for JSON/non-interactive writes |
|
|
447
|
+
|
|
448
|
+
The command validates the selection locally, previews on the server, and
|
|
449
|
+
revalidates immediately before applying. `--env=both` preflights both targets,
|
|
450
|
+
then applies local before remote. Changing the vertical does not rewrite
|
|
451
|
+
existing offerings or their stored presets. The declarative equivalent is
|
|
452
|
+
`verticalConfig` in `content/settings.json` followed by `riverbankcms push
|
|
453
|
+
settings`; `riverbankcms pull settings` writes the canonical configuration
|
|
454
|
+
back to that file.
|
|
455
|
+
|
|
423
456
|
### push-config
|
|
424
457
|
|
|
425
458
|
Push SDK configuration to the CMS dashboard.
|
|
@@ -232,6 +232,42 @@ Notes:
|
|
|
232
232
|
- `riverbankcms pull settings` warns and omits `logoIdentifier` / `faviconIdentifier` if the current CMS branding asset has no media identifier yet
|
|
233
233
|
- Dashboard branding edits and CLI pushes both update the same site settings row, so treat them as last-write-wins and pull before pushing after dashboard-side edits
|
|
234
234
|
|
|
235
|
+
### Configure the booking vertical
|
|
236
|
+
|
|
237
|
+
Booking vertical selection is a purpose-built settings operation rather than a
|
|
238
|
+
generic `settings.update` field. The CLI validates the vertical and every
|
|
239
|
+
preset against the canonical catalog before contacting the CMS:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# Preview the server-authoritative result without changing the site
|
|
243
|
+
riverbankcms settings booking configure \
|
|
244
|
+
--vertical fitness_pt \
|
|
245
|
+
--preset fitness_pt.group_training \
|
|
246
|
+
--dry-run --json
|
|
247
|
+
|
|
248
|
+
# Apply the same configuration to the local CMS
|
|
249
|
+
riverbankcms settings booking configure \
|
|
250
|
+
--vertical fitness_pt \
|
|
251
|
+
--preset fitness_pt.group_training \
|
|
252
|
+
--yes
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Repeat `--preset` to select more than one preset. Use `--env=remote` or
|
|
256
|
+
`--env=both --yes` to target the other project environment. The command asks
|
|
257
|
+
the server for a preview before applying and revalidates that preview
|
|
258
|
+
immediately before the write; `--dry-run` reports that authoritative preview
|
|
259
|
+
without writing anything. JSON and other non-interactive writes require
|
|
260
|
+
`--yes`.
|
|
261
|
+
|
|
262
|
+
Changing the vertical does not rewrite existing offerings. Their stored
|
|
263
|
+
presets remain unchanged; this operation only changes the site-level booking
|
|
264
|
+
configuration.
|
|
265
|
+
|
|
266
|
+
The declarative equivalent is to add `verticalConfig` to
|
|
267
|
+
`content/settings.json` and run `riverbankcms push settings` (or the relevant
|
|
268
|
+
scope of `riverbankcms push`). Pulling settings writes the canonical vertical
|
|
269
|
+
and preset order back to that file.
|
|
270
|
+
|
|
235
271
|
---
|
|
236
272
|
|
|
237
273
|
## Draft vs Published
|
|
@@ -432,14 +468,12 @@ Use this when you explicitly want to copy media bytes between environments witho
|
|
|
432
468
|
# Remote storage -> local storage (identifier + checksum based)
|
|
433
469
|
riverbankcms pull --env=remote --sync-media --yes
|
|
434
470
|
|
|
435
|
-
#
|
|
436
|
-
riverbankcms pull --env=remote --sync-media --overwrite-media --yes
|
|
471
|
+
# Checksum mismatches abort; delete the target asset first or use a new identifier
|
|
437
472
|
```
|
|
438
473
|
|
|
439
474
|
Notes:
|
|
440
475
|
|
|
441
|
-
- `--sync-media` is **identifier + checksum** based. If the target already has an identifier with different bytes, the command fails
|
|
442
|
-
- When pulling from remote, `--sync-media` may need to **write to the source CMS** to backfill missing identifiers, so remote sync requires `--yes`.
|
|
476
|
+
- `--sync-media` is **identifier + checksum** based. If the target already has an identifier with different bytes, the command fails without modifying either asset.
|
|
443
477
|
- Local media bytes live under `content/media/`, which is treated as cache/migration working data by default in generated SDK sites.
|
|
444
478
|
|
|
445
479
|
#### Promote local files → production CMS
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { c as EVENT_PRESET_VALUES } from "./src-BRAF1Dee.mjs";
|
|
3
|
+
import { a as classifySdkEventPricing, i as classifySdkEventSchedule, o as classifySdkEventPaymentTerms, r as sdkEventUpsertOptionalFieldSchemas } from "./sdk-event-upsert-C6zsxDcf.mjs";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
|
|
5
6
|
//#region ../blocks/src/lib/typeGuards.ts
|
|
@@ -2070,6 +2071,10 @@ const EVENT_CONTENT_TYPE_SCHEMA = {
|
|
|
2070
2071
|
kind: "event-occurrence",
|
|
2071
2072
|
segmentType: "uuid-or-date",
|
|
2072
2073
|
precedence: "subroute-first"
|
|
2074
|
+
}, {
|
|
2075
|
+
kind: "event-run",
|
|
2076
|
+
segmentType: "slug",
|
|
2077
|
+
precedence: "content-first"
|
|
2073
2078
|
}]
|
|
2074
2079
|
},
|
|
2075
2080
|
labels: {
|
|
@@ -4913,15 +4918,7 @@ const eventUpsertInputSchema = z.object({
|
|
|
4913
4918
|
slug: z.string().min(1).optional(),
|
|
4914
4919
|
content: z.record(z.string(), z.unknown()).optional(),
|
|
4915
4920
|
blocks: sdkEntrySlotBlocksInputSchema.optional(),
|
|
4916
|
-
preset: z.enum(
|
|
4917
|
-
"event",
|
|
4918
|
-
"class",
|
|
4919
|
-
"course",
|
|
4920
|
-
"term",
|
|
4921
|
-
"workshop",
|
|
4922
|
-
"retreat",
|
|
4923
|
-
"performance"
|
|
4924
|
-
]),
|
|
4921
|
+
preset: z.enum(EVENT_PRESET_VALUES),
|
|
4925
4922
|
runRefs: z.tuple([z.string().min(1)], z.string().min(1)),
|
|
4926
4923
|
runs: z.tuple([eventRunInputSchema], eventRunInputSchema)
|
|
4927
4924
|
}).superRefine((input, ctx) => input.runs.forEach((run, index) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { n as assertCompatibleSdkPeer } from "./sdk-peer-
|
|
2
|
+
import { n as assertCompatibleSdkPeer } from "./sdk-peer-DZNUBvf5.mjs";
|
|
3
3
|
import { dirname, resolve } from "path";
|
|
4
4
|
import { createJiti } from "jiti";
|
|
5
5
|
import { existsSync } from "fs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { At as ok, kt as err, nt as parseSiteId } from "./src-BRAF1Dee.mjs";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import { dirname, isAbsolute, join, parse, relative, resolve, sep } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
package/dist/scaffold/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "../src-
|
|
3
|
-
import { a as prepareScaffoldExecution, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, l as deriveGeneratedPackageRanges, o as writeScaffoldFiles, r as preflightScaffoldPlan, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan, u as findPackageManifestPath } from "../plan-
|
|
2
|
+
import "../src-BRAF1Dee.mjs";
|
|
3
|
+
import { a as prepareScaffoldExecution, d as loadGeneratedPackageRanges, i as preflightScaffoldTargets, l as deriveGeneratedPackageRanges, o as writeScaffoldFiles, r as preflightScaffoldPlan, s as deriveScaffoldLocalManifest, t as deriveScaffoldPlan, u as findPackageManifestPath } from "../plan-CaWqAqfn.mjs";
|
|
4
4
|
|
|
5
5
|
export { deriveGeneratedPackageRanges, deriveScaffoldLocalManifest, deriveScaffoldPlan, findPackageManifestPath, loadGeneratedPackageRanges, preflightScaffoldPlan, preflightScaffoldTargets, prepareScaffoldExecution, writeScaffoldFiles };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { B as parseUtcIsoDateTimeString, W as parseBookingTimeZone } from "./src-BRAF1Dee.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
|
|
5
5
|
//#region ../api/src/sdk-event-payment-terms.ts
|
|
@@ -3,7 +3,7 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
3
3
|
import { dirname, join, parse } from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region package.json
|
|
6
|
-
var version = "0.
|
|
6
|
+
var version = "0.4.0";
|
|
7
7
|
var peerDependencies = { "@riverbankcms/sdk": ">=0.130.0 <1.0.0" };
|
|
8
8
|
var package_default = {
|
|
9
9
|
name: "riverbankcms",
|
|
@@ -79,7 +79,7 @@ var package_default = {
|
|
|
79
79
|
//#endregion
|
|
80
80
|
//#region src/version.ts
|
|
81
81
|
/** The package manifest is the source-run fallback; builds inject this value. */
|
|
82
|
-
const CLI_VERSION = typeof "0.
|
|
82
|
+
const CLI_VERSION = typeof "0.4.0" === "string" ? "0.4.0" : version;
|
|
83
83
|
/**
|
|
84
84
|
* The CLI's SDK peer range is bundled from the CLI manifest alongside its
|
|
85
85
|
* version. Runtime config loading uses this value as the single compatibility
|