@plasmicpkgs/cms 0.0.7 → 0.0.9
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/index.d.ts +32 -4
- package/dist/index.esm.js +135 -69
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +135 -69
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,11 @@ export declare interface _ApiCmsTable {
|
|
|
33
33
|
schema: _CmsTableSchema;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
declare interface BaseCMSOpts {
|
|
37
|
+
cmsId?: string;
|
|
38
|
+
cmsPublicToken?: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
36
41
|
export declare interface _CmsBaseType<T> {
|
|
37
42
|
/** The stable unique identifier, like `heroImage`. */
|
|
38
43
|
identifier: string;
|
|
@@ -127,6 +132,10 @@ export declare interface _CmsRichText extends _CmsBaseType<string> {
|
|
|
127
132
|
defaultValue?: string;
|
|
128
133
|
}
|
|
129
134
|
|
|
135
|
+
declare interface CMSTableOpts extends BaseCMSOpts {
|
|
136
|
+
tableId?: string;
|
|
137
|
+
}
|
|
138
|
+
|
|
130
139
|
export declare interface _CmsTableSchema {
|
|
131
140
|
fields: _CmsFieldMeta[];
|
|
132
141
|
}
|
|
@@ -153,11 +162,27 @@ export declare interface _DatabaseConfig {
|
|
|
153
162
|
|
|
154
163
|
export declare const _DEFAULT_HOST = "https://data.plasmic.app";
|
|
155
164
|
|
|
156
|
-
export declare function fetchContent(cmsId
|
|
165
|
+
export declare function fetchContent({ cmsId, cmsPublicToken, tableId, select, whereLogic, orderBy, orderDirection, limit, offset, useDraft, locale, }: FetchContentOpts): Promise<ApiCmsRow[]>;
|
|
166
|
+
|
|
167
|
+
declare interface FetchContentOpts extends CMSTableOpts {
|
|
168
|
+
select?: string[];
|
|
169
|
+
whereLogic?: RulesLogic;
|
|
170
|
+
orderBy?: string;
|
|
171
|
+
orderDirection?: "asc" | "desc";
|
|
172
|
+
limit?: number;
|
|
173
|
+
offset?: number;
|
|
174
|
+
useDraft?: boolean;
|
|
175
|
+
locale?: string;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export declare function fetchCount({ cmsId, cmsPublicToken, tableId, useDraft, whereLogic, }: FetchCountOpts): Promise<number>;
|
|
157
179
|
|
|
158
|
-
|
|
180
|
+
declare interface FetchCountOpts extends CMSTableOpts {
|
|
181
|
+
whereLogic?: RulesLogic;
|
|
182
|
+
useDraft?: boolean;
|
|
183
|
+
}
|
|
159
184
|
|
|
160
|
-
export declare function fetchTables(cmsId
|
|
185
|
+
export declare function fetchTables({ cmsId, cmsPublicToken }: BaseCMSOpts): Promise<_ApiCmsTable[]>;
|
|
161
186
|
|
|
162
187
|
declare type FilterClause = any;
|
|
163
188
|
|
|
@@ -168,7 +193,10 @@ export declare class _HttpError extends Error {
|
|
|
168
193
|
|
|
169
194
|
export declare function _mkApi(config: _DatabaseConfig | undefined): _API;
|
|
170
195
|
|
|
171
|
-
export declare function _mkFieldOptions(tables: _ApiCmsTable[] | undefined, tableIdentifier: string | undefined, types?: _CmsType[]
|
|
196
|
+
export declare function _mkFieldOptions(tables: _ApiCmsTable[] | undefined, tableIdentifier: string | undefined, types?: _CmsType[], opts?: {
|
|
197
|
+
includeSystemId?: boolean;
|
|
198
|
+
includeRefStars?: boolean;
|
|
199
|
+
}): ValueLabelPair[];
|
|
172
200
|
|
|
173
201
|
export declare function _mkTableOptions(tables: _ApiCmsTable[] | undefined): ValueLabelPair[];
|
|
174
202
|
|
package/dist/index.esm.js
CHANGED
|
@@ -144,6 +144,24 @@ function mkApi(config) {
|
|
|
144
144
|
// src/constants.ts
|
|
145
145
|
var DEFAULT_HOST = "https://data.plasmic.app";
|
|
146
146
|
|
|
147
|
+
// src/schema.ts
|
|
148
|
+
var CmsMetaType = /* @__PURE__ */ ((CmsMetaType2) => {
|
|
149
|
+
CmsMetaType2["TEXT"] = "text";
|
|
150
|
+
CmsMetaType2["LONG_TEXT"] = "long-text";
|
|
151
|
+
CmsMetaType2["NUMBER"] = "number";
|
|
152
|
+
CmsMetaType2["IMAGE"] = "image";
|
|
153
|
+
CmsMetaType2["FILE"] = "file";
|
|
154
|
+
CmsMetaType2["DATE_TIME"] = "date-time";
|
|
155
|
+
CmsMetaType2["BOOLEAN"] = "boolean";
|
|
156
|
+
CmsMetaType2["COLOR"] = "color";
|
|
157
|
+
CmsMetaType2["RICH_TEXT"] = "rich-text";
|
|
158
|
+
CmsMetaType2["REF"] = "ref";
|
|
159
|
+
CmsMetaType2["LIST"] = "list";
|
|
160
|
+
CmsMetaType2["OBJECT"] = "object";
|
|
161
|
+
CmsMetaType2["ENUM"] = "enum";
|
|
162
|
+
return CmsMetaType2;
|
|
163
|
+
})(CmsMetaType || {});
|
|
164
|
+
|
|
147
165
|
// src/util.ts
|
|
148
166
|
function mkTableOptions(tables) {
|
|
149
167
|
if (!tables) {
|
|
@@ -154,7 +172,7 @@ function mkTableOptions(tables) {
|
|
|
154
172
|
label: table.name
|
|
155
173
|
}));
|
|
156
174
|
}
|
|
157
|
-
function mkFieldOptions(tables, tableIdentifier, types) {
|
|
175
|
+
function mkFieldOptions(tables, tableIdentifier, types, opts) {
|
|
158
176
|
if (!tables) {
|
|
159
177
|
return [];
|
|
160
178
|
}
|
|
@@ -166,11 +184,17 @@ function mkFieldOptions(tables, tableIdentifier, types) {
|
|
|
166
184
|
if (types) {
|
|
167
185
|
fields = fields.filter((f) => types.includes(f.type));
|
|
168
186
|
}
|
|
169
|
-
const options =
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
187
|
+
const options = [
|
|
188
|
+
// single fields
|
|
189
|
+
...fields.map((f) => ({
|
|
190
|
+
value: f.identifier,
|
|
191
|
+
label: f.label || f.identifier
|
|
192
|
+
})),
|
|
193
|
+
// ref star fields
|
|
194
|
+
...(opts == null ? void 0 : opts.includeRefStars) ? mkRefStarFieldOptions([], fields) : []
|
|
195
|
+
];
|
|
196
|
+
options.sort((a, b) => a.label.localeCompare(b.label));
|
|
197
|
+
if ((opts == null ? void 0 : opts.includeSystemId) && !options.some((option) => option.value === "_id")) {
|
|
174
198
|
options.push({
|
|
175
199
|
label: "System ID",
|
|
176
200
|
value: "_id"
|
|
@@ -178,24 +202,26 @@ function mkFieldOptions(tables, tableIdentifier, types) {
|
|
|
178
202
|
}
|
|
179
203
|
return options;
|
|
180
204
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
205
|
+
function mkRefStarFieldOptions(fieldPath, nextFields) {
|
|
206
|
+
return nextFields.flatMap((nestedField) => {
|
|
207
|
+
if (nestedField.type === "ref" /* REF */) {
|
|
208
|
+
const fieldPathToRef = [...fieldPath, nestedField];
|
|
209
|
+
return [
|
|
210
|
+
{
|
|
211
|
+
value: fieldPathToRef.map((f) => f.identifier).join(".") + ".*",
|
|
212
|
+
label: fieldPathToRef.map((f) => f.label || f.identifier).join(".") + ".*"
|
|
213
|
+
}
|
|
214
|
+
];
|
|
215
|
+
} else if (nestedField.type === "list" /* LIST */ || nestedField.type === "object" /* OBJECT */) {
|
|
216
|
+
return mkRefStarFieldOptions(
|
|
217
|
+
[...fieldPath, nestedField],
|
|
218
|
+
nestedField.fields
|
|
219
|
+
);
|
|
220
|
+
} else {
|
|
221
|
+
return [];
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
199
225
|
|
|
200
226
|
// src/where.ts
|
|
201
227
|
function cmsTableToQueryBuilderConfig(table) {
|
|
@@ -330,7 +356,7 @@ function getCmsHost() {
|
|
|
330
356
|
var _a;
|
|
331
357
|
return (_a = globalThis["__PLASMIC_CMS_HOST__"]) != null ? _a : DEFAULT_HOST;
|
|
332
358
|
}
|
|
333
|
-
function sharedTableFnContext(cmsId, cmsPublicToken
|
|
359
|
+
function sharedTableFnContext({ cmsId, cmsPublicToken } = {}) {
|
|
334
360
|
if (!cmsId || !cmsPublicToken) {
|
|
335
361
|
return {
|
|
336
362
|
dataKey: "",
|
|
@@ -356,17 +382,16 @@ function sharedTableFnContext(cmsId, cmsPublicToken, ..._args) {
|
|
|
356
382
|
};
|
|
357
383
|
}
|
|
358
384
|
var cmsIdParam = {
|
|
359
|
-
name: "cmsId",
|
|
360
385
|
type: "string",
|
|
361
|
-
description: "
|
|
386
|
+
description: "ID of the CMS.",
|
|
387
|
+
helpText: "Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
|
|
362
388
|
};
|
|
363
389
|
var cmsPublicTokenParam = {
|
|
364
|
-
name: "cmsPublicToken",
|
|
365
390
|
type: "string",
|
|
366
|
-
description: "
|
|
391
|
+
description: "Public token of the CMS.",
|
|
392
|
+
helpText: "Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
|
|
367
393
|
};
|
|
368
394
|
var tableIdParam = {
|
|
369
|
-
name: "tableId",
|
|
370
395
|
type: "choice",
|
|
371
396
|
options: (_args, ctx) => {
|
|
372
397
|
if (!(ctx == null ? void 0 : ctx.tables)) {
|
|
@@ -379,22 +404,22 @@ var tableIdParam = {
|
|
|
379
404
|
}
|
|
380
405
|
};
|
|
381
406
|
var selectParam = {
|
|
382
|
-
name: "select",
|
|
383
407
|
type: "choice",
|
|
384
408
|
multiSelect: true,
|
|
385
409
|
description: "Fields to fetch. Defaults to all fields.",
|
|
386
410
|
defaultValueHint: ["Default: *"],
|
|
387
|
-
options: (
|
|
388
|
-
const tableId =
|
|
389
|
-
return mkFieldOptions(ctx.tables, tableId
|
|
411
|
+
options: ([opts], ctx) => {
|
|
412
|
+
const tableId = opts == null ? void 0 : opts.tableId;
|
|
413
|
+
return mkFieldOptions(ctx.tables, tableId, void 0, {
|
|
414
|
+
includeRefStars: true
|
|
415
|
+
});
|
|
390
416
|
}
|
|
391
417
|
};
|
|
392
418
|
var whereLogicParam = {
|
|
393
|
-
name: "where",
|
|
394
419
|
type: "queryBuilder",
|
|
395
420
|
description: "Filter fetched entries. Defaults to fetch all entries.",
|
|
396
|
-
config: (
|
|
397
|
-
const tableId =
|
|
421
|
+
config: ([opts], ctx) => {
|
|
422
|
+
const tableId = opts == null ? void 0 : opts.tableId;
|
|
398
423
|
const table = ctx.tables.find((t) => t.identifier === tableId);
|
|
399
424
|
if (table) {
|
|
400
425
|
return cmsTableToQueryBuilderConfig(table);
|
|
@@ -404,16 +429,16 @@ var whereLogicParam = {
|
|
|
404
429
|
}
|
|
405
430
|
};
|
|
406
431
|
var orderByParam = {
|
|
407
|
-
name: "orderBy",
|
|
408
432
|
type: "choice",
|
|
409
433
|
description: "Field to order entries by. Defaults to creation order.",
|
|
410
|
-
options: (
|
|
411
|
-
const tableId =
|
|
412
|
-
return mkFieldOptions(ctx.tables, tableId
|
|
434
|
+
options: ([opts], ctx) => {
|
|
435
|
+
const tableId = opts == null ? void 0 : opts.tableId;
|
|
436
|
+
return mkFieldOptions(ctx.tables, tableId, void 0, {
|
|
437
|
+
includeRefStars: true
|
|
438
|
+
});
|
|
413
439
|
}
|
|
414
440
|
};
|
|
415
441
|
var orderDirectionParam = {
|
|
416
|
-
name: "orderDirection",
|
|
417
442
|
label: "Direction",
|
|
418
443
|
type: "choice",
|
|
419
444
|
options: [
|
|
@@ -429,29 +454,28 @@ var orderDirectionParam = {
|
|
|
429
454
|
defaultValueHint: "Default: Ascending"
|
|
430
455
|
};
|
|
431
456
|
var limitParam = {
|
|
432
|
-
name: "limit",
|
|
433
457
|
type: "number",
|
|
434
458
|
description: "Maximum number of entries to fetch."
|
|
435
459
|
};
|
|
436
460
|
var offsetParam = {
|
|
437
|
-
name: "offset",
|
|
438
461
|
type: "number",
|
|
439
462
|
description: "Number of entries to skip.",
|
|
440
463
|
defaultValueHint: 0
|
|
441
464
|
};
|
|
442
465
|
var useDraftParam = {
|
|
443
|
-
name: "useDraft",
|
|
444
466
|
type: "boolean",
|
|
445
467
|
description: "Whether to use draft data.",
|
|
446
468
|
defaultValueHint: false
|
|
447
469
|
};
|
|
448
470
|
var localeParam = {
|
|
449
|
-
name: "locale",
|
|
450
471
|
type: "string",
|
|
451
472
|
description: "The locale to use. Defaults to base locale."
|
|
452
473
|
};
|
|
453
|
-
function fetchTables(
|
|
454
|
-
return __async(this,
|
|
474
|
+
function fetchTables(_0) {
|
|
475
|
+
return __async(this, arguments, function* ({ cmsId, cmsPublicToken }) {
|
|
476
|
+
if (!cmsId || !cmsPublicToken) {
|
|
477
|
+
return [];
|
|
478
|
+
}
|
|
455
479
|
const api = mkApi({
|
|
456
480
|
databaseId: cmsId,
|
|
457
481
|
databaseToken: cmsPublicToken,
|
|
@@ -460,8 +484,20 @@ function fetchTables(cmsId, cmsPublicToken) {
|
|
|
460
484
|
return api.fetchTables();
|
|
461
485
|
});
|
|
462
486
|
}
|
|
463
|
-
function fetchContent(
|
|
464
|
-
return __async(this,
|
|
487
|
+
function fetchContent(_0) {
|
|
488
|
+
return __async(this, arguments, function* ({
|
|
489
|
+
cmsId,
|
|
490
|
+
cmsPublicToken,
|
|
491
|
+
tableId,
|
|
492
|
+
select,
|
|
493
|
+
whereLogic,
|
|
494
|
+
orderBy,
|
|
495
|
+
orderDirection,
|
|
496
|
+
limit,
|
|
497
|
+
offset,
|
|
498
|
+
useDraft,
|
|
499
|
+
locale
|
|
500
|
+
}) {
|
|
465
501
|
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
466
502
|
return [];
|
|
467
503
|
}
|
|
@@ -482,8 +518,14 @@ function fetchContent(cmsId, cmsPublicToken, tableId, select, whereLogic, orderB
|
|
|
482
518
|
});
|
|
483
519
|
});
|
|
484
520
|
}
|
|
485
|
-
function fetchCount(
|
|
486
|
-
return __async(this,
|
|
521
|
+
function fetchCount(_0) {
|
|
522
|
+
return __async(this, arguments, function* ({
|
|
523
|
+
cmsId,
|
|
524
|
+
cmsPublicToken,
|
|
525
|
+
tableId,
|
|
526
|
+
useDraft,
|
|
527
|
+
whereLogic
|
|
528
|
+
}) {
|
|
487
529
|
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
488
530
|
return 0;
|
|
489
531
|
}
|
|
@@ -512,7 +554,17 @@ function registerAllCmsFunctions(loader) {
|
|
|
512
554
|
displayName: "Fetch Plasmic CMS Tables",
|
|
513
555
|
description: "Fetches table metadata from Plasmic CMS",
|
|
514
556
|
importPath: "@plasmicpkgs/cms",
|
|
515
|
-
params: [
|
|
557
|
+
params: [
|
|
558
|
+
{
|
|
559
|
+
type: "object",
|
|
560
|
+
display: "flatten",
|
|
561
|
+
name: "Opts",
|
|
562
|
+
fields: {
|
|
563
|
+
cmsId: cmsIdParam,
|
|
564
|
+
cmsPublicToken: cmsPublicTokenParam
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
]
|
|
516
568
|
});
|
|
517
569
|
_registerFunction(fetchContent, {
|
|
518
570
|
name: "fetchContent",
|
|
@@ -521,17 +573,24 @@ function registerAllCmsFunctions(loader) {
|
|
|
521
573
|
description: "Fetch content from a Plasmic CMS table",
|
|
522
574
|
importPath: "@plasmicpkgs/cms",
|
|
523
575
|
params: [
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
576
|
+
{
|
|
577
|
+
type: "object",
|
|
578
|
+
display: "flatten",
|
|
579
|
+
name: "Opts",
|
|
580
|
+
fields: {
|
|
581
|
+
cmsId: cmsIdParam,
|
|
582
|
+
cmsPublicToken: cmsPublicTokenParam,
|
|
583
|
+
tableId: tableIdParam,
|
|
584
|
+
select: selectParam,
|
|
585
|
+
whereLogic: whereLogicParam,
|
|
586
|
+
orderBy: orderByParam,
|
|
587
|
+
orderDirection: orderDirectionParam,
|
|
588
|
+
limit: limitParam,
|
|
589
|
+
offset: offsetParam,
|
|
590
|
+
useDraft: useDraftParam,
|
|
591
|
+
locale: localeParam
|
|
592
|
+
}
|
|
593
|
+
}
|
|
535
594
|
],
|
|
536
595
|
fnContext: sharedTableFnContext
|
|
537
596
|
});
|
|
@@ -542,11 +601,18 @@ function registerAllCmsFunctions(loader) {
|
|
|
542
601
|
description: "Fetch the count of entries from a Plasmic CMS table",
|
|
543
602
|
importPath: "@plasmicpkgs/cms",
|
|
544
603
|
params: [
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
604
|
+
{
|
|
605
|
+
type: "object",
|
|
606
|
+
display: "flatten",
|
|
607
|
+
name: "Opts",
|
|
608
|
+
fields: {
|
|
609
|
+
cmsId: cmsIdParam,
|
|
610
|
+
cmsPublicToken: cmsPublicTokenParam,
|
|
611
|
+
tableId: tableIdParam,
|
|
612
|
+
whereLogic: whereLogicParam,
|
|
613
|
+
useDraft: useDraftParam
|
|
614
|
+
}
|
|
615
|
+
}
|
|
550
616
|
],
|
|
551
617
|
fnContext: sharedTableFnContext
|
|
552
618
|
});
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\nimport { ApiCmsTable } from \"./schema\";\nimport { mkFieldOptions } from \"./util\";\nimport { cmsTableToQueryBuilderConfig, rulesLogicToCmsWhere } from \"./where\";\n\nfunction getCmsHost() {\n return (globalThis as any)[\"__PLASMIC_CMS_HOST__\"] ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\nfunction sharedTableFnContext(\n cmsId?: string,\n cmsPublicToken?: string,\n ..._args: unknown[]\n): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\n// TODO: Handle markdown in descriptions and link to https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token\nconst cmsIdParam = {\n name: \"cmsId\",\n type: \"string\",\n description: \"Find the CMS ID on the Plasmic CMS settings page.\",\n} as const;\n\nconst cmsPublicTokenParam = {\n name: \"cmsPublicToken\",\n type: \"string\",\n description: \"Find the Public Token on the Plasmic CMS settings page.\",\n} as const;\n\nconst tableIdParam = {\n name: \"tableId\",\n type: \"choice\",\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n name: \"select\",\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: (args: { 2?: string | undefined }, ctx: FnContext) => {\n const tableId = args[2];\n return mkFieldOptions(ctx.tables, tableId);\n },\n} as const;\n\nconst whereLogicParam = {\n name: \"where\",\n type: \"queryBuilder\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: (args: { 2?: string | undefined }, ctx: FnContext) => {\n const tableId = args[2];\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n name: \"orderBy\",\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: (args: { 2?: string | undefined }, ctx: FnContext) => {\n const tableId = args[2];\n return mkFieldOptions(ctx.tables, tableId);\n },\n} as const;\n\nconst orderDirectionParam = {\n name: \"orderDirection\",\n label: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n name: \"limit\",\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n name: \"offset\",\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n name: \"useDraft\",\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n name: \"locale\",\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables(cmsId: string, cmsPublicToken: string) {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n\n return api.fetchTables();\n}\n\nexport async function fetchContent(\n cmsId?: string,\n cmsPublicToken?: string,\n tableId?: string,\n select?: string[],\n whereLogic?: RulesLogic,\n orderBy?: string,\n orderDirection?: \"asc\" | \"desc\",\n limit?: number,\n offset?: number,\n useDraft?: boolean,\n locale?: string\n) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\nexport async function fetchCount(\n cmsId?: string,\n cmsPublicToken?: string,\n tableId?: string,\n whereLogic?: RulesLogic,\n useDraft?: boolean\n) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n });\n\n return api.count(tableId, {\n where: rulesLogicToCmsWhere(whereLogic),\n });\n}\n\nexport function registerAllCmsFunctions(loader?: { registerFunction: any }) {\n function _registerFunction<T extends (...args: any[]) => any>(\n fn: T,\n meta: CustomFunctionMeta<T>\n ) {\n if (loader) {\n loader.registerFunction(fn, meta);\n } else {\n registerFunction(fn, meta);\n }\n }\n\n _registerFunction(fetchTables, {\n name: \"fetchTables\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Tables\",\n description: \"Fetches table metadata from Plasmic CMS\",\n importPath: \"@plasmicpkgs/cms\",\n params: [cmsIdParam, cmsPublicTokenParam],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n cmsIdParam,\n cmsPublicTokenParam,\n tableIdParam,\n selectParam,\n whereLogicParam,\n orderByParam,\n orderDirectionParam,\n limitParam,\n offsetParam,\n useDraftParam,\n localeParam,\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n cmsIdParam,\n cmsPublicTokenParam,\n tableIdParam,\n whereLogicParam,\n useDraftParam,\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "import { ApiCmsTable, CmsType } from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[]\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n const options = fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n }));\n if (!options.some((option) => option.value === \"_id\")) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/schema.ts", "../src/util.ts", "../src/where.ts"],
|
|
4
|
+
"sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\nimport { ApiCmsTable } from \"./schema\";\nimport { mkFieldOptions } from \"./util\";\nimport { cmsTableToQueryBuilderConfig, rulesLogicToCmsWhere } from \"./where\";\n\nfunction getCmsHost() {\n return (globalThis as any)[\"__PLASMIC_CMS_HOST__\"] ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\ninterface BaseCMSOpts {\n cmsId?: string;\n cmsPublicToken?: string;\n}\n\ninterface CMSTableOpts extends BaseCMSOpts {\n tableId?: string;\n}\n\nfunction sharedTableFnContext({ cmsId, cmsPublicToken }: BaseCMSOpts = {}): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\nconst cmsIdParam = {\n type: \"string\",\n description: \"ID of the CMS.\",\n helpText:\n \"Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst cmsPublicTokenParam = {\n type: \"string\",\n description: \"Public token of the CMS.\",\n helpText:\n \"Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst tableIdParam = {\n type: \"choice\",\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst whereLogicParam = {\n type: \"queryBuilder\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst orderDirectionParam = {\n label: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables({ cmsId, cmsPublicToken }: BaseCMSOpts) {\n if (!cmsId || !cmsPublicToken) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n\n return api.fetchTables();\n}\n\ninterface FetchContentOpts extends CMSTableOpts {\n select?: string[];\n whereLogic?: RulesLogic;\n orderBy?: string;\n orderDirection?: \"asc\" | \"desc\";\n limit?: number;\n offset?: number;\n useDraft?: boolean;\n locale?: string;\n}\n\nexport async function fetchContent({\n cmsId,\n cmsPublicToken,\n tableId,\n select,\n whereLogic,\n orderBy,\n orderDirection,\n limit,\n offset,\n useDraft,\n locale,\n}: FetchContentOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\ninterface FetchCountOpts extends CMSTableOpts {\n whereLogic?: RulesLogic;\n useDraft?: boolean;\n}\n\nexport async function fetchCount({\n cmsId,\n cmsPublicToken,\n tableId,\n useDraft,\n whereLogic,\n}: FetchCountOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n });\n\n return api.count(tableId, {\n where: rulesLogicToCmsWhere(whereLogic),\n });\n}\n\nexport function registerAllCmsFunctions(loader?: { registerFunction: any }) {\n function _registerFunction<T extends (...args: any[]) => any>(\n fn: T,\n meta: CustomFunctionMeta<T>\n ) {\n if (loader) {\n loader.registerFunction(fn, meta);\n } else {\n registerFunction(fn, meta);\n }\n }\n\n _registerFunction(fetchTables, {\n name: \"fetchTables\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Tables\",\n description: \"Fetches table metadata from Plasmic CMS\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n },\n },\n ],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n select: selectParam,\n whereLogic: whereLogicParam,\n orderBy: orderByParam,\n orderDirection: orderDirectionParam,\n limit: limitParam,\n offset: offsetParam,\n useDraft: useDraftParam,\n locale: localeParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n whereLogic: whereLogicParam,\n useDraft: useDraftParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import {\n ApiCmsTable,\n CmsFieldMeta,\n CmsList,\n CmsMetaType,\n CmsObject,\n CmsType,\n} from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[],\n opts?: {\n includeSystemId?: boolean;\n includeRefStars?: boolean;\n }\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n\n const options = [\n // single fields\n ...fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n })),\n\n // ref star fields\n ...(opts?.includeRefStars ? mkRefStarFieldOptions([], fields) : []),\n ];\n\n options.sort((a, b) => a.label.localeCompare(b.label));\n\n if (\n opts?.includeSystemId &&\n !options.some((option) => option.value === \"_id\")\n ) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n\nfunction mkRefStarFieldOptions(\n fieldPath: (CmsList | CmsObject)[],\n nextFields: CmsFieldMeta[]\n): ValueLabelPair[] {\n return nextFields.flatMap((nestedField) => {\n if (nestedField.type === CmsMetaType.REF) {\n const fieldPathToRef = [...fieldPath, nestedField];\n return [\n {\n value: fieldPathToRef.map((f) => f.identifier).join(\".\") + \".*\",\n label:\n fieldPathToRef.map((f) => f.label || f.identifier).join(\".\") + \".*\",\n },\n ];\n } else if (\n nestedField.type === CmsMetaType.LIST ||\n nestedField.type === CmsMetaType.OBJECT\n ) {\n return mkRefStarFieldOptions(\n [...fieldPath, nestedField],\n nestedField.fields\n );\n } else {\n return [];\n }\n });\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,sBAEA;;;ACkBP,SAAS,iBAAiB,QAAkC;AAC1D,SAAO;AAAA,IACL,OAAO,OAAO;AAAA,IACd,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,OAAO,OAAO,UACV;AAAA,MACE;AAAA,QACE,OAAO,OAAO;AAAA,QACd,KAAK,OAAO,OAAO,SAAS;AAAA,MAC9B;AAAA,IACF,IACA;AAAA,IACJ,QAAQ,OAAO;AAAA,EACjB;AACF;AAEO,IAAM,YAAN,cAAwB,MAAM;AAAA,EACnC,YAAmB,QAAgB,SAAiB;AAClD,UAAM,OAAO;AADI;AAAA,EAEnB;AACF;AAEO,IAAM,MAAN,MAAU;AAAA,EACf,YAAoB,QAAwB;AAAxB;AAAA,EAAyB;AAAA,EAEvC,IAAI,IAAoC;AAAA,+CAApC,UAAkB,SAAc,CAAC,GAAG;AA9ChD;AA+CI,YAAM,MAAM,IAAI;AAAA,QACd,GAAG,KAAK,OAAO,6BAA6B,KAAK,OAAO,aAAa;AAAA,MACvE;AACA,YAAM,cAAc,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,QAAQ,QAAQ;AAC9D,cAAM,QAAQ,OAAO,GAAG;AACxB,YAAI,SAAS,MAAM;AACjB,iBAAO,GAAG,IAAI;AAAA,QAChB;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAQ;AACZ,UAAI,SAAS,IAAI,gBAAgB,WAAW,EAAE,SAAS;AACvD,YAAM,WAAW,MAAM,MAAM,IAAI,SAAS,GAAG;AAAA,QAC3C,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,4BAA4B,GAAG,KAAK,OAAO,cAAc,KAAK,OAAO;AAAA,QACvE;AAAA,QACA,MAAM;AAAA,MACR,CAAC;AAED,UAAI,SAAS,WAAW,KAAK;AAC3B,YAAI,UAAU,MAAM,SAAS,KAAK;AAClC,YAAI;AACF,gBAAM,OAAO,KAAK,MAAM,OAAO;AAC/B,eAAI,UAAK,UAAL,mBAAY,SAAS;AACvB,sBAAU,KAAK,MAAM;AAAA,UACvB;AAAA,QACF,SAAQ,GAAN;AAAA,QAEF;AACA,cAAM,IAAI,UAAU,SAAS,QAAQ,OAAO;AAAA,MAC9C;AAEA,aAAO,MAAM,SAAS,KAAK;AAAA,IAC7B;AAAA;AAAA,EAEM,cAAsC;AAAA;AAC1C,UAAI;AACF,cAAM,WAAW,MAAM,KAAK,IAAI,EAAE;AAClC,eAAO,SAAS;AAAA,MAClB,SAAS,GAAP;AACA,gBAAQ,MAAM,CAAC;AACf,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA,EAEQ,iBAAiB,OAAe;AA7F1C;AA8FI,QAAI,MAAM,QAAQ,KAAK,OAAO,QAAQ,GAAG;AACvC,aAAO,KAAK,OAAO,SAAS,SAAS,KAAK;AAAA,IAC5C,OAAO;AACL,cAAO,UAAK,OAAO,aAAZ,YAAwB;AAAA,IACjC;AAAA,EACF;AAAA,EAEM,MAAM,IAA+D;AAAA,+CAA/D,OAAe,SAAsB,CAAC,GAAyB;AArG7E;AAsGI,UAAI;AACF,cAAM,WAAW,MAAM,KAAK,IAAI,WAAW,eAAe;AAAA,UACxD,GAAG,KAAK,UAAU,iBAAiB,MAAM,CAAC;AAAA,UAC1C,OAAO,QAAO,UAAK,iBAAiB,KAAK,MAA3B,YAAgC,OAAO,QAAQ;AAAA,UAC7D,QAAQ,KAAK,OAAO;AAAA,QACtB,CAAC;AACD,eAAO,SAAS;AAAA,MAClB,SAAS,GAAP;AACA,gBAAQ,MAAM,CAAC;AACf,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA,EAEM,MACJ,IAEiB;AAAA,+CAFjB,OACA,SAAkD,CAAC,GAClC;AAtHrB;AAuHI,UAAI;AACF,cAAM,WAAW,MAAM,KAAK,IAAI,WAAW,eAAe;AAAA,UACxD,GAAG,KAAK,UAAU,iBAAiB,MAAM,CAAC;AAAA,UAC1C,OAAO,QAAO,UAAK,iBAAiB,KAAK,MAA3B,YAAgC,OAAO,QAAQ;AAAA,QAC/D,CAAC;AACD,eAAO,SAAS;AAAA,MAClB,SAAS,GAAP;AACA,gBAAQ,MAAM,CAAC;AACf,cAAM;AAAA,MACR;AAAA,IACF;AAAA;AACF;AAEO,SAAS,MAAM,QAAoC;AACxD,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAEA,SAAO,IAAI,IAAI,MAAM;AACvB;;;AC1IO,IAAM,eAAe;;;ACGrB,IAAK,cAAL,kBAAKA,iBAAL;AACL,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,eAAY;AACZ,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,YAAS;AACT,EAAAA,aAAA,UAAO;AAbG,SAAAA;AAAA,GAAA;;;ACWL,SAAS,eACd,QACkB;AAClB,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC5B,OAAO,MAAM;AAAA,IACb,OAAO,MAAM;AAAA,EACf,EAAE;AACJ;AAEO,SAAS,eACd,QACA,iBACA,OACA,MAIkB;AAClB,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,EAAE,eAAe,eAAe;AACjE,MAAI,CAAC,OAAO;AACV,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,SAAS,MAAM,OAAO;AAC1B,MAAI,OAAO;AACT,aAAS,OAAO,OAAO,CAAC,MAAM,MAAM,SAAS,EAAE,IAAI,CAAC;AAAA,EACtD;AAEA,QAAM,UAAU;AAAA;AAAA,IAEd,GAAG,OAAO,IAAI,CAAC,OAAO;AAAA,MACpB,OAAO,EAAE;AAAA,MACT,OAAO,EAAE,SAAS,EAAE;AAAA,IACtB,EAAE;AAAA;AAAA,IAGF,IAAI,6BAAM,mBAAkB,sBAAsB,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,EACnE;AAEA,UAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC;AAErD,OACE,6BAAM,oBACN,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,KAAK,GAChD;AACA,YAAQ,KAAK;AAAA,MACX,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,SAAS,sBACP,WACA,YACkB;AAClB,SAAO,WAAW,QAAQ,CAAC,gBAAgB;AACzC,QAAI,YAAY,0BAA0B;AACxC,YAAM,iBAAiB,CAAC,GAAG,WAAW,WAAW;AACjD,aAAO;AAAA,QACL;AAAA,UACE,OAAO,eAAe,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,IAAI;AAAA,UAC3D,OACE,eAAe,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,GAAG,IAAI;AAAA,QACnE;AAAA,MACF;AAAA,IACF,WACE,YAAY,8BACZ,YAAY,gCACZ;AACA,aAAO;AAAA,QACL,CAAC,GAAG,WAAW,WAAW;AAAA,QAC1B,YAAY;AAAA,MACd;AAAA,IACF,OAAO;AACL,aAAO,CAAC;AAAA,IACV;AAAA,EACF,CAAC;AACH;;;ACxFO,SAAS,6BACd,OACwB;AACxB,QAAM,WAA4C;AAAA,IAChD,KAAK;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,WAAW,CAAC,SAAS,WAAW;AAAA,IAClC;AAAA,EACF;AACA,aAAW,SAAS,MAAM,OAAO,QAAQ;AACvC,UAAM,UAAU,4BAA4B,KAAK;AACjD,QAAI,SAAS;AACX,eAAS,MAAM,UAAU,IAAI;AAAA,IAC/B;AAAA,EACF;AACA,SAAO;AAAA,IACL,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,4BAA4B,OAAwC;AAC3E,QAAM,QAAQ,MAAM,SAAS,MAAM;AACnC,UAAQ,MAAM,MAAM;AAAA,IAClB;AAAA,IACA;AAAA,IACA,sBAAsB;AACpB,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,WAAW,CAAC,SAAS,aAAa,OAAO;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,4BAAyB;AACvB,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,8BAA0B;AACxB,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,IACA,kCAA4B;AAC1B,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,wBAAuB;AACrB,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,YAAY,MAAM;AAAA,QAClB,WAAW,CAAC,iBAAiB,qBAAqB,eAAe;AAAA,MACnE;AAAA,IACF;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AACE;AAAA,EACJ;AACF;AASO,SAAS,qBAAqB,OAAoC;AACvE,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,WAAO;AAAA,EACT,WAAW,OAAO,UAAU,UAAU;AACpC,UAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU,KAAK,GAAG;AAAA,EAC9D,WAAW,SAAS,OAAO;AACzB,WAAO;AAAA,MACL,MAAM,MAAM,KAAK,EAAE,IAAI,oBAAoB;AAAA,IAC7C;AAAA,EACF,WAAW,QAAQ,OAAO;AACxB,WAAO;AAAA,MACL,KAAK,MAAM,IAAI,EAAE,IAAI,oBAAoB;AAAA,IAC3C;AAAA,EACF,WAAW,OAAO,OAAO;AACvB,WAAO;AAAA,MACL,MAAM,qBAAqB,MAAM,GAAG,CAAC;AAAA,IACvC;AAAA,EACF,WAAW,QAAQ,OAAO;AACxB,UAAM,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,IAAI,MAAM,IAAI;AAC5C,WAAO;AAAA,MACL,CAAC,KAAK,GAAG;AAAA,IACX;AAAA,EACF,WAAW,QAAQ,OAAO;AACxB,UAAM,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,IAAI,MAAM,IAAI;AAC5C,WAAO;AAAA,MACL,MAAM,EAAE,CAAC,KAAK,GAAG,QAAQ;AAAA,IAC3B;AAAA,EACF,OAAO;AAIL,UAAM,CAAC,KAAK,KAAK,IAAI,OAAO,QAAQ,KAAK,EAAE,CAAC;AAC5C,UAAM,QAA4B,gBAAgB,GAAG;AACrD,QAAI,OAAO;AACT,YAAM,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,IAAI;AAClC,aAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,GAAG,QAAQ,EAAE;AAAA,IACzC;AAEA,UAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU,KAAK,GAAG;AAAA,EAC9D;AACF;AAGA,IAAM,kBAA0C;AAAA,EAC9C,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AACT;;;ALpJA,SAAS,aAAa;AAVtB;AAWE,UAAQ,gBAAmB,sBAAsB,MAAzC,YAA8C;AACxD;AAeA,SAAS,qBAAqB,EAAE,OAAO,eAAe,IAAiB,CAAC,GAGtE;AACA,MAAI,CAAC,SAAS,CAAC,gBAAgB;AAC7B,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,MAAS;AAAI,iBAAE,QAAQ,CAAC,EAAE;AAAA;AAAA,IACrC;AAAA,EACF;AACA,SAAO;AAAA,IACL,SAAS,cAAc,KAAK,UAAU;AAAA,MACpC;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,SAAS,MAAY;AACnB,YAAM,MAAM,MAAM;AAAA,QAChB,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,MAAM,WAAW;AAAA,MACnB,CAAC;AACD,YAAM,SAAS,MAAM,IAAI,YAAY;AACrC,aAAO,EAAE,OAAO;AAAA,IAClB;AAAA,EACF;AACF;AAEA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UACE;AACJ;AAEA,IAAM,sBAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UACE;AACJ;AAEA,IAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,SAAS,CAAC,OAAgB,QAAmB;AAC3C,QAAI,EAAC,2BAAK,SAAQ;AAChB,aAAO,CAAC;AAAA,IACV;AACA,WAAO,IAAI,OAAO,IAAI,CAAC,WAAiD;AAAA,MACtE,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,IACf,EAAE;AAAA,EACJ;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,kBAAkB,CAAC,YAAY;AAAA,EAC/B,SAAS,CAAC,CAAC,IAAI,GAAkC,QAAmB;AAClE,UAAM,UAAU,6BAAM;AACtB,WAAO,eAAe,IAAI,QAAQ,SAAS,QAAW;AAAA,MACpD,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ,CAAC,CAAC,IAAI,GAAkC,QAAmB;AACjE,UAAM,UAAU,6BAAM;AACtB,UAAM,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE,eAAe,OAAO;AAC7D,QAAI,OAAO;AACT,aAAO,6BAA6B,KAAK;AAAA,IAC3C,OAAO;AACL,aAAO,EAAE,QAAQ,CAAC,EAAE;AAAA,IACtB;AAAA,EACF;AACF;AAEA,IAAM,eAAe;AAAA,EACnB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,CAAC,CAAC,IAAI,GAAkC,QAAmB;AAClE,UAAM,UAAU,6BAAM;AACtB,WAAO,eAAe,IAAI,QAAQ,SAAS,QAAW;AAAA,MACpD,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAEA,IAAM,sBAAsB;AAAA,EAC1B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,IACP;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB;AACpB;AAEA,IAAM,aAAa;AAAA,EACjB,MAAM;AAAA,EACN,aAAa;AACf;AAEA,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,kBAAkB;AACpB;AAEA,IAAM,gBAAgB;AAAA,EACpB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,kBAAkB;AACpB;AAEA,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AACf;AAEA,SAAsB,YAAY,IAAwC;AAAA,6CAAxC,EAAE,OAAO,eAAe,GAAgB;AACxE,QAAI,CAAC,SAAS,CAAC,gBAAgB;AAC7B,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,MAAM,MAAM;AAAA,MAChB,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,MAAM,WAAW;AAAA,IACnB,CAAC;AAED,WAAO,IAAI,YAAY;AAAA,EACzB;AAAA;AAaA,SAAsB,aAAa,IAYd;AAAA,6CAZc;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAqB;AACnB,QAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS;AACzC,aAAO,CAAC;AAAA,IACV;AAEA,UAAM,MAAM,MAAM;AAAA,MAChB,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,MAAM,WAAW;AAAA,MACjB;AAAA,MACA;AAAA,IACF,CAAC;AAED,WAAO,IAAI,MAAM,SAAS;AAAA,MACxB,QAAQ;AAAA,MACR,OAAO,qBAAqB,UAAU;AAAA,MACtC;AAAA,MACA,MAAM,mBAAmB;AAAA,MACzB;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAOA,SAAsB,WAAW,IAMd;AAAA,6CANc;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAmB;AACjB,QAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS;AACzC,aAAO;AAAA,IACT;AAEA,UAAM,MAAM,MAAM;AAAA,MAChB,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,MAAM,WAAW;AAAA,MACjB;AAAA,IACF,CAAC;AAED,WAAO,IAAI,MAAM,SAAS;AAAA,MACxB,OAAO,qBAAqB,UAAU;AAAA,IACxC,CAAC;AAAA,EACH;AAAA;AAEO,SAAS,wBAAwB,QAAoC;AAC1E,WAAS,kBACP,IACA,MACA;AACA,QAAI,QAAQ;AACV,aAAO,iBAAiB,IAAI,IAAI;AAAA,IAClC,OAAO;AACL,uBAAiB,IAAI,IAAI;AAAA,IAC3B;AAAA,EACF;AAEA,oBAAkB,aAAa;AAAA,IAC7B,MAAM;AAAA,IACN,WAAW;AAAA,IACX,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,OAAO;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,oBAAkB,cAAc;AAAA,IAC9B,MAAM;AAAA,IACN,WAAW;AAAA,IACX,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,OAAO;AAAA,UACP,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AAED,oBAAkB,YAAY;AAAA,IAC5B,MAAM;AAAA,IACN,WAAW;AAAA,IACX,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,OAAO;AAAA,UACP,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AACH;",
|
|
6
6
|
"names": ["CmsMetaType"]
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -187,6 +187,24 @@ function mkApi(config) {
|
|
|
187
187
|
// src/constants.ts
|
|
188
188
|
var DEFAULT_HOST = "https://data.plasmic.app";
|
|
189
189
|
|
|
190
|
+
// src/schema.ts
|
|
191
|
+
var CmsMetaType = /* @__PURE__ */ ((CmsMetaType2) => {
|
|
192
|
+
CmsMetaType2["TEXT"] = "text";
|
|
193
|
+
CmsMetaType2["LONG_TEXT"] = "long-text";
|
|
194
|
+
CmsMetaType2["NUMBER"] = "number";
|
|
195
|
+
CmsMetaType2["IMAGE"] = "image";
|
|
196
|
+
CmsMetaType2["FILE"] = "file";
|
|
197
|
+
CmsMetaType2["DATE_TIME"] = "date-time";
|
|
198
|
+
CmsMetaType2["BOOLEAN"] = "boolean";
|
|
199
|
+
CmsMetaType2["COLOR"] = "color";
|
|
200
|
+
CmsMetaType2["RICH_TEXT"] = "rich-text";
|
|
201
|
+
CmsMetaType2["REF"] = "ref";
|
|
202
|
+
CmsMetaType2["LIST"] = "list";
|
|
203
|
+
CmsMetaType2["OBJECT"] = "object";
|
|
204
|
+
CmsMetaType2["ENUM"] = "enum";
|
|
205
|
+
return CmsMetaType2;
|
|
206
|
+
})(CmsMetaType || {});
|
|
207
|
+
|
|
190
208
|
// src/util.ts
|
|
191
209
|
function mkTableOptions(tables) {
|
|
192
210
|
if (!tables) {
|
|
@@ -197,7 +215,7 @@ function mkTableOptions(tables) {
|
|
|
197
215
|
label: table.name
|
|
198
216
|
}));
|
|
199
217
|
}
|
|
200
|
-
function mkFieldOptions(tables, tableIdentifier, types) {
|
|
218
|
+
function mkFieldOptions(tables, tableIdentifier, types, opts) {
|
|
201
219
|
if (!tables) {
|
|
202
220
|
return [];
|
|
203
221
|
}
|
|
@@ -209,11 +227,17 @@ function mkFieldOptions(tables, tableIdentifier, types) {
|
|
|
209
227
|
if (types) {
|
|
210
228
|
fields = fields.filter((f) => types.includes(f.type));
|
|
211
229
|
}
|
|
212
|
-
const options =
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
230
|
+
const options = [
|
|
231
|
+
// single fields
|
|
232
|
+
...fields.map((f) => ({
|
|
233
|
+
value: f.identifier,
|
|
234
|
+
label: f.label || f.identifier
|
|
235
|
+
})),
|
|
236
|
+
// ref star fields
|
|
237
|
+
...(opts == null ? void 0 : opts.includeRefStars) ? mkRefStarFieldOptions([], fields) : []
|
|
238
|
+
];
|
|
239
|
+
options.sort((a, b) => a.label.localeCompare(b.label));
|
|
240
|
+
if ((opts == null ? void 0 : opts.includeSystemId) && !options.some((option) => option.value === "_id")) {
|
|
217
241
|
options.push({
|
|
218
242
|
label: "System ID",
|
|
219
243
|
value: "_id"
|
|
@@ -221,24 +245,26 @@ function mkFieldOptions(tables, tableIdentifier, types) {
|
|
|
221
245
|
}
|
|
222
246
|
return options;
|
|
223
247
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
}
|
|
248
|
+
function mkRefStarFieldOptions(fieldPath, nextFields) {
|
|
249
|
+
return nextFields.flatMap((nestedField) => {
|
|
250
|
+
if (nestedField.type === "ref" /* REF */) {
|
|
251
|
+
const fieldPathToRef = [...fieldPath, nestedField];
|
|
252
|
+
return [
|
|
253
|
+
{
|
|
254
|
+
value: fieldPathToRef.map((f) => f.identifier).join(".") + ".*",
|
|
255
|
+
label: fieldPathToRef.map((f) => f.label || f.identifier).join(".") + ".*"
|
|
256
|
+
}
|
|
257
|
+
];
|
|
258
|
+
} else if (nestedField.type === "list" /* LIST */ || nestedField.type === "object" /* OBJECT */) {
|
|
259
|
+
return mkRefStarFieldOptions(
|
|
260
|
+
[...fieldPath, nestedField],
|
|
261
|
+
nestedField.fields
|
|
262
|
+
);
|
|
263
|
+
} else {
|
|
264
|
+
return [];
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
}
|
|
242
268
|
|
|
243
269
|
// src/where.ts
|
|
244
270
|
function cmsTableToQueryBuilderConfig(table) {
|
|
@@ -373,7 +399,7 @@ function getCmsHost() {
|
|
|
373
399
|
var _a;
|
|
374
400
|
return (_a = globalThis["__PLASMIC_CMS_HOST__"]) != null ? _a : DEFAULT_HOST;
|
|
375
401
|
}
|
|
376
|
-
function sharedTableFnContext(cmsId, cmsPublicToken
|
|
402
|
+
function sharedTableFnContext({ cmsId, cmsPublicToken } = {}) {
|
|
377
403
|
if (!cmsId || !cmsPublicToken) {
|
|
378
404
|
return {
|
|
379
405
|
dataKey: "",
|
|
@@ -399,17 +425,16 @@ function sharedTableFnContext(cmsId, cmsPublicToken, ..._args) {
|
|
|
399
425
|
};
|
|
400
426
|
}
|
|
401
427
|
var cmsIdParam = {
|
|
402
|
-
name: "cmsId",
|
|
403
428
|
type: "string",
|
|
404
|
-
description: "
|
|
429
|
+
description: "ID of the CMS.",
|
|
430
|
+
helpText: "Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
|
|
405
431
|
};
|
|
406
432
|
var cmsPublicTokenParam = {
|
|
407
|
-
name: "cmsPublicToken",
|
|
408
433
|
type: "string",
|
|
409
|
-
description: "
|
|
434
|
+
description: "Public token of the CMS.",
|
|
435
|
+
helpText: "Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
|
|
410
436
|
};
|
|
411
437
|
var tableIdParam = {
|
|
412
|
-
name: "tableId",
|
|
413
438
|
type: "choice",
|
|
414
439
|
options: (_args, ctx) => {
|
|
415
440
|
if (!(ctx == null ? void 0 : ctx.tables)) {
|
|
@@ -422,22 +447,22 @@ var tableIdParam = {
|
|
|
422
447
|
}
|
|
423
448
|
};
|
|
424
449
|
var selectParam = {
|
|
425
|
-
name: "select",
|
|
426
450
|
type: "choice",
|
|
427
451
|
multiSelect: true,
|
|
428
452
|
description: "Fields to fetch. Defaults to all fields.",
|
|
429
453
|
defaultValueHint: ["Default: *"],
|
|
430
|
-
options: (
|
|
431
|
-
const tableId =
|
|
432
|
-
return mkFieldOptions(ctx.tables, tableId
|
|
454
|
+
options: ([opts], ctx) => {
|
|
455
|
+
const tableId = opts == null ? void 0 : opts.tableId;
|
|
456
|
+
return mkFieldOptions(ctx.tables, tableId, void 0, {
|
|
457
|
+
includeRefStars: true
|
|
458
|
+
});
|
|
433
459
|
}
|
|
434
460
|
};
|
|
435
461
|
var whereLogicParam = {
|
|
436
|
-
name: "where",
|
|
437
462
|
type: "queryBuilder",
|
|
438
463
|
description: "Filter fetched entries. Defaults to fetch all entries.",
|
|
439
|
-
config: (
|
|
440
|
-
const tableId =
|
|
464
|
+
config: ([opts], ctx) => {
|
|
465
|
+
const tableId = opts == null ? void 0 : opts.tableId;
|
|
441
466
|
const table = ctx.tables.find((t) => t.identifier === tableId);
|
|
442
467
|
if (table) {
|
|
443
468
|
return cmsTableToQueryBuilderConfig(table);
|
|
@@ -447,16 +472,16 @@ var whereLogicParam = {
|
|
|
447
472
|
}
|
|
448
473
|
};
|
|
449
474
|
var orderByParam = {
|
|
450
|
-
name: "orderBy",
|
|
451
475
|
type: "choice",
|
|
452
476
|
description: "Field to order entries by. Defaults to creation order.",
|
|
453
|
-
options: (
|
|
454
|
-
const tableId =
|
|
455
|
-
return mkFieldOptions(ctx.tables, tableId
|
|
477
|
+
options: ([opts], ctx) => {
|
|
478
|
+
const tableId = opts == null ? void 0 : opts.tableId;
|
|
479
|
+
return mkFieldOptions(ctx.tables, tableId, void 0, {
|
|
480
|
+
includeRefStars: true
|
|
481
|
+
});
|
|
456
482
|
}
|
|
457
483
|
};
|
|
458
484
|
var orderDirectionParam = {
|
|
459
|
-
name: "orderDirection",
|
|
460
485
|
label: "Direction",
|
|
461
486
|
type: "choice",
|
|
462
487
|
options: [
|
|
@@ -472,29 +497,28 @@ var orderDirectionParam = {
|
|
|
472
497
|
defaultValueHint: "Default: Ascending"
|
|
473
498
|
};
|
|
474
499
|
var limitParam = {
|
|
475
|
-
name: "limit",
|
|
476
500
|
type: "number",
|
|
477
501
|
description: "Maximum number of entries to fetch."
|
|
478
502
|
};
|
|
479
503
|
var offsetParam = {
|
|
480
|
-
name: "offset",
|
|
481
504
|
type: "number",
|
|
482
505
|
description: "Number of entries to skip.",
|
|
483
506
|
defaultValueHint: 0
|
|
484
507
|
};
|
|
485
508
|
var useDraftParam = {
|
|
486
|
-
name: "useDraft",
|
|
487
509
|
type: "boolean",
|
|
488
510
|
description: "Whether to use draft data.",
|
|
489
511
|
defaultValueHint: false
|
|
490
512
|
};
|
|
491
513
|
var localeParam = {
|
|
492
|
-
name: "locale",
|
|
493
514
|
type: "string",
|
|
494
515
|
description: "The locale to use. Defaults to base locale."
|
|
495
516
|
};
|
|
496
|
-
function fetchTables(
|
|
497
|
-
return __async(this,
|
|
517
|
+
function fetchTables(_0) {
|
|
518
|
+
return __async(this, arguments, function* ({ cmsId, cmsPublicToken }) {
|
|
519
|
+
if (!cmsId || !cmsPublicToken) {
|
|
520
|
+
return [];
|
|
521
|
+
}
|
|
498
522
|
const api = mkApi({
|
|
499
523
|
databaseId: cmsId,
|
|
500
524
|
databaseToken: cmsPublicToken,
|
|
@@ -503,8 +527,20 @@ function fetchTables(cmsId, cmsPublicToken) {
|
|
|
503
527
|
return api.fetchTables();
|
|
504
528
|
});
|
|
505
529
|
}
|
|
506
|
-
function fetchContent(
|
|
507
|
-
return __async(this,
|
|
530
|
+
function fetchContent(_0) {
|
|
531
|
+
return __async(this, arguments, function* ({
|
|
532
|
+
cmsId,
|
|
533
|
+
cmsPublicToken,
|
|
534
|
+
tableId,
|
|
535
|
+
select,
|
|
536
|
+
whereLogic,
|
|
537
|
+
orderBy,
|
|
538
|
+
orderDirection,
|
|
539
|
+
limit,
|
|
540
|
+
offset,
|
|
541
|
+
useDraft,
|
|
542
|
+
locale
|
|
543
|
+
}) {
|
|
508
544
|
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
509
545
|
return [];
|
|
510
546
|
}
|
|
@@ -525,8 +561,14 @@ function fetchContent(cmsId, cmsPublicToken, tableId, select, whereLogic, orderB
|
|
|
525
561
|
});
|
|
526
562
|
});
|
|
527
563
|
}
|
|
528
|
-
function fetchCount(
|
|
529
|
-
return __async(this,
|
|
564
|
+
function fetchCount(_0) {
|
|
565
|
+
return __async(this, arguments, function* ({
|
|
566
|
+
cmsId,
|
|
567
|
+
cmsPublicToken,
|
|
568
|
+
tableId,
|
|
569
|
+
useDraft,
|
|
570
|
+
whereLogic
|
|
571
|
+
}) {
|
|
530
572
|
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
531
573
|
return 0;
|
|
532
574
|
}
|
|
@@ -555,7 +597,17 @@ function registerAllCmsFunctions(loader) {
|
|
|
555
597
|
displayName: "Fetch Plasmic CMS Tables",
|
|
556
598
|
description: "Fetches table metadata from Plasmic CMS",
|
|
557
599
|
importPath: "@plasmicpkgs/cms",
|
|
558
|
-
params: [
|
|
600
|
+
params: [
|
|
601
|
+
{
|
|
602
|
+
type: "object",
|
|
603
|
+
display: "flatten",
|
|
604
|
+
name: "Opts",
|
|
605
|
+
fields: {
|
|
606
|
+
cmsId: cmsIdParam,
|
|
607
|
+
cmsPublicToken: cmsPublicTokenParam
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
]
|
|
559
611
|
});
|
|
560
612
|
_registerFunction(fetchContent, {
|
|
561
613
|
name: "fetchContent",
|
|
@@ -564,17 +616,24 @@ function registerAllCmsFunctions(loader) {
|
|
|
564
616
|
description: "Fetch content from a Plasmic CMS table",
|
|
565
617
|
importPath: "@plasmicpkgs/cms",
|
|
566
618
|
params: [
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
619
|
+
{
|
|
620
|
+
type: "object",
|
|
621
|
+
display: "flatten",
|
|
622
|
+
name: "Opts",
|
|
623
|
+
fields: {
|
|
624
|
+
cmsId: cmsIdParam,
|
|
625
|
+
cmsPublicToken: cmsPublicTokenParam,
|
|
626
|
+
tableId: tableIdParam,
|
|
627
|
+
select: selectParam,
|
|
628
|
+
whereLogic: whereLogicParam,
|
|
629
|
+
orderBy: orderByParam,
|
|
630
|
+
orderDirection: orderDirectionParam,
|
|
631
|
+
limit: limitParam,
|
|
632
|
+
offset: offsetParam,
|
|
633
|
+
useDraft: useDraftParam,
|
|
634
|
+
locale: localeParam
|
|
635
|
+
}
|
|
636
|
+
}
|
|
578
637
|
],
|
|
579
638
|
fnContext: sharedTableFnContext
|
|
580
639
|
});
|
|
@@ -585,11 +644,18 @@ function registerAllCmsFunctions(loader) {
|
|
|
585
644
|
description: "Fetch the count of entries from a Plasmic CMS table",
|
|
586
645
|
importPath: "@plasmicpkgs/cms",
|
|
587
646
|
params: [
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
647
|
+
{
|
|
648
|
+
type: "object",
|
|
649
|
+
display: "flatten",
|
|
650
|
+
name: "Opts",
|
|
651
|
+
fields: {
|
|
652
|
+
cmsId: cmsIdParam,
|
|
653
|
+
cmsPublicToken: cmsPublicTokenParam,
|
|
654
|
+
tableId: tableIdParam,
|
|
655
|
+
whereLogic: whereLogicParam,
|
|
656
|
+
useDraft: useDraftParam
|
|
657
|
+
}
|
|
658
|
+
}
|
|
593
659
|
],
|
|
594
660
|
fnContext: sharedTableFnContext
|
|
595
661
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\nimport { ApiCmsTable } from \"./schema\";\nimport { mkFieldOptions } from \"./util\";\nimport { cmsTableToQueryBuilderConfig, rulesLogicToCmsWhere } from \"./where\";\n\nfunction getCmsHost() {\n return (globalThis as any)[\"__PLASMIC_CMS_HOST__\"] ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\nfunction sharedTableFnContext(\n cmsId?: string,\n cmsPublicToken?: string,\n ..._args: unknown[]\n): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\n// TODO: Handle markdown in descriptions and link to https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token\nconst cmsIdParam = {\n name: \"cmsId\",\n type: \"string\",\n description: \"Find the CMS ID on the Plasmic CMS settings page.\",\n} as const;\n\nconst cmsPublicTokenParam = {\n name: \"cmsPublicToken\",\n type: \"string\",\n description: \"Find the Public Token on the Plasmic CMS settings page.\",\n} as const;\n\nconst tableIdParam = {\n name: \"tableId\",\n type: \"choice\",\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n name: \"select\",\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: (args: { 2?: string | undefined }, ctx: FnContext) => {\n const tableId = args[2];\n return mkFieldOptions(ctx.tables, tableId);\n },\n} as const;\n\nconst whereLogicParam = {\n name: \"where\",\n type: \"queryBuilder\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: (args: { 2?: string | undefined }, ctx: FnContext) => {\n const tableId = args[2];\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n name: \"orderBy\",\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: (args: { 2?: string | undefined }, ctx: FnContext) => {\n const tableId = args[2];\n return mkFieldOptions(ctx.tables, tableId);\n },\n} as const;\n\nconst orderDirectionParam = {\n name: \"orderDirection\",\n label: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n name: \"limit\",\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n name: \"offset\",\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n name: \"useDraft\",\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n name: \"locale\",\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables(cmsId: string, cmsPublicToken: string) {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n\n return api.fetchTables();\n}\n\nexport async function fetchContent(\n cmsId?: string,\n cmsPublicToken?: string,\n tableId?: string,\n select?: string[],\n whereLogic?: RulesLogic,\n orderBy?: string,\n orderDirection?: \"asc\" | \"desc\",\n limit?: number,\n offset?: number,\n useDraft?: boolean,\n locale?: string\n) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\nexport async function fetchCount(\n cmsId?: string,\n cmsPublicToken?: string,\n tableId?: string,\n whereLogic?: RulesLogic,\n useDraft?: boolean\n) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n });\n\n return api.count(tableId, {\n where: rulesLogicToCmsWhere(whereLogic),\n });\n}\n\nexport function registerAllCmsFunctions(loader?: { registerFunction: any }) {\n function _registerFunction<T extends (...args: any[]) => any>(\n fn: T,\n meta: CustomFunctionMeta<T>\n ) {\n if (loader) {\n loader.registerFunction(fn, meta);\n } else {\n registerFunction(fn, meta);\n }\n }\n\n _registerFunction(fetchTables, {\n name: \"fetchTables\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Tables\",\n description: \"Fetches table metadata from Plasmic CMS\",\n importPath: \"@plasmicpkgs/cms\",\n params: [cmsIdParam, cmsPublicTokenParam],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n cmsIdParam,\n cmsPublicTokenParam,\n tableIdParam,\n selectParam,\n whereLogicParam,\n orderByParam,\n orderDirectionParam,\n limitParam,\n offsetParam,\n useDraftParam,\n localeParam,\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n cmsIdParam,\n cmsPublicTokenParam,\n tableIdParam,\n whereLogicParam,\n useDraftParam,\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "import { ApiCmsTable, CmsType } from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[]\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n const options = fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n }));\n if (!options.some((option) => option.value === \"_id\")) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
3
|
+
"sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/schema.ts", "../src/util.ts", "../src/where.ts"],
|
|
4
|
+
"sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\nimport { ApiCmsTable } from \"./schema\";\nimport { mkFieldOptions } from \"./util\";\nimport { cmsTableToQueryBuilderConfig, rulesLogicToCmsWhere } from \"./where\";\n\nfunction getCmsHost() {\n return (globalThis as any)[\"__PLASMIC_CMS_HOST__\"] ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\ninterface BaseCMSOpts {\n cmsId?: string;\n cmsPublicToken?: string;\n}\n\ninterface CMSTableOpts extends BaseCMSOpts {\n tableId?: string;\n}\n\nfunction sharedTableFnContext({ cmsId, cmsPublicToken }: BaseCMSOpts = {}): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\nconst cmsIdParam = {\n type: \"string\",\n description: \"ID of the CMS.\",\n helpText:\n \"Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst cmsPublicTokenParam = {\n type: \"string\",\n description: \"Public token of the CMS.\",\n helpText:\n \"Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst tableIdParam = {\n type: \"choice\",\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst whereLogicParam = {\n type: \"queryBuilder\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst orderDirectionParam = {\n label: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables({ cmsId, cmsPublicToken }: BaseCMSOpts) {\n if (!cmsId || !cmsPublicToken) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n });\n\n return api.fetchTables();\n}\n\ninterface FetchContentOpts extends CMSTableOpts {\n select?: string[];\n whereLogic?: RulesLogic;\n orderBy?: string;\n orderDirection?: \"asc\" | \"desc\";\n limit?: number;\n offset?: number;\n useDraft?: boolean;\n locale?: string;\n}\n\nexport async function fetchContent({\n cmsId,\n cmsPublicToken,\n tableId,\n select,\n whereLogic,\n orderBy,\n orderDirection,\n limit,\n offset,\n useDraft,\n locale,\n}: FetchContentOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\ninterface FetchCountOpts extends CMSTableOpts {\n whereLogic?: RulesLogic;\n useDraft?: boolean;\n}\n\nexport async function fetchCount({\n cmsId,\n cmsPublicToken,\n tableId,\n useDraft,\n whereLogic,\n}: FetchCountOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n });\n\n return api.count(tableId, {\n where: rulesLogicToCmsWhere(whereLogic),\n });\n}\n\nexport function registerAllCmsFunctions(loader?: { registerFunction: any }) {\n function _registerFunction<T extends (...args: any[]) => any>(\n fn: T,\n meta: CustomFunctionMeta<T>\n ) {\n if (loader) {\n loader.registerFunction(fn, meta);\n } else {\n registerFunction(fn, meta);\n }\n }\n\n _registerFunction(fetchTables, {\n name: \"fetchTables\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Tables\",\n description: \"Fetches table metadata from Plasmic CMS\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n },\n },\n ],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n select: selectParam,\n whereLogic: whereLogicParam,\n orderBy: orderByParam,\n orderDirection: orderDirectionParam,\n limit: limitParam,\n offset: offsetParam,\n useDraft: useDraftParam,\n locale: localeParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n whereLogic: whereLogicParam,\n useDraft: useDraftParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import {\n ApiCmsTable,\n CmsFieldMeta,\n CmsList,\n CmsMetaType,\n CmsObject,\n CmsType,\n} from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[],\n opts?: {\n includeSystemId?: boolean;\n includeRefStars?: boolean;\n }\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n\n const options = [\n // single fields\n ...fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n })),\n\n // ref star fields\n ...(opts?.includeRefStars ? mkRefStarFieldOptions([], fields) : []),\n ];\n\n options.sort((a, b) => a.label.localeCompare(b.label));\n\n if (\n opts?.includeSystemId &&\n !options.some((option) => option.value === \"_id\")\n ) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n\nfunction mkRefStarFieldOptions(\n fieldPath: (CmsList | CmsObject)[],\n nextFields: CmsFieldMeta[]\n): ValueLabelPair[] {\n return nextFields.flatMap((nestedField) => {\n if (nestedField.type === CmsMetaType.REF) {\n const fieldPathToRef = [...fieldPath, nestedField];\n return [\n {\n value: fieldPathToRef.map((f) => f.identifier).join(\".\") + \".*\",\n label:\n fieldPathToRef.map((f) => f.label || f.identifier).join(\".\") + \".*\",\n },\n ];\n } else if (\n nestedField.type === CmsMetaType.LIST ||\n nestedField.type === CmsMetaType.OBJECT\n ) {\n return mkRefStarFieldOptions(\n [...fieldPath, nestedField],\n nestedField.fields\n );\n } else {\n return [];\n }\n });\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["CmsMetaType", "registerFunction"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plasmicpkgs/cms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "Plasmic CMS custom functions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"postpublish": "bash ../../scripts/publish-api-doc-model.sh"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@plasmicapp/host": "1.0.
|
|
35
|
+
"@plasmicapp/host": "1.0.232",
|
|
36
36
|
"@react-awesome-query-builder/core": "^6.0.0",
|
|
37
37
|
"@types/json-logic-js": "^2.0.0",
|
|
38
38
|
"@types/node": "^17.0.14"
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@plasmicapp/host": "^1.0.211"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "b6552bed8840c583a74ba7e1c724fa2850c6c2ed"
|
|
44
44
|
}
|