@plasmicpkgs/cms 0.0.3 → 0.0.5
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 +40 -17
- package/dist/index.esm.js +256 -50
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +256 -50
- package/dist/index.js.map +3 -3
- package/package.json +6 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiCmsRow } from './schema';
|
|
2
|
-
import {
|
|
2
|
+
import type { RulesLogic } from 'json-logic-js';
|
|
3
3
|
|
|
4
4
|
export declare class _API {
|
|
5
5
|
private config;
|
|
@@ -33,43 +33,61 @@ export declare interface _ApiCmsTable {
|
|
|
33
33
|
schema: _CmsTableSchema;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export declare interface _CmsBaseType {
|
|
36
|
+
export declare interface _CmsBaseType<T> {
|
|
37
|
+
/** The stable unique identifier, like `heroImage`. */
|
|
37
38
|
identifier: string;
|
|
38
|
-
|
|
39
|
+
/** The field label. */
|
|
40
|
+
label?: string;
|
|
39
41
|
helperText: string;
|
|
40
42
|
required: boolean;
|
|
41
43
|
hidden: boolean;
|
|
44
|
+
localized: boolean;
|
|
45
|
+
unique: boolean;
|
|
46
|
+
/** The empty string "" locale is the default locale. */
|
|
47
|
+
defaultValueByLocale: {
|
|
48
|
+
[locale: string]: T;
|
|
49
|
+
};
|
|
42
50
|
}
|
|
43
51
|
|
|
44
|
-
export declare interface _CmsBoolean extends _CmsBaseType {
|
|
52
|
+
export declare interface _CmsBoolean extends _CmsBaseType<boolean> {
|
|
45
53
|
type: _CmsMetaType.BOOLEAN;
|
|
46
54
|
defaultValue?: boolean;
|
|
47
55
|
}
|
|
48
56
|
|
|
49
|
-
|
|
57
|
+
declare interface CmsColor extends _CmsBaseType<string> {
|
|
58
|
+
type: _CmsMetaType.COLOR;
|
|
59
|
+
defaultValue?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export declare interface _CmsDateTime extends _CmsBaseType<string> {
|
|
50
63
|
type: _CmsMetaType.DATE_TIME;
|
|
51
64
|
defaultValue?: string;
|
|
52
65
|
}
|
|
53
66
|
|
|
54
|
-
export declare interface _CmsEnum extends _CmsBaseType {
|
|
67
|
+
export declare interface _CmsEnum extends _CmsBaseType<string> {
|
|
55
68
|
type: _CmsMetaType.ENUM;
|
|
56
69
|
defaultValue?: string;
|
|
57
70
|
options: string[];
|
|
58
71
|
}
|
|
59
72
|
|
|
60
|
-
export declare type _CmsFieldMeta = _CmsText | _CmsLongText | _CmsNumber | _CmsBoolean | _CmsImage | _CmsFile | _CmsDateTime |
|
|
73
|
+
export declare type _CmsFieldMeta = _CmsRef | CmsList | CmsObject | _CmsText | _CmsLongText | _CmsNumber | _CmsBoolean | _CmsImage | _CmsFile | _CmsDateTime | CmsColor | _CmsRichText | _CmsEnum;
|
|
61
74
|
|
|
62
|
-
export declare interface _CmsFile extends _CmsBaseType {
|
|
75
|
+
export declare interface _CmsFile extends _CmsBaseType<string> {
|
|
63
76
|
type: _CmsMetaType.FILE;
|
|
64
77
|
defaultValue?: string;
|
|
65
78
|
}
|
|
66
79
|
|
|
67
|
-
export declare interface _CmsImage extends _CmsBaseType {
|
|
80
|
+
export declare interface _CmsImage extends _CmsBaseType<string> {
|
|
68
81
|
type: _CmsMetaType.IMAGE;
|
|
69
82
|
defaultValue?: string;
|
|
70
83
|
}
|
|
71
84
|
|
|
72
|
-
|
|
85
|
+
declare interface CmsList extends _CmsBaseType<any[]> {
|
|
86
|
+
type: _CmsMetaType.LIST;
|
|
87
|
+
fields: _CmsFieldMeta[];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export declare interface _CmsLongText extends _CmsBaseType<string>, _CmsTextLike {
|
|
73
91
|
type: _CmsMetaType.LONG_TEXT;
|
|
74
92
|
}
|
|
75
93
|
|
|
@@ -89,17 +107,22 @@ export declare enum _CmsMetaType {
|
|
|
89
107
|
ENUM = "enum"
|
|
90
108
|
}
|
|
91
109
|
|
|
92
|
-
export declare interface _CmsNumber extends _CmsBaseType {
|
|
110
|
+
export declare interface _CmsNumber extends _CmsBaseType<number> {
|
|
93
111
|
type: _CmsMetaType.NUMBER;
|
|
94
112
|
defaultValue?: number;
|
|
95
113
|
}
|
|
96
114
|
|
|
97
|
-
|
|
115
|
+
declare interface CmsObject extends _CmsBaseType<object> {
|
|
116
|
+
type: _CmsMetaType.OBJECT;
|
|
117
|
+
fields: _CmsFieldMeta[];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export declare interface _CmsRef extends _CmsBaseType<string> {
|
|
98
121
|
type: _CmsMetaType.REF;
|
|
99
122
|
defaultValue?: string;
|
|
100
123
|
}
|
|
101
124
|
|
|
102
|
-
export declare interface _CmsRichText extends _CmsBaseType {
|
|
125
|
+
export declare interface _CmsRichText extends _CmsBaseType<string> {
|
|
103
126
|
type: _CmsMetaType.RICH_TEXT;
|
|
104
127
|
defaultValue?: string;
|
|
105
128
|
}
|
|
@@ -108,7 +131,7 @@ export declare interface _CmsTableSchema {
|
|
|
108
131
|
fields: _CmsFieldMeta[];
|
|
109
132
|
}
|
|
110
133
|
|
|
111
|
-
export declare interface _CmsText extends _CmsBaseType
|
|
134
|
+
export declare interface _CmsText extends _CmsBaseType<string>, _CmsTextLike {
|
|
112
135
|
type: _CmsMetaType.TEXT;
|
|
113
136
|
}
|
|
114
137
|
|
|
@@ -130,11 +153,11 @@ export declare interface _DatabaseConfig {
|
|
|
130
153
|
|
|
131
154
|
export declare const _DEFAULT_HOST = "https://data.plasmic.app";
|
|
132
155
|
|
|
133
|
-
export declare function fetchContent(cmsId
|
|
156
|
+
export declare function fetchContent(cmsId?: string, cmsPublicToken?: string, tableId?: string, select?: string[], whereLogic?: RulesLogic, orderBy?: string, orderDirection?: "asc" | "desc", limit?: number, offset?: number, useDraft?: boolean, locale?: string): Promise<ApiCmsRow[]>;
|
|
134
157
|
|
|
135
|
-
export declare function fetchCount(cmsId
|
|
158
|
+
export declare function fetchCount(cmsId?: string, cmsPublicToken?: string, tableId?: string, whereLogic?: RulesLogic, useDraft?: boolean): Promise<number>;
|
|
136
159
|
|
|
137
|
-
export declare function fetchTables(cmsId: string, cmsPublicToken: string): Promise<
|
|
160
|
+
export declare function fetchTables(cmsId: string, cmsPublicToken: string): Promise<_ApiCmsTable[]>;
|
|
138
161
|
|
|
139
162
|
declare type FilterClause = any;
|
|
140
163
|
|
package/dist/index.esm.js
CHANGED
|
@@ -104,10 +104,11 @@ var API = class {
|
|
|
104
104
|
}
|
|
105
105
|
query(_0) {
|
|
106
106
|
return __async(this, arguments, function* (table, params = {}) {
|
|
107
|
+
var _a;
|
|
107
108
|
try {
|
|
108
109
|
const response = yield this.get(`/tables/${table}/query`, {
|
|
109
110
|
q: JSON.stringify(queryParamsToApi(params)),
|
|
110
|
-
draft: Number(this.useDraftForTable(table)
|
|
111
|
+
draft: Number((_a = this.useDraftForTable(table)) != null ? _a : params.useDraft),
|
|
111
112
|
locale: this.config.locale
|
|
112
113
|
});
|
|
113
114
|
return response.rows;
|
|
@@ -119,10 +120,11 @@ var API = class {
|
|
|
119
120
|
}
|
|
120
121
|
count(_0) {
|
|
121
122
|
return __async(this, arguments, function* (table, params = {}) {
|
|
123
|
+
var _a;
|
|
122
124
|
try {
|
|
123
125
|
const response = yield this.get(`/tables/${table}/count`, {
|
|
124
126
|
q: JSON.stringify(queryParamsToApi(params)),
|
|
125
|
-
draft: Number(this.useDraftForTable(table)
|
|
127
|
+
draft: Number((_a = this.useDraftForTable(table)) != null ? _a : params.useDraft)
|
|
126
128
|
});
|
|
127
129
|
return response.count;
|
|
128
130
|
} catch (e) {
|
|
@@ -142,24 +144,6 @@ function mkApi(config) {
|
|
|
142
144
|
// src/constants.ts
|
|
143
145
|
var DEFAULT_HOST = "https://data.plasmic.app";
|
|
144
146
|
|
|
145
|
-
// src/schema.ts
|
|
146
|
-
var CmsMetaType = /* @__PURE__ */ ((CmsMetaType2) => {
|
|
147
|
-
CmsMetaType2["TEXT"] = "text";
|
|
148
|
-
CmsMetaType2["LONG_TEXT"] = "long-text";
|
|
149
|
-
CmsMetaType2["NUMBER"] = "number";
|
|
150
|
-
CmsMetaType2["IMAGE"] = "image";
|
|
151
|
-
CmsMetaType2["FILE"] = "file";
|
|
152
|
-
CmsMetaType2["DATE_TIME"] = "date-time";
|
|
153
|
-
CmsMetaType2["BOOLEAN"] = "boolean";
|
|
154
|
-
CmsMetaType2["COLOR"] = "color";
|
|
155
|
-
CmsMetaType2["RICH_TEXT"] = "rich-text";
|
|
156
|
-
CmsMetaType2["REF"] = "ref";
|
|
157
|
-
CmsMetaType2["LIST"] = "list";
|
|
158
|
-
CmsMetaType2["OBJECT"] = "object";
|
|
159
|
-
CmsMetaType2["ENUM"] = "enum";
|
|
160
|
-
return CmsMetaType2;
|
|
161
|
-
})(CmsMetaType || {});
|
|
162
|
-
|
|
163
147
|
// src/util.ts
|
|
164
148
|
function mkTableOptions(tables) {
|
|
165
149
|
if (!tables) {
|
|
@@ -184,36 +168,173 @@ function mkFieldOptions(tables, tableIdentifier, types) {
|
|
|
184
168
|
}
|
|
185
169
|
const options = fields.map((f) => ({
|
|
186
170
|
value: f.identifier,
|
|
187
|
-
label: f.
|
|
171
|
+
label: f.label || f.identifier
|
|
188
172
|
}));
|
|
189
173
|
if (!options.some((option) => option.value === "_id")) {
|
|
190
174
|
options.push({
|
|
191
|
-
label: "System
|
|
175
|
+
label: "System ID",
|
|
192
176
|
value: "_id"
|
|
193
177
|
});
|
|
194
178
|
}
|
|
195
179
|
return options;
|
|
196
180
|
}
|
|
197
181
|
|
|
182
|
+
// src/schema.ts
|
|
183
|
+
var CmsMetaType = /* @__PURE__ */ ((CmsMetaType2) => {
|
|
184
|
+
CmsMetaType2["TEXT"] = "text";
|
|
185
|
+
CmsMetaType2["LONG_TEXT"] = "long-text";
|
|
186
|
+
CmsMetaType2["NUMBER"] = "number";
|
|
187
|
+
CmsMetaType2["IMAGE"] = "image";
|
|
188
|
+
CmsMetaType2["FILE"] = "file";
|
|
189
|
+
CmsMetaType2["DATE_TIME"] = "date-time";
|
|
190
|
+
CmsMetaType2["BOOLEAN"] = "boolean";
|
|
191
|
+
CmsMetaType2["COLOR"] = "color";
|
|
192
|
+
CmsMetaType2["RICH_TEXT"] = "rich-text";
|
|
193
|
+
CmsMetaType2["REF"] = "ref";
|
|
194
|
+
CmsMetaType2["LIST"] = "list";
|
|
195
|
+
CmsMetaType2["OBJECT"] = "object";
|
|
196
|
+
CmsMetaType2["ENUM"] = "enum";
|
|
197
|
+
return CmsMetaType2;
|
|
198
|
+
})(CmsMetaType || {});
|
|
199
|
+
|
|
200
|
+
// src/where.ts
|
|
201
|
+
function cmsTableToQueryBuilderConfig(table) {
|
|
202
|
+
const qbFields = {
|
|
203
|
+
_id: {
|
|
204
|
+
type: "text",
|
|
205
|
+
label: "System ID",
|
|
206
|
+
operators: ["equal", "not_equal"]
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
for (const field of table.schema.fields) {
|
|
210
|
+
const qbField = cmsFieldToQueryBuilderField(field);
|
|
211
|
+
if (qbField) {
|
|
212
|
+
qbFields[field.identifier] = qbField;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
fields: qbFields
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
function cmsFieldToQueryBuilderField(field) {
|
|
220
|
+
const label = field.label || field.identifier;
|
|
221
|
+
switch (field.type) {
|
|
222
|
+
case "text" /* TEXT */:
|
|
223
|
+
case "long-text" /* LONG_TEXT */:
|
|
224
|
+
case "ref" /* REF */: {
|
|
225
|
+
return {
|
|
226
|
+
type: "text",
|
|
227
|
+
label,
|
|
228
|
+
operators: ["equal", "not_equal", "regex"]
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
case "number" /* NUMBER */: {
|
|
232
|
+
return {
|
|
233
|
+
type: "number",
|
|
234
|
+
label,
|
|
235
|
+
operators: [
|
|
236
|
+
"equal",
|
|
237
|
+
"not_equal",
|
|
238
|
+
"less",
|
|
239
|
+
"less_or_equal",
|
|
240
|
+
"greater",
|
|
241
|
+
"greater_or_equal"
|
|
242
|
+
]
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
case "boolean" /* BOOLEAN */: {
|
|
246
|
+
return {
|
|
247
|
+
type: "boolean",
|
|
248
|
+
label
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
case "date-time" /* DATE_TIME */: {
|
|
252
|
+
return {
|
|
253
|
+
type: "datetime",
|
|
254
|
+
label,
|
|
255
|
+
operators: [
|
|
256
|
+
"equal",
|
|
257
|
+
"not_equal",
|
|
258
|
+
"less",
|
|
259
|
+
"less_or_equal",
|
|
260
|
+
"greater",
|
|
261
|
+
"greater_or_equal"
|
|
262
|
+
]
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
case "enum" /* ENUM */: {
|
|
266
|
+
return {
|
|
267
|
+
type: "select",
|
|
268
|
+
label,
|
|
269
|
+
listValues: field.options,
|
|
270
|
+
operators: ["select_equals", "select_not_equals", "select_any_in"]
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
case "color" /* COLOR */:
|
|
274
|
+
case "file" /* FILE */:
|
|
275
|
+
case "image" /* IMAGE */:
|
|
276
|
+
case "list" /* LIST */:
|
|
277
|
+
case "object" /* OBJECT */:
|
|
278
|
+
case "rich-text" /* RICH_TEXT */:
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
function rulesLogicToCmsWhere(logic) {
|
|
283
|
+
if (logic === null || logic === void 0) {
|
|
284
|
+
return void 0;
|
|
285
|
+
} else if (typeof logic !== "object") {
|
|
286
|
+
throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);
|
|
287
|
+
} else if ("and" in logic) {
|
|
288
|
+
return {
|
|
289
|
+
$and: logic["and"].map(rulesLogicToCmsWhere)
|
|
290
|
+
};
|
|
291
|
+
} else if ("or" in logic) {
|
|
292
|
+
return {
|
|
293
|
+
$or: logic["or"].map(rulesLogicToCmsWhere)
|
|
294
|
+
};
|
|
295
|
+
} else if ("!" in logic) {
|
|
296
|
+
return {
|
|
297
|
+
$not: rulesLogicToCmsWhere(logic["!"])
|
|
298
|
+
};
|
|
299
|
+
} else if ("==" in logic) {
|
|
300
|
+
const [{ var: field }, operand] = logic["=="];
|
|
301
|
+
return {
|
|
302
|
+
[field]: operand
|
|
303
|
+
};
|
|
304
|
+
} else if ("!=" in logic) {
|
|
305
|
+
const [{ var: field }, operand] = logic["!="];
|
|
306
|
+
return {
|
|
307
|
+
$not: { [field]: operand }
|
|
308
|
+
};
|
|
309
|
+
} else {
|
|
310
|
+
const [key, value] = Object.entries(logic)[0];
|
|
311
|
+
const apiOp = operatorMapping[key];
|
|
312
|
+
if (apiOp) {
|
|
313
|
+
const [{ var: field }, operand] = value;
|
|
314
|
+
return { [field]: { [apiOp]: operand } };
|
|
315
|
+
}
|
|
316
|
+
throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
var operatorMapping = {
|
|
320
|
+
"<": "$lt",
|
|
321
|
+
"<=": "$le",
|
|
322
|
+
">": "$gt",
|
|
323
|
+
">=": "$ge",
|
|
324
|
+
in: "$in",
|
|
325
|
+
regex: "$regex"
|
|
326
|
+
};
|
|
327
|
+
|
|
198
328
|
// src/index.ts
|
|
199
329
|
function getCmsHost() {
|
|
200
330
|
var _a;
|
|
201
331
|
return (_a = globalThis["__PLASMIC_CMS_HOST__"]) != null ? _a : DEFAULT_HOST;
|
|
202
332
|
}
|
|
203
|
-
function
|
|
204
|
-
if (!(ctx == null ? void 0 : ctx.tables)) {
|
|
205
|
-
return [];
|
|
206
|
-
}
|
|
207
|
-
return ctx.tables.map((table) => ({
|
|
208
|
-
value: table.identifier,
|
|
209
|
-
label: table.name
|
|
210
|
-
}));
|
|
211
|
-
}
|
|
212
|
-
var sharedTableFnContext = (cmsId, cmsPublicToken, ..._args) => {
|
|
333
|
+
function sharedTableFnContext(cmsId, cmsPublicToken, ..._args) {
|
|
213
334
|
if (!cmsId || !cmsPublicToken) {
|
|
214
335
|
return {
|
|
215
336
|
dataKey: "",
|
|
216
|
-
fetcher: () => __async(
|
|
337
|
+
fetcher: () => __async(this, null, function* () {
|
|
217
338
|
return { tables: [] };
|
|
218
339
|
})
|
|
219
340
|
};
|
|
@@ -223,7 +344,7 @@ var sharedTableFnContext = (cmsId, cmsPublicToken, ..._args) => {
|
|
|
223
344
|
cmsId,
|
|
224
345
|
cmsPublicToken
|
|
225
346
|
})}`,
|
|
226
|
-
fetcher: () => __async(
|
|
347
|
+
fetcher: () => __async(this, null, function* () {
|
|
227
348
|
const api = mkApi({
|
|
228
349
|
databaseId: cmsId,
|
|
229
350
|
databaseToken: cmsPublicToken,
|
|
@@ -233,36 +354,101 @@ var sharedTableFnContext = (cmsId, cmsPublicToken, ..._args) => {
|
|
|
233
354
|
return { tables };
|
|
234
355
|
})
|
|
235
356
|
};
|
|
236
|
-
}
|
|
357
|
+
}
|
|
237
358
|
var cmsIdParam = {
|
|
238
359
|
name: "cmsId",
|
|
239
360
|
type: "string",
|
|
240
|
-
description: "
|
|
361
|
+
description: "Find the CMS ID on the Plasmic CMS settings page."
|
|
241
362
|
};
|
|
242
363
|
var cmsPublicTokenParam = {
|
|
243
364
|
name: "cmsPublicToken",
|
|
244
365
|
type: "string",
|
|
245
|
-
description: "
|
|
366
|
+
description: "Find the Public Token on the Plasmic CMS settings page."
|
|
246
367
|
};
|
|
247
368
|
var tableIdParam = {
|
|
248
369
|
name: "tableId",
|
|
249
370
|
type: "choice",
|
|
250
|
-
options:
|
|
371
|
+
options: (_args, ctx) => {
|
|
372
|
+
if (!(ctx == null ? void 0 : ctx.tables)) {
|
|
373
|
+
return [];
|
|
374
|
+
}
|
|
375
|
+
return ctx.tables.map((table) => ({
|
|
376
|
+
value: table.identifier,
|
|
377
|
+
label: table.name
|
|
378
|
+
}));
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
var selectParam = {
|
|
382
|
+
name: "select",
|
|
383
|
+
type: "choice",
|
|
384
|
+
multiSelect: true,
|
|
385
|
+
description: "Fields to fetch. Defaults to all fields.",
|
|
386
|
+
defaultValueHint: ["Default: *"],
|
|
387
|
+
options: (args, ctx) => {
|
|
388
|
+
const tableId = args[2];
|
|
389
|
+
return mkFieldOptions(ctx.tables, tableId);
|
|
390
|
+
}
|
|
251
391
|
};
|
|
252
|
-
var
|
|
253
|
-
name: "
|
|
254
|
-
type: "
|
|
255
|
-
description: "
|
|
392
|
+
var whereLogicParam = {
|
|
393
|
+
name: "where",
|
|
394
|
+
type: "queryBuilder",
|
|
395
|
+
description: "Filter fetched entries. Defaults to fetch all entries.",
|
|
396
|
+
config: (args, ctx) => {
|
|
397
|
+
const tableId = args[2];
|
|
398
|
+
const table = ctx.tables.find((t) => t.identifier === tableId);
|
|
399
|
+
if (table) {
|
|
400
|
+
return cmsTableToQueryBuilderConfig(table);
|
|
401
|
+
} else {
|
|
402
|
+
return { fields: {} };
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
var orderByParam = {
|
|
407
|
+
name: "orderBy",
|
|
408
|
+
type: "choice",
|
|
409
|
+
description: "Field to order entries by. Defaults to creation order.",
|
|
410
|
+
options: (args, ctx) => {
|
|
411
|
+
const tableId = args[2];
|
|
412
|
+
return mkFieldOptions(ctx.tables, tableId);
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
var orderDirectionParam = {
|
|
416
|
+
name: "orderDirection",
|
|
417
|
+
label: "Direction",
|
|
418
|
+
type: "choice",
|
|
419
|
+
options: [
|
|
420
|
+
{
|
|
421
|
+
value: "asc",
|
|
422
|
+
label: "Ascending"
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
value: "desc",
|
|
426
|
+
label: "Descending"
|
|
427
|
+
}
|
|
428
|
+
],
|
|
429
|
+
defaultValueHint: "Default: Ascending"
|
|
430
|
+
};
|
|
431
|
+
var limitParam = {
|
|
432
|
+
name: "limit",
|
|
433
|
+
type: "number",
|
|
434
|
+
description: "Maximum number of entries to fetch."
|
|
435
|
+
};
|
|
436
|
+
var offsetParam = {
|
|
437
|
+
name: "offset",
|
|
438
|
+
type: "number",
|
|
439
|
+
description: "Number of entries to skip.",
|
|
440
|
+
defaultValueHint: 0
|
|
256
441
|
};
|
|
257
442
|
var useDraftParam = {
|
|
258
443
|
name: "useDraft",
|
|
259
444
|
type: "boolean",
|
|
260
|
-
description: "Whether to use draft data.
|
|
445
|
+
description: "Whether to use draft data.",
|
|
446
|
+
defaultValueHint: false
|
|
261
447
|
};
|
|
262
448
|
var localeParam = {
|
|
263
449
|
name: "locale",
|
|
264
450
|
type: "string",
|
|
265
|
-
description: "The locale to use. Defaults to
|
|
451
|
+
description: "The locale to use. Defaults to base locale."
|
|
266
452
|
};
|
|
267
453
|
function fetchTables(cmsId, cmsPublicToken) {
|
|
268
454
|
return __async(this, null, function* () {
|
|
@@ -274,8 +460,11 @@ function fetchTables(cmsId, cmsPublicToken) {
|
|
|
274
460
|
return api.fetchTables();
|
|
275
461
|
});
|
|
276
462
|
}
|
|
277
|
-
function fetchContent(cmsId, cmsPublicToken, tableId,
|
|
463
|
+
function fetchContent(cmsId, cmsPublicToken, tableId, select, whereLogic, orderBy, orderDirection, limit, offset, useDraft, locale) {
|
|
278
464
|
return __async(this, null, function* () {
|
|
465
|
+
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
466
|
+
return [];
|
|
467
|
+
}
|
|
279
468
|
const api = mkApi({
|
|
280
469
|
databaseId: cmsId,
|
|
281
470
|
databaseToken: cmsPublicToken,
|
|
@@ -283,18 +472,30 @@ function fetchContent(cmsId, cmsPublicToken, tableId, params, useDraft, locale)
|
|
|
283
472
|
useDraft,
|
|
284
473
|
locale
|
|
285
474
|
});
|
|
286
|
-
return api.query(tableId,
|
|
475
|
+
return api.query(tableId, {
|
|
476
|
+
fields: select,
|
|
477
|
+
where: rulesLogicToCmsWhere(whereLogic),
|
|
478
|
+
orderBy,
|
|
479
|
+
desc: orderDirection === "desc",
|
|
480
|
+
limit,
|
|
481
|
+
offset
|
|
482
|
+
});
|
|
287
483
|
});
|
|
288
484
|
}
|
|
289
|
-
function fetchCount(cmsId, cmsPublicToken, tableId,
|
|
485
|
+
function fetchCount(cmsId, cmsPublicToken, tableId, whereLogic, useDraft) {
|
|
290
486
|
return __async(this, null, function* () {
|
|
487
|
+
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
488
|
+
return 0;
|
|
489
|
+
}
|
|
291
490
|
const api = mkApi({
|
|
292
491
|
databaseId: cmsId,
|
|
293
492
|
databaseToken: cmsPublicToken,
|
|
294
493
|
host: getCmsHost(),
|
|
295
494
|
useDraft
|
|
296
495
|
});
|
|
297
|
-
return api.count(tableId,
|
|
496
|
+
return api.count(tableId, {
|
|
497
|
+
where: rulesLogicToCmsWhere(whereLogic)
|
|
498
|
+
});
|
|
298
499
|
});
|
|
299
500
|
}
|
|
300
501
|
function registerAllCmsFunctions(loader) {
|
|
@@ -323,7 +524,12 @@ function registerAllCmsFunctions(loader) {
|
|
|
323
524
|
cmsIdParam,
|
|
324
525
|
cmsPublicTokenParam,
|
|
325
526
|
tableIdParam,
|
|
326
|
-
|
|
527
|
+
selectParam,
|
|
528
|
+
whereLogicParam,
|
|
529
|
+
orderByParam,
|
|
530
|
+
orderDirectionParam,
|
|
531
|
+
limitParam,
|
|
532
|
+
offsetParam,
|
|
327
533
|
useDraftParam,
|
|
328
534
|
localeParam
|
|
329
535
|
],
|
|
@@ -339,7 +545,7 @@ function registerAllCmsFunctions(loader) {
|
|
|
339
545
|
cmsIdParam,
|
|
340
546
|
cmsPublicTokenParam,
|
|
341
547
|
tableIdParam,
|
|
342
|
-
|
|
548
|
+
whereLogicParam,
|
|
343
549
|
useDraftParam
|
|
344
550
|
],
|
|
345
551
|
fnContext: sharedTableFnContext
|
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/schema.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\nimport { QueryParams, mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\n\nfunction getCmsHost() {\n return (globalThis as any)[\"__PLASMIC_CMS_HOST__\"] ?? DEFAULT_HOST;\n}\n\nfunction createTableOptions(\n _args: unknown[],\n ctx: { tables: Array<{ identifier: string; name: string }> } | undefined\n): Array<{ value: string; label: string }> {\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\nconst sharedTableFnContext = (\n cmsId?: string,\n cmsPublicToken?: string,\n ..._args: unknown[]\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: \"The cms ID\",\n} as const;\n\nconst cmsPublicTokenParam = {\n name: \"cmsPublicToken\",\n type: \"string\",\n description: \"The cms public token\",\n} as const;\n\nconst tableIdParam = {\n name: \"tableId\",\n type: \"choice\",\n options: createTableOptions,\n} as const;\n\n// TODO: Directly handle the inner params available options\nconst paramsParam = {\n name: \"params\",\n type: \"object\",\n description:\n \"The parameters to filter the content (e.g., for sorting, limit, offset, advanced queries)\",\n} as const;\n\nconst useDraftParam = {\n name: \"useDraft\",\n type: \"boolean\",\n description: \"Whether to use draft data. Defaults to false.\",\n} as const;\n\nconst localeParam = {\n name: \"locale\",\n type: \"string\",\n description: \"The locale to use. Defaults to empty string.\",\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 params: QueryParams,\n useDraft: boolean,\n locale: string\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, params);\n}\n\nexport async function fetchCount(\n cmsId: string,\n cmsPublicToken: string,\n tableId: string,\n params: QueryParams,\n useDraft: boolean\n) {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n });\n\n return api.count(tableId, params);\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 paramsParam,\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 paramsParam,\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", "// 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 {\n identifier: string;\n name: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsRef\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 { 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.name || f.identifier,\n }));\n if (!options.some((option) => option.value === \"_id\")) {\n options.push({\n label: \"System-assigned ID\",\n value: \"_id\",\n });\n }\n\n return options;\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;
|
|
3
|
+
"sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/util.ts", "../src/schema.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\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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",
|
|
6
6
|
"names": ["CmsMetaType"]
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -147,10 +147,11 @@ var API = class {
|
|
|
147
147
|
}
|
|
148
148
|
query(_0) {
|
|
149
149
|
return __async(this, arguments, function* (table, params = {}) {
|
|
150
|
+
var _a;
|
|
150
151
|
try {
|
|
151
152
|
const response = yield this.get(`/tables/${table}/query`, {
|
|
152
153
|
q: JSON.stringify(queryParamsToApi(params)),
|
|
153
|
-
draft: Number(this.useDraftForTable(table)
|
|
154
|
+
draft: Number((_a = this.useDraftForTable(table)) != null ? _a : params.useDraft),
|
|
154
155
|
locale: this.config.locale
|
|
155
156
|
});
|
|
156
157
|
return response.rows;
|
|
@@ -162,10 +163,11 @@ var API = class {
|
|
|
162
163
|
}
|
|
163
164
|
count(_0) {
|
|
164
165
|
return __async(this, arguments, function* (table, params = {}) {
|
|
166
|
+
var _a;
|
|
165
167
|
try {
|
|
166
168
|
const response = yield this.get(`/tables/${table}/count`, {
|
|
167
169
|
q: JSON.stringify(queryParamsToApi(params)),
|
|
168
|
-
draft: Number(this.useDraftForTable(table)
|
|
170
|
+
draft: Number((_a = this.useDraftForTable(table)) != null ? _a : params.useDraft)
|
|
169
171
|
});
|
|
170
172
|
return response.count;
|
|
171
173
|
} catch (e) {
|
|
@@ -185,24 +187,6 @@ function mkApi(config) {
|
|
|
185
187
|
// src/constants.ts
|
|
186
188
|
var DEFAULT_HOST = "https://data.plasmic.app";
|
|
187
189
|
|
|
188
|
-
// src/schema.ts
|
|
189
|
-
var CmsMetaType = /* @__PURE__ */ ((CmsMetaType2) => {
|
|
190
|
-
CmsMetaType2["TEXT"] = "text";
|
|
191
|
-
CmsMetaType2["LONG_TEXT"] = "long-text";
|
|
192
|
-
CmsMetaType2["NUMBER"] = "number";
|
|
193
|
-
CmsMetaType2["IMAGE"] = "image";
|
|
194
|
-
CmsMetaType2["FILE"] = "file";
|
|
195
|
-
CmsMetaType2["DATE_TIME"] = "date-time";
|
|
196
|
-
CmsMetaType2["BOOLEAN"] = "boolean";
|
|
197
|
-
CmsMetaType2["COLOR"] = "color";
|
|
198
|
-
CmsMetaType2["RICH_TEXT"] = "rich-text";
|
|
199
|
-
CmsMetaType2["REF"] = "ref";
|
|
200
|
-
CmsMetaType2["LIST"] = "list";
|
|
201
|
-
CmsMetaType2["OBJECT"] = "object";
|
|
202
|
-
CmsMetaType2["ENUM"] = "enum";
|
|
203
|
-
return CmsMetaType2;
|
|
204
|
-
})(CmsMetaType || {});
|
|
205
|
-
|
|
206
190
|
// src/util.ts
|
|
207
191
|
function mkTableOptions(tables) {
|
|
208
192
|
if (!tables) {
|
|
@@ -227,36 +211,173 @@ function mkFieldOptions(tables, tableIdentifier, types) {
|
|
|
227
211
|
}
|
|
228
212
|
const options = fields.map((f) => ({
|
|
229
213
|
value: f.identifier,
|
|
230
|
-
label: f.
|
|
214
|
+
label: f.label || f.identifier
|
|
231
215
|
}));
|
|
232
216
|
if (!options.some((option) => option.value === "_id")) {
|
|
233
217
|
options.push({
|
|
234
|
-
label: "System
|
|
218
|
+
label: "System ID",
|
|
235
219
|
value: "_id"
|
|
236
220
|
});
|
|
237
221
|
}
|
|
238
222
|
return options;
|
|
239
223
|
}
|
|
240
224
|
|
|
225
|
+
// src/schema.ts
|
|
226
|
+
var CmsMetaType = /* @__PURE__ */ ((CmsMetaType2) => {
|
|
227
|
+
CmsMetaType2["TEXT"] = "text";
|
|
228
|
+
CmsMetaType2["LONG_TEXT"] = "long-text";
|
|
229
|
+
CmsMetaType2["NUMBER"] = "number";
|
|
230
|
+
CmsMetaType2["IMAGE"] = "image";
|
|
231
|
+
CmsMetaType2["FILE"] = "file";
|
|
232
|
+
CmsMetaType2["DATE_TIME"] = "date-time";
|
|
233
|
+
CmsMetaType2["BOOLEAN"] = "boolean";
|
|
234
|
+
CmsMetaType2["COLOR"] = "color";
|
|
235
|
+
CmsMetaType2["RICH_TEXT"] = "rich-text";
|
|
236
|
+
CmsMetaType2["REF"] = "ref";
|
|
237
|
+
CmsMetaType2["LIST"] = "list";
|
|
238
|
+
CmsMetaType2["OBJECT"] = "object";
|
|
239
|
+
CmsMetaType2["ENUM"] = "enum";
|
|
240
|
+
return CmsMetaType2;
|
|
241
|
+
})(CmsMetaType || {});
|
|
242
|
+
|
|
243
|
+
// src/where.ts
|
|
244
|
+
function cmsTableToQueryBuilderConfig(table) {
|
|
245
|
+
const qbFields = {
|
|
246
|
+
_id: {
|
|
247
|
+
type: "text",
|
|
248
|
+
label: "System ID",
|
|
249
|
+
operators: ["equal", "not_equal"]
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
for (const field of table.schema.fields) {
|
|
253
|
+
const qbField = cmsFieldToQueryBuilderField(field);
|
|
254
|
+
if (qbField) {
|
|
255
|
+
qbFields[field.identifier] = qbField;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return {
|
|
259
|
+
fields: qbFields
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
function cmsFieldToQueryBuilderField(field) {
|
|
263
|
+
const label = field.label || field.identifier;
|
|
264
|
+
switch (field.type) {
|
|
265
|
+
case "text" /* TEXT */:
|
|
266
|
+
case "long-text" /* LONG_TEXT */:
|
|
267
|
+
case "ref" /* REF */: {
|
|
268
|
+
return {
|
|
269
|
+
type: "text",
|
|
270
|
+
label,
|
|
271
|
+
operators: ["equal", "not_equal", "regex"]
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
case "number" /* NUMBER */: {
|
|
275
|
+
return {
|
|
276
|
+
type: "number",
|
|
277
|
+
label,
|
|
278
|
+
operators: [
|
|
279
|
+
"equal",
|
|
280
|
+
"not_equal",
|
|
281
|
+
"less",
|
|
282
|
+
"less_or_equal",
|
|
283
|
+
"greater",
|
|
284
|
+
"greater_or_equal"
|
|
285
|
+
]
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
case "boolean" /* BOOLEAN */: {
|
|
289
|
+
return {
|
|
290
|
+
type: "boolean",
|
|
291
|
+
label
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
case "date-time" /* DATE_TIME */: {
|
|
295
|
+
return {
|
|
296
|
+
type: "datetime",
|
|
297
|
+
label,
|
|
298
|
+
operators: [
|
|
299
|
+
"equal",
|
|
300
|
+
"not_equal",
|
|
301
|
+
"less",
|
|
302
|
+
"less_or_equal",
|
|
303
|
+
"greater",
|
|
304
|
+
"greater_or_equal"
|
|
305
|
+
]
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
case "enum" /* ENUM */: {
|
|
309
|
+
return {
|
|
310
|
+
type: "select",
|
|
311
|
+
label,
|
|
312
|
+
listValues: field.options,
|
|
313
|
+
operators: ["select_equals", "select_not_equals", "select_any_in"]
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
case "color" /* COLOR */:
|
|
317
|
+
case "file" /* FILE */:
|
|
318
|
+
case "image" /* IMAGE */:
|
|
319
|
+
case "list" /* LIST */:
|
|
320
|
+
case "object" /* OBJECT */:
|
|
321
|
+
case "rich-text" /* RICH_TEXT */:
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
function rulesLogicToCmsWhere(logic) {
|
|
326
|
+
if (logic === null || logic === void 0) {
|
|
327
|
+
return void 0;
|
|
328
|
+
} else if (typeof logic !== "object") {
|
|
329
|
+
throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);
|
|
330
|
+
} else if ("and" in logic) {
|
|
331
|
+
return {
|
|
332
|
+
$and: logic["and"].map(rulesLogicToCmsWhere)
|
|
333
|
+
};
|
|
334
|
+
} else if ("or" in logic) {
|
|
335
|
+
return {
|
|
336
|
+
$or: logic["or"].map(rulesLogicToCmsWhere)
|
|
337
|
+
};
|
|
338
|
+
} else if ("!" in logic) {
|
|
339
|
+
return {
|
|
340
|
+
$not: rulesLogicToCmsWhere(logic["!"])
|
|
341
|
+
};
|
|
342
|
+
} else if ("==" in logic) {
|
|
343
|
+
const [{ var: field }, operand] = logic["=="];
|
|
344
|
+
return {
|
|
345
|
+
[field]: operand
|
|
346
|
+
};
|
|
347
|
+
} else if ("!=" in logic) {
|
|
348
|
+
const [{ var: field }, operand] = logic["!="];
|
|
349
|
+
return {
|
|
350
|
+
$not: { [field]: operand }
|
|
351
|
+
};
|
|
352
|
+
} else {
|
|
353
|
+
const [key, value] = Object.entries(logic)[0];
|
|
354
|
+
const apiOp = operatorMapping[key];
|
|
355
|
+
if (apiOp) {
|
|
356
|
+
const [{ var: field }, operand] = value;
|
|
357
|
+
return { [field]: { [apiOp]: operand } };
|
|
358
|
+
}
|
|
359
|
+
throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
var operatorMapping = {
|
|
363
|
+
"<": "$lt",
|
|
364
|
+
"<=": "$le",
|
|
365
|
+
">": "$gt",
|
|
366
|
+
">=": "$ge",
|
|
367
|
+
in: "$in",
|
|
368
|
+
regex: "$regex"
|
|
369
|
+
};
|
|
370
|
+
|
|
241
371
|
// src/index.ts
|
|
242
372
|
function getCmsHost() {
|
|
243
373
|
var _a;
|
|
244
374
|
return (_a = globalThis["__PLASMIC_CMS_HOST__"]) != null ? _a : DEFAULT_HOST;
|
|
245
375
|
}
|
|
246
|
-
function
|
|
247
|
-
if (!(ctx == null ? void 0 : ctx.tables)) {
|
|
248
|
-
return [];
|
|
249
|
-
}
|
|
250
|
-
return ctx.tables.map((table) => ({
|
|
251
|
-
value: table.identifier,
|
|
252
|
-
label: table.name
|
|
253
|
-
}));
|
|
254
|
-
}
|
|
255
|
-
var sharedTableFnContext = (cmsId, cmsPublicToken, ..._args) => {
|
|
376
|
+
function sharedTableFnContext(cmsId, cmsPublicToken, ..._args) {
|
|
256
377
|
if (!cmsId || !cmsPublicToken) {
|
|
257
378
|
return {
|
|
258
379
|
dataKey: "",
|
|
259
|
-
fetcher: () => __async(
|
|
380
|
+
fetcher: () => __async(this, null, function* () {
|
|
260
381
|
return { tables: [] };
|
|
261
382
|
})
|
|
262
383
|
};
|
|
@@ -266,7 +387,7 @@ var sharedTableFnContext = (cmsId, cmsPublicToken, ..._args) => {
|
|
|
266
387
|
cmsId,
|
|
267
388
|
cmsPublicToken
|
|
268
389
|
})}`,
|
|
269
|
-
fetcher: () => __async(
|
|
390
|
+
fetcher: () => __async(this, null, function* () {
|
|
270
391
|
const api = mkApi({
|
|
271
392
|
databaseId: cmsId,
|
|
272
393
|
databaseToken: cmsPublicToken,
|
|
@@ -276,36 +397,101 @@ var sharedTableFnContext = (cmsId, cmsPublicToken, ..._args) => {
|
|
|
276
397
|
return { tables };
|
|
277
398
|
})
|
|
278
399
|
};
|
|
279
|
-
}
|
|
400
|
+
}
|
|
280
401
|
var cmsIdParam = {
|
|
281
402
|
name: "cmsId",
|
|
282
403
|
type: "string",
|
|
283
|
-
description: "
|
|
404
|
+
description: "Find the CMS ID on the Plasmic CMS settings page."
|
|
284
405
|
};
|
|
285
406
|
var cmsPublicTokenParam = {
|
|
286
407
|
name: "cmsPublicToken",
|
|
287
408
|
type: "string",
|
|
288
|
-
description: "
|
|
409
|
+
description: "Find the Public Token on the Plasmic CMS settings page."
|
|
289
410
|
};
|
|
290
411
|
var tableIdParam = {
|
|
291
412
|
name: "tableId",
|
|
292
413
|
type: "choice",
|
|
293
|
-
options:
|
|
414
|
+
options: (_args, ctx) => {
|
|
415
|
+
if (!(ctx == null ? void 0 : ctx.tables)) {
|
|
416
|
+
return [];
|
|
417
|
+
}
|
|
418
|
+
return ctx.tables.map((table) => ({
|
|
419
|
+
value: table.identifier,
|
|
420
|
+
label: table.name
|
|
421
|
+
}));
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
var selectParam = {
|
|
425
|
+
name: "select",
|
|
426
|
+
type: "choice",
|
|
427
|
+
multiSelect: true,
|
|
428
|
+
description: "Fields to fetch. Defaults to all fields.",
|
|
429
|
+
defaultValueHint: ["Default: *"],
|
|
430
|
+
options: (args, ctx) => {
|
|
431
|
+
const tableId = args[2];
|
|
432
|
+
return mkFieldOptions(ctx.tables, tableId);
|
|
433
|
+
}
|
|
294
434
|
};
|
|
295
|
-
var
|
|
296
|
-
name: "
|
|
297
|
-
type: "
|
|
298
|
-
description: "
|
|
435
|
+
var whereLogicParam = {
|
|
436
|
+
name: "where",
|
|
437
|
+
type: "queryBuilder",
|
|
438
|
+
description: "Filter fetched entries. Defaults to fetch all entries.",
|
|
439
|
+
config: (args, ctx) => {
|
|
440
|
+
const tableId = args[2];
|
|
441
|
+
const table = ctx.tables.find((t) => t.identifier === tableId);
|
|
442
|
+
if (table) {
|
|
443
|
+
return cmsTableToQueryBuilderConfig(table);
|
|
444
|
+
} else {
|
|
445
|
+
return { fields: {} };
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
var orderByParam = {
|
|
450
|
+
name: "orderBy",
|
|
451
|
+
type: "choice",
|
|
452
|
+
description: "Field to order entries by. Defaults to creation order.",
|
|
453
|
+
options: (args, ctx) => {
|
|
454
|
+
const tableId = args[2];
|
|
455
|
+
return mkFieldOptions(ctx.tables, tableId);
|
|
456
|
+
}
|
|
457
|
+
};
|
|
458
|
+
var orderDirectionParam = {
|
|
459
|
+
name: "orderDirection",
|
|
460
|
+
label: "Direction",
|
|
461
|
+
type: "choice",
|
|
462
|
+
options: [
|
|
463
|
+
{
|
|
464
|
+
value: "asc",
|
|
465
|
+
label: "Ascending"
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
value: "desc",
|
|
469
|
+
label: "Descending"
|
|
470
|
+
}
|
|
471
|
+
],
|
|
472
|
+
defaultValueHint: "Default: Ascending"
|
|
473
|
+
};
|
|
474
|
+
var limitParam = {
|
|
475
|
+
name: "limit",
|
|
476
|
+
type: "number",
|
|
477
|
+
description: "Maximum number of entries to fetch."
|
|
478
|
+
};
|
|
479
|
+
var offsetParam = {
|
|
480
|
+
name: "offset",
|
|
481
|
+
type: "number",
|
|
482
|
+
description: "Number of entries to skip.",
|
|
483
|
+
defaultValueHint: 0
|
|
299
484
|
};
|
|
300
485
|
var useDraftParam = {
|
|
301
486
|
name: "useDraft",
|
|
302
487
|
type: "boolean",
|
|
303
|
-
description: "Whether to use draft data.
|
|
488
|
+
description: "Whether to use draft data.",
|
|
489
|
+
defaultValueHint: false
|
|
304
490
|
};
|
|
305
491
|
var localeParam = {
|
|
306
492
|
name: "locale",
|
|
307
493
|
type: "string",
|
|
308
|
-
description: "The locale to use. Defaults to
|
|
494
|
+
description: "The locale to use. Defaults to base locale."
|
|
309
495
|
};
|
|
310
496
|
function fetchTables(cmsId, cmsPublicToken) {
|
|
311
497
|
return __async(this, null, function* () {
|
|
@@ -317,8 +503,11 @@ function fetchTables(cmsId, cmsPublicToken) {
|
|
|
317
503
|
return api.fetchTables();
|
|
318
504
|
});
|
|
319
505
|
}
|
|
320
|
-
function fetchContent(cmsId, cmsPublicToken, tableId,
|
|
506
|
+
function fetchContent(cmsId, cmsPublicToken, tableId, select, whereLogic, orderBy, orderDirection, limit, offset, useDraft, locale) {
|
|
321
507
|
return __async(this, null, function* () {
|
|
508
|
+
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
509
|
+
return [];
|
|
510
|
+
}
|
|
322
511
|
const api = mkApi({
|
|
323
512
|
databaseId: cmsId,
|
|
324
513
|
databaseToken: cmsPublicToken,
|
|
@@ -326,18 +515,30 @@ function fetchContent(cmsId, cmsPublicToken, tableId, params, useDraft, locale)
|
|
|
326
515
|
useDraft,
|
|
327
516
|
locale
|
|
328
517
|
});
|
|
329
|
-
return api.query(tableId,
|
|
518
|
+
return api.query(tableId, {
|
|
519
|
+
fields: select,
|
|
520
|
+
where: rulesLogicToCmsWhere(whereLogic),
|
|
521
|
+
orderBy,
|
|
522
|
+
desc: orderDirection === "desc",
|
|
523
|
+
limit,
|
|
524
|
+
offset
|
|
525
|
+
});
|
|
330
526
|
});
|
|
331
527
|
}
|
|
332
|
-
function fetchCount(cmsId, cmsPublicToken, tableId,
|
|
528
|
+
function fetchCount(cmsId, cmsPublicToken, tableId, whereLogic, useDraft) {
|
|
333
529
|
return __async(this, null, function* () {
|
|
530
|
+
if (!cmsId || !cmsPublicToken || !tableId) {
|
|
531
|
+
return 0;
|
|
532
|
+
}
|
|
334
533
|
const api = mkApi({
|
|
335
534
|
databaseId: cmsId,
|
|
336
535
|
databaseToken: cmsPublicToken,
|
|
337
536
|
host: getCmsHost(),
|
|
338
537
|
useDraft
|
|
339
538
|
});
|
|
340
|
-
return api.count(tableId,
|
|
539
|
+
return api.count(tableId, {
|
|
540
|
+
where: rulesLogicToCmsWhere(whereLogic)
|
|
541
|
+
});
|
|
341
542
|
});
|
|
342
543
|
}
|
|
343
544
|
function registerAllCmsFunctions(loader) {
|
|
@@ -366,7 +567,12 @@ function registerAllCmsFunctions(loader) {
|
|
|
366
567
|
cmsIdParam,
|
|
367
568
|
cmsPublicTokenParam,
|
|
368
569
|
tableIdParam,
|
|
369
|
-
|
|
570
|
+
selectParam,
|
|
571
|
+
whereLogicParam,
|
|
572
|
+
orderByParam,
|
|
573
|
+
orderDirectionParam,
|
|
574
|
+
limitParam,
|
|
575
|
+
offsetParam,
|
|
370
576
|
useDraftParam,
|
|
371
577
|
localeParam
|
|
372
578
|
],
|
|
@@ -382,7 +588,7 @@ function registerAllCmsFunctions(loader) {
|
|
|
382
588
|
cmsIdParam,
|
|
383
589
|
cmsPublicTokenParam,
|
|
384
590
|
tableIdParam,
|
|
385
|
-
|
|
591
|
+
whereLogicParam,
|
|
386
592
|
useDraftParam
|
|
387
593
|
],
|
|
388
594
|
fnContext: sharedTableFnContext
|
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/schema.ts", "../src/
|
|
4
|
-
"sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\n\nimport { QueryParams, mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\n\nfunction getCmsHost() {\n return (globalThis as any)[\"__PLASMIC_CMS_HOST__\"] ?? DEFAULT_HOST;\n}\n\nfunction createTableOptions(\n _args: unknown[],\n ctx: { tables: Array<{ identifier: string; name: string }> } | undefined\n): Array<{ value: string; label: string }> {\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\nconst sharedTableFnContext = (\n cmsId?: string,\n cmsPublicToken?: string,\n ..._args: unknown[]\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: \"The cms ID\",\n} as const;\n\nconst cmsPublicTokenParam = {\n name: \"cmsPublicToken\",\n type: \"string\",\n description: \"The cms public token\",\n} as const;\n\nconst tableIdParam = {\n name: \"tableId\",\n type: \"choice\",\n options: createTableOptions,\n} as const;\n\n// TODO: Directly handle the inner params available options\nconst paramsParam = {\n name: \"params\",\n type: \"object\",\n description:\n \"The parameters to filter the content (e.g., for sorting, limit, offset, advanced queries)\",\n} as const;\n\nconst useDraftParam = {\n name: \"useDraft\",\n type: \"boolean\",\n description: \"Whether to use draft data. Defaults to false.\",\n} as const;\n\nconst localeParam = {\n name: \"locale\",\n type: \"string\",\n description: \"The locale to use. Defaults to empty string.\",\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 params: QueryParams,\n useDraft: boolean,\n locale: string\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, params);\n}\n\nexport async function fetchCount(\n cmsId: string,\n cmsPublicToken: string,\n tableId: string,\n params: QueryParams,\n useDraft: boolean\n) {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(),\n useDraft,\n });\n\n return api.count(tableId, params);\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 paramsParam,\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 paramsParam,\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", "// 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 {\n identifier: string;\n name: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsRef\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 { 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.name || f.identifier,\n }));\n if (!options.some((option) => option.value === \"_id\")) {\n options.push({\n label: \"System-assigned ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAEO;;;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;
|
|
3
|
+
"sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/util.ts", "../src/schema.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\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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",
|
|
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.5",
|
|
4
4
|
"description": "Plasmic CMS custom functions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,15 +27,18 @@
|
|
|
27
27
|
"build": "yarn build:types && yarn build:index",
|
|
28
28
|
"build:types": "yarn tsc",
|
|
29
29
|
"build:index": "node ../../build.mjs ./src/index.ts",
|
|
30
|
+
"test": "TEST_CWD=`pwd` yarn --cwd=../../.. test",
|
|
30
31
|
"prepublishOnly": "npm run build",
|
|
31
32
|
"postpublish": "bash ../../scripts/publish-api-doc-model.sh"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
|
-
"@plasmicapp/host": "1.0.
|
|
35
|
+
"@plasmicapp/host": "1.0.229",
|
|
36
|
+
"@react-awesome-query-builder/core": "^6.0.0",
|
|
37
|
+
"@types/json-logic-js": "^2.0.0",
|
|
35
38
|
"@types/node": "^17.0.14"
|
|
36
39
|
},
|
|
37
40
|
"peerDependencies": {
|
|
38
41
|
"@plasmicapp/host": "^1.0.211"
|
|
39
42
|
},
|
|
40
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "acc07c83970887f300c473305187ed4406b952e5"
|
|
41
44
|
}
|