fimo 0.4.0-experimental.4 → 0.4.0-staging.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.
- package/assets/content-templates/hooks-template.eta +66 -27
- package/assets/content-templates/types-template.eta +34 -15
- package/assets/skills/fimo/references/content.md +52 -35
- package/assets/skills/fimo-cli/references/content.md +12 -8
- package/assets/skills/fimo-migration/SKILL.md +1 -1
- package/assets/skills/fimo-migration/references/content.md +4 -4
- package/assets/skills/fimo-migration/references/import-contract.md +1 -1
- package/assets/skills/fimo-migration/references/manifest.md +1 -1
- package/assets/skills/fimo-migration/references/platforms.md +1 -1
- package/assets/skills/fimo-migration/references/workflow.md +1 -1
- package/assets/skills/fimo-migration/scripts/build-canonical-manifest.mjs +2 -2
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +121 -23
- package/dist/runtime/primitives/index.d.ts +2 -2
- package/dist/runtime/primitives/index.d.ts.map +1 -1
- package/dist/runtime/primitives/lib/index.d.ts +2 -2
- package/dist/runtime/primitives/lib/index.d.ts.map +1 -1
- package/dist/runtime/primitives/lib/primitives.d.ts +5 -0
- package/dist/runtime/primitives/lib/primitives.d.ts.map +1 -1
- package/dist/runtime/primitives/lib/query.d.ts +12 -12
- package/dist/runtime/primitives/lib/query.d.ts.map +1 -1
- package/dist/runtime/primitives/public-surface.test.js +4 -4
- package/dist/scripts/generated-types.test.d.ts +1 -0
- package/dist/scripts/generated-types.test.js +172 -0
- package/dist/scripts/sync-schemas.js +25 -6
- package/dist/scripts/sync-schemas.test.js +10 -10
- package/dist/scripts/validate-schemas.js +48 -13
- package/dist/scripts/validate-schemas.test.js +13 -13
- package/package.json +1 -1
- package/scripts/lib/release-core.mjs +24 -0
- package/scripts/lib/release-core.test.ts +37 -2
- package/scripts/publish-npm.mjs +4 -9
- package/templates/react-router/package.json +1 -1
|
@@ -37,7 +37,7 @@ Use these notes to decide what is source of truth and what must be rebuilt.
|
|
|
37
37
|
- Wix/Velo app logic, dynamic pages, search, forms, ecommerce, auth, and member
|
|
38
38
|
areas need explicit replacement plans.
|
|
39
39
|
- Large collections may be split across several files. Preserve stable IDs if
|
|
40
|
-
present so
|
|
40
|
+
present so references can be reconstructed later.
|
|
41
41
|
|
|
42
42
|
## Carrd and static exports
|
|
43
43
|
|
|
@@ -85,7 +85,7 @@ Before writing page code:
|
|
|
85
85
|
2. Map each CMS export or inferred collection to a Fimo schema or unresolved item.
|
|
86
86
|
3. Preserve stable source IDs, slugs, dates, SEO, authors, categories, tags,
|
|
87
87
|
locales, and publish status.
|
|
88
|
-
4. Decide which
|
|
88
|
+
4. Decide which references are real. Do not invent references from vague text.
|
|
89
89
|
5. Build seed/import entries with source IDs and media references preserved.
|
|
90
90
|
6. Record source count and planned import count for each content type.
|
|
91
91
|
|
|
@@ -222,7 +222,7 @@ function normalizeSourceContentTypes(contentTypes) {
|
|
|
222
222
|
plannedCount: numberOrNull(type.plannedCount),
|
|
223
223
|
importedCount: numberOrNull(type.importedCount),
|
|
224
224
|
fields: type.fields ?? {},
|
|
225
|
-
|
|
225
|
+
references: type.references ?? [],
|
|
226
226
|
}));
|
|
227
227
|
}
|
|
228
228
|
|
|
@@ -240,7 +240,7 @@ function normalizeUrlCollections(collections) {
|
|
|
240
240
|
plannedCount: asArray(collection.sourceRoutes).length,
|
|
241
241
|
importedCount: 0,
|
|
242
242
|
fields: Object.fromEntries(asArray(collection.fields).map((field) => [field, { source: field }])),
|
|
243
|
-
|
|
243
|
+
references: [],
|
|
244
244
|
notes: ['Inferred from crawled route patterns. Review before import.'],
|
|
245
245
|
}));
|
|
246
246
|
}
|
package/dist/cli/bundle.json
CHANGED
package/dist/cli/index.js
CHANGED
|
@@ -42008,7 +42008,7 @@ var init_common = __esm({
|
|
|
42008
42008
|
"boolean",
|
|
42009
42009
|
"date",
|
|
42010
42010
|
"json",
|
|
42011
|
-
"
|
|
42011
|
+
"reference"
|
|
42012
42012
|
]);
|
|
42013
42013
|
RESERVED_CONTENT_FIELD_NAMES = [
|
|
42014
42014
|
"id",
|
|
@@ -42152,6 +42152,57 @@ var init_realtime = __esm({
|
|
|
42152
42152
|
}
|
|
42153
42153
|
});
|
|
42154
42154
|
|
|
42155
|
+
// ../../packages/api-contracts/dist/esm/types/references.js
|
|
42156
|
+
function referenceDocumentId(value) {
|
|
42157
|
+
if (typeof value === "string") {
|
|
42158
|
+
return value;
|
|
42159
|
+
}
|
|
42160
|
+
if (value && typeof value === "object" && "documentId" in value) {
|
|
42161
|
+
const documentId = value.documentId;
|
|
42162
|
+
return typeof documentId === "string" ? documentId : null;
|
|
42163
|
+
}
|
|
42164
|
+
return null;
|
|
42165
|
+
}
|
|
42166
|
+
function toReferenceValue(value) {
|
|
42167
|
+
const documentId = referenceDocumentId(value);
|
|
42168
|
+
return documentId ? {
|
|
42169
|
+
documentId
|
|
42170
|
+
} : null;
|
|
42171
|
+
}
|
|
42172
|
+
function referenceContentType(value) {
|
|
42173
|
+
if (value && typeof value === "object" && "contentType" in value) {
|
|
42174
|
+
const contentType = value.contentType;
|
|
42175
|
+
return typeof contentType === "string" && contentType.length > 0 ? contentType : null;
|
|
42176
|
+
}
|
|
42177
|
+
return null;
|
|
42178
|
+
}
|
|
42179
|
+
function toPolymorphicReferenceValue(value) {
|
|
42180
|
+
const documentId = referenceDocumentId(value);
|
|
42181
|
+
const contentType = referenceContentType(value);
|
|
42182
|
+
return documentId && contentType ? {
|
|
42183
|
+
contentType,
|
|
42184
|
+
documentId
|
|
42185
|
+
} : null;
|
|
42186
|
+
}
|
|
42187
|
+
var ReferenceValueSchema, PolymorphicReferenceValueSchema;
|
|
42188
|
+
var init_references = __esm({
|
|
42189
|
+
"../../packages/api-contracts/dist/esm/types/references.js"() {
|
|
42190
|
+
"use strict";
|
|
42191
|
+
init_zod();
|
|
42192
|
+
__name(referenceDocumentId, "referenceDocumentId");
|
|
42193
|
+
__name(toReferenceValue, "toReferenceValue");
|
|
42194
|
+
ReferenceValueSchema = external_exports.preprocess((value) => toReferenceValue(value) ?? value, external_exports.object({
|
|
42195
|
+
documentId: external_exports.uuid()
|
|
42196
|
+
}));
|
|
42197
|
+
__name(referenceContentType, "referenceContentType");
|
|
42198
|
+
__name(toPolymorphicReferenceValue, "toPolymorphicReferenceValue");
|
|
42199
|
+
PolymorphicReferenceValueSchema = external_exports.preprocess((value) => toPolymorphicReferenceValue(value) ?? value, external_exports.object({
|
|
42200
|
+
contentType: external_exports.string().min(1),
|
|
42201
|
+
documentId: external_exports.uuid()
|
|
42202
|
+
}));
|
|
42203
|
+
}
|
|
42204
|
+
});
|
|
42205
|
+
|
|
42155
42206
|
// ../../packages/api-contracts/dist/esm/types/audit-log.js
|
|
42156
42207
|
var AUDIT_ACTIONS, AuditActionSchema, AUDIT_OUTCOMES, AuditOutcomeSchema, AUDIT_ACTOR_KINDS, AuditActorKindSchema;
|
|
42157
42208
|
var init_audit_log = __esm({
|
|
@@ -45513,6 +45564,7 @@ var init_esm = __esm({
|
|
|
45513
45564
|
init_attachments();
|
|
45514
45565
|
init_env2();
|
|
45515
45566
|
init_realtime();
|
|
45567
|
+
init_references();
|
|
45516
45568
|
init_audit_log();
|
|
45517
45569
|
init_project_dto();
|
|
45518
45570
|
init_project_env_dto();
|
|
@@ -47106,6 +47158,7 @@ function normalizeFields(fields) {
|
|
|
47106
47158
|
}
|
|
47107
47159
|
const field = value;
|
|
47108
47160
|
const target = typeof field.target === "string" ? field.target : void 0;
|
|
47161
|
+
const targets = Array.isArray(field.targets) ? field.targets.filter((candidate) => typeof candidate === "string") : void 0;
|
|
47109
47162
|
return [
|
|
47110
47163
|
key,
|
|
47111
47164
|
{
|
|
@@ -47113,6 +47166,8 @@ function normalizeFields(fields) {
|
|
|
47113
47166
|
type: typeof field.type === "string" ? field.type : void 0,
|
|
47114
47167
|
target,
|
|
47115
47168
|
targetPascal: target ? pascalCase(target) : void 0,
|
|
47169
|
+
targets: targets && targets.length > 0 ? targets : void 0,
|
|
47170
|
+
targetRefs: targets && targets.length > 0 ? targets.map((candidate) => ({ uid: candidate, pascal: pascalCase(candidate) })) : void 0,
|
|
47116
47171
|
many: typeof field.many === "boolean" ? field.many : void 0,
|
|
47117
47172
|
multiple: typeof field.multiple === "boolean" ? field.multiple : void 0
|
|
47118
47173
|
}
|
|
@@ -47120,13 +47175,19 @@ function normalizeFields(fields) {
|
|
|
47120
47175
|
})
|
|
47121
47176
|
);
|
|
47122
47177
|
}
|
|
47123
|
-
function
|
|
47178
|
+
function referenceImportsFor(schema, fields) {
|
|
47124
47179
|
const imports = /* @__PURE__ */ new Map();
|
|
47125
47180
|
for (const field of Object.values(fields)) {
|
|
47126
|
-
if (field.type !== "
|
|
47181
|
+
if (field.type !== "reference") {
|
|
47127
47182
|
continue;
|
|
47128
47183
|
}
|
|
47129
|
-
|
|
47184
|
+
const targets = field.targets ?? (field.target ? [field.target] : []);
|
|
47185
|
+
for (const target of targets) {
|
|
47186
|
+
if (target === schema.uid) {
|
|
47187
|
+
continue;
|
|
47188
|
+
}
|
|
47189
|
+
imports.set(target, { uid: target, pascal: pascalCase(target) });
|
|
47190
|
+
}
|
|
47130
47191
|
}
|
|
47131
47192
|
return [...imports.values()].sort((a, b) => a.pascal.localeCompare(b.pascal));
|
|
47132
47193
|
}
|
|
@@ -47137,9 +47198,15 @@ function schemaToModel(schema, localizedByUid) {
|
|
|
47137
47198
|
pascal: pascalCase(schema.uid),
|
|
47138
47199
|
isSingleton: schema.isSingleton ?? false,
|
|
47139
47200
|
localized: schema.i18n?.enabled !== false,
|
|
47140
|
-
|
|
47201
|
+
localizedReferenceFields: Object.entries(fields).filter(([, field]) => {
|
|
47202
|
+
if (field.type !== "reference") {
|
|
47203
|
+
return false;
|
|
47204
|
+
}
|
|
47205
|
+
const targets = field.targets ?? (field.target ? [field.target] : []);
|
|
47206
|
+
return targets.some((target) => localizedByUid.get(target) !== false);
|
|
47207
|
+
}).map(([fieldName]) => fieldName),
|
|
47141
47208
|
fields,
|
|
47142
|
-
|
|
47209
|
+
referenceImports: referenceImportsFor(schema, fields)
|
|
47143
47210
|
};
|
|
47144
47211
|
}
|
|
47145
47212
|
function syncSchemas(options = {}) {
|
|
@@ -47246,7 +47313,7 @@ var init_sync_schemas = __esm({
|
|
|
47246
47313
|
__name(getSchemaFiles, "getSchemaFiles");
|
|
47247
47314
|
__name(readSchema, "readSchema");
|
|
47248
47315
|
__name(normalizeFields, "normalizeFields");
|
|
47249
|
-
__name(
|
|
47316
|
+
__name(referenceImportsFor, "referenceImportsFor");
|
|
47250
47317
|
__name(schemaToModel, "schemaToModel");
|
|
47251
47318
|
__name(syncSchemas, "syncSchemas");
|
|
47252
47319
|
}
|
|
@@ -103088,34 +103155,65 @@ function validateSchemaFile(absolutePath, file2, schemaUids = /* @__PURE__ */ ne
|
|
|
103088
103155
|
file: file2
|
|
103089
103156
|
});
|
|
103090
103157
|
}
|
|
103091
|
-
if (type === "
|
|
103092
|
-
const { target, many } = definition;
|
|
103093
|
-
if (
|
|
103158
|
+
if (type === "reference") {
|
|
103159
|
+
const { target, targets, many } = definition;
|
|
103160
|
+
if (targets !== void 0 && target !== void 0) {
|
|
103161
|
+
errors2.push({
|
|
103162
|
+
rule: "schemas/reference-target",
|
|
103163
|
+
message: `Reference field "${fieldName}" declares both "target" and "targets" \u2014 a field is fixed or polymorphic, never both.`,
|
|
103164
|
+
file: file2
|
|
103165
|
+
});
|
|
103166
|
+
} else if (targets !== void 0) {
|
|
103167
|
+
const targetList = Array.isArray(targets) ? targets : null;
|
|
103168
|
+
if (!targetList || targetList.length === 0 || new Set(targetList).size !== targetList.length) {
|
|
103169
|
+
errors2.push({
|
|
103170
|
+
rule: "schemas/reference-target",
|
|
103171
|
+
message: `Reference field "${fieldName}" must declare "targets" as a non-empty array of unique content types.`,
|
|
103172
|
+
file: file2
|
|
103173
|
+
});
|
|
103174
|
+
} else {
|
|
103175
|
+
for (const candidate of targetList) {
|
|
103176
|
+
if (typeof candidate !== "string" || !CONTENT_TYPE_NAME_PATTERN.test(candidate)) {
|
|
103177
|
+
errors2.push({
|
|
103178
|
+
rule: "schemas/reference-target",
|
|
103179
|
+
message: `Reference field "${fieldName}" has an invalid entry in "targets".`,
|
|
103180
|
+
file: file2
|
|
103181
|
+
});
|
|
103182
|
+
} else if (schemaUids.size > 0 && !schemaUids.has(candidate)) {
|
|
103183
|
+
errors2.push({
|
|
103184
|
+
rule: "schemas/reference-target",
|
|
103185
|
+
message: `Reference field "${fieldName}" targets unknown schema "${candidate}".`,
|
|
103186
|
+
file: file2
|
|
103187
|
+
});
|
|
103188
|
+
}
|
|
103189
|
+
}
|
|
103190
|
+
}
|
|
103191
|
+
} else if (typeof target !== "string" || !CONTENT_TYPE_NAME_PATTERN.test(target)) {
|
|
103094
103192
|
errors2.push({
|
|
103095
|
-
rule: "schemas/
|
|
103096
|
-
message: `
|
|
103193
|
+
rule: "schemas/reference-target",
|
|
103194
|
+
message: `Reference field "${fieldName}" must declare a valid "target" content type (or "targets" for a polymorphic field).`,
|
|
103097
103195
|
file: file2
|
|
103098
103196
|
});
|
|
103099
103197
|
} else if (schemaUids.size > 0 && !schemaUids.has(target)) {
|
|
103100
103198
|
errors2.push({
|
|
103101
|
-
rule: "schemas/
|
|
103102
|
-
message: `
|
|
103199
|
+
rule: "schemas/reference-target",
|
|
103200
|
+
message: `Reference field "${fieldName}" targets unknown schema "${target}".`,
|
|
103103
103201
|
file: file2
|
|
103104
103202
|
});
|
|
103105
103203
|
}
|
|
103106
103204
|
if (many !== void 0 && typeof many !== "boolean") {
|
|
103107
103205
|
errors2.push({
|
|
103108
|
-
rule: "schemas/
|
|
103109
|
-
message: `
|
|
103206
|
+
rule: "schemas/reference-many",
|
|
103207
|
+
message: `Reference field "${fieldName}" must use a boolean "many" value.`,
|
|
103110
103208
|
file: file2
|
|
103111
103209
|
});
|
|
103112
103210
|
}
|
|
103113
103211
|
} else {
|
|
103114
|
-
for (const
|
|
103115
|
-
if (
|
|
103212
|
+
for (const referenceOnlyKey of ["target", "targets", "many"]) {
|
|
103213
|
+
if (referenceOnlyKey in definition) {
|
|
103116
103214
|
errors2.push({
|
|
103117
|
-
rule: "schemas/
|
|
103118
|
-
message: `Field "${fieldName}": "${
|
|
103215
|
+
rule: "schemas/reference-shape",
|
|
103216
|
+
message: `Field "${fieldName}": "${referenceOnlyKey}" is only supported on reference fields.`,
|
|
103119
103217
|
file: file2
|
|
103120
103218
|
});
|
|
103121
103219
|
}
|
|
@@ -104893,8 +104991,8 @@ function fieldSignature(field) {
|
|
|
104893
104991
|
const type = typeof f.type === "string" ? f.type : "unknown";
|
|
104894
104992
|
const required2 = f.required === true;
|
|
104895
104993
|
const parts = [];
|
|
104896
|
-
if (type === "
|
|
104897
|
-
parts.push(`
|
|
104994
|
+
if (type === "reference" && typeof f.target === "string") {
|
|
104995
|
+
parts.push(`reference(${f.target})`);
|
|
104898
104996
|
} else if (type === "enum" && Array.isArray(f.options)) {
|
|
104899
104997
|
parts.push(`enum(${f.options.map(String).join("|")})`);
|
|
104900
104998
|
} else if (type === "number") {
|
|
@@ -110196,7 +110294,7 @@ schemas2.command("get").description("Get a schema by type name").argument("<type
|
|
|
110196
110294
|
schemas2.command("push").description("Push schema JSON files to the API (create or update)").argument("[typeName]", "Schema name to push (omit to push all)").option("-C, --cwd <dir>", "Project directory").action(schemaPushCommand);
|
|
110197
110295
|
schemas2.command("delete").description("Delete a schema by type name").argument("<typeName>", "Content type name").option("-C, --cwd <dir>", "Project directory").action(schemaDeleteCommand);
|
|
110198
110296
|
var entries = program.command("entries").description("Manage content entries");
|
|
110199
|
-
entries.command("list").description("List entries of a content type").argument("<typeName>", "Content type name").option("-C, --cwd <dir>", "Project directory").option("--limit <n>", "Max entries to return").option("--offset <n>", "Offset for pagination").option("--search <query>", "Search query").option("--where <json>", `JSON filter object, e.g. '{"featured":true}'`).option("--sort <field>", "Sort field, prefix with - for descending").option("--fields <fields>", "Comma-separated fields to return, e.g. slug,title,excerpt").option("--populate <fields>", "Comma-separated
|
|
110297
|
+
entries.command("list").description("List entries of a content type").argument("<typeName>", "Content type name").option("-C, --cwd <dir>", "Project directory").option("--limit <n>", "Max entries to return").option("--offset <n>", "Offset for pagination").option("--search <query>", "Search query").option("--where <json>", `JSON filter object, e.g. '{"featured":true}'`).option("--sort <field>", "Sort field, prefix with - for descending").option("--fields <fields>", "Comma-separated fields to return, e.g. slug,title,excerpt").option("--populate <fields>", "Comma-separated reference fields to populate, e.g. author,contributors").option("--locale <locale>", "Locale to list (default en)").option("--sort-by <field>", "Sort field").option("--sort-direction <dir>", "Sort direction (asc|desc)").action(entriesListCommand);
|
|
110200
110298
|
entries.command("get").description("Get a single entry").argument("<typeName>", "Content type name").argument("<id>", "Entry ID").option("-C, --cwd <dir>", "Project directory").option("--locale <locale>", "Locale to read (default en)").action(entriesGetCommand);
|
|
110201
110299
|
entries.command("create").description("Create a new entry").argument("<typeName>", "Content type name").option("-C, --cwd <dir>", "Project directory").requiredOption("--body <json>", "Entry JSON body (slug + data)").option("--locale <locale>", "Entry locale (default en)").option("--document-id <id>", "Document ID shared by localized variants").action(entriesCreateCommand);
|
|
110202
110300
|
entries.command("update").description("Update an existing entry").argument("<typeName>", "Content type name").argument("<id>", "Entry ID").option("-C, --cwd <dir>", "Project directory").requiredOption("--body <json>", "Updated entry JSON body").option("--locale <locale>", "Entry locale").option("--document-id <id>", "Document ID shared by localized variants").action(entriesUpdateCommand);
|
|
@@ -6,6 +6,6 @@ export { Date } from './components/Date.js';
|
|
|
6
6
|
export { Boolean } from './components/Boolean.js';
|
|
7
7
|
export { RichText } from './components/RichText.js';
|
|
8
8
|
export { useLabels, useTranslations } from './translations.js';
|
|
9
|
-
export { FimoString, FimoDate, FimoMedia, FimoBoolean, FimoRichText, type FimoReference, type FimoSource, type FimoPart, type FimoRichTextContent, type FimoRichTextNodeProps, type FimoRichTextMarkProps, type FimoRichTextComponents, FIMO_SOURCE, FIMO_PARTS, isFimoString, isFimoDate, hasFimoSource, getFimoSource, getFimoParts, fimo, useFimoLiveValue, } from './lib/index.js';
|
|
10
|
-
export type { BoolOps, DateOps, Field, Fields, FilterFor, NullOnlyOps, NumberOps, Populate, Populated, PopulatedResult, Projected, ProjectedWithPopulate, Query,
|
|
9
|
+
export { FimoString, FimoDate, FimoMedia, FimoBoolean, FimoRichText, type FimoPolymorphicReference, type FimoReference, type FimoSource, type FimoPart, type FimoRichTextContent, type FimoRichTextNodeProps, type FimoRichTextMarkProps, type FimoRichTextComponents, FIMO_SOURCE, FIMO_PARTS, isFimoString, isFimoDate, hasFimoSource, getFimoSource, getFimoParts, fimo, useFimoLiveValue, } from './lib/index.js';
|
|
10
|
+
export type { BoolOps, DateOps, Field, Fields, FilterFor, NullOnlyOps, NumberOps, Populate, Populated, PopulatedResult, Projected, ProjectedWithPopulate, Query, ReferenceField, ReferenceMap, ScalarOps, Sort, SortField, StringOps, WithReferences, Where, } from './lib/index.js';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/primitives/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/primitives/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,cAAc,EACd,KAAK,GACN,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { FimoString, FimoDate, FimoMedia, FimoBoolean, FimoRichText, type FimoReference, type FimoSource, type FimoPart, type FimoRichTextContent, type FimoRichTextNodeProps, type FimoRichTextMarkProps, type FimoRichTextComponents, FIMO_SOURCE, FIMO_PARTS, isFimoString, isFimoDate, hasFimoSource, getFimoSource, getFimoParts, } from './primitives.js';
|
|
1
|
+
export { FimoString, FimoDate, FimoMedia, FimoBoolean, FimoRichText, type FimoPolymorphicReference, type FimoReference, type FimoSource, type FimoPart, type FimoRichTextContent, type FimoRichTextNodeProps, type FimoRichTextMarkProps, type FimoRichTextComponents, FIMO_SOURCE, FIMO_PARTS, isFimoString, isFimoDate, hasFimoSource, getFimoSource, getFimoParts, } from './primitives.js';
|
|
2
2
|
export { fimo } from './template.js';
|
|
3
3
|
export { useFimoLiveValue } from './useFimoLiveValue.js';
|
|
4
|
-
export type { BoolOps, DateOps, Field, Fields, FilterFor, NullOnlyOps, NumberOps, Populate, Populated, PopulatedResult, ProjectedWithPopulate, Projected, Query,
|
|
4
|
+
export type { BoolOps, DateOps, Field, Fields, FilterFor, NullOnlyOps, NumberOps, Populate, Populated, PopulatedResult, ProjectedWithPopulate, Projected, Query, ReferenceField, ReferenceMap, ScalarOps, Sort, SortField, StringOps, Where, WithReferences, } from './query.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/primitives/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,YAAY,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/primitives/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,EACZ,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,YAAY,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,EACL,cAAc,GACf,MAAM,YAAY,CAAC"}
|
|
@@ -11,6 +11,11 @@ export interface FimoSource {
|
|
|
11
11
|
export interface FimoReference {
|
|
12
12
|
documentId: string;
|
|
13
13
|
}
|
|
14
|
+
/** Polymorphic reference value: the schema names a target set, so every value carries its own type. */
|
|
15
|
+
export interface FimoPolymorphicReference {
|
|
16
|
+
contentType: string;
|
|
17
|
+
documentId: string;
|
|
18
|
+
}
|
|
14
19
|
export declare const FIMO_SOURCE: unique symbol;
|
|
15
20
|
export declare const FIMO_PARTS: unique symbol;
|
|
16
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../src/runtime/primitives/lib/primitives.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../src/runtime/primitives/lib/primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FimoBoolean, FimoDate, FimoMedia, FimoReference, FimoRichText, FimoString } from './primitives.js';
|
|
1
|
+
import type { FimoBoolean, FimoDate, FimoMedia, FimoPolymorphicReference, FimoReference, FimoRichText, FimoString } from './primitives.js';
|
|
2
2
|
export type ScalarOps<T> = {
|
|
3
3
|
$eq?: T;
|
|
4
4
|
$ne?: T;
|
|
@@ -25,14 +25,14 @@ export type BoolOps = ScalarOps<boolean>;
|
|
|
25
25
|
export type NullOnlyOps = {
|
|
26
26
|
$null?: boolean;
|
|
27
27
|
};
|
|
28
|
-
export type
|
|
28
|
+
export type ReferenceOps = {
|
|
29
29
|
$eq?: string | null;
|
|
30
30
|
$ne?: string | null;
|
|
31
31
|
$in?: string[];
|
|
32
32
|
$nin?: string[];
|
|
33
33
|
$null?: boolean;
|
|
34
34
|
};
|
|
35
|
-
export type
|
|
35
|
+
export type ManyReferenceOps = {
|
|
36
36
|
$eq?: string;
|
|
37
37
|
$ne?: string;
|
|
38
38
|
$in?: string[];
|
|
@@ -40,7 +40,7 @@ export type ManyRelationOps = {
|
|
|
40
40
|
$contains?: string;
|
|
41
41
|
$null?: boolean;
|
|
42
42
|
};
|
|
43
|
-
export type FilterFor<T> = [T] extends [FimoString | string] ? string | StringOps : [T] extends [FimoBoolean | boolean] ? boolean | BoolOps : [T] extends [FimoDate | Date] ? string | DateOps : [T] extends [number] ? number | NumberOps : [T] extends [FimoReference | null] ? string | null |
|
|
43
|
+
export type FilterFor<T> = [T] extends [FimoString | string] ? string | StringOps : [T] extends [FimoBoolean | boolean] ? boolean | BoolOps : [T] extends [FimoDate | Date] ? string | DateOps : [T] extends [number] ? number | NumberOps : [T] extends [FimoPolymorphicReference | null] ? never : [T] extends [FimoPolymorphicReference[]] ? never : [T] extends [FimoReference | null] ? string | null | ReferenceOps : [T] extends [FimoReference[]] ? string | ManyReferenceOps : [T] extends [FimoMedia | FimoMedia[]] ? NullOnlyOps : [T] extends [FimoRichText] ? string | StringOps : NullOnlyOps;
|
|
44
44
|
type BaseTopLevelWhere = {
|
|
45
45
|
id?: string | StringOps;
|
|
46
46
|
documentId?: string | StringOps;
|
|
@@ -69,18 +69,18 @@ type ListItem<TValue> = TValue extends readonly (infer K)[] ? K : TValue;
|
|
|
69
69
|
export type Projected<T extends {
|
|
70
70
|
id: string;
|
|
71
71
|
}, TFields extends Fields<T> | undefined> = [TFields] extends [undefined] ? T : Pick<T, Extract<'id' | SelectedFields<TFields>, keyof T>>;
|
|
72
|
-
export declare const
|
|
73
|
-
export interface
|
|
74
|
-
readonly [
|
|
72
|
+
export declare const FIMO_REFERENCES: unique symbol;
|
|
73
|
+
export interface WithReferences<TReferences> {
|
|
74
|
+
readonly [FIMO_REFERENCES]?: TReferences;
|
|
75
75
|
}
|
|
76
|
-
export type
|
|
77
|
-
export type
|
|
78
|
-
export type Populate<TEntry> =
|
|
79
|
-
type PopulatedKeys<TEntry, TPopulate> = Extract<ListItem<TPopulate>, keyof
|
|
76
|
+
export type ReferenceMap<TEntry> = TEntry extends WithReferences<infer TReferences> ? TReferences : never;
|
|
77
|
+
export type ReferenceField<TEntry> = Extract<keyof ReferenceMap<TEntry>, string>;
|
|
78
|
+
export type Populate<TEntry> = ReferenceField<TEntry> | readonly ReferenceField<TEntry>[];
|
|
79
|
+
type PopulatedKeys<TEntry, TPopulate> = Extract<ListItem<TPopulate>, keyof ReferenceMap<TEntry> & keyof TEntry>;
|
|
80
80
|
export type Populated<TEntry extends {
|
|
81
81
|
id: string;
|
|
82
82
|
}, TPopulate extends Populate<TEntry>> = Pick<TEntry, 'id'> & Omit<TEntry, PopulatedKeys<TEntry, TPopulate>> & {
|
|
83
|
-
[K in PopulatedKeys<TEntry, TPopulate>]:
|
|
83
|
+
[K in PopulatedKeys<TEntry, TPopulate>]: ReferenceMap<TEntry>[K];
|
|
84
84
|
};
|
|
85
85
|
export type PopulatedResult<TEntry extends {
|
|
86
86
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/runtime/primitives/lib/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/runtime/primitives/lib/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ describe('fimo/ui public type surface', () => {
|
|
|
16
16
|
const sharedWhere = { locale: 'en' };
|
|
17
17
|
expectTypeOf(sharedWhere).toEqualTypeOf();
|
|
18
18
|
});
|
|
19
|
-
it('supports the
|
|
19
|
+
it('supports the reference populate pattern emitted into generated schemas', () => {
|
|
20
20
|
const query = {
|
|
21
21
|
where: {
|
|
22
22
|
sponsor: { $in: ['750e8400-e29b-41d4-a716-446655440000'] },
|
|
@@ -32,13 +32,13 @@ describe('fimo/ui public type surface', () => {
|
|
|
32
32
|
expectTypeOf().toEqualTypeOf();
|
|
33
33
|
expectTypeOf().toEqualTypeOf();
|
|
34
34
|
expectTypeOf().toEqualTypeOf();
|
|
35
|
-
// @ts-expect-error generated
|
|
35
|
+
// @ts-expect-error generated reference-aware queries only allow reference fields in populate.
|
|
36
36
|
const badQuery = { populate: 'name' };
|
|
37
37
|
expectTypeOf(badQuery).toEqualTypeOf();
|
|
38
|
-
// @ts-expect-error
|
|
38
|
+
// @ts-expect-error reference filters use target documentId strings, not raw reference objects.
|
|
39
39
|
const badWhere = { where: { sponsor: { documentId: '750e8400-e29b-41d4-a716-446655440000' } } };
|
|
40
40
|
expectTypeOf(badWhere).toEqualTypeOf();
|
|
41
|
-
// @ts-expect-error contains is only valid for to-many
|
|
41
|
+
// @ts-expect-error contains is only valid for to-many reference fields.
|
|
42
42
|
const badToOneContains = { where: { sponsor: { $contains: '750e8400-e29b-41d4-a716-446655440000' } } };
|
|
43
43
|
expectTypeOf(badToOneContains).toEqualTypeOf();
|
|
44
44
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|