@plan2net/typo3-playwright-toolkit 0.26.0 → 0.27.1

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.
Files changed (58) hide show
  1. package/README.md +147 -2
  2. package/dist/backend.d.ts +8 -0
  3. package/dist/backend.d.ts.map +1 -0
  4. package/dist/backend.js +27 -0
  5. package/dist/backend.js.map +1 -0
  6. package/dist/builders/content-builder.d.ts +26 -1
  7. package/dist/builders/content-builder.d.ts.map +1 -1
  8. package/dist/builders/content-builder.js +77 -5
  9. package/dist/builders/content-builder.js.map +1 -1
  10. package/dist/builders/fields.d.ts +5 -0
  11. package/dist/builders/fields.d.ts.map +1 -1
  12. package/dist/builders/fields.js +7 -0
  13. package/dist/builders/fields.js.map +1 -1
  14. package/dist/builders/file-metadata-builder.d.ts +18 -0
  15. package/dist/builders/file-metadata-builder.d.ts.map +1 -0
  16. package/dist/builders/file-metadata-builder.js +54 -0
  17. package/dist/builders/file-metadata-builder.js.map +1 -0
  18. package/dist/builders/page-builder.d.ts +14 -0
  19. package/dist/builders/page-builder.d.ts.map +1 -1
  20. package/dist/builders/page-builder.js +55 -3
  21. package/dist/builders/page-builder.js.map +1 -1
  22. package/dist/builders/relations.d.ts +14 -1
  23. package/dist/builders/relations.d.ts.map +1 -1
  24. package/dist/builders/relations.js +38 -9
  25. package/dist/builders/relations.js.map +1 -1
  26. package/dist/builders/request-context.d.ts +2 -0
  27. package/dist/builders/request-context.d.ts.map +1 -1
  28. package/dist/builders/request-context.js +1 -0
  29. package/dist/builders/request-context.js.map +1 -1
  30. package/dist/contract.d.ts +1 -0
  31. package/dist/contract.d.ts.map +1 -1
  32. package/dist/contract.js +1 -0
  33. package/dist/contract.js.map +1 -1
  34. package/dist/http/off-site-headers.d.ts +8 -2
  35. package/dist/http/off-site-headers.d.ts.map +1 -1
  36. package/dist/http/off-site-headers.js +31 -9
  37. package/dist/http/off-site-headers.js.map +1 -1
  38. package/dist/http/record-commit.d.ts +24 -0
  39. package/dist/http/record-commit.d.ts.map +1 -0
  40. package/dist/http/record-commit.js +34 -0
  41. package/dist/http/record-commit.js.map +1 -0
  42. package/dist/http/record-edit.d.ts +27 -0
  43. package/dist/http/record-edit.d.ts.map +1 -1
  44. package/dist/http/record-edit.js +34 -4
  45. package/dist/http/record-edit.js.map +1 -1
  46. package/dist/index.d.ts +5 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +4 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/media/media-manifest.d.ts +3 -0
  51. package/dist/media/media-manifest.d.ts.map +1 -1
  52. package/dist/media/media-manifest.js +27 -10
  53. package/dist/media/media-manifest.js.map +1 -1
  54. package/dist/scenario.d.ts +14 -1
  55. package/dist/scenario.d.ts.map +1 -1
  56. package/dist/scenario.js +15 -0
  57. package/dist/scenario.js.map +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-metadata-builder.js","sourceRoot":"","sources":["../../src/builders/file-metadata-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAuB,MAAM,sBAAsB,CAAA;AAEjF,MAAM,OAAO,mBAAmB;IAKP;IACA;IACA;IANb,QAAQ,CAAS;IACR,MAAM,GAAkB,EAAE,CAAA;IAE3C,YACqB,IAAU,EACV,IAAY,EACZ,cAAwC;QAFxC,SAAI,GAAJ,IAAI,CAAM;QACV,SAAI,GAAJ,IAAI,CAAQ;QACZ,mBAAc,GAAd,cAAc,CAA0B;QAEzD,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACX,oFAAoF,MAAM,CAAC,IAAI,CAAC,IAAI;gBAChG,8DAA8D,CACrE,CAAA;QACL,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,KAA4B;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;QAE3B,OAAO,IAAI,CAAA;IACf,CAAC;IAED,iGAAiG;IACjG,SAAS,CAAC,QAAgB;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACrE,IAAI,GAAG,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAE3D,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,GAAG,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;gBACrD,KAAK,EAAE,mBAAmB;gBAC1B,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,UAAU;aACnB,CAAC,CAAC,CAAC,GAAG,CAAA;QACX,CAAC;QAED,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;gBACzC,KAAK,EAAE,mBAAmB;gBAC1B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC;gBACvB,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;aACtD,CAAC,CAAA;QACN,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9B,CAAC;CACJ"}
@@ -15,10 +15,14 @@ declare const DOKTYPES: {
15
15
  readonly folder: 254;
16
16
  };
17
17
  export type Doktype = keyof typeof DOKTYPES;
18
+ /** TYPO3 hides what it translates, for an editor to check first. */
19
+ export declare const TRANSLATION_DEFAULTS: Fields;
18
20
  export declare class PageBuilder {
19
21
  protected fields: Fields;
20
22
  private page;
21
23
  private optedOutOfFormRules;
24
+ private translation?;
25
+ private readonly copiedEdits;
22
26
  private readonly relations;
23
27
  private readonly requestContext?;
24
28
  constructor(page: Page, requestContext?: Partial<RequestContext>);
@@ -30,6 +34,13 @@ export declare class PageBuilder {
30
34
  withSlug(slug: string): this;
31
35
  /** A file reference on any column, with the reference's own fields. */
32
36
  withFileReference(column: string, file: string | number, fields?: ContentFields): this;
37
+ /**
38
+ * Makes create() translate the page the way the backend does, connected to it.
39
+ * The other setters then fill the translation.
40
+ */
41
+ translate(pageId: number | string, language: number): this;
42
+ /** Changes the reference the translation copied from that position (from 0) of the origin's column. */
43
+ withCopiedFileReference(column: string, position: number, fields: ContentFields): this;
33
44
  /** A name core ships, or a number if your project registered its own doktype. */
34
45
  withDoktype(type: Doktype | number): this;
35
46
  /** A string too, since that is what create() reports. */
@@ -38,10 +49,13 @@ export declare class PageBuilder {
38
49
  id: string;
39
50
  slug: string;
40
51
  }>;
52
+ /** Saves the page as create() does, for a test that expects the backend to refuse it: TYPO3's reasons. */
53
+ refusal(): Promise<string[]>;
41
54
  update(pageId: string): Promise<{
42
55
  id: string;
43
56
  slug: string;
44
57
  }>;
58
+ private createTranslation;
45
59
  private rememberSlug;
46
60
  }
47
61
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"page-builder.d.ts","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAwD,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIhH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGhE,UAAU,MAAM;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAA;CACtE;AAED,QAAA,MAAM,QAAQ;;;;;;;;CAQJ,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,QAAQ,CAAA;AAY3C,qBAAa,WAAW;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAK;IAE7B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8D;IACxF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;gBAE7C,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAKhE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,+EAA+E;IAC/E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAKjE,gBAAgB,IAAI,IAAI;IAKxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAa5B,uEAAuE;IACvE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI;IAK1F,iFAAiF;IACjF,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAMzC,yDAAyD;IACzD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/B,MAAM,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA2B/C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAkBnE,OAAO,CAAC,YAAY;CAiBvB"}
1
+ {"version":3,"file":"page-builder.d.ts","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAwD,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAKhH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGhE,UAAU,MAAM;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAA;CACtE;AAED,QAAA,MAAM,QAAQ;;;;;;;;CAQJ,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,QAAQ,CAAA;AAY3C,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,EAAE,MAA0B,CAAA;AAE7D,qBAAa,WAAW;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAK;IAE7B,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,WAAW,CAAC,CAAsC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8D;IACxF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;gBAE7C,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAKhE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,+EAA+E;IAC/E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAKjE,gBAAgB,IAAI,IAAI;IAKxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAa5B,uEAAuE;IACvE,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI;IAK1F;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM1D,uGAAuG;IACvG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAMtF,iFAAiF;IACjF,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAMzC,yDAAyD;IACzD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAK/B,MAAM,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IA+BrD,0GAA0G;IAC1G,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAItB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;YAkBrD,iBAAiB;IAsC/B,OAAO,CAAC,YAAY;CAiBvB"}
@@ -1,8 +1,9 @@
1
- import { saveRecord } from '../http/record-edit.js';
1
+ import { refusalOf, saveRecord } from '../http/record-edit.js';
2
2
  import { replayParentId, requireTestId, resolveRequestContext } from './request-context.js';
3
- import { toColumnValues } from './fields.js';
3
+ import { ownValues, toColumnValues } from './fields.js';
4
4
  import { newRecordIdentifier } from './identifier.js';
5
- import { mergeRecords, RelationSet } from './relations.js';
5
+ import { keepCopies, mergeRecords, RelationSet } from './relations.js';
6
+ import { translateRecord } from '../http/record-commit.js';
6
7
  import { getToolkitConfig } from '../config.js';
7
8
  const DOKTYPES = {
8
9
  page: 1,
@@ -22,10 +23,14 @@ const CREATE_DEFAULTS = {
22
23
  pid: 1,
23
24
  hidden: false,
24
25
  };
26
+ /** TYPO3 hides what it translates, for an editor to check first. */
27
+ export const TRANSLATION_DEFAULTS = { hidden: false };
25
28
  export class PageBuilder {
26
29
  fields = {};
27
30
  page;
28
31
  optedOutOfFormRules = false;
32
+ translation;
33
+ copiedEdits = [];
29
34
  relations = new RelationSet('pages', (column) => column in this.fields);
30
35
  requestContext;
31
36
  constructor(page, requestContext) {
@@ -61,6 +66,19 @@ export class PageBuilder {
61
66
  this.relations.withFileReference(column, file, fields);
62
67
  return this;
63
68
  }
69
+ /**
70
+ * Makes create() translate the page the way the backend does, connected to it.
71
+ * The other setters then fill the translation.
72
+ */
73
+ translate(pageId, language) {
74
+ this.translation = { origin: Number(pageId), language };
75
+ return this;
76
+ }
77
+ /** Changes the reference the translation copied from that position (from 0) of the origin's column. */
78
+ withCopiedFileReference(column, position, fields) {
79
+ this.copiedEdits.push({ column, position, fields });
80
+ return this;
81
+ }
64
82
  /** A name core ships, or a number if your project registered its own doktype. */
65
83
  withDoktype(type) {
66
84
  this.fields.doktype = 'number' === typeof type ? type : DOKTYPES[type];
@@ -72,6 +90,9 @@ export class PageBuilder {
72
90
  return this;
73
91
  }
74
92
  async create() {
93
+ if (undefined !== this.translation) {
94
+ return this.createTranslation(this.translation);
95
+ }
75
96
  const context = resolveRequestContext(this.page, this.requestContext);
76
97
  const fields = { ...CREATE_DEFAULTS, pid: context.rootPageId ?? CREATE_DEFAULTS.pid, ...this.fields };
77
98
  const identifier = newRecordIdentifier();
@@ -93,6 +114,10 @@ export class PageBuilder {
93
114
  context.replayFolder?.ownPages.add(String(saved.uid));
94
115
  return { id: String(saved.uid), slug: saved.slug ?? (this.fields.slug || '') };
95
116
  }
117
+ /** Saves the page as create() does, for a test that expects the backend to refuse it: TYPO3's reasons. */
118
+ refusal() {
119
+ return refusalOf(() => this.create());
120
+ }
96
121
  async update(pageId) {
97
122
  const context = resolveRequestContext(this.page, this.requestContext);
98
123
  const { columns, records } = this.relations.materialise({ pid: pageId, sys_language_uid: 0 });
@@ -107,6 +132,33 @@ export class PageBuilder {
107
132
  });
108
133
  return { id: pageId, slug: saved.slug ?? (this.fields.slug || '') };
109
134
  }
135
+ async createTranslation(translation) {
136
+ if ('pid' in this.fields || 'doktype' in this.fields) {
137
+ throw new Error('[typo3-playwright-toolkit] A page translation takes its parent and its type from the page it ' +
138
+ 'translates. Leave out atParentId() and withDoktype().');
139
+ }
140
+ const context = resolveRequestContext(this.page, this.requestContext);
141
+ const translated = await translateRecord(this.page.request, context, {
142
+ table: 'pages',
143
+ uid: translation.origin,
144
+ language: translation.language,
145
+ mode: 'localize',
146
+ });
147
+ const id = String(translated.uid);
148
+ const { columns, records } = keepCopies(this.relations.materialise({ pid: translated.uid, sys_language_uid: translation.language }), translated, this.copiedEdits);
149
+ const row = { ...toColumnValues({ ...TRANSLATION_DEFAULTS, ...this.fields }), ...columns };
150
+ const data = { pages: { [id]: { ...row, l10n_state: ownValues(Object.keys(row)) } } };
151
+ mergeRecords(data, records);
152
+ const saved = await saveRecord(this.page.request, context, {
153
+ table: 'pages',
154
+ identifier: id,
155
+ target: translated.uid,
156
+ data,
157
+ withoutFormRules: this.optedOutOfFormRules,
158
+ });
159
+ this.rememberSlug(context, saved.slug);
160
+ return { id, slug: saved.slug ?? translated.slug ?? '' };
161
+ }
110
162
  rememberSlug(context, stored) {
111
163
  const requested = this.fields.slug;
112
164
  if ('string' !== typeof requested || '' === requested || !context.usedSlugs || undefined === stored) {
@@ -1 +1 @@
1
- {"version":3,"file":"page-builder.js","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-builder.js","sourceRoot":"","sources":["../../src/builders/page-builder.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,20 @@ export interface RelationOutput {
9
9
  records: RecordDataMap;
10
10
  }
11
11
  export declare function mergeRecords(into: RecordDataMap, from: RecordDataMap): void;
12
+ export interface CopiedReferenceEdit {
13
+ column: string;
14
+ position: number;
15
+ fields: ContentFields;
16
+ }
17
+ export interface CopiedReferences {
18
+ references: Record<string, number[]>;
19
+ truncated: boolean;
20
+ }
21
+ /**
22
+ * A file column posts every reference it keeps: one the post leaves out stays
23
+ * attached in a slot the new ones then share, so a translation lists its copies first.
24
+ */
25
+ export declare function keepCopies(output: RelationOutput, copied: CopiedReferences, edits: CopiedReferenceEdit[]): RelationOutput;
12
26
  export declare class ChildRecord {
13
27
  private readonly fields;
14
28
  private readonly relations;
@@ -36,6 +50,5 @@ export declare class RelationSet {
36
50
  refuseColumnHeld(column: string): void;
37
51
  materialise(owner: RelationOwner): RelationOutput;
38
52
  private claim;
39
- private refuseWiredColumns;
40
53
  }
41
54
  //# sourceMappingURL=relations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAGhE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAA;CACpC;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,aAAa,CAAA;CACzB;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAc3E;AAgBD,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAE3B,KAAK,EAAE,MAAM;IAIzB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI;IAO7D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI;IAM1F,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAMvF,mFAAmF;IACnF,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,EAAE,aAAa,CAAA;KAAE;CAQ9F;AAED,qBAAa,WAAW;IAMhB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IANhC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAG9B,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAqB;IAG3E,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI;IAQ1F,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI;IAMhG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IASvF,YAAY,CAAC,CAAC,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,GACjD,IAAI;IAMP,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUtC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc;IAiCjD,OAAO,CAAC,KAAK;IAqBb,OAAO,CAAC,kBAAkB;CAU7B"}
1
+ {"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,43 @@ export function mergeRecords(into, from) {
14
14
  }
15
15
  }
16
16
  }
17
+ /**
18
+ * A file column posts every reference it keeps: one the post leaves out stays
19
+ * attached in a slot the new ones then share, so a translation lists its copies first.
20
+ */
21
+ export function keepCopies(output, copied, edits) {
22
+ const touched = [...new Set([...Object.keys(output.columns), ...edits.map(({ column }) => column)])];
23
+ if (copied.truncated && touched.length > 0) {
24
+ throw new Error(`[typo3-playwright-toolkit] The translation copied too many references to report, so ` +
25
+ `${touched.join(', ')} cannot be changed without losing their order. Set fields only, ` +
26
+ 'or give the origin fewer references.');
27
+ }
28
+ const records = {};
29
+ mergeRecords(records, output.records);
30
+ for (const { column, position, fields } of edits) {
31
+ refuseWiredColumns(fields);
32
+ const copies = copied.references[column] ?? [];
33
+ const copy = copies[position];
34
+ if (undefined === copy) {
35
+ throw new Error(`[typo3-playwright-toolkit] The translation copied ${copies.length} references in ${column}, ` +
36
+ `so there is none at position ${position}. Positions count from 0.`);
37
+ }
38
+ mergeRecords(records, { sys_file_reference: { [String(copy)]: fields } });
39
+ }
40
+ const columns = Object.fromEntries(touched.map((column) => {
41
+ const added = output.columns[column] ? output.columns[column].split(',') : [];
42
+ return [column, [...(copied.references[column] ?? []).map(String), ...added].join(',')];
43
+ }));
44
+ return { columns, records };
45
+ }
46
+ function refuseWiredColumns(fields) {
47
+ const wired = Object.keys(fields).filter((column) => WIRED_COLUMNS.includes(column));
48
+ if (wired.length > 0) {
49
+ throw new Error(`[typo3-playwright-toolkit] ${wired.join(', ')} cannot be set on a relation — ` +
50
+ 'the toolkit writes it, and a value of your own would point the row ' +
51
+ 'somewhere the parent column does not.');
52
+ }
53
+ }
17
54
  export class ChildRecord {
18
55
  fields = {};
19
56
  relations;
@@ -52,7 +89,7 @@ export class RelationSet {
52
89
  this.isColumnSet = isColumnSet;
53
90
  }
54
91
  withFileReference(column, file, fields = {}) {
55
- this.refuseWiredColumns(fields);
92
+ refuseWiredColumns(fields);
56
93
  this.claim(column, 'sys_file_reference');
57
94
  this.references.push({ column, identifier: newRecordIdentifier(), fileUid: mediaUid(file), fields });
58
95
  return this;
@@ -120,13 +157,5 @@ export class RelationSet {
120
157
  }
121
158
  this.claims.set(column, table);
122
159
  }
123
- refuseWiredColumns(fields) {
124
- const wired = Object.keys(fields).filter((column) => WIRED_COLUMNS.includes(column));
125
- if (wired.length > 0) {
126
- throw new Error(`[typo3-playwright-toolkit] ${wired.join(', ')} cannot be set on a relation — ` +
127
- 'the toolkit writes it, and a value of your own would point the row ' +
128
- 'somewhere the parent column does not.');
129
- }
130
- }
131
160
  }
132
161
  //# sourceMappingURL=relations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relations.js","sourceRoot":"","sources":["../../src/builders/relations.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface RequestContext {
10
10
  testId: string;
11
11
  /** For `record_edit`; the session endpoint hands it out. */
12
12
  routeToken: string;
13
+ /** For `tce_db`, which runs a command such as a translation. */
14
+ commandToken?: string;
13
15
  replayFolder?: ReplayFolder;
14
16
  /** Slugs this scenario already created. */
15
17
  usedSlugs?: Set<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,IAAI,MAAM,CAAA;IACb,OAAO,IAAI,OAAO,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAM5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAWnF;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,GAAE,OAAO,CAAC,cAAc,CAAM,GACvC,cAAc,CAYhB"}
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,IAAI,MAAM,CAAA;IACb,OAAO,IAAI,OAAO,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAM5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAWnF;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,GAAE,OAAO,CAAC,cAAc,CAAM,GACvC,cAAc,CAahB"}
@@ -34,6 +34,7 @@ export function resolveRequestContext(page, explicit = {}) {
34
34
  backendPath: explicit.backendPath ?? getToolkitConfig().backendPath ?? DEFAULT_BACKEND_PATH,
35
35
  testId: requireTestId(page, explicit.testId),
36
36
  routeToken: explicit.routeToken ?? '',
37
+ commandToken: explicit.commandToken ?? '',
37
38
  };
38
39
  }
39
40
  //# sourceMappingURL=request-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAqB1D,uGAAuG;AACvG,MAAM,UAAU,cAAc,CAAC,OAAuB,EAAE,QAAgB;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAA;IAEnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC1E,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA0B;IACpD,OAAO,CACF,IAAkC,CAAC,MAAM;QACzC,IAAI,CAAC,OAAO,EAAwB,CAAC,MAAM;QAC5C,SAAS,CACZ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B,EAAE,QAAiB;IACvE,MAAM,MAAM,GAAG,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAEpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACX,8FAA8F;YAC1F,gFAAgF,CACvF,CAAA;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,IAA0B,EAC1B,WAAoC,EAAE;IAEtC,OAAO;QACH,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,2EAA2E;QAC3E,2EAA2E;QAC3E,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC,UAAU;QAC1D,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC,WAAW,IAAI,oBAAoB;QAC3F,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5C,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;KACxC,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/builders/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAuB1D,uGAAuG;AACvG,MAAM,UAAU,cAAc,CAAC,OAAuB,EAAE,QAAgB;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAA;IAEnC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC1E,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA0B;IACpD,OAAO,CACF,IAAkC,CAAC,MAAM;QACzC,IAAI,CAAC,OAAO,EAAwB,CAAC,MAAM;QAC5C,SAAS,CACZ,CAAA;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B,EAAE,QAAiB;IACvE,MAAM,MAAM,GAAG,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAEpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACX,8FAA8F;YAC1F,gFAAgF,CACvF,CAAA;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,IAA0B,EAC1B,WAAoC,EAAE;IAEtC,OAAO;QACH,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,2EAA2E;QAC3E,2EAA2E;QAC3E,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC,UAAU;QAC1D,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC,WAAW,IAAI,oBAAoB;QAC3F,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5C,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;QACrC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;KAC5C,CAAA;AACL,CAAC"}
@@ -4,6 +4,7 @@ export declare const TEST_ID_PATTERN: RegExp;
4
4
  /** JSON, so a value stays ASCII in a header field and a later field needs no second header. */
5
5
  export declare const SAVED_RECORD_HEADER = "X-Playwright-Saved-Record";
6
6
  export declare const RECORD_DIAGNOSTICS_HEADER = "X-Playwright-Record-Diagnostics";
7
+ export declare const TRANSLATED_RECORD_HEADER = "X-Playwright-Translated-Record";
7
8
  export declare const SKIP_FORM_RULES_HEADER = "X-Playwright-Skip-Form-Rules";
8
9
  export declare const PROBE_HEADER = "X-Playwright-Probe";
9
10
  /** Replay's own test ID; the extension maps it to the throwaway base database. */
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,eAAO,MAAM,cAAc,yBAAyB,CAAA;AACpD,eAAO,MAAM,eAAe,QAAmB,CAAA;AAE/C,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,8BAA8B,CAAA;AAC9D,eAAO,MAAM,yBAAyB,oCAAoC,CAAA;AAC1E,eAAO,MAAM,sBAAsB,iCAAiC,CAAA;AACpE,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,kFAAkF;AAClF,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAKhD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK5F;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAErE"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,eAAO,MAAM,cAAc,yBAAyB,CAAA;AACpD,eAAO,MAAM,eAAe,QAAmB,CAAA;AAE/C,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,8BAA8B,CAAA;AAC9D,eAAO,MAAM,yBAAyB,oCAAoC,CAAA;AAC1E,eAAO,MAAM,wBAAwB,mCAAmC,CAAA;AACxE,eAAO,MAAM,sBAAsB,iCAAiC,CAAA;AACpE,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,kFAAkF;AAClF,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAKhD,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK5F;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAErE"}
package/dist/contract.js CHANGED
@@ -5,6 +5,7 @@ export const TEST_ID_PATTERN = /^[A-Z0-9]{16}$/;
5
5
  /** JSON, so a value stays ASCII in a header field and a later field needs no second header. */
6
6
  export const SAVED_RECORD_HEADER = 'X-Playwright-Saved-Record';
7
7
  export const RECORD_DIAGNOSTICS_HEADER = 'X-Playwright-Record-Diagnostics';
8
+ export const TRANSLATED_RECORD_HEADER = 'X-Playwright-Translated-Record';
8
9
  export const SKIP_FORM_RULES_HEADER = 'X-Playwright-Skip-Form-Rules';
9
10
  export const PROBE_HEADER = 'X-Playwright-Probe';
10
11
  /** Replay's own test ID; the extension maps it to the throwaway base database. */
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAE/C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAA;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,iCAAiC,CAAA;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,8BAA8B,CAAA;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAA;AAEhD,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAEhD,MAAM,gBAAgB,GAAG,sCAAsC,CAAA;AAC/D,MAAM,cAAc,GAAG,EAAE,CAAA;AAEzB,MAAM,UAAU,cAAc;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAc;IAChE,OAAO;QACH,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;KAC5C,CAAA;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAE/C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAA;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,iCAAiC,CAAA;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,gCAAgC,CAAA;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,8BAA8B,CAAA;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAA;AAEhD,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAEhD,MAAM,gBAAgB,GAAG,sCAAsC,CAAA;AAC/D,MAAM,cAAc,GAAG,EAAE,CAAA;AAEzB,MAAM,UAAU,cAAc;IAC1B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAc;IAChE,OAAO;QACH,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC;KAC5C,CAAA;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,MAAc;IACzC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;AACvC,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { BrowserContext } from '@playwright/test';
2
- import type { ToolkitConfig } from '../config.js';
1
+ import type { APIResponse, BrowserContext, Route } from '@playwright/test';
2
+ import { type ToolkitConfig } from '../config.js';
3
3
  /**
4
4
  * Adds the test ID for the site under test, and takes both toolkit headers off
5
5
  * anything else. Routing rather than extraHTTPHeaders: a context-wide header also
@@ -10,4 +10,10 @@ import type { ToolkitConfig } from '../config.js';
10
10
  * `continue` would end the chain and silently disable them.
11
11
  */
12
12
  export declare function applyToolkitHeaders(context: BrowserContext, config: ToolkitConfig, testId: string, origins?: ReadonlySet<string>): Promise<void>;
13
+ /**
14
+ * route.fetch() with the test ID, for a test's own page.route() handler. That handler
15
+ * runs before the toolkit adds the ID, so a plain fetch would reach the site's normal
16
+ * database. Like every other request, only the site under test gets the ID.
17
+ */
18
+ export declare function fetchForTest(route: Route, testId: string, options?: NonNullable<Parameters<Route['fetch']>[0]>): Promise<APIResponse>;
13
19
  //# sourceMappingURL=off-site-headers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"off-site-headers.d.ts","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAOjD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAW,CAAC,MAAM,CAA0B,GACtD,OAAO,CAAC,IAAI,CAAC,CAuBf"}
1
+ {"version":3,"file":"off-site-headers.d.ts","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAG1E,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAOnE;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAW,CAAC,MAAM,CAA0B,GACtD,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAM,GACzD,OAAO,CAAC,WAAW,CAAC,CAUtB"}
@@ -1,5 +1,6 @@
1
1
  import { SECRET_HEADER } from './api-secret.js';
2
2
  import { TEST_ID_HEADER, browserHeaders } from '../contract.js';
3
+ import { getToolkitConfig } from '../config.js';
3
4
  import { testingOrigins } from '../sites/registry.js';
4
5
  import { toolkitRequest } from './toolkit-request.js';
5
6
  const TOOLKIT_HEADERS = [TEST_ID_HEADER.toLowerCase(), SECRET_HEADER.toLowerCase()];
@@ -14,18 +15,39 @@ const TOOLKIT_HEADERS = [TEST_ID_HEADER.toLowerCase(), SECRET_HEADER.toLowerCase
14
15
  */
15
16
  export async function applyToolkitHeaders(context, config, testId, origins = testingOrigins(config)) {
16
17
  await context.route(() => true, async (route) => {
17
- const headers = { ...route.request().headers() };
18
- if (origins.has(new URL(route.request().url()).origin)) {
19
- await route.fallback({ headers: { ...headers, ...browserHeaders(testId) } });
20
- return;
21
- }
22
- for (const name of TOOLKIT_HEADERS) {
23
- delete headers[name];
24
- }
25
- await route.fallback({ headers });
18
+ const request = route.request();
19
+ await route.fallback({ headers: routedHeaders(request.url(), request.headers(), testId, origins) });
26
20
  });
27
21
  const request = toolkitRequest(context.request, config, testId, context.site);
28
22
  Object.defineProperty(context, 'request', { value: request });
29
23
  context.on('page', (page) => Object.defineProperty(page, 'request', { value: request }));
30
24
  }
25
+ /**
26
+ * route.fetch() with the test ID, for a test's own page.route() handler. That handler
27
+ * runs before the toolkit adds the ID, so a plain fetch would reach the site's normal
28
+ * database. Like every other request, only the site under test gets the ID.
29
+ */
30
+ export function fetchForTest(route, testId, options = {}) {
31
+ const request = route.request();
32
+ const headers = { ...request.headers(), ...options.headers };
33
+ // The options may send the request to another address; that address decides
34
+ const url = options.url ?? request.url();
35
+ return route.fetch({
36
+ ...options,
37
+ headers: routedHeaders(url, headers, testId, testingOrigins(getToolkitConfig())),
38
+ });
39
+ }
40
+ function routedHeaders(url, requested, testId, origins) {
41
+ const headers = { ...requested };
42
+ if (origins.has(new URL(url).origin)) {
43
+ return { ...headers, ...browserHeaders(testId) };
44
+ }
45
+ // Header names a test passes may be spelled in any case
46
+ for (const name of Object.keys(headers)) {
47
+ if (TOOLKIT_HEADERS.includes(name.toLowerCase())) {
48
+ delete headers[name];
49
+ }
50
+ }
51
+ return headers;
52
+ }
31
53
  //# sourceMappingURL=off-site-headers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"off-site-headers.js","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAA;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAAuB,EACvB,MAAqB,EACrB,MAAc,EACd,UAA+B,cAAc,CAAC,MAAM,CAAC;IAErD,MAAM,OAAO,CAAC,KAAK,CACf,GAAG,EAAE,CAAC,IAAI,EACV,KAAK,EAAE,KAAK,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAA;QAEhD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;YAE5E,OAAM;QACV,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;QAED,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC,CACJ,CAAA;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAG,OAA6B,CAAC,IAAI,CAAC,CAAA;IACpG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AAC5F,CAAC"}
1
+ {"version":3,"file":"off-site-headers.js","sourceRoot":"","sources":["../../src/http/off-site-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAsB,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,CAAA;AAEnF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,OAAuB,EACvB,MAAqB,EACrB,MAAc,EACd,UAA+B,cAAc,CAAC,MAAM,CAAC;IAErD,MAAM,OAAO,CAAC,KAAK,CACf,GAAG,EAAE,CAAC,IAAI,EACV,KAAK,EAAE,KAAK,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QAC/B,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACvG,CAAC,CACJ,CAAA;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAG,OAA6B,CAAC,IAAI,CAAC,CAAA;IACpG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CACxB,KAAY,EACZ,MAAc,EACd,UAAsD,EAAE;IAExD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5D,4EAA4E;IAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAExC,OAAO,KAAK,CAAC,KAAK,CAAC;QACf,GAAG,OAAO;QACV,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACnF,CAAC,CAAA;AACN,CAAC;AAED,SAAS,aAAa,CAClB,GAAW,EACX,SAAiC,EACjC,MAAc,EACd,OAA4B;IAE5B,MAAM,OAAO,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;IAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;IACpD,CAAC;IAED,wDAAwD;IACxD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type EditContext, type FormPoster } from './record-edit.js';
2
+ export declare const RECORD_COMMIT_ROUTE = "/record/commit";
3
+ export type TranslationMode = 'localize' | 'copyToLanguage';
4
+ export interface CommitContext extends EditContext {
5
+ commandToken?: string;
6
+ }
7
+ export interface RecordToTranslate {
8
+ table: string;
9
+ uid: number;
10
+ language: number;
11
+ mode: TranslationMode;
12
+ }
13
+ export interface TranslatedRecord {
14
+ uid: number;
15
+ pid: number;
16
+ /** Per file column, in the order they show: position n is the copy of the origin's position n. */
17
+ references: Record<string, number[]>;
18
+ /** The references did not fit a header, so `references` is empty. */
19
+ truncated: boolean;
20
+ slug?: string;
21
+ }
22
+ /** The command the backend's own "translate" link sends. */
23
+ export declare function translateRecord(poster: FormPoster, context: CommitContext, record: RecordToTranslate): Promise<TranslatedRecord>;
24
+ //# sourceMappingURL=record-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-commit.d.ts","sourceRoot":"","sources":["../../src/http/record-commit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElH,eAAO,MAAM,mBAAmB,mBAAmB,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAE3D,MAAM,WAAW,aAAc,SAAQ,WAAW;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACpC,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,4DAA4D;AAC5D,wBAAsB,eAAe,CACjC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA4C3B"}
@@ -0,0 +1,34 @@
1
+ import { getToolkitConfig } from '../config.js';
2
+ import { TRANSLATED_RECORD_HEADER, toolkitHeaders } from '../contract.js';
3
+ import { header, refuseWhatTypo3Rejected, savedRecord } from './record-edit.js';
4
+ export const RECORD_COMMIT_ROUTE = '/record/commit';
5
+ /** The command the backend's own "translate" link sends. */
6
+ export async function translateRecord(poster, context, record) {
7
+ if (!context.commandToken) {
8
+ throw new Error('[typo3-playwright-toolkit] No route token for tce_db, so nothing can be translated. ' +
9
+ 'Translations need plan2net/playwright-toolkit 0.27.0 or newer.');
10
+ }
11
+ const response = await poster.post(`${context.baseUrl}${context.backendPath}${RECORD_COMMIT_ROUTE}?token=${encodeURIComponent(context.commandToken)}`, {
12
+ headers: toolkitHeaders(getToolkitConfig(), context.testId),
13
+ multipart: { [`cmd[${record.table}][${record.uid}][${record.mode}]`]: String(record.language) },
14
+ maxRedirects: 0,
15
+ });
16
+ const headers = response.headers();
17
+ refuseWhatTypo3Rejected(headers, record.table);
18
+ const raw = header(headers, TRANSLATED_RECORD_HEADER);
19
+ if (undefined === raw) {
20
+ throw new Error(`[typo3-playwright-toolkit] TYPO3 created no translation of ${record.table} ${record.uid} ` +
21
+ `in language ${record.language} (status ${response.status()}). Check that the site has that ` +
22
+ 'language and that the record has no translation in it yet.');
23
+ }
24
+ const parsed = JSON.parse(raw);
25
+ const { slug } = savedRecord(headers);
26
+ return {
27
+ uid: parsed.uid,
28
+ pid: parsed.pid,
29
+ references: parsed.references ?? {},
30
+ truncated: true === parsed.truncated,
31
+ ...(undefined === slug ? {} : { slug }),
32
+ };
33
+ }
34
+ //# sourceMappingURL=record-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-commit.js","sourceRoot":"","sources":["../../src/http/record-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAqC,MAAM,kBAAkB,CAAA;AAElH,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAA;AAyBnD,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAAkB,EAClB,OAAsB,EACtB,MAAyB;IAEzB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,sFAAsF;YAClF,gEAAgE,CACvE,CAAA;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,mBAAmB,UAAU,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAClH;QACI,OAAO,EAAE,cAAc,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QAC3D,SAAS,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC/F,YAAY,EAAE,CAAC;KAClB,CACJ,CAAA;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAE9C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA;IACrD,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACX,8DAA8D,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,GAAG;YACvF,eAAe,MAAM,CAAC,QAAQ,YAAY,QAAQ,CAAC,MAAM,EAAE,kCAAkC;YAC7F,4DAA4D,CACnE,CAAA;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAK5B,CAAA;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IAErC,OAAO;QACH,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;QACnC,SAAS,EAAE,IAAI,KAAK,MAAM,CAAC,SAAS;QACpC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAA;AACL,CAAC"}
@@ -29,6 +29,22 @@ export interface SavedRecord {
29
29
  /** Per table, and not only the records that were asked for. */
30
30
  written?: Record<string, number>;
31
31
  }
32
+ /**
33
+ * TYPO3 itself refused the record, as opposed to a save that failed for want of a
34
+ * session or a token; `reasons` are its own messages.
35
+ */
36
+ export declare class RecordRefusedError extends Error {
37
+ readonly reasons: string[];
38
+ constructor(message: string, reasons: string[]);
39
+ }
40
+ /**
41
+ * For a test that expects the backend to refuse a record: the reasons, or a
42
+ * failure when the record was saved after all. Any other error is passed on, so a
43
+ * broken setup does not pass as a refusal.
44
+ */
45
+ export declare function refusalOf(save: () => Promise<{
46
+ id: string;
47
+ }>): Promise<string[]>;
32
48
  /** saveRecord with the poster and context already bound. */
33
49
  export declare function recordSaver(poster: FormPoster, context: EditContext): (record: RecordToSave) => Promise<SavedRecord>;
34
50
  export interface RecordToSave {
@@ -46,4 +62,15 @@ export interface RecordToSave {
46
62
  * passing quietly.
47
63
  */
48
64
  export declare function saveRecord(poster: FormPoster, context: EditContext, record: RecordToSave): Promise<SavedRecord>;
65
+ /**
66
+ * A refused child leaves the parent saved, so the request looks like a success
67
+ * and the failure would only show up much later, somewhere else.
68
+ */
69
+ export declare function refuseWhatTypo3Rejected(headers: Record<string, string>, table: string): void;
70
+ export declare function header(headers: Record<string, string>, name: string): string | undefined;
71
+ /** A malformed envelope is not worth failing a save over: the uid still stands. */
72
+ export declare function savedRecord(headers: Record<string, string>): {
73
+ slug?: string;
74
+ written?: Record<string, number>;
75
+ };
49
76
  //# sourceMappingURL=record-edit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-edit.d.ts","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,WAAW,YAAY;IACzB,MAAM,IAAI,MAAM,CAAA;IAChB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACtG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,GACrB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAmDtB"}
1
+ {"version":3,"file":"record-edit.d.ts","sourceRoot":"","sources":["../../src/http/record-edit.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAE/C,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnF,MAAM,WAAW,YAAY;IACzB,MAAM,IAAI,MAAM,CAAA;IAChB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CACA,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GACtG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAGrC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;gBAD1B,OAAO,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EAAE;CAKjC;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAetF;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACvB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,GACrB,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAmDtB;AAkED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAqB5F;AA+ED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExF;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAgBhH"}