@plasmicpkgs/cms 0.0.26 → 0.0.28

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.esm.js CHANGED
@@ -399,16 +399,19 @@ var cmsIdParam = {
399
399
  type: "string",
400
400
  displayName: "CMS ID",
401
401
  description: "ID of the CMS.",
402
+ required: true,
402
403
  helpText: "Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
403
404
  };
404
405
  var cmsPublicTokenParam = {
405
406
  type: "string",
406
407
  displayName: "CMS public token",
407
408
  description: "Public token of the CMS.",
409
+ required: true,
408
410
  helpText: "Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
409
411
  };
410
412
  var tableIdParam = {
411
413
  type: "choice",
414
+ required: true,
412
415
  options: (_args, ctx) => {
413
416
  if (!(ctx == null ? void 0 : ctx.tables)) {
414
417
  return [];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/schema.ts", "../src/util.ts", "../src/where.ts"],
4
- "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\nimport { ApiCmsTable } from \"./schema\";\nimport { mkFieldOptions } from \"./util\";\nimport { cmsTableToQueryBuilderConfig, rulesLogicToCmsWhere } from \"./where\";\n\nfunction getCmsHost(hostParam: string | undefined) {\n return hostParam ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\ninterface BaseCMSOpts {\n host?: string;\n cmsId?: string;\n cmsPublicToken?: string;\n}\n\ninterface CMSTableOpts extends BaseCMSOpts {\n tableId?: string;\n}\n\nfunction sharedTableFnContext({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts = {}): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\nconst hostParam = {\n type: \"string\",\n description: \"CMS host URL.\",\n helpText:\n \"The Host URL of the CMS. You should not have to modify this for normal usage.\",\n defaultValue: DEFAULT_HOST,\n advanced: true,\n} as const;\n\nconst cmsIdParam = {\n type: \"string\",\n displayName: \"CMS ID\",\n description: \"ID of the CMS.\",\n helpText:\n \"Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst cmsPublicTokenParam = {\n type: \"string\",\n displayName: \"CMS public token\",\n description: \"Public token of the CMS.\",\n helpText:\n \"Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst tableIdParam = {\n type: \"choice\",\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst whereLogicParam = {\n type: \"queryBuilder\",\n displayName: \"Filter\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst orderDirectionParam = {\n displayName: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts) {\n if (!cmsId || !cmsPublicToken) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n\n return api.fetchTables();\n}\n\ninterface FetchContentOpts extends CMSTableOpts {\n select?: string[];\n whereLogic?: RulesLogic;\n orderBy?: string;\n orderDirection?: \"asc\" | \"desc\";\n limit?: number;\n offset?: number;\n useDraft?: boolean;\n locale?: string;\n}\n\nexport async function fetchContent({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n select,\n whereLogic,\n orderBy,\n orderDirection,\n limit,\n offset,\n useDraft,\n locale,\n}: FetchContentOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\ninterface FetchCountOpts extends CMSTableOpts {\n whereLogic?: RulesLogic;\n useDraft?: boolean;\n}\n\nexport async function fetchCount({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n useDraft,\n whereLogic,\n}: FetchCountOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\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 isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n },\n },\n ],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n select: selectParam,\n whereLogic: whereLogicParam,\n orderBy: orderByParam,\n orderDirection: orderDirectionParam,\n limit: limitParam,\n offset: offsetParam,\n useDraft: useDraftParam,\n locale: localeParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n whereLogic: whereLogicParam,\n useDraft: useDraftParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import {\n ApiCmsTable,\n CmsFieldMeta,\n CmsList,\n CmsMetaType,\n CmsObject,\n CmsType,\n} from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[],\n opts?: {\n includeSystemId?: boolean;\n includeRefStars?: boolean;\n }\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n\n const options = [\n // single fields\n ...fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n })),\n\n // ref star fields\n ...(opts?.includeRefStars ? mkRefStarFieldOptions([], fields) : []),\n ];\n\n options.sort((a, b) => a.label.localeCompare(b.label));\n\n if (\n opts?.includeSystemId &&\n !options.some((option) => option.value === \"_id\")\n ) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n\nfunction mkRefStarFieldOptions(\n fieldPath: (CmsList | CmsObject)[],\n nextFields: CmsFieldMeta[]\n): ValueLabelPair[] {\n return nextFields.flatMap((nestedField) => {\n if (nestedField.type === CmsMetaType.REF) {\n const fieldPathToRef = [...fieldPath, nestedField];\n return [\n {\n value: fieldPathToRef.map((f) => f.identifier).join(\".\") + \".*\",\n label:\n fieldPathToRef.map((f) => f.label || f.identifier).join(\".\") + \".*\",\n },\n ];\n } else if (\n nestedField.type === CmsMetaType.LIST ||\n nestedField.type === CmsMetaType.OBJECT\n ) {\n return mkRefStarFieldOptions(\n [...fieldPath, nestedField],\n nestedField.fields\n );\n } else {\n return [];\n }\n });\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
5
- "mappings": "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",
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(hostParam: string | undefined) {\n return hostParam ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\ninterface BaseCMSOpts {\n host?: string;\n cmsId?: string;\n cmsPublicToken?: string;\n}\n\ninterface CMSTableOpts extends BaseCMSOpts {\n tableId?: string;\n}\n\nfunction sharedTableFnContext({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts = {}): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\nconst hostParam = {\n type: \"string\",\n description: \"CMS host URL.\",\n helpText:\n \"The Host URL of the CMS. You should not have to modify this for normal usage.\",\n defaultValue: DEFAULT_HOST,\n advanced: true,\n} as const;\n\nconst cmsIdParam = {\n type: \"string\",\n displayName: \"CMS ID\",\n description: \"ID of the CMS.\",\n required: true,\n helpText:\n \"Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst cmsPublicTokenParam = {\n type: \"string\",\n displayName: \"CMS public token\",\n description: \"Public token of the CMS.\",\n required: true,\n helpText:\n \"Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst tableIdParam = {\n type: \"choice\",\n required: true,\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst whereLogicParam = {\n type: \"queryBuilder\",\n displayName: \"Filter\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst orderDirectionParam = {\n displayName: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts) {\n if (!cmsId || !cmsPublicToken) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n\n return api.fetchTables();\n}\n\ninterface FetchContentOpts extends CMSTableOpts {\n select?: string[];\n whereLogic?: RulesLogic;\n orderBy?: string;\n orderDirection?: \"asc\" | \"desc\";\n limit?: number;\n offset?: number;\n useDraft?: boolean;\n locale?: string;\n}\n\nexport async function fetchContent({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n select,\n whereLogic,\n orderBy,\n orderDirection,\n limit,\n offset,\n useDraft,\n locale,\n}: FetchContentOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\ninterface FetchCountOpts extends CMSTableOpts {\n whereLogic?: RulesLogic;\n useDraft?: boolean;\n}\n\nexport async function fetchCount({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n useDraft,\n whereLogic,\n}: FetchCountOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\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 isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n },\n },\n ],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n select: selectParam,\n whereLogic: whereLogicParam,\n orderBy: orderByParam,\n orderDirection: orderDirectionParam,\n limit: limitParam,\n offset: offsetParam,\n useDraft: useDraftParam,\n locale: localeParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n whereLogic: whereLogicParam,\n useDraft: useDraftParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import {\n ApiCmsTable,\n CmsFieldMeta,\n CmsList,\n CmsMetaType,\n CmsObject,\n CmsType,\n} from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[],\n opts?: {\n includeSystemId?: boolean;\n includeRefStars?: boolean;\n }\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n\n const options = [\n // single fields\n ...fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n })),\n\n // ref star fields\n ...(opts?.includeRefStars ? mkRefStarFieldOptions([], fields) : []),\n ];\n\n options.sort((a, b) => a.label.localeCompare(b.label));\n\n if (\n opts?.includeSystemId &&\n !options.some((option) => option.value === \"_id\")\n ) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n\nfunction mkRefStarFieldOptions(\n fieldPath: (CmsList | CmsObject)[],\n nextFields: CmsFieldMeta[]\n): ValueLabelPair[] {\n return nextFields.flatMap((nestedField) => {\n if (nestedField.type === CmsMetaType.REF) {\n const fieldPathToRef = [...fieldPath, nestedField];\n return [\n {\n value: fieldPathToRef.map((f) => f.identifier).join(\".\") + \".*\",\n label:\n fieldPathToRef.map((f) => f.label || f.identifier).join(\".\") + \".*\",\n },\n ];\n } else if (\n nestedField.type === CmsMetaType.LIST ||\n nestedField.type === CmsMetaType.OBJECT\n ) {\n return mkRefStarFieldOptions(\n [...fieldPath, nestedField],\n nestedField.fields\n );\n } else {\n return [];\n }\n });\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["CmsMetaType", "hostParam"]
7
7
  }
package/dist/index.js CHANGED
@@ -441,16 +441,19 @@ var cmsIdParam = {
441
441
  type: "string",
442
442
  displayName: "CMS ID",
443
443
  description: "ID of the CMS.",
444
+ required: true,
444
445
  helpText: "Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
445
446
  };
446
447
  var cmsPublicTokenParam = {
447
448
  type: "string",
448
449
  displayName: "CMS public token",
449
450
  description: "Public token of the CMS.",
451
+ required: true,
450
452
  helpText: "Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)"
451
453
  };
452
454
  var tableIdParam = {
453
455
  type: "choice",
456
+ required: true,
454
457
  options: (_args, ctx) => {
455
458
  if (!(ctx == null ? void 0 : ctx.tables)) {
456
459
  return [];
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/api.ts", "../src/constants.ts", "../src/schema.ts", "../src/util.ts", "../src/where.ts"],
4
- "sourcesContent": ["import registerFunction, {\n CustomFunctionMeta,\n} from \"@plasmicapp/host/registerFunction\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { mkApi } from \"./api\";\nimport { DEFAULT_HOST } from \"./constants\";\nimport { ApiCmsTable } from \"./schema\";\nimport { mkFieldOptions } from \"./util\";\nimport { cmsTableToQueryBuilderConfig, rulesLogicToCmsWhere } from \"./where\";\n\nfunction getCmsHost(hostParam: string | undefined) {\n return hostParam ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\ninterface BaseCMSOpts {\n host?: string;\n cmsId?: string;\n cmsPublicToken?: string;\n}\n\ninterface CMSTableOpts extends BaseCMSOpts {\n tableId?: string;\n}\n\nfunction sharedTableFnContext({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts = {}): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\nconst hostParam = {\n type: \"string\",\n description: \"CMS host URL.\",\n helpText:\n \"The Host URL of the CMS. You should not have to modify this for normal usage.\",\n defaultValue: DEFAULT_HOST,\n advanced: true,\n} as const;\n\nconst cmsIdParam = {\n type: \"string\",\n displayName: \"CMS ID\",\n description: \"ID of the CMS.\",\n helpText:\n \"Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst cmsPublicTokenParam = {\n type: \"string\",\n displayName: \"CMS public token\",\n description: \"Public token of the CMS.\",\n helpText:\n \"Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst tableIdParam = {\n type: \"choice\",\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst whereLogicParam = {\n type: \"queryBuilder\",\n displayName: \"Filter\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst orderDirectionParam = {\n displayName: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts) {\n if (!cmsId || !cmsPublicToken) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n\n return api.fetchTables();\n}\n\ninterface FetchContentOpts extends CMSTableOpts {\n select?: string[];\n whereLogic?: RulesLogic;\n orderBy?: string;\n orderDirection?: \"asc\" | \"desc\";\n limit?: number;\n offset?: number;\n useDraft?: boolean;\n locale?: string;\n}\n\nexport async function fetchContent({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n select,\n whereLogic,\n orderBy,\n orderDirection,\n limit,\n offset,\n useDraft,\n locale,\n}: FetchContentOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\ninterface FetchCountOpts extends CMSTableOpts {\n whereLogic?: RulesLogic;\n useDraft?: boolean;\n}\n\nexport async function fetchCount({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n useDraft,\n whereLogic,\n}: FetchCountOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\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 isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n },\n },\n ],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n select: selectParam,\n whereLogic: whereLogicParam,\n orderBy: orderByParam,\n orderDirection: orderDirectionParam,\n limit: limitParam,\n offset: offsetParam,\n useDraft: useDraftParam,\n locale: localeParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n whereLogic: whereLogicParam,\n useDraft: useDraftParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import {\n ApiCmsTable,\n CmsFieldMeta,\n CmsList,\n CmsMetaType,\n CmsObject,\n CmsType,\n} from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[],\n opts?: {\n includeSystemId?: boolean;\n includeRefStars?: boolean;\n }\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n\n const options = [\n // single fields\n ...fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n })),\n\n // ref star fields\n ...(opts?.includeRefStars ? mkRefStarFieldOptions([], fields) : []),\n ];\n\n options.sort((a, b) => a.label.localeCompare(b.label));\n\n if (\n opts?.includeSystemId &&\n !options.some((option) => option.value === \"_id\")\n ) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n\nfunction mkRefStarFieldOptions(\n fieldPath: (CmsList | CmsObject)[],\n nextFields: CmsFieldMeta[]\n): ValueLabelPair[] {\n return nextFields.flatMap((nestedField) => {\n if (nestedField.type === CmsMetaType.REF) {\n const fieldPathToRef = [...fieldPath, nestedField];\n return [\n {\n value: fieldPathToRef.map((f) => f.identifier).join(\".\") + \".*\",\n label:\n fieldPathToRef.map((f) => f.label || f.identifier).join(\".\") + \".*\",\n },\n ];\n } else if (\n nestedField.type === CmsMetaType.LIST ||\n nestedField.type === CmsMetaType.OBJECT\n ) {\n return mkRefStarFieldOptions(\n [...fieldPath, nestedField],\n nestedField.fields\n );\n } else {\n return [];\n }\n });\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
5
- "mappings": "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",
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(hostParam: string | undefined) {\n return hostParam ?? DEFAULT_HOST;\n}\n\ninterface FnContext {\n tables: ApiCmsTable[];\n}\n\ninterface BaseCMSOpts {\n host?: string;\n cmsId?: string;\n cmsPublicToken?: string;\n}\n\ninterface CMSTableOpts extends BaseCMSOpts {\n tableId?: string;\n}\n\nfunction sharedTableFnContext({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts = {}): {\n dataKey: string;\n fetcher: () => Promise<FnContext>;\n} {\n if (!cmsId || !cmsPublicToken) {\n return {\n dataKey: \"\",\n fetcher: async () => ({ tables: [] }),\n };\n }\n return {\n dataKey: `cms_tables/${JSON.stringify({\n cmsId,\n cmsPublicToken,\n })}`,\n fetcher: async () => {\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n const tables = await api.fetchTables();\n return { tables };\n },\n };\n}\n\nconst hostParam = {\n type: \"string\",\n description: \"CMS host URL.\",\n helpText:\n \"The Host URL of the CMS. You should not have to modify this for normal usage.\",\n defaultValue: DEFAULT_HOST,\n advanced: true,\n} as const;\n\nconst cmsIdParam = {\n type: \"string\",\n displayName: \"CMS ID\",\n description: \"ID of the CMS.\",\n required: true,\n helpText:\n \"Find the CMS ID on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst cmsPublicTokenParam = {\n type: \"string\",\n displayName: \"CMS public token\",\n description: \"Public token of the CMS.\",\n required: true,\n helpText:\n \"Find the public token on the [Plasmic CMS settings page](https://docs.plasmic.app/learn/plasmic-cms-api-reference/#find-your-cms-ids-public-token-and-secret-token)\",\n} as const;\n\nconst tableIdParam = {\n type: \"choice\",\n required: true,\n options: (_args: unknown, ctx: FnContext) => {\n if (!ctx?.tables) {\n return [];\n }\n return ctx.tables.map((table: { identifier: string; name: string }) => ({\n value: table.identifier,\n label: table.name,\n }));\n },\n} as const;\n\nconst selectParam = {\n type: \"choice\",\n multiSelect: true,\n description: \"Fields to fetch. Defaults to all fields.\",\n defaultValueHint: [\"Default: *\"] as string[],\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst whereLogicParam = {\n type: \"queryBuilder\",\n displayName: \"Filter\",\n description: \"Filter fetched entries. Defaults to fetch all entries.\",\n config: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n const table = ctx.tables.find((t) => t.identifier === tableId);\n if (table) {\n return cmsTableToQueryBuilderConfig(table);\n } else {\n return { fields: {} };\n }\n },\n} as const;\n\nconst orderByParam = {\n type: \"choice\",\n description: \"Field to order entries by. Defaults to creation order.\",\n options: ([opts]: [(CMSTableOpts | undefined)?], ctx: FnContext) => {\n const tableId = opts?.tableId;\n return mkFieldOptions(ctx.tables, tableId, undefined, {\n includeRefStars: true,\n });\n },\n} as const;\n\nconst orderDirectionParam = {\n displayName: \"Direction\",\n type: \"choice\",\n options: [\n {\n value: \"asc\",\n label: \"Ascending\",\n },\n {\n value: \"desc\",\n label: \"Descending\",\n },\n ] as { value: \"asc\" | \"desc\"; label: string }[],\n defaultValueHint: \"Default: Ascending\",\n} as const;\n\nconst limitParam = {\n type: \"number\",\n description: \"Maximum number of entries to fetch.\",\n} as const;\n\nconst offsetParam = {\n type: \"number\",\n description: \"Number of entries to skip.\",\n defaultValueHint: 0,\n} as const;\n\nconst useDraftParam = {\n type: \"boolean\",\n description: \"Whether to use draft data.\",\n defaultValueHint: false,\n} as const;\n\nconst localeParam = {\n type: \"string\",\n description: \"The locale to use. Defaults to base locale.\",\n} as const;\n\nexport async function fetchTables({\n host,\n cmsId,\n cmsPublicToken,\n}: BaseCMSOpts) {\n if (!cmsId || !cmsPublicToken) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n });\n\n return api.fetchTables();\n}\n\ninterface FetchContentOpts extends CMSTableOpts {\n select?: string[];\n whereLogic?: RulesLogic;\n orderBy?: string;\n orderDirection?: \"asc\" | \"desc\";\n limit?: number;\n offset?: number;\n useDraft?: boolean;\n locale?: string;\n}\n\nexport async function fetchContent({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n select,\n whereLogic,\n orderBy,\n orderDirection,\n limit,\n offset,\n useDraft,\n locale,\n}: FetchContentOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return [];\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\n useDraft,\n locale,\n });\n\n return api.query(tableId, {\n fields: select,\n where: rulesLogicToCmsWhere(whereLogic),\n orderBy,\n desc: orderDirection === \"desc\",\n limit,\n offset,\n });\n}\n\ninterface FetchCountOpts extends CMSTableOpts {\n whereLogic?: RulesLogic;\n useDraft?: boolean;\n}\n\nexport async function fetchCount({\n host,\n cmsId,\n cmsPublicToken,\n tableId,\n useDraft,\n whereLogic,\n}: FetchCountOpts) {\n if (!cmsId || !cmsPublicToken || !tableId) {\n return 0;\n }\n\n const api = mkApi({\n databaseId: cmsId,\n databaseToken: cmsPublicToken,\n host: getCmsHost(host),\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 isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n },\n },\n ],\n });\n\n _registerFunction(fetchContent, {\n name: \"fetchContent\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Content\",\n description: \"Fetch content from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n select: selectParam,\n whereLogic: whereLogicParam,\n orderBy: orderByParam,\n orderDirection: orderDirectionParam,\n limit: limitParam,\n offset: offsetParam,\n useDraft: useDraftParam,\n locale: localeParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n\n _registerFunction(fetchCount, {\n name: \"fetchCount\",\n namespace: \"plasmicCms\",\n displayName: \"Fetch Plasmic CMS Count\",\n description: \"Fetch the count of entries from a Plasmic CMS table\",\n importPath: \"@plasmicpkgs/cms\",\n isQuery: true,\n params: [\n {\n type: \"object\",\n display: \"flatten\",\n name: \"Opts\",\n fields: {\n host: hostParam,\n cmsId: cmsIdParam,\n cmsPublicToken: cmsPublicTokenParam,\n tableId: tableIdParam,\n whereLogic: whereLogicParam,\n useDraft: useDraftParam,\n },\n },\n ],\n fnContext: sharedTableFnContext,\n });\n}\n\n// Export utilities and types with underscore prefix\nexport { API as _API, HttpError as _HttpError, mkApi as _mkApi } from \"./api\";\n\nexport type {\n DatabaseConfig as _DatabaseConfig,\n QueryParams as _QueryParams,\n} from \"./api\";\n\nexport { DEFAULT_HOST as _DEFAULT_HOST } from \"./constants\";\n\nexport { CmsMetaType as _CmsMetaType } from \"./schema\";\nexport type {\n ApiCmsQuery as _ApiCmsQuery,\n ApiCmsRow as _ApiCmsRow,\n ApiCmsTable as _ApiCmsTable,\n} from \"./schema\";\n\nexport type {\n CmsBaseType as _CmsBaseType,\n CmsBoolean as _CmsBoolean,\n CmsDateTime as _CmsDateTime,\n CmsEnum as _CmsEnum,\n CmsFieldMeta as _CmsFieldMeta,\n CmsFile as _CmsFile,\n CmsImage as _CmsImage,\n CmsLongText as _CmsLongText,\n CmsNumber as _CmsNumber,\n CmsRef as _CmsRef,\n CmsRichText as _CmsRichText,\n CmsTableSchema as _CmsTableSchema,\n CmsText as _CmsText,\n CmsTextLike as _CmsTextLike,\n CmsType as _CmsType,\n} from \"./schema\";\n\nexport {\n mkFieldOptions as _mkFieldOptions,\n mkTableOptions as _mkTableOptions,\n} from \"./util\";\n", "import { ApiCmsQuery, ApiCmsRow, ApiCmsTable } from \"./schema\";\n\nexport interface DatabaseConfig {\n host: string;\n databaseId: string;\n databaseToken: string;\n locale?: string;\n useDraft?: boolean | string[];\n}\n\nexport interface QueryParams {\n useDraft?: boolean;\n where?: any;\n orderBy?: string;\n desc?: boolean;\n limit?: number;\n offset?: number;\n fields?: string[];\n}\n\nfunction queryParamsToApi(params: QueryParams): ApiCmsQuery {\n return {\n where: params.where,\n limit: params.limit,\n offset: params.offset,\n order: params.orderBy\n ? [\n {\n field: params.orderBy,\n dir: params.desc ? \"desc\" : \"asc\",\n },\n ]\n : undefined,\n fields: params.fields,\n };\n}\n\nexport class HttpError extends Error {\n constructor(public status: number, message: string) {\n super(message);\n }\n}\n\nexport class API {\n constructor(private config: DatabaseConfig) {}\n\n async get(endpoint: string, params: any = {}) {\n const url = new URL(\n `${this.config.host}/api/v1/cms/databases/${this.config.databaseId}${endpoint}`\n );\n const fixedParams = Object.keys(params).reduce((newObj, key) => {\n const value = params[key];\n if (value != null) {\n newObj[key] = value;\n }\n return newObj;\n }, {} as any);\n url.search = new URLSearchParams(fixedParams).toString();\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n accept: \"*/*\",\n \"x-plasmic-api-cms-tokens\": `${this.config.databaseId}:${this.config.databaseToken}`,\n },\n mode: \"cors\",\n });\n\n if (response.status !== 200) {\n let message = await response.text();\n try {\n const json = JSON.parse(message);\n if (json.error?.message) {\n message = json.error.message;\n }\n } catch {\n // ignored\n }\n throw new HttpError(response.status, message);\n }\n\n return await response.json();\n }\n\n async fetchTables(): Promise<ApiCmsTable[]> {\n try {\n const response = await this.get(``);\n return response.tables;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n private useDraftForTable(table: string) {\n if (Array.isArray(this.config.useDraft)) {\n return this.config.useDraft.includes(table);\n } else {\n return this.config.useDraft ?? false;\n }\n }\n\n async query(table: string, params: QueryParams = {}): Promise<ApiCmsRow[]> {\n try {\n const response = await this.get(`/tables/${table}/query`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n locale: this.config.locale,\n });\n return response.rows;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async count(\n table: string,\n params: Pick<QueryParams, \"where\" | \"useDraft\"> = {}\n ): Promise<number> {\n try {\n const response = await this.get(`/tables/${table}/count`, {\n q: JSON.stringify(queryParamsToApi(params)),\n draft: Number(this.useDraftForTable(table) ?? params.useDraft),\n });\n return response.count;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport function mkApi(config: DatabaseConfig | undefined) {\n if (!config) {\n throw new Error(\"Component must be wrapped in 'CMS Data Provider'.\");\n }\n\n return new API(config);\n}\n", "export const DEFAULT_HOST = \"https://data.plasmic.app\";\n", "// This should be kept in sync with wab/ApiSchema.\n\n// eslint-disable-next-line no-shadow\nexport enum CmsMetaType {\n TEXT = \"text\",\n LONG_TEXT = \"long-text\",\n NUMBER = \"number\",\n IMAGE = \"image\",\n FILE = \"file\",\n DATE_TIME = \"date-time\",\n BOOLEAN = \"boolean\",\n COLOR = \"color\",\n RICH_TEXT = \"rich-text\",\n REF = \"ref\",\n LIST = \"list\",\n OBJECT = \"object\",\n ENUM = \"enum\",\n}\n\nexport interface CmsBaseType<T> {\n /** The stable unique identifier, like `heroImage`. */\n identifier: string;\n /** The field label. */\n label?: string;\n helperText: string;\n required: boolean;\n hidden: boolean;\n localized: boolean;\n unique: boolean;\n /** The empty string \"\" locale is the default locale. */\n defaultValueByLocale: { [locale: string]: T };\n}\n\nexport interface CmsTextLike {\n defaultValue?: string;\n minChars?: number;\n maxChars?: number;\n}\n\nexport interface CmsText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.TEXT;\n}\n\nexport interface CmsLongText extends CmsBaseType<string>, CmsTextLike {\n type: CmsMetaType.LONG_TEXT;\n}\n\nexport interface CmsNumber extends CmsBaseType<number> {\n type: CmsMetaType.NUMBER;\n defaultValue?: number;\n}\n\nexport interface CmsBoolean extends CmsBaseType<boolean> {\n type: CmsMetaType.BOOLEAN;\n defaultValue?: boolean;\n}\n\nexport interface CmsImage extends CmsBaseType<string> {\n type: CmsMetaType.IMAGE;\n defaultValue?: string;\n}\n\nexport interface CmsDateTime extends CmsBaseType<string> {\n type: CmsMetaType.DATE_TIME;\n defaultValue?: string;\n}\n\nexport interface CmsRichText extends CmsBaseType<string> {\n type: CmsMetaType.RICH_TEXT;\n defaultValue?: string;\n}\n\nexport interface CmsFile extends CmsBaseType<string> {\n type: CmsMetaType.FILE;\n defaultValue?: string;\n}\n\nexport interface CmsRef extends CmsBaseType<string> {\n type: CmsMetaType.REF;\n defaultValue?: string;\n}\n\nexport interface CmsList extends CmsBaseType<any[]> {\n type: CmsMetaType.LIST;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsObject extends CmsBaseType<object> {\n type: CmsMetaType.OBJECT;\n fields: CmsFieldMeta[];\n}\n\nexport interface CmsColor extends CmsBaseType<string> {\n type: CmsMetaType.COLOR;\n defaultValue?: string;\n}\n\nexport interface CmsEnum extends CmsBaseType<string> {\n type: CmsMetaType.ENUM;\n defaultValue?: string;\n options: string[];\n}\n\nexport type CmsFieldMeta =\n | CmsRef\n | CmsList\n | CmsObject\n | CmsText\n | CmsLongText\n | CmsNumber\n | CmsBoolean\n | CmsImage\n | CmsFile\n | CmsDateTime\n | CmsColor\n | CmsRichText\n | CmsEnum;\n\nexport type CmsType = CmsFieldMeta[\"type\"];\n\nexport interface CmsTableSchema {\n fields: CmsFieldMeta[];\n}\n\nexport interface ApiCmsTable {\n identifier: string;\n name: string;\n schema: CmsTableSchema;\n}\n\nexport interface ApiCmsRow {\n identifier: string | null;\n data: Record<string, any> | null;\n}\n\ntype FilterClause = any;\n\nexport interface ApiCmsQuery {\n where?: FilterClause;\n limit?: number;\n offset?: number;\n order?: (string | { field: string; dir: \"asc\" | \"desc\" })[];\n fields?: string[];\n}\n", "import {\n ApiCmsTable,\n CmsFieldMeta,\n CmsList,\n CmsMetaType,\n CmsObject,\n CmsType,\n} from \"./schema\";\n\ntype ValueLabelPair = {\n value: string;\n label: string;\n};\n\nexport function mkTableOptions(\n tables: ApiCmsTable[] | undefined\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n return tables.map((table) => ({\n value: table.identifier,\n label: table.name,\n }));\n}\n\nexport function mkFieldOptions(\n tables: ApiCmsTable[] | undefined,\n tableIdentifier: string | undefined,\n types?: CmsType[],\n opts?: {\n includeSystemId?: boolean;\n includeRefStars?: boolean;\n }\n): ValueLabelPair[] {\n if (!tables) {\n return [];\n }\n\n const table = tables.find((t) => t.identifier === tableIdentifier);\n if (!table) {\n return [];\n }\n\n let fields = table.schema.fields;\n if (types) {\n fields = fields.filter((f) => types.includes(f.type));\n }\n\n const options = [\n // single fields\n ...fields.map((f) => ({\n value: f.identifier,\n label: f.label || f.identifier,\n })),\n\n // ref star fields\n ...(opts?.includeRefStars ? mkRefStarFieldOptions([], fields) : []),\n ];\n\n options.sort((a, b) => a.label.localeCompare(b.label));\n\n if (\n opts?.includeSystemId &&\n !options.some((option) => option.value === \"_id\")\n ) {\n options.push({\n label: \"System ID\",\n value: \"_id\",\n });\n }\n\n return options;\n}\n\nfunction mkRefStarFieldOptions(\n fieldPath: (CmsList | CmsObject)[],\n nextFields: CmsFieldMeta[]\n): ValueLabelPair[] {\n return nextFields.flatMap((nestedField) => {\n if (nestedField.type === CmsMetaType.REF) {\n const fieldPathToRef = [...fieldPath, nestedField];\n return [\n {\n value: fieldPathToRef.map((f) => f.identifier).join(\".\") + \".*\",\n label:\n fieldPathToRef.map((f) => f.label || f.identifier).join(\".\") + \".*\",\n },\n ];\n } else if (\n nestedField.type === CmsMetaType.LIST ||\n nestedField.type === CmsMetaType.OBJECT\n ) {\n return mkRefStarFieldOptions(\n [...fieldPath, nestedField],\n nestedField.fields\n );\n } else {\n return [];\n }\n });\n}\n", "import type {\n Config,\n Field,\n FieldOrGroup,\n} from \"@react-awesome-query-builder/core\";\nimport type { RulesLogic } from \"json-logic-js\";\nimport { ApiCmsTable, CmsFieldMeta, CmsMetaType } from \"./schema\";\n\n/**\n * Maps Plasmic CMS table to react-awesome-query-builder config.\n *\n * The result will be handled by {@link rulesLogicToCmsWhere}.\n * Make sure it supports all operators defined here.\n */\nexport function cmsTableToQueryBuilderConfig(\n table: ApiCmsTable\n): Pick<Config, \"fields\"> {\n const qbFields: { [key: string]: FieldOrGroup } = {\n _id: {\n type: \"text\",\n label: \"System ID\",\n operators: [\"equal\", \"not_equal\"],\n },\n };\n for (const field of table.schema.fields) {\n const qbField = cmsFieldToQueryBuilderField(field);\n if (qbField) {\n qbFields[field.identifier] = qbField;\n }\n }\n return {\n fields: qbFields,\n };\n}\n\nfunction cmsFieldToQueryBuilderField(field: CmsFieldMeta): Field | undefined {\n const label = field.label || field.identifier;\n switch (field.type) {\n case CmsMetaType.TEXT:\n case CmsMetaType.LONG_TEXT:\n case CmsMetaType.REF: {\n return {\n type: \"text\",\n label,\n operators: [\"equal\", \"not_equal\", \"regex\"],\n };\n }\n case CmsMetaType.NUMBER: {\n return {\n type: \"number\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.BOOLEAN: {\n return {\n type: \"boolean\",\n label,\n };\n }\n case CmsMetaType.DATE_TIME: {\n return {\n type: \"datetime\",\n label,\n operators: [\n \"equal\",\n \"not_equal\",\n \"less\",\n \"less_or_equal\",\n \"greater\",\n \"greater_or_equal\",\n ],\n };\n }\n case CmsMetaType.ENUM: {\n return {\n type: \"select\",\n label,\n listValues: field.options,\n operators: [\"select_equals\", \"select_not_equals\", \"select_any_in\"],\n };\n }\n\n // Following types do not support filtering\n case CmsMetaType.COLOR:\n case CmsMetaType.FILE:\n case CmsMetaType.IMAGE:\n case CmsMetaType.LIST:\n case CmsMetaType.OBJECT:\n case CmsMetaType.RICH_TEXT:\n return;\n }\n}\n\n/**\n * Maps JsonLogic to Plasmic CMS API where query.\n *\n * See also:\n * - https://docs.plasmic.app/learn/plasmic-cms-api-reference/#filter-query\n * - makeSqlCondition in cms-util.ts\n */\nexport function rulesLogicToCmsWhere(logic: RulesLogic | undefined): any {\n if (logic === null || logic === undefined) {\n return undefined;\n } else if (typeof logic !== \"object\") {\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n } else if (\"and\" in logic) {\n return {\n $and: logic[\"and\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"or\" in logic) {\n return {\n $or: logic[\"or\"].map(rulesLogicToCmsWhere),\n };\n } else if (\"!\" in logic) {\n return {\n $not: rulesLogicToCmsWhere(logic[\"!\"]),\n };\n } else if (\"==\" in logic) {\n const [{ var: field }, operand] = logic[\"==\"] as [{ var: string }, unknown];\n return {\n [field]: operand,\n };\n } else if (\"!=\" in logic) {\n const [{ var: field }, operand] = logic[\"!=\"] as [{ var: string }, unknown];\n return {\n $not: { [field]: operand },\n };\n } else {\n // Map JsonLogic to Plasmic CMS where query:\n // JsonLogic: { \"<=\": [{ \"var\": \"age\" }, 18] }\n // CMS where: { \"$lt\": { \"age\": 18 } }\n const [key, value] = Object.entries(logic)[0];\n const apiOp: string | undefined = operatorMapping[key];\n if (apiOp) {\n const [{ var: field }, operand] = value as [{ var: string }, unknown];\n return { [field]: { [apiOp]: operand } };\n }\n\n throw new Error(`unexpected logic: ${JSON.stringify(logic)}`);\n }\n}\n\n/** Maps JsonLogic operator to Plasmic CMS operator. */\nconst operatorMapping: Record<string, string> = {\n \"<\": \"$lt\",\n \"<=\": \"$le\",\n \">\": \"$gt\",\n \">=\": \"$ge\",\n in: \"$in\",\n regex: \"$regex\",\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["CmsMetaType", "hostParam", "registerFunction"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plasmicpkgs/cms",
3
- "version": "0.0.26",
3
+ "version": "0.0.28",
4
4
  "description": "Plasmic CMS custom functions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,15 +24,15 @@
24
24
  "dist"
25
25
  ],
26
26
  "scripts": {
27
- "build": "yarn build:types && yarn build:index",
28
- "build:types": "yarn tsc",
27
+ "build": "pnpm build:types && pnpm build:index",
28
+ "build:types": "tsc",
29
29
  "build:index": "node ../../build.mjs ./src/index.ts",
30
- "test": "TEST_CWD=`pwd` yarn --cwd=../.. test",
30
+ "test": "TEST_CWD=`pwd` pnpm -w test",
31
31
  "prepublishOnly": "npm run build",
32
32
  "postpublish": "bash ../../scripts/publish-api-doc-model.sh"
33
33
  },
34
34
  "devDependencies": {
35
- "@plasmicapp/host": "2.0.5",
35
+ "@plasmicapp/host": "2.0.7",
36
36
  "@react-awesome-query-builder/core": "^6.6.15",
37
37
  "@types/json-logic-js": "^2.0.8",
38
38
  "@types/node": "^17.0.14"
@@ -40,5 +40,5 @@
40
40
  "peerDependencies": {
41
41
  "@plasmicapp/host": ">=1.0.211"
42
42
  },
43
- "gitHead": "41f43c9b107d2fff575c443bc4649fa708897242"
43
+ "gitHead": "6087f1621240c66b20d4a8fcf02c8bf889c554aa"
44
44
  }