nucleus-core-ts 0.9.811 → 0.9.813

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.
@@ -136,6 +136,10 @@ export function EndpointSample({ endpoint, actions }) {
136
136
  tone: "danger",
137
137
  children: sample.error
138
138
  }) : null,
139
+ sample.recordCount > 0 ? /*#__PURE__*/ _jsx("p", {
140
+ className: theme.field.hint,
141
+ children: `This is one request. The source answered it with ${sample.recordCount} record(s)${sample.recordCount > sample.sample.length ? `, of which the first ${sample.sample.length} are printed below` : ''} — not the whole table. If the endpoint pages, this is one page of it. Preview on the Run step walks every page and reports the real total.`
142
+ }) : null,
139
143
  sample.recordCount === 0 ? /*#__PURE__*/ _jsxs(Notice, {
140
144
  title: labels.endpoints.sampleNoRecords,
141
145
  tone: "warning",
@@ -124,6 +124,32 @@ export function FieldMappingRows({ rows, sourceFields, targetFields, disabled, o
124
124
  }),
125
125
  ". Use it when no single field is unique on its own, which is what the deduplication column needs."
126
126
  ]
127
+ }),
128
+ /*#__PURE__*/ _jsxs("p", {
129
+ className: theme.field.hint,
130
+ children: [
131
+ /*#__PURE__*/ _jsx("strong", {
132
+ children: "Fallback"
133
+ }),
134
+ " takes the same braces, so a record that arrives without an e-mail can still be given one: ",
135
+ /*#__PURE__*/ _jsx("strong", {
136
+ children: '{ad}.{soyad}@example.com'
137
+ }),
138
+ ". Pair it with the ",
139
+ /*#__PURE__*/ _jsx("strong", {
140
+ children: "E-mail safe"
141
+ }),
142
+ " transform and ",
143
+ /*#__PURE__*/ _jsx("em", {
144
+ children: "Ayşe Yılmaz"
145
+ }),
146
+ " becomes",
147
+ ' ',
148
+ /*#__PURE__*/ _jsx("em", {
149
+ children: "ayse.yilmaz@example.com"
150
+ }),
151
+ ". Records that already carry an address keep it."
152
+ ]
127
153
  })
128
154
  ]
129
155
  })
@@ -24,7 +24,8 @@ export const TRANSFORMS = [
24
24
  'toString',
25
25
  'toNumber',
26
26
  'toBoolean',
27
- 'dateOnly'
27
+ 'dateOnly',
28
+ 'emailSafe'
28
29
  ];
29
30
  export const TRANSFORM_LABEL = {
30
31
  none: 'No transform',
@@ -34,7 +35,8 @@ export const TRANSFORM_LABEL = {
34
35
  toString: 'To text',
35
36
  toNumber: 'To number',
36
37
  toBoolean: 'To boolean',
37
- dateOnly: 'Date only'
38
+ dateOnly: 'Date only',
39
+ emailSafe: 'E-mail safe (ascii, lowercase)'
38
40
  };
39
41
  /** Narrows what a select reported back to a transform this panel knows. */ export function toTransform(value) {
40
42
  return TRANSFORMS.find((option)=>option === value) ?? 'none';
@@ -214,7 +214,7 @@
214
214
  constant: 'Constant',
215
215
  constantPlaceholder: 'Same value on every record',
216
216
  fallback: 'Fallback',
217
- fallbackPlaceholder: 'Used when the source is empty',
217
+ fallbackPlaceholder: 'Used when the source is empty — {ad}.{soyad}@example.com',
218
218
  save: 'Save mapping'
219
219
  },
220
220
  auth: {
@@ -86,7 +86,7 @@ export type IntegrationEndpoint = {
86
86
  } | null;
87
87
  enabled?: boolean;
88
88
  };
89
- export type MappingTransformValue = 'none' | 'trim' | 'upper' | 'lower' | 'toString' | 'toNumber' | 'toBoolean' | 'dateOnly';
89
+ export type MappingTransformValue = 'none' | 'trim' | 'upper' | 'lower' | 'toString' | 'toNumber' | 'toBoolean' | 'dateOnly' | 'emailSafe';
90
90
  export type FieldMappingValue = {
91
91
  source: string;
92
92
  target: string;