@scribe-platform/cli 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 CHANGED
@@ -72,20 +72,75 @@ that path.
72
72
  ### Schema
73
73
 
74
74
  ```
75
+ scribe schema show <site> [collection-name] [--json]
76
+ scribe schema apply <site> --file <spec|->
75
77
  scribe schema add <site> <collection-name> [--path <path>]
76
78
  scribe schema remove <site> <collection-name>
77
79
  ```
78
80
 
79
- `schema add` appends a bare collection stub to `.scribe.yml`. Fields are added
80
- by hand-editing that file — it's ordinary YAML in the site's repo.
81
+ `schema show` prints the site's collections and their fields; `--json` gives the
82
+ raw schema, for piping into another tool.
83
+
84
+ `schema apply` creates or replaces **one whole collection** from a YAML or JSON
85
+ spec, matched by `name`. It validates before committing anything, so a reserved
86
+ field name, an `image` field on a form collection, or a malformed workflow comes
87
+ back as an error rather than a broken site. Pass `--file -` to read from a pipe.
88
+
89
+ ```yaml
90
+ # rsvps.yml — then: scribe schema apply my-site --file rsvps.yml
91
+ name: rsvps
92
+ label: Event RSVPs
93
+ path: content/rsvps
94
+ format: yaml
95
+ form: true
96
+ fields:
97
+ - { name: fullName, type: string, required: true }
98
+ - { name: email, type: string, required: true }
99
+ - { name: guests, type: number }
100
+ - { name: attending, type: boolean, label: I'll be there }
101
+ workflow:
102
+ states:
103
+ - { name: pending, label: Awaiting reply, kind: needs-you }
104
+ - { name: confirmed, label: Confirmed, kind: closed }
105
+ ```
106
+
107
+ A site can have as many `form: true` collections as it likes; each gets its own
108
+ inbox and workflow. `schema apply` replaces the collection wholesale, so include
109
+ every field you want to keep.
110
+
111
+ `schema add` appends a bare collection stub with no fields — use it to start a
112
+ content collection interactively. For anything with fields, prefer
113
+ `schema apply`.
81
114
 
82
115
  ### Form submissions
83
116
 
84
117
  ```
85
- scribe submission list <site> <collection> [--status <status>] [--json]
86
- scribe submission update <site> <collection> <id> [--status <status>] [--notes <notes>]
118
+ scribe submission list <site> <collection> [--status <status>] [--page <n>] [--json]
119
+ scribe submission update <site> <collection> <id> [--status <status>] [--note <note>]
120
+ scribe submission export <site> <collection> [--format csv|json] [--status <status>] [--out <file>]
121
+ scribe submission delete <site> <collection> <id> [--yes]
87
122
  ```
88
123
 
124
+ `<id>` is the submission's id as printed by `submission list`. `--note` appends to
125
+ the submission's history; notes are an append-only log, so nothing overwrites an
126
+ earlier one.
127
+
128
+ `export` writes to stdout unless `--out` is given, so it pipes:
129
+
130
+ ```
131
+ scribe submission export daves-exotic-cars inquiries > leads.csv
132
+ ```
133
+
134
+ CSV is for a spreadsheet and is lossy on purpose — its columns come from the
135
+ collection's schema (so the header row is identical between exports, even when a
136
+ batch left a field blank), and it carries no history and no visitor IP or user
137
+ agent. `--format json` is the lossless one: every field, with each submission's
138
+ events nested under it.
139
+
140
+ `delete` is permanent and cascades the submission's history. It needs a staff
141
+ role — a site user's API key gets a 403 — and it prompts for the id unless you
142
+ pass `--yes`. There is no equivalent in the admin UI, on purpose.
143
+
89
144
  ### Builds
90
145
 
91
146
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B7D"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF7D"}
@@ -1,4 +1,12 @@
1
+ import { readFile } from 'node:fs/promises';
1
2
  import { requireClient, runAction } from '../lib/cli-utils.js';
3
+ /** `--file -` reads the spec from a pipe, which is how an agent hands one over without a temp file. */
4
+ async function readStdin() {
5
+ const chunks = [];
6
+ for await (const chunk of process.stdin)
7
+ chunks.push(chunk);
8
+ return Buffer.concat(chunks).toString('utf-8');
9
+ }
2
10
  export function registerSchemaCommands(program) {
3
11
  const schema = program.command('schema').description('Manage a site\'s .scribe.yml collections');
4
12
  schema
@@ -12,6 +20,49 @@ export function registerSchemaCommands(program) {
12
20
  await client.schemaAdd(site, name, opts.path);
13
21
  console.log(`Added collection "${name}" to ${site}'s .scribe.yml`);
14
22
  }));
23
+ schema
24
+ .command('show')
25
+ .description("Print a site's collections, or one collection's full definition")
26
+ .argument('<site>', 'Site slug')
27
+ .argument('[collection-name]', 'Limit to one collection')
28
+ .option('--json', 'Print raw JSON, for piping into another tool')
29
+ .action(runAction(async (site, name, opts) => {
30
+ const client = requireClient();
31
+ const schema = await client.getSchema(site);
32
+ const collections = name ? schema.collections.filter((c) => c.name === name) : schema.collections;
33
+ if (name && collections.length === 0) {
34
+ throw new Error(`No collection "${name}" in ${site}'s .scribe.yml`);
35
+ }
36
+ if (opts.json) {
37
+ console.log(JSON.stringify(name ? collections[0] : schema, null, 2));
38
+ return;
39
+ }
40
+ for (const collection of collections) {
41
+ const kind = collection.form === true ? 'form' : 'content';
42
+ console.log(`${collection.name} (${kind})${collection.label ? ` — ${collection.label}` : ''}`);
43
+ for (const field of collection.fields ?? []) {
44
+ const flags = [field.required ? 'required' : null, field.hidden ? 'hidden' : null]
45
+ .filter(Boolean)
46
+ .join(', ');
47
+ console.log(` ${field.name}: ${field.type}${flags ? ` (${flags})` : ''}`);
48
+ }
49
+ const states = collection.workflow?.states ?? [];
50
+ if (states.length > 0) {
51
+ console.log(` workflow: ${states.map((s) => s.name).join(' → ')}`);
52
+ }
53
+ }
54
+ }));
55
+ schema
56
+ .command('apply')
57
+ .description('Create or replace one whole collection from a YAML/JSON spec file')
58
+ .argument('<site>', 'Site slug')
59
+ .requiredOption('-f, --file <path>', 'Spec file describing one collection, or - for stdin')
60
+ .action(runAction(async (site, opts) => {
61
+ const spec = opts.file === '-' ? await readStdin() : await readFile(opts.file, 'utf-8');
62
+ const client = requireClient();
63
+ const result = await client.schemaApply(site, spec);
64
+ console.log(`${result.replaced ? 'Replaced' : 'Added'} collection "${result.collection}" in ${site}'s .scribe.yml`);
65
+ }));
15
66
  schema
16
67
  .command('remove')
17
68
  .description('Remove a collection from .scribe.yml and delete its folder')
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;IAEjG,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,0EAA0E,CAAC;SACvF,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;SAC/B,QAAQ,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,2DAA2D,CAAC;SACpF,MAAM,CACL,SAAS,CAAC,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,IAAuB,EAAE,EAAE;QACtE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,QAAQ,IAAI,gBAAgB,CAAC,CAAC;IACrE,CAAC,CAAC,CACH,CAAC;IAEJ,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4DAA4D,CAAC;SACzE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;SAC/B,QAAQ,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACrD,MAAM,CACL,SAAS,CAAC,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,UAAU,IAAI,2BAA2B,MAAM,CAAC,YAAY,SAAS,CAAC,CAAC;IAChH,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/commands/submission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0DjE"}
1
+ {"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/commands/submission.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuHjE"}
@@ -1,3 +1,5 @@
1
+ import { writeFile } from 'node:fs/promises';
2
+ import { createInterface } from 'node:readline/promises';
1
3
  import { printResult, requireClient, runAction } from '../lib/cli-utils.js';
2
4
  export function registerSubmissionCommands(program) {
3
5
  const submission = program.command('submission').description('Manage form submissions');
@@ -7,46 +9,96 @@ export function registerSubmissionCommands(program) {
7
9
  .argument('<site>', 'Site slug')
8
10
  .argument('<collection>', 'Form collection name')
9
11
  .option('--status <status>', 'Filter by workflow status')
12
+ .option('--page <n>', 'Page of results, 1-based')
10
13
  .option('--json', 'Output as JSON')
11
14
  .action(runAction(async (site, collection, opts) => {
15
+ let page;
16
+ if (opts.page !== undefined) {
17
+ page = Number(opts.page);
18
+ if (!Number.isInteger(page) || page < 1) {
19
+ console.error('--page must be a positive integer');
20
+ process.exitCode = 1;
21
+ return;
22
+ }
23
+ }
12
24
  const client = requireClient();
13
- const items = await client.listSubmissions(site, collection, opts.status);
14
- printResult(items, opts.json);
25
+ const result = await client.listSubmissions(site, collection, opts.status, page);
26
+ // `--json` emits the whole page object, so a script can see `total` and
27
+ // page through the rest; the table shows the rows plus one footer line,
28
+ // because a table alone can't tell you there's a page 2.
29
+ if (opts.json) {
30
+ printResult(result, true);
31
+ return;
32
+ }
33
+ printResult(result.items, false);
34
+ console.log(`Page ${result.page} — ${result.items.length} of ${result.total}`);
35
+ }));
36
+ submission
37
+ .command('export')
38
+ .description('Export a form collection\u2019s submissions as CSV or JSON')
39
+ .argument('<site>', 'Site slug')
40
+ .argument('<collection>', 'Form collection name')
41
+ .option('--format <format>', 'csv or json', 'csv')
42
+ .option('--status <status>', 'Filter by workflow status')
43
+ .option('--out <file>', 'Write to a file instead of stdout')
44
+ .action(runAction(async (site, collection, opts) => {
45
+ if (opts.format !== 'csv' && opts.format !== 'json') {
46
+ console.error('--format must be csv or json');
47
+ process.exitCode = 1;
48
+ return;
49
+ }
50
+ const client = requireClient();
51
+ const body = await client.exportSubmissions(site, collection, opts.format, opts.status);
52
+ if (opts.out) {
53
+ await writeFile(opts.out, body, 'utf8');
54
+ console.log(`Wrote ${opts.out}`);
55
+ return;
56
+ }
57
+ // Straight to stdout with no trailing newline of our own — the CSV
58
+ // already ends in CRLF, and `scribe ... > leads.csv` has to produce the
59
+ // same bytes as `--out leads.csv`.
60
+ process.stdout.write(body);
15
61
  }));
16
62
  submission
17
63
  .command('update')
18
- .description('Update a submission\'s workflow status and/or notes')
64
+ .description("Update a submission's workflow status and/or add a note")
19
65
  .argument('<site>', 'Site slug')
20
66
  .argument('<collection>', 'Form collection name')
21
- .argument('<id>', 'Submission path or filename within the collection')
67
+ .argument('<id>', 'Submission id')
22
68
  .option('--status <status>', 'New workflow status')
23
- .option('--notes <notes>', 'Replace the internal notes field')
69
+ .option('--note <note>', 'Add a note')
24
70
  .action(runAction(async (site, collection, id, opts) => {
25
- if (!opts.status && opts.notes === undefined) {
26
- console.error('Provide --status and/or --notes');
71
+ if (!opts.status && opts.note === undefined) {
72
+ console.error('Provide --status and/or --note');
27
73
  process.exitCode = 1;
28
74
  return;
29
75
  }
30
76
  const client = requireClient();
31
- let path = id;
32
- if (!id.includes('/')) {
33
- const schema = await client.getSchema(site);
34
- const collectionSchema = schema.collections.find((c) => c.name === collection);
35
- if (!collectionSchema) {
36
- console.error(`Collection "${collection}" not found in .scribe.yml`);
77
+ await client.updateSubmission(site, collection, id, { status: opts.status, note: opts.note });
78
+ const changes = [opts.status ? `status ${opts.status}` : null, opts.note !== undefined ? 'note added' : null].filter(Boolean);
79
+ console.log(`Updated ${id} (${changes.join(', ')})`);
80
+ }));
81
+ submission
82
+ .command('delete')
83
+ .description('Permanently delete a submission and its history. Staff only. Cannot be undone.')
84
+ .argument('<site>', 'Site slug')
85
+ .argument('<collection>', 'Form collection name')
86
+ .argument('<id>', 'Submission id')
87
+ .option('--yes', 'Skip the interactive confirmation prompt')
88
+ .action(runAction(async (site, collection, id, opts) => {
89
+ if (!opts.yes) {
90
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
91
+ const answer = await rl.question(`This permanently deletes submission ${id} and its entire history. Type the id to confirm: `);
92
+ rl.close();
93
+ if (answer.trim() !== id) {
94
+ console.error('Confirmation did not match — aborted.');
37
95
  process.exitCode = 1;
38
96
  return;
39
97
  }
40
- path = `${collectionSchema.path}/${id}`;
41
- }
42
- const current = await client.readContent(site, path).catch(() => null);
43
- if (!current) {
44
- console.error(`Submission not found: ${path}`);
45
- process.exitCode = 1;
46
- return;
47
98
  }
48
- const result = await client.updateSubmission(site, path, { status: opts.status, notes: opts.notes, sha: current.sha });
49
- console.log(`Updated ${result.path} (${result.sha})`);
99
+ const client = requireClient();
100
+ await client.deleteSubmission(site, collection, id);
101
+ console.log(`Deleted ${id}.`);
50
102
  }));
51
103
  }
52
104
  //# sourceMappingURL=submission.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/commands/submission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/commands/submission.ts"],"names":[],"mappings":"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"}
@@ -56,16 +56,41 @@ export interface CommitInfo {
56
56
  date: string;
57
57
  author: string;
58
58
  }
59
+ /** A submission as the API returns it — `id` is an ObjectId, dates are ISO-8601 strings. */
59
60
  export interface SubmissionItem {
60
- path: string;
61
- sha: string;
61
+ id: string;
62
+ collection: string;
63
+ status: string;
62
64
  fields: Record<string, unknown>;
63
- submittedAt: number | null;
65
+ submittedAt: string;
66
+ updatedAt: string;
67
+ }
68
+ /** One page of submissions. `total` counts everything matching the filter, not `items.length`. */
69
+ export interface SubmissionPage {
70
+ items: SubmissionItem[];
71
+ total: number;
72
+ page: number;
73
+ pageSize: number;
74
+ }
75
+ export interface SchemaField {
76
+ name: string;
77
+ type: string;
78
+ label?: string;
79
+ required?: boolean;
80
+ hidden?: boolean;
64
81
  }
65
82
  export interface SchemaCollection {
66
83
  name: string;
67
84
  path: string;
68
85
  form?: boolean;
86
+ label?: string;
87
+ /** Typed only as far as `schema show` prints it; the admin owns the full shape. */
88
+ fields?: SchemaField[];
89
+ workflow?: {
90
+ states?: Array<{
91
+ name: string;
92
+ }>;
93
+ };
69
94
  [key: string]: unknown;
70
95
  }
71
96
  export interface ScribeSchema {
@@ -80,7 +105,14 @@ export interface ScribeSchema {
80
105
  export declare class ScribeClient {
81
106
  private readonly options;
82
107
  constructor(options: ScribeClientOptions);
108
+ private send;
83
109
  private request;
110
+ /**
111
+ * For responses that aren't JSON — today, a CSV export. A failure still
112
+ * arrives as a JSON `{ error }` body, so the error path parses while the
113
+ * success path deliberately doesn't.
114
+ */
115
+ private requestText;
84
116
  whoami(): Promise<{
85
117
  scope: 'read' | 'read-write';
86
118
  siteSlugs: string[];
@@ -137,21 +169,40 @@ export declare class ScribeClient {
137
169
  path: string;
138
170
  sha: string;
139
171
  }>;
140
- listSubmissions(site: string, collection: string, status?: string): Promise<SubmissionItem[]>;
141
- updateSubmission(site: string, path: string, input: {
172
+ /** `page` is 1-based; omitting it lets the server pick the first page and its own page size. */
173
+ listSubmissions(site: string, collection: string, status?: string, page?: number): Promise<SubmissionPage>;
174
+ /**
175
+ * `id` is the submission's ObjectId, so the route takes a single path segment
176
+ * rather than a repo path. No `sha` and no conflict case: status is
177
+ * last-write-wins, and `note` appends to the event log — which is the record
178
+ * of what actually happened.
179
+ */
180
+ updateSubmission(site: string, collection: string, id: string, input: {
142
181
  status?: string;
143
- notes?: string;
144
- sha: string;
145
- }): Promise<{
146
- path: string;
147
- sha: string;
148
- fields: Record<string, unknown>;
182
+ note?: string;
183
+ }): Promise<SubmissionItem>;
184
+ /** Hard delete, cascading the submission's events. Staff roles only — a site user's key gets a 403. */
185
+ deleteSubmission(site: string, collection: string, id: string): Promise<{
186
+ ok: true;
187
+ id: string;
149
188
  }>;
189
+ /**
190
+ * Returns the export as **text**, not a parsed object, so a CSV reaches
191
+ * stdout byte-for-byte as the server wrote it and a JSON export isn't
192
+ * round-tripped through `JSON.parse` only to be stringified again with
193
+ * different spacing.
194
+ */
195
+ exportSubmissions(site: string, collection: string, format: 'csv' | 'json', status?: string): Promise<string>;
150
196
  getSchema(site: string): Promise<ScribeSchema>;
151
197
  schemaAdd(site: string, name: string, path?: string): Promise<{
152
198
  ok: true;
153
199
  collection: string;
154
200
  }>;
201
+ schemaApply(site: string, spec: string): Promise<{
202
+ ok: true;
203
+ collection: string;
204
+ replaced: boolean;
205
+ }>;
155
206
  schemaRemove(site: string, name: string): Promise<{
156
207
  ok: true;
157
208
  deletedFiles: number;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export class ScribeClient {
27
27
  constructor(options) {
28
28
  this.options = options;
29
29
  }
30
- async request(method, path, body) {
30
+ async send(method, path, body) {
31
31
  const res = await fetch(`${this.options.apiUrl}${path}`, {
32
32
  method,
33
33
  headers: {
@@ -36,7 +36,10 @@ export class ScribeClient {
36
36
  },
37
37
  body: body !== undefined ? JSON.stringify(body) : undefined,
38
38
  });
39
- const text = await res.text();
39
+ return { res, text: await res.text() };
40
+ }
41
+ async request(method, path, body) {
42
+ const { res, text } = await this.send(method, path, body);
40
43
  const data = text.length > 0 ? JSON.parse(text) : undefined;
41
44
  if (!res.ok) {
42
45
  const message = data && typeof data === 'object' && 'error' in data ? String(data.error) : res.statusText;
@@ -44,6 +47,28 @@ export class ScribeClient {
44
47
  }
45
48
  return data;
46
49
  }
50
+ /**
51
+ * For responses that aren't JSON — today, a CSV export. A failure still
52
+ * arrives as a JSON `{ error }` body, so the error path parses while the
53
+ * success path deliberately doesn't.
54
+ */
55
+ async requestText(method, path, body) {
56
+ const { res, text } = await this.send(method, path, body);
57
+ if (!res.ok) {
58
+ let data;
59
+ try {
60
+ data = text.length > 0 ? JSON.parse(text) : undefined;
61
+ }
62
+ catch {
63
+ // A non-JSON error body (a proxy's HTML 502 page, say) is not worth a
64
+ // parse failure masking the status code the caller actually needs.
65
+ data = undefined;
66
+ }
67
+ const message = data && typeof data === 'object' && 'error' in data ? String(data.error) : res.statusText;
68
+ throw new ScribeApiError(message, res.status, data);
69
+ }
70
+ return text;
71
+ }
47
72
  async whoami() {
48
73
  return this.request('GET', '/api/v1/whoami');
49
74
  }
@@ -84,13 +109,42 @@ export class ScribeClient {
84
109
  async revertContent(site, path, sha) {
85
110
  return this.request('POST', `/api/v1/sites/${encodeURIComponent(site)}/content/${encodePath(path)}?action=revert&sha=${encodeURIComponent(sha)}`);
86
111
  }
87
- async listSubmissions(site, collection, status) {
88
- const query = new URLSearchParams({ collection, ...(status ? { status } : {}) });
89
- const { items } = await this.request('GET', `/api/v1/sites/${encodeURIComponent(site)}/submissions?${query.toString()}`);
90
- return items;
91
- }
92
- async updateSubmission(site, path, input) {
93
- return this.request('PATCH', `/api/v1/sites/${encodeURIComponent(site)}/submissions/${encodePath(path)}`, input);
112
+ /** `page` is 1-based; omitting it lets the server pick the first page and its own page size. */
113
+ async listSubmissions(site, collection, status, page) {
114
+ const query = new URLSearchParams({
115
+ collection,
116
+ ...(status ? { status } : {}),
117
+ ...(page !== undefined ? { page: String(page) } : {}),
118
+ });
119
+ return this.request('GET', `/api/v1/sites/${encodeURIComponent(site)}/submissions?${query.toString()}`);
120
+ }
121
+ /**
122
+ * `id` is the submission's ObjectId, so the route takes a single path segment
123
+ * rather than a repo path. No `sha` and no conflict case: status is
124
+ * last-write-wins, and `note` appends to the event log — which is the record
125
+ * of what actually happened.
126
+ */
127
+ async updateSubmission(site, collection, id, input) {
128
+ // `collection` rides as a query param rather than a path segment: the id
129
+ // alone identifies the submission, but the route needs the collection's
130
+ // workflow to validate the requested status against.
131
+ const query = new URLSearchParams({ collection });
132
+ return this.request('PATCH', `/api/v1/sites/${encodeURIComponent(site)}/submissions/${encodeURIComponent(id)}?${query.toString()}`, input);
133
+ }
134
+ /** Hard delete, cascading the submission's events. Staff roles only — a site user's key gets a 403. */
135
+ async deleteSubmission(site, collection, id) {
136
+ const query = new URLSearchParams({ collection });
137
+ return this.request('DELETE', `/api/v1/sites/${encodeURIComponent(site)}/submissions/${encodeURIComponent(id)}?${query.toString()}`);
138
+ }
139
+ /**
140
+ * Returns the export as **text**, not a parsed object, so a CSV reaches
141
+ * stdout byte-for-byte as the server wrote it and a JSON export isn't
142
+ * round-tripped through `JSON.parse` only to be stringified again with
143
+ * different spacing.
144
+ */
145
+ async exportSubmissions(site, collection, format, status) {
146
+ const query = new URLSearchParams({ collection, format, ...(status ? { status } : {}) });
147
+ return this.requestText('GET', `/api/v1/sites/${encodeURIComponent(site)}/submissions/export?${query.toString()}`);
94
148
  }
95
149
  async getSchema(site) {
96
150
  return this.request('GET', `/api/v1/sites/${encodeURIComponent(site)}/schema`);
@@ -101,6 +155,9 @@ export class ScribeClient {
101
155
  path,
102
156
  });
103
157
  }
158
+ async schemaApply(site, spec) {
159
+ return this.request('PUT', `/api/v1/sites/${encodeURIComponent(site)}/schema/collections`, { spec });
160
+ }
104
161
  async schemaRemove(site, name) {
105
162
  return this.request('DELETE', `/api/v1/sites/${encodeURIComponent(site)}/schema/collections/${encodeURIComponent(name)}`);
106
163
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scribe-platform/cli",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "Command-line interface for Scribe CMS — scaffold sites, edit content, and triage form submissions from the terminal",
5
5
  "license": "MIT",
6
6
  "author": "Dave Weaver",