@chelone/core 0.6.0 → 0.9.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/dist/assistant/assistant-session.d.ts +6 -0
- package/dist/assistant/assistant-session.js +204 -181
- package/dist/assistant/echo-transport.js +26 -29
- package/dist/assistant/http-transport.d.ts +10 -0
- package/dist/assistant/http-transport.js +98 -0
- package/dist/assistant/types.d.ts +1 -7
- package/dist/auth/access-control.d.ts +13 -5
- package/dist/auth/access-control.js +25 -21
- package/dist/auth/auth-options.d.ts +23 -17
- package/dist/auth/auth-options.js +82 -48
- package/dist/auth/permission-matrix.d.ts +12 -0
- package/dist/auth/permission-matrix.js +67 -0
- package/dist/auth/types.d.ts +14 -4
- package/dist/block-editor/block-document.d.ts +64 -0
- package/dist/block-editor/block-document.js +147 -0
- package/dist/block-editor/data-blocks.d.ts +63 -0
- package/dist/block-editor/data-blocks.js +117 -0
- package/dist/chart/chart-data.js +46 -44
- package/dist/command-menu/hotkey.js +58 -47
- package/dist/command-menu/recents.d.ts +4 -0
- package/dist/command-menu/recents.js +12 -11
- package/dist/command-menu/registry.d.ts +9 -5
- package/dist/command-menu/registry.js +36 -46
- package/dist/controller/calendar-dates.d.ts +12 -0
- package/dist/controller/calendar-dates.js +94 -113
- package/dist/controller/calendar-events.js +93 -88
- package/dist/controller/client-list-controller.d.ts +2 -2
- package/dist/controller/client-list-controller.js +251 -254
- package/dist/controller/data-table-columns.d.ts +2 -0
- package/dist/controller/data-table-columns.js +50 -56
- package/dist/controller/deep-equal.d.ts +1 -0
- package/dist/controller/deep-equal.js +14 -0
- package/dist/controller/filter-toggle.js +36 -44
- package/dist/controller/in-place-editor.d.ts +43 -0
- package/dist/controller/in-place-editor.js +43 -0
- package/dist/controller/infinite-list-controller.js +219 -189
- package/dist/controller/inspector.d.ts +55 -0
- package/dist/controller/inspector.js +70 -0
- package/dist/controller/job-monitor.d.ts +10 -4
- package/dist/controller/job-monitor.js +46 -47
- package/dist/controller/kanban-board.js +45 -24
- package/dist/controller/list-controller.d.ts +8 -5
- package/dist/controller/list-controller.js +447 -400
- package/dist/controller/list-params.js +96 -87
- package/dist/controller/pivot-grid.d.ts +4 -4
- package/dist/controller/pivot-grid.js +89 -95
- package/dist/controller/prev-next.d.ts +2 -2
- package/dist/controller/prev-next.js +74 -54
- package/dist/controller/record-controllers.d.ts +14 -6
- package/dist/controller/record-controllers.js +288 -257
- package/dist/controller/record-diff.d.ts +21 -0
- package/dist/controller/record-diff.js +50 -0
- package/dist/controller/record-timeline.d.ts +5 -5
- package/dist/controller/record-timeline.js +42 -30
- package/dist/controller/record-tree.js +57 -47
- package/dist/controller/record-workflow.d.ts +38 -16
- package/dist/controller/record-workflow.js +85 -64
- package/dist/controller/reference-many-controller.d.ts +2 -0
- package/dist/controller/reference-many-controller.js +199 -192
- package/dist/controller/reference-one-controller.d.ts +1 -1
- package/dist/controller/reference-one-controller.js +63 -56
- package/dist/controller/saved-queries.js +104 -91
- package/dist/controller/translate-fallback.js +10 -6
- package/dist/csv/export.d.ts +4 -3
- package/dist/csv/export.js +43 -40
- package/dist/csv/import-controller.d.ts +4 -0
- package/dist/csv/import-controller.js +189 -169
- package/dist/csv/match-headers.js +29 -22
- package/dist/csv/parse-with.js +60 -54
- package/dist/csv/run-import.js +69 -72
- package/dist/csv/validate-rows.d.ts +1 -1
- package/dist/csv/validate-rows.js +65 -52
- package/dist/data/cache-ops.d.ts +5 -4
- package/dist/data/cache-ops.js +208 -188
- package/dist/data/combine-data-providers.js +25 -23
- package/dist/data/data-provider-log.d.ts +45 -0
- package/dist/data/data-provider-log.js +93 -0
- package/dist/data/errors.js +14 -10
- package/dist/data/fake-provider.d.ts +6 -3
- package/dist/data/fake-provider.js +135 -114
- package/dist/data/fetch-utils.js +61 -44
- package/dist/data/filter-branch.d.ts +5 -0
- package/dist/data/filter-branch.js +10 -0
- package/dist/data/get-many-aggregate.js +84 -76
- package/dist/data/http-error.js +17 -12
- package/dist/data/keys.js +50 -36
- package/dist/data/mutation-options.d.ts +14 -9
- package/dist/data/mutation-options.js +93 -109
- package/dist/data/query-options.js +73 -68
- package/dist/data/remove-empty.d.ts +3 -0
- package/dist/data/remove-empty.js +11 -0
- package/dist/data/undoable.d.ts +2 -2
- package/dist/data/undoable.js +190 -174
- package/dist/data/with-lifecycle-callbacks.d.ts +45 -17
- package/dist/data/with-lifecycle-callbacks.js +66 -52
- package/dist/environment/application-update-store.js +58 -55
- package/dist/environment/offline-store.js +21 -21
- package/dist/form/array-binding.d.ts +30 -11
- package/dist/form/array-binding.js +184 -166
- package/dist/form/choice-ids.d.ts +7 -0
- package/dist/form/choice-ids.js +11 -0
- package/dist/form/choices-controller.d.ts +22 -2
- package/dist/form/choices-controller.js +315 -275
- package/dist/form/date-format.d.ts +38 -0
- package/dist/form/date-format.js +89 -0
- package/dist/form/dirty-values.d.ts +2 -2
- package/dist/form/dirty-values.js +22 -11
- package/dist/form/duration.d.ts +22 -0
- package/dist/form/duration.js +49 -0
- package/dist/form/edit-create-form.d.ts +12 -5
- package/dist/form/edit-create-form.js +243 -188
- package/dist/form/event-value.d.ts +6 -0
- package/dist/form/event-value.js +17 -0
- package/dist/form/field-error.d.ts +14 -0
- package/dist/form/field-error.js +28 -0
- package/dist/form/field-name.d.ts +20 -0
- package/dist/form/field-name.js +6 -0
- package/dist/form/filter-form-values.js +63 -49
- package/dist/form/form-controller.d.ts +9 -1
- package/dist/form/form-controller.js +165 -160
- package/dist/form/form-groups.d.ts +4 -3
- package/dist/form/form-groups.js +79 -79
- package/dist/form/form-handle.d.ts +175 -0
- package/dist/form/form-handle.js +68 -0
- package/dist/form/input-binding.d.ts +56 -31
- package/dist/form/input-binding.js +171 -118
- package/dist/form/input-values.d.ts +140 -0
- package/dist/form/input-values.js +206 -0
- package/dist/form/json-text.d.ts +11 -0
- package/dist/form/json-text.js +62 -37
- package/dist/form/save-pipeline.d.ts +6 -8
- package/dist/form/save-pipeline.js +91 -82
- package/dist/form/set-form-values.d.ts +6 -0
- package/dist/form/set-form-values.js +10 -0
- package/dist/form/source.js +97 -65
- package/dist/form/text-of.d.ts +2 -0
- package/dist/form/text-of.js +7 -0
- package/dist/form/validators.d.ts +58 -19
- package/dist/form/validators.js +97 -71
- package/dist/geo/bbox.d.ts +5 -4
- package/dist/geo/bbox.js +69 -48
- package/dist/geo/bounds.d.ts +14 -3
- package/dist/geo/bounds.js +98 -68
- package/dist/geo/constraints.js +88 -93
- package/dist/geo/coordinates.d.ts +10 -0
- package/dist/geo/coordinates.js +44 -23
- package/dist/geo/editor.d.ts +13 -13
- package/dist/geo/editor.js +176 -153
- package/dist/geo/geocoding.d.ts +4 -4
- package/dist/geo/geocoding.js +38 -41
- package/dist/geo/geojson.d.ts +12 -74
- package/dist/geo/geojson.js +52 -40
- package/dist/geo/geometry-math.d.ts +4 -4
- package/dist/geo/geometry-math.js +100 -93
- package/dist/geo/index.d.ts +9 -8
- package/dist/geo/map-layers.d.ts +42 -7
- package/dist/geo/map-layers.js +88 -62
- package/dist/geo/map-style.d.ts +12 -0
- package/dist/geo/map-style.js +43 -32
- package/dist/geo/messages.js +48 -45
- package/dist/geo/nominatim.js +88 -80
- package/dist/geo/osm-presets.d.ts +4 -3
- package/dist/geo/osm-presets.js +108 -86
- package/dist/geo/osm-tags.js +14 -12
- package/dist/geo/overpass.d.ts +14 -2
- package/dist/geo/overpass.js +83 -90
- package/dist/geo/shape-value.d.ts +9 -5
- package/dist/geo/shape-value.js +169 -146
- package/dist/geo/snap-to-roads.d.ts +3 -3
- package/dist/geo/snap-to-roads.js +55 -50
- package/dist/geo/throttle.js +36 -39
- package/dist/guards.d.ts +44 -0
- package/dist/guards.js +77 -0
- package/dist/i18n/default-messages.js +34 -29
- package/dist/i18n/english-messages.d.ts +172 -0
- package/dist/i18n/english-messages.js +359 -189
- package/dist/i18n/i18n.d.ts +2 -2
- package/dist/i18n/i18n.js +47 -60
- package/dist/i18n/inflection.d.ts +34 -0
- package/dist/i18n/inflection.js +82 -0
- package/dist/i18n/messages.d.ts +10 -2
- package/dist/i18n/messages.js +17 -4
- package/dist/i18n/missing-keys.d.ts +4 -0
- package/dist/i18n/missing-keys.js +70 -62
- package/dist/i18n/translatable.d.ts +16 -1
- package/dist/i18n/translatable.js +40 -47
- package/dist/index.d.ts +87 -39
- package/dist/index.js +54 -301
- package/dist/json/deep-equal.d.ts +8 -0
- package/dist/json/deep-equal.js +24 -0
- package/dist/json/strip-json-comments.js +38 -42
- package/dist/noop.d.ts +2 -0
- package/dist/noop.js +4 -0
- package/dist/notification/error-message.d.ts +2 -0
- package/dist/notification/error-message.js +10 -0
- package/dist/notification/notification-store.d.ts +3 -2
- package/dist/notification/notification-store.js +41 -45
- package/dist/onboarding-tour/placement.d.ts +2 -0
- package/dist/onboarding-tour/placement.js +65 -78
- package/dist/onboarding-tour/tour-controller.js +46 -54
- package/dist/realtime/add-events-for-mutations.js +75 -81
- package/dist/realtime/announce-lock.js +16 -13
- package/dist/realtime/broadcast-channel-transport.js +65 -59
- package/dist/realtime/copy-members.js +22 -14
- package/dist/realtime/in-memory-lock-provider.js +40 -48
- package/dist/realtime/live.js +95 -101
- package/dist/realtime/lock-options.js +16 -16
- package/dist/realtime/lock-session.js +91 -78
- package/dist/realtime/memory-transport.js +25 -25
- package/dist/realtime/presence.js +120 -122
- package/dist/realtime/realtime-data-provider.d.ts +10 -0
- package/dist/realtime/realtime-data-provider.js +45 -42
- package/dist/realtime/reconnect-backoff.js +17 -0
- package/dist/realtime/sse-transport.d.ts +31 -0
- package/dist/realtime/sse-transport.js +235 -0
- package/dist/realtime/status-store.js +23 -28
- package/dist/realtime/topic-hub.js +62 -71
- package/dist/realtime/topics.js +10 -12
- package/dist/realtime/types.js +10 -12
- package/dist/realtime/unread-count.js +21 -21
- package/dist/realtime/websocket-transport.d.ts +32 -0
- package/dist/realtime/websocket-transport.js +306 -0
- package/dist/resource/describe-resource.d.ts +2 -0
- package/dist/resource/describe-resource.js +247 -219
- package/dist/resource/get-at-path.js +29 -14
- package/dist/resource/identifier.d.ts +18 -0
- package/dist/resource/identifier.js +27 -0
- package/dist/resource/record.d.ts +4 -0
- package/dist/resource/record.js +10 -0
- package/dist/resource/register.d.ts +7 -0
- package/dist/resource/registry-store.d.ts +45 -15
- package/dist/resource/registry-store.js +67 -60
- package/dist/resource/registry.d.ts +10 -0
- package/dist/resource/registry.js +8 -4
- package/dist/resource/source-path.d.ts +23 -2
- package/dist/rich-text/rich-text-extras.d.ts +134 -0
- package/dist/rich-text/rich-text-extras.js +181 -0
- package/dist/rich-text/rich-text-image.d.ts +124 -0
- package/dist/rich-text/rich-text-image.js +163 -0
- package/dist/rich-text/rich-text.d.ts +6 -0
- package/dist/rich-text/rich-text.js +125 -88
- package/dist/router/location.d.ts +24 -4
- package/dist/router/location.js +43 -18
- package/dist/router/match.js +47 -39
- package/dist/router/paths.js +40 -34
- package/dist/router/record-from-location.d.ts +1 -1
- package/dist/router/record-from-location.js +25 -17
- package/dist/store/adapters.js +51 -55
- package/dist/store/micro-store.js +57 -59
- package/dist/store/shallow-equal.d.ts +12 -0
- package/dist/store/shallow-equal.js +20 -0
- package/dist/store/store.js +54 -57
- package/dist/ui-defaults.d.ts +15 -0
- package/dist/ui-defaults.js +17 -0
- package/package.json +13 -11
package/dist/csv/run-import.js
CHANGED
|
@@ -1,76 +1,73 @@
|
|
|
1
|
+
// src/csv/run-import.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates the valid rows `batchSize` at a time, each with its own `create`
|
|
4
|
+
* call, since `DataProvider` has no bulk create. A rejected create is recorded
|
|
5
|
+
* and the import goes on. An aborted `signal` stops before the next batch.
|
|
6
|
+
*/
|
|
1
7
|
async function runCsvImport(options) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
total: validations.length,
|
|
56
|
-
created,
|
|
57
|
-
failed: errors.length,
|
|
58
|
-
errors,
|
|
59
|
-
aborted
|
|
60
|
-
};
|
|
8
|
+
const { dataProvider, resource, validations, batchSize = 100, signal, onProgress } = options;
|
|
9
|
+
if (!(batchSize >= 1)) throw new RangeError(`batchSize must be at least 1, got ${batchSize}`);
|
|
10
|
+
const size = Math.floor(batchSize);
|
|
11
|
+
const errors = [];
|
|
12
|
+
const valid = [];
|
|
13
|
+
validations.forEach((validation, rowIndex) => {
|
|
14
|
+
if (validation.ok) valid.push({
|
|
15
|
+
rowIndex,
|
|
16
|
+
row: validation.row
|
|
17
|
+
});
|
|
18
|
+
else errors.push({
|
|
19
|
+
rowIndex,
|
|
20
|
+
row: validation.row,
|
|
21
|
+
reason: validation.issues.join("; ")
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
let created = 0;
|
|
25
|
+
let current = 0;
|
|
26
|
+
let aborted = false;
|
|
27
|
+
for (let start = 0; start < valid.length; start += size) {
|
|
28
|
+
if (signal?.aborted) {
|
|
29
|
+
aborted = true;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
const batch = valid.slice(start, start + size);
|
|
33
|
+
(await Promise.allSettled(batch.map(({ row }) => dataProvider.create(resource, { data: row })))).forEach((result, i) => {
|
|
34
|
+
if (result.status === "fulfilled") {
|
|
35
|
+
created += 1;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const item = batch[i];
|
|
39
|
+
if (!item) return;
|
|
40
|
+
const { rowIndex, row } = item;
|
|
41
|
+
errors.push({
|
|
42
|
+
rowIndex,
|
|
43
|
+
row,
|
|
44
|
+
reason: result.reason instanceof Error ? result.reason.message : String(result.reason)
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
current += batch.length;
|
|
48
|
+
onProgress?.({
|
|
49
|
+
current,
|
|
50
|
+
total: valid.length
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
errors.sort((a, b) => a.rowIndex - b.rowIndex);
|
|
54
|
+
return {
|
|
55
|
+
total: validations.length,
|
|
56
|
+
created,
|
|
57
|
+
failed: errors.length,
|
|
58
|
+
errors,
|
|
59
|
+
aborted
|
|
60
|
+
};
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* One flat row per error, `rowIndex` and `reason` first, for the error
|
|
64
|
+
* download. A row field named `rowIndex` or `reason` loses to the real values.
|
|
65
|
+
*/
|
|
62
66
|
function csvErrorRows(report) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
([key]) => key !== "rowIndex" && key !== "reason"
|
|
69
|
-
)
|
|
70
|
-
)
|
|
71
|
-
}));
|
|
67
|
+
return report.errors.map(({ rowIndex, reason, row }) => ({
|
|
68
|
+
rowIndex,
|
|
69
|
+
reason,
|
|
70
|
+
...Object.fromEntries(Object.entries(row).filter(([key]) => key !== "rowIndex" && key !== "reason"))
|
|
71
|
+
}));
|
|
72
72
|
}
|
|
73
|
-
export {
|
|
74
|
-
csvErrorRows,
|
|
75
|
-
runCsvImport
|
|
76
|
-
};
|
|
73
|
+
export { csvErrorRows, runCsvImport };
|
|
@@ -6,7 +6,7 @@ export declare function applyCsvMapping(row: Record<string, unknown>, mapping: R
|
|
|
6
6
|
* Lists a zod object's keys, and the ones whose schema is not optional. Any
|
|
7
7
|
* other schema has no `shape` to read and yields no fields.
|
|
8
8
|
*/
|
|
9
|
-
export declare function csvSchemaFields(schema:
|
|
9
|
+
export declare function csvSchemaFields(schema: StandardSchemaV1 | undefined): {
|
|
10
10
|
fields: string[];
|
|
11
11
|
required: string[];
|
|
12
12
|
};
|
|
@@ -1,58 +1,71 @@
|
|
|
1
|
+
// src/csv/validate-rows.ts
|
|
2
|
+
/** Copies `row[header]` to `field` for each mapping entry; a field mapped to `""` is skipped. */
|
|
1
3
|
function applyCsvMapping(row, mapping) {
|
|
2
|
-
|
|
3
|
-
Object.entries(mapping).filter(([, header]) => header !== "").map(([field, header]) => [field, row[header]])
|
|
4
|
-
);
|
|
4
|
+
return Object.fromEntries(Object.entries(mapping).filter(([, header]) => header !== "").map(([field, header]) => [field, row[header]]));
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Lists a zod object's keys, and the ones whose schema is not optional. Any
|
|
8
|
+
* other schema has no `shape` to read and yields no fields.
|
|
9
|
+
*/
|
|
6
10
|
function csvSchemaFields(schema) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
11
|
+
const shape = schema && "shape" in schema ? schema.shape : void 0;
|
|
12
|
+
if (typeof shape !== "object" || shape === null) return {
|
|
13
|
+
fields: [],
|
|
14
|
+
required: []
|
|
15
|
+
};
|
|
16
|
+
const entries = Object.entries(shape);
|
|
17
|
+
return {
|
|
18
|
+
fields: entries.map(([key]) => key),
|
|
19
|
+
required: entries.filter(([, field]) => !isOptionalField(field)).map(([key]) => key)
|
|
20
|
+
};
|
|
18
21
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
var isOptionalField = (field) => typeof field === "object" && field !== null && "isOptional" in field && typeof field.isOptional === "function" && Boolean(field.isOptional());
|
|
23
|
+
var message = (error) => error instanceof Error ? error.message : String(error);
|
|
24
|
+
var issuePath = (path) => (path ?? []).map((segment) => typeof segment === "object" ? String(segment.key) : String(segment)).join(".");
|
|
25
|
+
/**
|
|
26
|
+
* Maps each row, runs `transform`, then the schema, and returns one verdict
|
|
27
|
+
* per row. A valid row carries the schema's output, so a coercion shows in it.
|
|
28
|
+
* A transform or schema that throws makes only its own row invalid.
|
|
29
|
+
*/
|
|
23
30
|
async function validateCsvRows(rows, options) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
31
|
+
const { mapping, schema, transform } = options;
|
|
32
|
+
return Promise.all(rows.map(async (source, index) => {
|
|
33
|
+
let row = applyCsvMapping(source, mapping);
|
|
34
|
+
if (transform) try {
|
|
35
|
+
row = transform(row, index);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
row,
|
|
40
|
+
issues: [message(error)]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!schema) return {
|
|
44
|
+
ok: true,
|
|
45
|
+
row
|
|
46
|
+
};
|
|
47
|
+
let result;
|
|
48
|
+
try {
|
|
49
|
+
result = await schema["~standard"].validate(row);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
row,
|
|
54
|
+
issues: [message(error)]
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (!result.issues) return {
|
|
58
|
+
ok: true,
|
|
59
|
+
row: result.value
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
ok: false,
|
|
63
|
+
row,
|
|
64
|
+
issues: result.issues.map((issue) => {
|
|
65
|
+
const path = issuePath(issue.path);
|
|
66
|
+
return path === "" ? issue.message : `${path}: ${issue.message}`;
|
|
67
|
+
})
|
|
68
|
+
};
|
|
69
|
+
}));
|
|
53
70
|
}
|
|
54
|
-
export {
|
|
55
|
-
applyCsvMapping,
|
|
56
|
-
csvSchemaFields,
|
|
57
|
-
validateCsvRows
|
|
58
|
-
};
|
|
71
|
+
export { applyCsvMapping, csvSchemaFields, validateCsvRows };
|
package/dist/data/cache-ops.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import type { QueryClient } from "@tanstack/query-core";
|
|
2
2
|
import type { Identifier } from "../resource/identifier.js";
|
|
3
|
+
import type { LooseRecord, ResourceRecord } from "../resource/record.js";
|
|
3
4
|
/**
|
|
4
5
|
* Optimistically remove records: drop each `getOne` entry and filter the id(s)
|
|
5
6
|
* out of every cached `getList`, `getManyReference` and `getInfiniteList` page
|
|
6
7
|
* (decrementing `total` when known) and `getMany` entry.
|
|
7
8
|
*/
|
|
8
|
-
export declare function removeRecordsFromCache(queryClient: QueryClient, resource: string, ids: Identifier[]): void;
|
|
9
|
+
export declare function removeRecordsFromCache<TRecord extends ResourceRecord = LooseRecord>(queryClient: QueryClient, resource: string, ids: Identifier[]): void;
|
|
9
10
|
/**
|
|
10
11
|
* Optimistically patch records: shallow-merge `data` into each matching
|
|
11
12
|
* `getOne` entry and every matching row of every cached `getList`,
|
|
12
13
|
* `getManyReference`, `getInfiniteList` page and `getMany` entry.
|
|
13
14
|
*/
|
|
14
|
-
export declare function updateRecordsInCache(queryClient: QueryClient, resource: string, ids: Identifier[], data:
|
|
15
|
+
export declare function updateRecordsInCache<TRecord extends ResourceRecord = LooseRecord>(queryClient: QueryClient, resource: string, ids: Identifier[], data: Partial<NoInfer<TRecord>>): void;
|
|
15
16
|
/**
|
|
16
17
|
* Shallow-merge `data` into the matching rows of every cached `getList`,
|
|
17
18
|
* `getManyReference` and `getInfiniteList` page, and return a `rollback` that
|
|
@@ -19,12 +20,12 @@ export declare function updateRecordsInCache(queryClient: QueryClient, resource:
|
|
|
19
20
|
* when it is called, so another update's patch to a different row survives.
|
|
20
21
|
* An entry that holds none of the ids keeps its cached object.
|
|
21
22
|
*/
|
|
22
|
-
export declare function patchListEntries(queryClient: QueryClient, resource: string, idSet: Set<string>, data:
|
|
23
|
+
export declare function patchListEntries<TRecord extends ResourceRecord = LooseRecord>(queryClient: QueryClient, resource: string, idSet: Set<string>, data: Partial<NoInfer<TRecord>>): () => void;
|
|
23
24
|
/**
|
|
24
25
|
* Shallow-merge `data` into the matching records of every cached `getMany`
|
|
25
26
|
* entry (what `ReferenceField` and `ReferenceArrayField` read through).
|
|
26
27
|
*/
|
|
27
|
-
export declare function patchManyEntries(queryClient: QueryClient, resource: string, idSet: Set<string>, data:
|
|
28
|
+
export declare function patchManyEntries<TRecord extends ResourceRecord = LooseRecord>(queryClient: QueryClient, resource: string, idSet: Set<string>, data: Partial<NoInfer<TRecord>>): void;
|
|
28
29
|
/**
|
|
29
30
|
* Drop the matching records from every cached `getMany` entry (what
|
|
30
31
|
* `ReferenceField` and `ReferenceArrayField` read through). An entry that
|