@stndrds/schema 1.0.0-alpha.345 → 1.0.0-alpha.347
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/{all-DdTEiYEh.d.mts → all-BDkJ5lPJ.d.mts} +8 -8
- package/dist/{all-BfNS2KEx.d.ts → all-n32KD_Pw.d.ts} +8 -8
- package/dist/capabilities.d.mts +7 -0
- package/dist/capabilities.d.ts +7 -0
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.mjs +1 -1
- package/dist/{checkbox-DSzn5epa.d.mts → checkbox-BR-7mIkg.d.mts} +2 -2
- package/dist/{checkbox-D8nK0oIO.d.ts → checkbox-BVTPPcis.d.ts} +2 -2
- package/dist/{config-6uO9OYWQ.mjs → config-BiQGgy7f.mjs} +1 -1
- package/dist/{config-DIBMi8S_.js → config-WUWITOeW.js} +1 -1
- package/dist/{date-CteDw_88.d.mts → date-CJWfx4s2.d.mts} +2 -2
- package/dist/{date-BGULTVlX.d.ts → date-Cmk9GSXp.d.ts} +2 -2
- package/dist/{exceptions-BCfkN2ct.d.mts → exceptions-Bon8Edct.d.mts} +39 -1
- package/dist/{exceptions-BCfkN2ct.d.ts → exceptions-Bon8Edct.d.ts} +39 -1
- package/dist/exceptions.d.mts +2 -2
- package/dist/exceptions.d.ts +2 -2
- package/dist/exceptions.js +2 -2
- package/dist/exceptions.mjs +2 -2
- package/dist/{index-_gdqRN1W.d.mts → index-By2s4V9c.d.mts} +1 -1
- package/dist/{index-CLEwI8GE.d.ts → index-CBnIKnvt.d.ts} +2 -2
- package/dist/{index-Ds0DxPHk.d.mts → index-ChtJn338.d.mts} +2 -2
- package/dist/{index-DzEWbzP-.d.mts → index-DF2Os8Es.d.mts} +1 -1
- package/dist/{index-BKv7a08I.d.ts → index-DPOFnGla.d.ts} +1 -1
- package/dist/{index-DyeLYnEc.d.ts → index-OO5ADZYz.d.ts} +1 -1
- package/dist/index.d.mts +10777 -10478
- package/dist/index.d.ts +10777 -10478
- package/dist/index.js +9 -9
- package/dist/index.mjs +9 -9
- package/dist/{number-U7UMAXKt.d.mts → number-C1HpLQUY.d.mts} +2 -2
- package/dist/{number-BcMYyg8j.d.ts → number-DuIbEHO4.d.ts} +2 -2
- package/dist/{text-CjhjkBXJ.d.mts → text-BrCsJIFO.d.mts} +2 -2
- package/dist/{text-C4EAE9Ap.d.ts → text-Jg083ClK.d.ts} +2 -2
- package/dist/utils.d.mts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/validation/all.d.mts +4 -4
- package/dist/validation/all.d.ts +4 -4
- package/dist/validation/all.js +1 -1
- package/dist/validation/all.mjs +1 -1
- package/dist/validation/complex/currency.d.mts +2 -2
- package/dist/validation/complex/currency.d.ts +2 -2
- package/dist/validation/complex/location.d.mts +2 -2
- package/dist/validation/complex/location.d.ts +2 -2
- package/dist/validation/complex/phone.d.mts +2 -2
- package/dist/validation/complex/phone.d.ts +2 -2
- package/dist/validation/complex/relation.d.mts +2 -2
- package/dist/validation/complex/relation.d.ts +2 -2
- package/dist/validation/complex/richtext.d.mts +2 -2
- package/dist/validation/complex/richtext.d.ts +2 -2
- package/dist/validation/complex/select.d.mts +2 -2
- package/dist/validation/complex/select.d.ts +2 -2
- package/dist/validation/complex/user.d.mts +2 -2
- package/dist/validation/complex/user.d.ts +2 -2
- package/dist/validation/computed/formula.d.mts +2 -2
- package/dist/validation/computed/formula.d.ts +2 -2
- package/dist/validation/computed/rollup.d.mts +2 -2
- package/dist/validation/computed/rollup.d.ts +2 -2
- package/dist/validation/config/index.d.mts +1 -1
- package/dist/validation/config/index.d.ts +1 -1
- package/dist/validation/config/index.js +1 -1
- package/dist/validation/config/index.mjs +1 -1
- package/dist/validation/core/index.d.mts +1 -1
- package/dist/validation/core/index.d.ts +1 -1
- package/dist/validation/object/index.d.mts +1 -1
- package/dist/validation/object/index.d.ts +1 -1
- package/dist/validation/primitives/checkbox.d.mts +1 -1
- package/dist/validation/primitives/checkbox.d.ts +1 -1
- package/dist/validation/primitives/date.d.mts +1 -1
- package/dist/validation/primitives/date.d.ts +1 -1
- package/dist/validation/primitives/number.d.mts +1 -1
- package/dist/validation/primitives/number.d.ts +1 -1
- package/dist/validation/primitives/text.d.mts +1 -1
- package/dist/validation/primitives/text.d.ts +1 -1
- package/dist/view-config.schema-PCAznd98.mjs +2 -0
- package/dist/view-config.schema-VEoY_VAd.js +2 -0
- package/package.json +2 -2
- package/dist/view-config.schema-DbO6eQgP.mjs +0 -2
- package/dist/view-config.schema-Omtzavho.js +0 -2
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import { m as ListViewTabVisibility } from "./index-
|
|
4
|
-
import "./index-
|
|
5
|
-
import "./index-
|
|
6
|
-
import "./text-
|
|
7
|
-
import "./number-
|
|
8
|
-
import "./checkbox-
|
|
9
|
-
import "./date-
|
|
2
|
+
import { Ot as RollupAttribute, Q as Attribute, et as AttributeType } from "./exceptions-Bon8Edct.mjs";
|
|
3
|
+
import { m as ListViewTabVisibility } from "./index-ChtJn338.mjs";
|
|
4
|
+
import "./index-By2s4V9c.mjs";
|
|
5
|
+
import "./index-DF2Os8Es.mjs";
|
|
6
|
+
import "./text-BrCsJIFO.mjs";
|
|
7
|
+
import "./number-C1HpLQUY.mjs";
|
|
8
|
+
import "./checkbox-BR-7mIkg.mjs";
|
|
9
|
+
import "./date-CJWfx4s2.mjs";
|
|
10
10
|
import { z as z$1 } from "zod";
|
|
11
11
|
import { IconName } from "@stndrds/constants";
|
|
12
12
|
//#region src/types/filters.d.ts
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import { m as ListViewTabVisibility } from "./index-
|
|
4
|
-
import "./index-
|
|
5
|
-
import "./index-
|
|
6
|
-
import "./text-
|
|
7
|
-
import "./number-
|
|
8
|
-
import "./checkbox-
|
|
9
|
-
import "./date-
|
|
2
|
+
import { Ot as RollupAttribute, Q as Attribute, et as AttributeType } from "./exceptions-Bon8Edct.js";
|
|
3
|
+
import { m as ListViewTabVisibility } from "./index-CBnIKnvt.js";
|
|
4
|
+
import "./index-DPOFnGla.js";
|
|
5
|
+
import "./index-OO5ADZYz.js";
|
|
6
|
+
import "./text-Jg083ClK.js";
|
|
7
|
+
import "./number-DuIbEHO4.js";
|
|
8
|
+
import "./checkbox-BVTPPcis.js";
|
|
9
|
+
import "./date-Cmk9GSXp.js";
|
|
10
10
|
import { z as z$1 } from "zod";
|
|
11
11
|
import { IconName } from "@stndrds/constants";
|
|
12
12
|
//#region src/types/filters.d.ts
|
package/dist/capabilities.d.mts
CHANGED
|
@@ -3,6 +3,13 @@ import { z as z$1 } from "zod";
|
|
|
3
3
|
//#region src/capabilities.d.ts
|
|
4
4
|
/** Accepted forms of the object identifier every object-scoped capability takes. */
|
|
5
5
|
export declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
|
|
6
|
+
/**
|
|
7
|
+
* The `query` argument of every record search. The rule it states is what
|
|
8
|
+
* #3849 was missing: a model handed "with query / without query" answered a
|
|
9
|
+
* postal-code question with `query: "56"`, and a hit list ranked by token
|
|
10
|
+
* relevance is neither exact nor complete.
|
|
11
|
+
*/
|
|
12
|
+
export declare const QUERY_DESCRIPTION = "Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.";
|
|
6
13
|
/** Shared suffix for record `data` inputs that accept `$fromSandboxFile` references for large content. */
|
|
7
14
|
export declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value — the server substitutes the file content.";
|
|
8
15
|
/**
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -3,6 +3,13 @@ import { z as z$1 } from "zod";
|
|
|
3
3
|
//#region src/capabilities.d.ts
|
|
4
4
|
/** Accepted forms of the object identifier every object-scoped capability takes. */
|
|
5
5
|
export declare const OBJECT_ID_DESCRIPTION = "Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.";
|
|
6
|
+
/**
|
|
7
|
+
* The `query` argument of every record search. The rule it states is what
|
|
8
|
+
* #3849 was missing: a model handed "with query / without query" answered a
|
|
9
|
+
* postal-code question with `query: "56"`, and a hit list ranked by token
|
|
10
|
+
* relevance is neither exact nor complete.
|
|
11
|
+
*/
|
|
12
|
+
export declare const QUERY_DESCRIPTION = "Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.";
|
|
6
13
|
/** Shared suffix for record `data` inputs that accept `$fromSandboxFile` references for large content. */
|
|
7
14
|
export declare const SANDBOX_FILE_DATA_HINT = " For large text content (> a few KB), write it to a sandbox file first and pass {\"$fromSandboxFile\": \"/workspace/<file>\"} as the attribute value — the server substitutes the file content.";
|
|
8
15
|
/**
|
package/dist/capabilities.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("zod");const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,
|
|
2
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("zod");const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=`Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.`,r=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,i=e.z.object({combinator:e.z.enum([`and`,`or`]).default(`and`),rules:e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name on the object being searched`),property:e.z.string().optional().describe(`Optional, and the only way to read one part of a compound value. On a relation / document / user attribute declared with .qualifyWith({...}) it names an EDGE property (not the linked record); on a location attribute it is one of city | postalCode | country, which is how a postal code or a city is filtered exactly. The operator must be valid for that property's type. See <filter_operators>.`),operator:e.z.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.z.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),a=e.z.array(e.z.object({attribute:e.z.string().describe(`Attribute name`),direction:e.z.enum([`asc`,`desc`])})),o=e.z.object({recordId:e.z.string().describe(`Record UUID`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to return`)}),s=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),query:e.z.string().optional().describe(n),limit:e.z.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.z.number().optional().describe(`Skip N records (default 0)`),fields:e.z.array(e.z.string()).optional().describe(`Attribute names to include in values`),filters:i.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:a.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),c=e.z.object({objectId:e.z.string().describe(t),_displayLabel:e.z.string().optional().describe(`Display label`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Record data.${r}`)}),l=e.z.object({recordId:e.z.string().describe(`Record UUID`),data:e.z.record(e.z.string(),e.z.unknown()).describe(`Fields to update.${r}`)}),u=e.z.object({recordId:e.z.string().describe(`Record UUID`)}),d={get_record:{name:`get_record`,kind:`read`,input:o},search_records:{name:`search_records`,kind:`read`,input:s},create_record:{name:`create_record`,kind:`create`,input:c},update_record:{name:`update_record`,kind:`update`,input:l},delete_record:{name:`delete_record`,kind:`delete`,input:u}},f=Object.freeze(Object.fromEntries(Object.values(d).map(e=>[e.name,e.kind])));exports.OBJECT_ID_DESCRIPTION=t,exports.QUERY_DESCRIPTION=n,exports.RECORD_CAPABILITIES=d,exports.RECORD_CAPABILITY_KINDS=f,exports.SANDBOX_FILE_DATA_HINT=r,exports.filtersSchema=i,exports.sortsSchema=a;
|
package/dist/capabilities.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! © 2025-2026 AND YOU CREATE SAS (RCS Paris 940 190 614). Proprietary — see LICENSE (Standards SDK License 1.0). */
|
|
2
|
-
import{z as e}from"zod";const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,
|
|
2
|
+
import{z as e}from"zod";const t=`Object UUID, kebab-case name (e.g., 'contacts'), or display label (e.g., 'Personne physique'). All three are accepted; UUID is most precise.`,n=`Relevance ranking for a name or a phrase — matches tokens, not values. Exact criteria go in filters with NO query.`,r=` For large text content (> a few KB), write it to a sandbox file first and pass {"$fromSandboxFile": "/workspace/<file>"} as the attribute value — the server substitutes the file content.`,i=e.object({combinator:e.enum([`and`,`or`]).default(`and`),rules:e.array(e.object({attribute:e.string().describe(`Attribute name on the object being searched`),property:e.string().optional().describe(`Optional, and the only way to read one part of a compound value. On a relation / document / user attribute declared with .qualifyWith({...}) it names an EDGE property (not the linked record); on a location attribute it is one of city | postalCode | country, which is how a postal code or a city is filtered exactly. The operator must be valid for that property's type. See <filter_operators>.`),operator:e.string().describe(`Filter operator (canonical: is, is_not, contains, not_contains, starts_with, ends_with, less_than, greater_than, less_or_equal, greater_or_equal, is_within, on_day_month, any_of, none_of, is_empty, is_not_empty). Short codes (lt, gt, lte, gte, eq, neq, in) are accepted as input and auto-normalized to the canonical names. The valid set depends on the attribute type (or property type when 'property' is set) — see <filter_operators>.`),value:e.unknown().nullable().describe(`Value matching the attribute (or property) type: scalar for is/contains/less_than/etc (checkbox is: true|false); array (string[]) for any_of/none_of; null for is_empty/is_not_empty; { amount, unit, direction } for is_within; { day, month } for on_day_month.`)}))}),a=e.array(e.object({attribute:e.string().describe(`Attribute name`),direction:e.enum([`asc`,`desc`])})),o=e.object({recordId:e.string().describe(`Record UUID`),fields:e.array(e.string()).optional().describe(`Attribute names to return`)}),s=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),query:e.string().optional().describe(n),limit:e.number().optional().describe(`Max results per call: 1-1000 (default 20). Paginate via offset for more.`),offset:e.number().optional().describe(`Skip N records (default 0)`),fields:e.array(e.string()).optional().describe(`Attribute names to include in values`),filters:i.optional().describe(`Structured filter: { combinator: 'and'|'or', rules: [{attribute, operator, value, property?}] }. Operators are constrained per attribute type — see <filter_operators>. Use 'property' on a rule to filter on a qualified edge property.`),sorts:a.optional().describe(`Sorts: [{ attribute, direction: 'asc'|'desc' }]`)}),c=e.object({objectId:e.string().describe(t),_displayLabel:e.string().optional().describe(`Display label`),data:e.record(e.string(),e.unknown()).describe(`Record data.${r}`)}),l=e.object({recordId:e.string().describe(`Record UUID`),data:e.record(e.string(),e.unknown()).describe(`Fields to update.${r}`)}),u=e.object({recordId:e.string().describe(`Record UUID`)}),d={get_record:{name:`get_record`,kind:`read`,input:o},search_records:{name:`search_records`,kind:`read`,input:s},create_record:{name:`create_record`,kind:`create`,input:c},update_record:{name:`update_record`,kind:`update`,input:l},delete_record:{name:`delete_record`,kind:`delete`,input:u}},f=Object.freeze(Object.fromEntries(Object.values(d).map(e=>[e.name,e.kind])));export{t as OBJECT_ID_DESCRIPTION,n as QUERY_DESCRIPTION,d as RECORD_CAPABILITIES,f as RECORD_CAPABILITY_KINDS,r as SANDBOX_FILE_DATA_HINT,i as filtersSchema,a as sortsSchema};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import { r as ValidationMessages } from "./index-
|
|
2
|
+
import { rt as CheckboxAttribute } from "./exceptions-Bon8Edct.mjs";
|
|
3
|
+
import { r as ValidationMessages } from "./index-DF2Os8Es.mjs";
|
|
4
4
|
import { z as z$1 } from "zod";
|
|
5
5
|
//#region src/validation/primitives/checkbox.d.ts
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import { r as ValidationMessages } from "./index-
|
|
2
|
+
import { rt as CheckboxAttribute } from "./exceptions-Bon8Edct.js";
|
|
3
|
+
import { r as ValidationMessages } from "./index-OO5ADZYz.js";
|
|
4
4
|
import { z as z$1 } from "zod";
|
|
5
5
|
//#region src/validation/primitives/checkbox.d.ts
|
|
6
6
|
/**
|
|
@@ -10,4 +10,4 @@ Name must be a valid variable identifier:
|
|
|
10
10
|
✅ Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'
|
|
11
11
|
❌ Invalid: 'first-name', 'first name', '123name', 'first.name'`);if(u.includes(e))throw Error(`[AttributeBuilder] "${e}" is a reserved name and cannot be used as an attribute name.\nReserved names: ${u.join(`, `)}`)}function validateLabel(e){if(!e||e.length===0)throw Error(`[AttributeBuilder] Attribute label cannot be empty`);if(e.length>_)throw Error(`[AttributeBuilder] Attribute label is too long (max ${_} characters)`)}function validateIconName(e,t){if(!ne.has(e))throw Error(`[AttributeBuilder] Invalid icon "${e}" in ${t}.\nIcon must be one of the predefined icons from @stndrds/constants.`)}function validateOptions(e,t){let n=new Set;for(let r of t){if(!r.value?.trim())throw Error(`[AttributeBuilder] Option in "${e}" has an empty or missing value.`);if(!r.label?.trim())throw Error(`[AttributeBuilder] Option "${r.value}" in "${e}" has an empty or missing label.`);if(n.has(r.value))throw Error(`[AttributeBuilder] Duplicate option value "${r.value}" in "${e}".`);n.add(r.value)}for(let n of t){if(n.inverse===void 0)continue;let r=t.find(e=>e.value===n.inverse);if(!r)throw Error(`[AttributeBuilder] Option "${n.value}" in "${e}" has inverse "${n.inverse}" which does not match any option value.`);if(r.inverse!==n.value)throw Error(`[AttributeBuilder] Inverse mismatch in "${e}": "${n.value}" points to "${n.inverse}", but "${n.inverse}" points to "${r.inverse??`(none)`}". Inverse pairs must be symmetric.`)}}var ComputedFormulaParseError=class extends Error{constructor(e){super(e),this.name=`ComputedFormulaParseError`}};function parseComputedFormula(e){let t=new Parser(tokenize(e)),n=t.parseExpression();return t.expectEnd(),n}function tokenize(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
|
|
12
12
|
`||r===`\r`){n+=1;continue}if(r===`"`||r===`'`){let i=scanString(e,n,r);t.push({kind:`string`,value:i.value,position:n}),n=i.nextIndex;continue}if(isDigit(r)){let r=scanNumber(e,n);t.push({kind:`number`,value:r.value,position:n}),n=r.nextIndex;continue}if(isIdentifierStart(r)){let r=scanIdentifier(e,n),i=r.value.toLowerCase();i===`true`?t.push({kind:`boolean`,value:!0,position:n}):i===`false`?t.push({kind:`boolean`,value:!1,position:n}):i===`null`?t.push({kind:`null`,position:n}):t.push({kind:`identifier`,value:r.value,position:n}),n=r.nextIndex;continue}let i=e.slice(n,n+2);if(i===`>=`||i===`<=`||i===`==`||i===`!=`){t.push({kind:`operator`,value:i,position:n}),n+=2;continue}if(r===`>`||r===`<`||r===`+`||r===`-`||r===`*`||r===`/`){t.push({kind:`operator`,value:r,position:n}),n+=1;continue}if(r===`(`||r===`)`||r===`,`||r===`.`){t.push({kind:`punctuation`,value:r,position:n}),n+=1;continue}throw new ComputedFormulaParseError(`Unexpected character "${r}" at position ${n}`)}return t}function scanString(e,t,n=`"`){let r=``,i=t+1;for(;i<e.length;){let t=e[i];if(t===n)return{value:r,nextIndex:i+1};if(t===`\\`){let t=e[i+1];if(t===void 0)throw new ComputedFormulaParseError(`Unterminated string literal at position ${i}`);r+=decodeEscape(t,i),i+=2;continue}r+=t,i+=1}throw new ComputedFormulaParseError(`Unterminated string literal at position ${t}`)}function decodeEscape(e,t){switch(e){case`"`:case`\\`:return e;case`n`:return`
|
|
13
|
-
`;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const b=i.object({placeholder:i.string().optional(),description:i.string().optional(),defaultValue:i.unknown().optional(),icon:i.string().optional(),order:i.number().int().optional(),hidden:i.boolean().optional(),archived:i.boolean().optional(),deprecated:i.boolean().optional(),metadata:i.record(i.string(),i.unknown()).optional()}),x=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const S=i.object({value:i.string().min(1).describe(`Stored value`),label:i.string().min(1).describe(`Label people see`),description:i.string().describe(`Extra context`).optional(),inverse:i.string().describe(`Paired option's value (symmetric)`).optional(),archived:i.boolean().describe(`Hides without deleting`).optional()}),C=i.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),w=S.extend({color:m}).strict(),T=w,E=S.extend({color:m,group:C}).strict(),D=S.extend({color:i.string().optional().describe(`A color id`),group:C.optional()}).strict(),O=i.array(D).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return i.array(e).min(1).max(f.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const k=writeOptionsArraySchema(w),A=writeOptionsArraySchema(T),j=writeOptionsArraySchema(E),ie=i.object({object:i.string().min(1).describe(`Target object`),displayTemplate:i.string().optional().describe(`Linked record label template`),filter:i.record(i.string(),i.unknown()).optional().describe(`Restricts linkable records`)}),ae=i.object({object:i.string().min(1).describe(`Other side's object`),attribute:i.string().min(1).describe(`Other side's attribute`),cardinality:i.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:i.string().min(1).optional().describe(`Other side's label`),storageOwner:i.boolean().optional().describe(`Owns the join storage`)}),M=i.object({objectName:i.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:i.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:i.string().optional().describe(`Id of the source attribute, resolved by the server`)}),N=b.extend({multiline:i.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:i.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:i.number().int().min(1).describe(`Maximum character count`).optional(),pattern:i.string().describe(`Regular expression the value must match`).optional(),format:i.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=b,P=b.extend({renderAs:i.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:i.number().describe(`Minimum allowed value`).optional(),max:i.number().describe(`Maximum allowed value`).optional(),unit:i.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:i.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),F=b,I=b.extend({dateFormat:i.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:i.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:i.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:i.boolean().describe(`Also captures a time of day`).optional(),endDate:i.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:i.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),L=b.extend({defaultCountryCode:i.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),R=b.extend({defaultCurrency:i.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:i.array(i.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:i.boolean().describe(`Whether a negative amount is accepted`).optional()}),z=b.extend({options:O.describe(`The workflow statuses, in order`)}),B=b.extend({granularity:i.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:i.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:i.array(i.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),V=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),H=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),U=b.extend({types:i.array(i.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:i.boolean().optional().describe(`Whether more than one actor can be picked`)}),W={name:y.describe(`Property API name`),label:i.string().min(1).describe(`Label people see`),required:i.boolean().describe(`Required on every edge`).optional()},G={id:i.string().optional(),objectId:i.string().optional(),system:i.boolean().optional(),unique:i.boolean().optional()},K=Object.fromEntries(x.map(e=>[e,!0])),q=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],J=[...q,`select`,`multiselect`,`status`],Y={text:N,number:P,checkbox:F,date:I,phone:L,currency:R,location:B,select:V,multiselect:H,status:z},se={...Y,select:V.extend({options:k.describe(`Options`)}),multiselect:H.extend({options:A.describe(`Options`)}),status:z.extend({options:j.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>se[e].omit(K).shape,storedPropertyMember=e=>i.object({...W,...G,type:i.literal(e).describe(`Property type`),...Y[e].shape}).strip(),X=i.discriminatedUnion(`type`,J.map(storedPropertyMember)),Z=i.object({definitions:i.array(X).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),ce=refuseForeignKeys(Object.fromEntries(J.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(W),`type`]);function refuseForeignPropertyKeys(e,t){ce(e.type,e,t)}const le=q.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>i.object({...W,type:e.length===1?i.literal(e[0]).describe(`Property type`):i.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=i.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),i.object({...W,type:i.enum(q).describe(`Property type`),...le}).strict().superRefine(refuseForeignPropertyKeys)]),ue=i.object({definitions:i.array(Q).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=b.extend({targets:i.array(ie).min(1).describe(`Target object(s)`),cardinality:i.enum([`one`,`many`]).describe(`one or many`),maxItems:i.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:Z.optional()}),fe=b.extend({expression:i.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:i.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:i.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),allowRelations:i.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:M.optional().describe(`Mirrors an option set`)}),pe=b.extend({relationAttribute:i.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:i.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:i.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:i.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:i.string().optional().describe(`Server-set`),targetAttributeOptions:i.array(D).optional().describe(`Server-set`),targetCurrencyCode:i.string().length(3).optional().describe(`Server-set`),optionsSource:M.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:N,richtext:oe,number:P,checkbox:F,date:I,phone:L,currency:R,status:z,location:B,select:V,multiselect:H,user:U,relation:de,formula:fe,rollup:pe,document:b.extend({properties:Z.optional(),accepts:i.array(i.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:i.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new n(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:h.optional()});switch(e){case`select`:return t.extend({options:k.describe(`Options`)});case`multiselect`:return t.extend({options:A.describe(`Options`)});case`status`:return t.extend({options:j.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return n.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=h.optional().safeParse(e.icon);if(!t.success)throw n.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}export{h as A,validateAttributeName as C,validateOptions as D,validateObjectName as E,c as F,l as I,parseResourceVisibility as L,ee as M,u as N,validateViewName as O,d as P,s as R,assertUniqueBy as S,validateLabel as T,E as _,getAttributeConfigWriteSchema as a,y as b,parseAttributeConfigForCreate as c,Q as d,Z as f,C as g,w as h,getAttributeConfigSchema as i,f as j,m as k,parseAttributeConfigForUpdate as l,refuseForeignKeys as m,x as n,T as o,ue as p,$ as r,parseAttributeConfig as s,q as t,X as u,ComputedFormulaParseError as v,validateIconName as w,v as x,parseComputedFormula as y,isNativeObjectName as z};
|
|
13
|
+
`;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const b=i.object({placeholder:i.string().optional(),description:i.string().optional(),defaultValue:i.unknown().optional(),icon:i.string().optional(),order:i.number().int().optional(),hidden:i.boolean().optional(),archived:i.boolean().optional(),deprecated:i.boolean().optional(),metadata:i.record(i.string(),i.unknown()).optional()}),x=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const S=i.object({value:i.string().min(1).describe(`Stored value`),label:i.string().min(1).describe(`Label people see`),description:i.string().describe(`Extra context`).optional(),inverse:i.string().describe(`Paired option's value (symmetric)`).optional(),archived:i.boolean().describe(`Hides without deleting`).optional()}),C=i.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),w=S.extend({color:m}).strict(),T=w,E=S.extend({color:m,group:C}).strict(),D=S.extend({color:i.string().optional().describe(`A color id`),group:C.optional()}).strict(),O=i.array(D).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return i.array(e).min(1).max(f.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const k=writeOptionsArraySchema(w),A=writeOptionsArraySchema(T),j=writeOptionsArraySchema(E),ie=i.object({object:i.string().min(1).describe(`Target object`),displayTemplate:i.string().optional().describe(`Linked record label template`),filter:i.record(i.string(),i.unknown()).optional().describe(`Restricts linkable records`)}),ae=i.object({object:i.string().min(1).describe(`Other side's object`),attribute:i.string().min(1).describe(`Other side's attribute`),cardinality:i.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:i.string().min(1).optional().describe(`Other side's label`),storageOwner:i.boolean().optional().describe(`Owns the join storage`)}),M=i.object({objectName:i.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:i.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:i.string().optional().describe(`Id of the source attribute, resolved by the server`)}),N=b.extend({multiline:i.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:i.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:i.number().int().min(1).describe(`Maximum character count`).optional(),pattern:i.string().describe(`Regular expression the value must match`).optional(),format:i.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=b,P=b.extend({renderAs:i.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:i.number().describe(`Minimum allowed value`).optional(),max:i.number().describe(`Maximum allowed value`).optional(),unit:i.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:i.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),F=b,I=b.extend({dateFormat:i.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:i.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:i.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:i.boolean().describe(`Also captures a time of day`).optional(),endDate:i.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:i.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),L=b.extend({defaultCountryCode:i.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),R=b.extend({defaultCurrency:i.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:i.array(i.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:i.boolean().describe(`Whether a negative amount is accepted`).optional()}),z=b.extend({options:O.describe(`The workflow statuses, in order`)}),B=b.extend({granularity:i.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:i.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:i.array(i.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),V=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),H=b.extend({options:O.describe(`Options`),renderAs:i.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),U=b.extend({types:i.array(i.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:i.boolean().optional().describe(`Whether more than one actor can be picked`)}),W={name:y.describe(`Property API name`),label:i.string().min(1).describe(`Label people see`),required:i.boolean().describe(`Required on every edge`).optional()},G={id:i.string().optional(),objectId:i.string().optional(),system:i.boolean().optional(),unique:i.boolean().optional()},K=Object.fromEntries(x.map(e=>[e,!0])),q=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],J=[...q,`select`,`multiselect`,`status`],Y={text:N,number:P,checkbox:F,date:I,phone:L,currency:R,location:B,select:V,multiselect:H,status:z},se={...Y,select:V.extend({options:k.describe(`Options`)}),multiselect:H.extend({options:A.describe(`Options`)}),status:z.extend({options:j.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>se[e].omit(K).shape,storedPropertyMember=e=>i.object({...W,...G,type:i.literal(e).describe(`Property type`),...Y[e].shape}).strip(),X=i.discriminatedUnion(`type`,J.map(storedPropertyMember)),Z=i.object({definitions:i.array(X).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),ce=refuseForeignKeys(Object.fromEntries(J.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(W),`type`]);function refuseForeignPropertyKeys(e,t){ce(e.type,e,t)}const le=q.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>i.object({...W,type:e.length===1?i.literal(e[0]).describe(`Property type`):i.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=i.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),i.object({...W,type:i.enum(q).describe(`Property type`),...le}).strict().superRefine(refuseForeignPropertyKeys)]),ue=i.object({definitions:i.array(Q).min(1).max(f.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=b.extend({targets:i.array(ie).min(1).describe(`Target object(s)`),cardinality:i.enum([`one`,`many`]).describe(`one or many`),maxItems:i.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:Z.optional()}),fe=b.extend({expression:i.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:i.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:i.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),currencyCode:i.string().length(3).optional().describe(`ISO 4217 code a number result renders with; presentation only`),allowRelations:i.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:M.optional().describe(`Mirrors an option set`)}),pe=b.extend({relationAttribute:i.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:i.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:i.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:i.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:i.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:i.string().optional().describe(`Server-set`),targetAttributeOptions:i.array(D).optional().describe(`Server-set`),targetCurrencyCode:i.string().length(3).optional().describe(`Server-set`),optionsSource:M.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:N,richtext:oe,number:P,checkbox:F,date:I,phone:L,currency:R,status:z,location:B,select:V,multiselect:H,user:U,relation:de,formula:fe,rollup:pe,document:b.extend({properties:Z.optional(),accepts:i.array(i.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:i.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new n(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:h.optional()});switch(e){case`select`:return t.extend({options:k.describe(`Options`)});case`multiselect`:return t.extend({options:A.describe(`Options`)});case`status`:return t.extend({options:j.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return n.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=h.optional().safeParse(e.icon);if(!t.success)throw n.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}export{h as A,validateAttributeName as C,validateOptions as D,validateObjectName as E,c as F,l as I,parseResourceVisibility as L,ee as M,u as N,validateViewName as O,d as P,s as R,assertUniqueBy as S,validateLabel as T,E as _,getAttributeConfigWriteSchema as a,y as b,parseAttributeConfigForCreate as c,Q as d,Z as f,C as g,w as h,getAttributeConfigSchema as i,f as j,m as k,parseAttributeConfigForUpdate as l,refuseForeignKeys as m,x as n,T as o,ue as p,$ as r,parseAttributeConfig as s,q as t,X as u,ComputedFormulaParseError as v,validateIconName as w,v as x,parseComputedFormula as y,isNativeObjectName as z};
|
|
@@ -10,4 +10,4 @@ Name must be a valid variable identifier:
|
|
|
10
10
|
✅ Valid: 'firstName', 'first_name', 'FirstName', 'FIRST_NAME'
|
|
11
11
|
❌ Invalid: 'first-name', 'first name', '123name', 'first.name'`);if(p.includes(e))throw Error(`[AttributeBuilder] "${e}" is a reserved name and cannot be used as an attribute name.\nReserved names: ${p.join(`, `)}`)}function validateLabel(e){if(!e||e.length===0)throw Error(`[AttributeBuilder] Attribute label cannot be empty`);if(e.length>y)throw Error(`[AttributeBuilder] Attribute label is too long (max ${y} characters)`)}function validateIconName(e,t){if(!ne.has(e))throw Error(`[AttributeBuilder] Invalid icon "${e}" in ${t}.\nIcon must be one of the predefined icons from @stndrds/constants.`)}function validateOptions(e,t){let n=new Set;for(let r of t){if(!r.value?.trim())throw Error(`[AttributeBuilder] Option in "${e}" has an empty or missing value.`);if(!r.label?.trim())throw Error(`[AttributeBuilder] Option "${r.value}" in "${e}" has an empty or missing label.`);if(n.has(r.value))throw Error(`[AttributeBuilder] Duplicate option value "${r.value}" in "${e}".`);n.add(r.value)}for(let n of t){if(n.inverse===void 0)continue;let r=t.find(e=>e.value===n.inverse);if(!r)throw Error(`[AttributeBuilder] Option "${n.value}" in "${e}" has inverse "${n.inverse}" which does not match any option value.`);if(r.inverse!==n.value)throw Error(`[AttributeBuilder] Inverse mismatch in "${e}": "${n.value}" points to "${n.inverse}", but "${n.inverse}" points to "${r.inverse??`(none)`}". Inverse pairs must be symmetric.`)}}var ComputedFormulaParseError=class extends Error{constructor(e){super(e),this.name=`ComputedFormulaParseError`}};function parseComputedFormula(e){let t=new Parser(tokenize(e)),n=t.parseExpression();return t.expectEnd(),n}function tokenize(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===` `||r===` `||r===`
|
|
12
12
|
`||r===`\r`){n+=1;continue}if(r===`"`||r===`'`){let i=scanString(e,n,r);t.push({kind:`string`,value:i.value,position:n}),n=i.nextIndex;continue}if(isDigit(r)){let r=scanNumber(e,n);t.push({kind:`number`,value:r.value,position:n}),n=r.nextIndex;continue}if(isIdentifierStart(r)){let r=scanIdentifier(e,n),i=r.value.toLowerCase();i===`true`?t.push({kind:`boolean`,value:!0,position:n}):i===`false`?t.push({kind:`boolean`,value:!1,position:n}):i===`null`?t.push({kind:`null`,position:n}):t.push({kind:`identifier`,value:r.value,position:n}),n=r.nextIndex;continue}let i=e.slice(n,n+2);if(i===`>=`||i===`<=`||i===`==`||i===`!=`){t.push({kind:`operator`,value:i,position:n}),n+=2;continue}if(r===`>`||r===`<`||r===`+`||r===`-`||r===`*`||r===`/`){t.push({kind:`operator`,value:r,position:n}),n+=1;continue}if(r===`(`||r===`)`||r===`,`||r===`.`){t.push({kind:`punctuation`,value:r,position:n}),n+=1;continue}throw new ComputedFormulaParseError(`Unexpected character "${r}" at position ${n}`)}return t}function scanString(e,t,n=`"`){let r=``,i=t+1;for(;i<e.length;){let t=e[i];if(t===n)return{value:r,nextIndex:i+1};if(t===`\\`){let t=e[i+1];if(t===void 0)throw new ComputedFormulaParseError(`Unterminated string literal at position ${i}`);r+=decodeEscape(t,i),i+=2;continue}r+=t,i+=1}throw new ComputedFormulaParseError(`Unterminated string literal at position ${t}`)}function decodeEscape(e,t){switch(e){case`"`:case`\\`:return e;case`n`:return`
|
|
13
|
-
`;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const S=s.z.object({placeholder:s.z.string().optional(),description:s.z.string().optional(),defaultValue:s.z.unknown().optional(),icon:s.z.string().optional(),order:s.z.number().int().optional(),hidden:s.z.boolean().optional(),archived:s.z.boolean().optional(),deprecated:s.z.boolean().optional(),metadata:s.z.record(s.z.string(),s.z.unknown()).optional()}),C=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const w=s.z.object({value:s.z.string().min(1).describe(`Stored value`),label:s.z.string().min(1).describe(`Label people see`),description:s.z.string().describe(`Extra context`).optional(),inverse:s.z.string().describe(`Paired option's value (symmetric)`).optional(),archived:s.z.boolean().describe(`Hides without deleting`).optional()}),T=s.z.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),E=w.extend({color:g}).strict(),D=E,O=w.extend({color:g,group:T}).strict(),k=w.extend({color:s.z.string().optional().describe(`A color id`),group:T.optional()}).strict(),A=s.z.array(k).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return s.z.array(e).min(1).max(h.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const j=writeOptionsArraySchema(E),M=writeOptionsArraySchema(D),N=writeOptionsArraySchema(O),ie=s.z.object({object:s.z.string().min(1).describe(`Target object`),displayTemplate:s.z.string().optional().describe(`Linked record label template`),filter:s.z.record(s.z.string(),s.z.unknown()).optional().describe(`Restricts linkable records`)}),ae=s.z.object({object:s.z.string().min(1).describe(`Other side's object`),attribute:s.z.string().min(1).describe(`Other side's attribute`),cardinality:s.z.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:s.z.string().min(1).optional().describe(`Other side's label`),storageOwner:s.z.boolean().optional().describe(`Owns the join storage`)}),P=s.z.object({objectName:s.z.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:s.z.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:s.z.string().optional().describe(`Id of the source attribute, resolved by the server`)}),F=S.extend({multiline:s.z.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:s.z.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:s.z.number().int().min(1).describe(`Maximum character count`).optional(),pattern:s.z.string().describe(`Regular expression the value must match`).optional(),format:s.z.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=S,I=S.extend({renderAs:s.z.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:s.z.number().describe(`Minimum allowed value`).optional(),max:s.z.number().describe(`Maximum allowed value`).optional(),unit:s.z.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:s.z.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),L=S,R=S.extend({dateFormat:s.z.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:s.z.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:s.z.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:s.z.boolean().describe(`Also captures a time of day`).optional(),endDate:s.z.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:s.z.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),z=S.extend({defaultCountryCode:s.z.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),B=S.extend({defaultCurrency:s.z.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:s.z.array(s.z.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:s.z.boolean().describe(`Whether a negative amount is accepted`).optional()}),V=S.extend({options:A.describe(`The workflow statuses, in order`)}),H=S.extend({granularity:s.z.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:s.z.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:s.z.array(s.z.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),U=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),W=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),se=S.extend({types:s.z.array(s.z.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:s.z.boolean().optional().describe(`Whether more than one actor can be picked`)}),G={name:x.describe(`Property API name`),label:s.z.string().min(1).describe(`Label people see`),required:s.z.boolean().describe(`Required on every edge`).optional()},ce={id:s.z.string().optional(),objectId:s.z.string().optional(),system:s.z.boolean().optional(),unique:s.z.boolean().optional()},le=Object.fromEntries(C.map(e=>[e,!0])),K=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],q=[...K,`select`,`multiselect`,`status`],J={text:F,number:I,checkbox:L,date:R,phone:z,currency:B,location:H,select:U,multiselect:W,status:V},ue={...J,select:U.extend({options:j.describe(`Options`)}),multiselect:W.extend({options:M.describe(`Options`)}),status:V.extend({options:N.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>ue[e].omit(le).shape,storedPropertyMember=e=>s.z.object({...G,...ce,type:s.z.literal(e).describe(`Property type`),...J[e].shape}).strip(),Y=s.z.discriminatedUnion(`type`,q.map(storedPropertyMember)),X=s.z.object({definitions:s.z.array(Y).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=refuseForeignKeys(Object.fromEntries(q.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(G),`type`]);function refuseForeignPropertyKeys(e,t){de(e.type,e,t)}const Z=K.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>s.z.object({...G,type:e.length===1?s.z.literal(e[0]).describe(`Property type`):s.z.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=s.z.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),s.z.object({...G,type:s.z.enum(K).describe(`Property type`),...Z}).strict().superRefine(refuseForeignPropertyKeys)]),fe=s.z.object({definitions:s.z.array(Q).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),pe=S.extend({targets:s.z.array(ie).min(1).describe(`Target object(s)`),cardinality:s.z.enum([`one`,`many`]).describe(`one or many`),maxItems:s.z.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:X.optional()}),me=S.extend({expression:s.z.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:s.z.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:s.z.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),allowRelations:s.z.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:P.optional().describe(`Mirrors an option set`)}),he=S.extend({relationAttribute:s.z.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:s.z.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:s.z.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:s.z.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:s.z.string().optional().describe(`Server-set`),targetAttributeOptions:s.z.array(k).optional().describe(`Server-set`),targetCurrencyCode:s.z.string().length(3).optional().describe(`Server-set`),optionsSource:P.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:F,richtext:oe,number:I,checkbox:L,date:R,phone:z,currency:B,status:V,location:H,select:U,multiselect:W,user:se,relation:pe,formula:me,rollup:he,document:S.extend({properties:X.optional(),accepts:s.z.array(s.z.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:s.z.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new o.ValidationError(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:_.optional()});switch(e){case`select`:return t.extend({options:j.describe(`Options`)});case`multiselect`:return t.extend({options:M.describe(`Options`)});case`status`:return t.extend({options:N.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return o.ValidationError.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=_.optional().safeParse(e.icon);if(!t.success)throw o.ValidationError.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return validateAttributeName}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return validateOptions}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return validateObjectName}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return parseResourceVisibility}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return validateViewName}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return assertUniqueBy}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return validateLabel}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return getAttributeConfigWriteSchema}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return parseAttributeConfigForCreate}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return getAttributeConfigSchema}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return parseAttributeConfigForUpdate}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return refuseForeignKeys}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return parseAttributeConfig}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ComputedFormulaParseError}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return validateIconName}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return parseComputedFormula}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return isNativeObjectName}});
|
|
13
|
+
`;case`r`:return`\r`;case`t`:return` `;default:throw new ComputedFormulaParseError(`Unknown escape sequence "\\${e}" at position ${t}`)}}function scanNumber(e,t){let n=t;for(;n<e.length&&isDigit(e[n]);)n+=1;if(e[n]===`.`){let t=n;if(n+=1,!isDigit(e[n]))throw new ComputedFormulaParseError(`Invalid number literal at position ${t}`);for(;n<e.length&&isDigit(e[n]);)n+=1}let r=e.slice(t,n),i=Number(r);if(!Number.isFinite(i))throw new ComputedFormulaParseError(`Invalid number literal "${r}"`);return{value:i,nextIndex:n}}function scanIdentifier(e,t){let n=t+1;for(;n<e.length&&isIdentifierPart(e[n]);)n+=1;return{value:e.slice(t,n),nextIndex:n}}function isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}function isIdentifierStart(e){return e!==void 0&&/[A-Za-z_]/.test(e)}function isIdentifierPart(e){return e!==void 0&&/[A-Za-z0-9_]/.test(e)}var Parser=class{constructor(e){this.tokens=e,this.position=0}parseExpression(){return this.parseBinaryExpression(0)}expectEnd(){let e=this.peek();if(e!==void 0)throw new ComputedFormulaParseError(`Unexpected token ${describeToken(e)} at position ${e.position}`)}parseBinaryExpression(e){let t=this.parsePrimary();for(;;){let n=this.peek();if(n?.kind!==`operator`)return t;let r=getOperatorPrecedence(n.value);if(r<e)return t;let i=n.value;this.consume();let a=this.parseBinaryExpression(r+1);t={kind:`binary`,operator:i,left:t,right:a}}}parsePrimary(){let e=this.consume();if(e===void 0)throw new ComputedFormulaParseError(`Unexpected end of expression`);switch(e.kind){case`string`:case`number`:case`boolean`:return{kind:`literal`,value:e.value};case`null`:return{kind:`literal`,value:null};case`identifier`:return this.parseIdentifier(e.value);case`punctuation`:if(e.value===`(`){let e=this.parseExpression();return this.expectPunctuation(`)`),e}break;case`operator`:if(e.value===`-`){let e=this.consume();if(e?.kind===`number`)return{kind:`literal`,value:-e.value}}}throw new ComputedFormulaParseError(`Expected literal, path, call, or parenthesized expression at position ${e.position}`)}parseIdentifier(e){if(this.matchPunctuation(`(`)){let t=[];if(!this.matchPunctuation(`)`)){do t.push(this.parseExpression());while(this.matchPunctuation(`,`));this.expectPunctuation(`)`)}return{kind:`call`,functionName:e.toLowerCase(),args:t}}let t=[e];for(;this.matchPunctuation(`.`);){let e=this.consume();if(e?.kind!==`identifier`)throw new ComputedFormulaParseError(`Expected attribute name after path separator at position ${e?.position??this.previousPosition()}`);t.push(e.value)}return{kind:`path`,parts:t}}expectPunctuation(e){if(!this.matchPunctuation(e))throw new ComputedFormulaParseError(`Expected "${e}" at position ${this.peek()?.position??this.previousPosition()}`)}matchPunctuation(e){let t=this.peek();return t?.kind===`punctuation`&&t.value===e&&(this.consume(),!0)}peek(){return this.tokens[this.position]}consume(){let e=this.tokens[this.position];return this.position+=1,e}previousPosition(){return this.tokens[this.position-1]?.position??0}};function describeToken(e){switch(e.kind){case`identifier`:case`number`:case`string`:case`boolean`:case`operator`:case`punctuation`:return`"${String(e.value)}"`;case`null`:return`"null"`;default:return e}}function getOperatorPrecedence(e){switch(e){case`*`:case`/`:return 3;case`+`:case`-`:return 2;case`>`:case`<`:case`>=`:case`<=`:case`==`:case`!=`:return 1;default:return e}}const S=s.z.object({placeholder:s.z.string().optional(),description:s.z.string().optional(),defaultValue:s.z.unknown().optional(),icon:s.z.string().optional(),order:s.z.number().int().optional(),hidden:s.z.boolean().optional(),archived:s.z.boolean().optional(),deprecated:s.z.boolean().optional(),metadata:s.z.record(s.z.string(),s.z.unknown()).optional()}),C=[`placeholder`,`description`,`defaultValue`,`icon`,`order`,`hidden`,`archived`,`deprecated`,`metadata`];function refuseForeignKeys(e,t,n=[]){let r=new Set(n);return function refuse(n,i,a,o=[]){let s=e[n];if(s!==void 0&&i!==void 0)for(let e of Object.keys(i))s.has(e)||r.has(e)||a.addIssue({code:`custom`,path:[...o,e],message:`"${e}" is not a ${n} ${t}; keys of ${n}: ${[...s].join(`, `)}`})}}const w=s.z.object({value:s.z.string().min(1).describe(`Stored value`),label:s.z.string().min(1).describe(`Label people see`),description:s.z.string().describe(`Extra context`).optional(),inverse:s.z.string().describe(`Paired option's value (symmetric)`).optional(),archived:s.z.boolean().describe(`Hides without deleting`).optional()}),T=s.z.enum([`idle`,`in_progress`,`finished`]).describe(`Workflow stage`),E=w.extend({color:g}).strict(),D=E,O=w.extend({color:g,group:T}).strict(),k=w.extend({color:s.z.string().optional().describe(`A color id`),group:T.optional()}).strict(),A=s.z.array(k).min(1).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`});function writeOptionsArraySchema(e){return s.z.array(e).min(1).max(h.optionsPerAttribute).refine(e=>{let t=e.map(e=>e.value);return new Set(t).size===t.length},{message:`Duplicate option values are not allowed`})}const j=writeOptionsArraySchema(E),M=writeOptionsArraySchema(D),N=writeOptionsArraySchema(O),ie=s.z.object({object:s.z.string().min(1).describe(`Target object`),displayTemplate:s.z.string().optional().describe(`Linked record label template`),filter:s.z.record(s.z.string(),s.z.unknown()).optional().describe(`Restricts linkable records`)}),ae=s.z.object({object:s.z.string().min(1).describe(`Other side's object`),attribute:s.z.string().min(1).describe(`Other side's attribute`),cardinality:s.z.enum([`one`,`many`]).optional().describe(`Other side's cardinality`),label:s.z.string().min(1).optional().describe(`Other side's label`),storageOwner:s.z.boolean().optional().describe(`Owns the join storage`)}),P=s.z.object({objectName:s.z.string().min(1).describe(`API name of the object whose options are mirrored`),attributeName:s.z.string().min(1).describe(`API name of the select/status attribute to mirror options from`),attributeId:s.z.string().optional().describe(`Id of the source attribute, resolved by the server`)}),F=S.extend({multiline:s.z.boolean().describe(`Renders as a multi-line textarea`).optional(),minLength:s.z.number().int().min(0).describe(`Minimum character count`).optional(),maxLength:s.z.number().int().min(1).describe(`Maximum character count`).optional(),pattern:s.z.string().describe(`Regular expression the value must match`).optional(),format:s.z.enum([`email`,`url`,`slug`]).describe(`Validates and renders as this format`).optional()}),oe=S,I=S.extend({renderAs:s.z.enum([`number`,`rating`]).describe(`Plain number or a star rating`).optional(),min:s.z.number().describe(`Minimum allowed value`).optional(),max:s.z.number().describe(`Maximum allowed value`).optional(),unit:s.z.enum([`integer`,`decimal`,`percentage`]).describe(`How the value is stored and rendered`).optional(),decimals:s.z.number().int().min(0).max(10).describe(`Decimal places shown`).optional()}),L=S,R=S.extend({dateFormat:s.z.enum([`short`,`long`,`full`,`relative`]).describe(`How the date is rendered`).optional(),minDate:s.z.string().describe(`Earliest allowed date (ISO)`).optional(),maxDate:s.z.string().describe(`Latest allowed date (ISO)`).optional(),includeTime:s.z.boolean().describe(`Also captures a time of day`).optional(),endDate:s.z.boolean().describe(`Paired with another date attribute as a range's end`).optional(),timeFormat:s.z.enum([`12h`,`24h`]).describe(`Clock format when a time is included`).optional()}),z=S.extend({defaultCountryCode:s.z.string().length(3).describe(`ISO country code preselected in the dialer`).optional()}),B=S.extend({defaultCurrency:s.z.string().length(3).describe(`ISO currency code preselected for new values`).optional(),allowedCurrencies:s.z.array(s.z.string().length(3)).describe(`ISO currency codes a value may use; any currency when omitted`).optional(),allowNegative:s.z.boolean().describe(`Whether a negative amount is accepted`).optional()}),V=S.extend({options:A.describe(`The workflow statuses, in order`)}),H=S.extend({granularity:s.z.enum([`full`,`address`,`city`,`state`,`country`,`coordinates`]).describe(`How precise a location must be captured`).optional(),defaultCountry:s.z.string().length(3).describe(`ISO country code preselected for new values`).optional(),allowedCountries:s.z.array(s.z.string().length(3)).describe(`ISO country codes a value may use; any country when omitted`).optional()}),U=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen option as a colored badge`)}),W=S.extend({options:A.describe(`Options`),renderAs:s.z.literal(`badges`).optional().describe(`Renders the chosen options as colored badges`)}),se=S.extend({types:s.z.array(s.z.enum([`user`,`agent`])).min(1).optional().describe(`Which kinds of actor can be picked; both when omitted`),multiple:s.z.boolean().optional().describe(`Whether more than one actor can be picked`)}),G={name:x.describe(`Property API name`),label:s.z.string().min(1).describe(`Label people see`),required:s.z.boolean().describe(`Required on every edge`).optional()},ce={id:s.z.string().optional(),objectId:s.z.string().optional(),system:s.z.boolean().optional(),unique:s.z.boolean().optional()},le=Object.fromEntries(C.map(e=>[e,!0])),K=[`text`,`number`,`checkbox`,`date`,`phone`,`currency`,`location`],q=[...K,`select`,`multiselect`,`status`],J={text:F,number:I,checkbox:L,date:R,phone:z,currency:B,location:H,select:U,multiselect:W,status:V},ue={...J,select:U.extend({options:j.describe(`Options`)}),multiselect:W.extend({options:M.describe(`Options`)}),status:V.extend({options:N.describe(`Statuses`)})},propertyWireConfigShapeFor=e=>ue[e].omit(le).shape,storedPropertyMember=e=>s.z.object({...G,...ce,type:s.z.literal(e).describe(`Property type`),...J[e].shape}).strip(),Y=s.z.discriminatedUnion(`type`,q.map(storedPropertyMember)),X=s.z.object({definitions:s.z.array(Y).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strip().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),de=refuseForeignKeys(Object.fromEntries(q.map(e=>[e,new Set(Object.keys(propertyWireConfigShapeFor(e)))])),`property key`,[...Object.keys(G),`type`]);function refuseForeignPropertyKeys(e,t){de(e.type,e,t)}const Z=K.reduce((e,t)=>(Object.assign(e,propertyWireConfigShapeFor(t)),e),{}),optionPropertyWireMember=e=>s.z.object({...G,type:e.length===1?s.z.literal(e[0]).describe(`Property type`):s.z.enum(e).describe(`Property type`),...propertyWireConfigShapeFor(e[0])}).strict(),Q=s.z.discriminatedUnion(`type`,[optionPropertyWireMember([`select`,`multiselect`]),optionPropertyWireMember([`status`]),s.z.object({...G,type:s.z.enum(K).describe(`Property type`),...Z}).strict().superRefine(refuseForeignPropertyKeys)]),fe=s.z.object({definitions:s.z.array(Q).min(1).max(h.optionsPerAttribute).describe(`Edge properties`)}).strict().describe(`Properties carried by the edge itself (role, share, since…), never a third object`),pe=S.extend({targets:s.z.array(ie).min(1).describe(`Target object(s)`),cardinality:s.z.enum([`one`,`many`]).describe(`one or many`),maxItems:s.z.number().int().min(1).optional().describe(`Max linked records`),bilateral:ae.optional().describe(`Syncs the other side's attribute`),properties:X.optional()}),me=S.extend({expression:s.z.string().min(1).superRefine((e,t)=>{try{parseComputedFormula(e)}catch(e){t.addIssue({code:s.z.ZodIssueCode.custom,message:e instanceof Error?e.message:`Invalid formula expression`})}}).describe(`The formula expression, compiled against this object's attributes`),returnType:s.z.enum([`text`,`number`,`boolean`,`date`,`select`,`multiselect`]).describe(`The formula's result type`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a number result`),currencyCode:s.z.string().length(3).optional().describe(`ISO 4217 code a number result renders with; presentation only`),allowRelations:s.z.boolean().optional().describe(`Whether the expression may read across a relation`),optionsSource:P.optional().describe(`Mirrors an option set`)}),he=S.extend({relationAttribute:s.z.string().min(1).optional().describe(`API name of the relation this rollup aggregates through`),relationPath:s.z.string().optional().describe(`Not supported yet — single-hop only`),targetAttribute:s.z.string().min(1).optional().describe(`API name of the attribute aggregated on the relation's target object; not read by count`),function:s.z.enum([`sum`,`avg`,`earliest`,`latest`,`count`,`countValues`,`countUniqueValues`,`countEmpty`,`percentEmpty`,`percentNotEmpty`,`original`]).describe(`The aggregation applied across the linked records`),decimals:s.z.number().int().min(0).max(10).optional().describe(`Decimal places shown for a numeric result`),targetAttributeType:s.z.string().optional().describe(`Server-set`),targetAttributeOptions:s.z.array(k).optional().describe(`Server-set`),targetCurrencyCode:s.z.string().length(3).optional().describe(`Server-set`),optionsSource:P.optional().describe(`Mirrors an option set`)});function rollupTargetIssue(e,t){if(e===`rollup`&&t.function!==`count`&&t.targetAttribute===void 0)return{path:[`targetAttribute`],message:`targetAttribute is required for a "${String(t.function)}" rollup`}}const $={text:F,richtext:oe,number:I,checkbox:L,date:R,phone:z,currency:B,status:V,location:H,select:U,multiselect:W,user:se,relation:pe,formula:me,rollup:he,document:S.extend({properties:X.optional(),accepts:s.z.array(s.z.string().min(1)).optional().describe("MIME prefixes or globs a file must match (e.g. `image/*`, `*.pdf`)"),maxFileSize:s.z.number().int().min(1).optional().describe(`Maximum file size in bytes`)})};function getAttributeConfigSchema(e){let t=$[e];if(!t)throw new o.ValidationError(`Unsupported attribute type: ${e}`,[]);return t}function parseAttributeConfig(e,t){let n=getAttributeConfigSchema(e).strip().parse(t),r=rollupTargetIssue(e,n);if(r)throw validationErrorFromIssues([r]);return n}function getAttributeConfigWriteSchema(e){let t=getAttributeConfigSchema(e).extend({icon:_.optional()});switch(e){case`select`:return t.extend({options:j.describe(`Options`)});case`multiselect`:return t.extend({options:M.describe(`Options`)});case`status`:return t.extend({options:N.describe(`Statuses`)});default:return t}}function validationErrorFromIssues(e){return o.ValidationError.fromZodErrors(e.map(e=>({path:e.path.map(e=>typeof e==`symbol`?String(e):e),message:e.message})))}function parseWriteSchema(e,t){let n=getAttributeConfigWriteSchema(e).strip().safeParse(t);if(!n.success)throw validationErrorFromIssues(n.error.issues);let r=rollupTargetIssue(e,n.data);if(r)throw validationErrorFromIssues([r]);return n.data}function parseAttributeConfigForCreate(e,t){return parseWriteSchema(e,t)}function validatePatchedIcon(e){if(!Object.prototype.hasOwnProperty.call(e,`icon`))return;let t=_.optional().safeParse(e.icon);if(!t.success)throw o.ValidationError.fromZodErrors(t.error.issues.map(e=>({path:[`icon`,...e.path.map(e=>typeof e==`symbol`?String(e):e)],message:e.message})))}function isSelectLike(e){return e===`select`||e===`multiselect`||e===`status`}function parseAttributeConfigForUpdate(e,t){let n=Object.prototype.hasOwnProperty.call(t,`options`),r=Object.prototype.hasOwnProperty.call(t,`icon`),i={...e,...t};if(validatePatchedIcon(t),n){let{icon:t,...n}=i,a=parseWriteSchema(e.type,r?i:n);return!r&&t!==void 0&&(a.icon=t),a}let a=e.options;isSelectLike(e.type)&&(i.options=[{value:`__legacy__`,label:`__legacy__`}]);let o=getAttributeConfigSchema(e.type).strip().safeParse(i);if(!o.success)throw validationErrorFromIssues(o.error.issues);let s=o.data;return isSelectLike(e.type)&&(s.options=a),s}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return validateAttributeName}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return validateOptions}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return validateObjectName}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return parseResourceVisibility}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return validateViewName}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return assertUniqueBy}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return validateLabel}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return getAttributeConfigWriteSchema}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return parseAttributeConfigForCreate}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return getAttributeConfigSchema}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return parseAttributeConfigForUpdate}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return refuseForeignKeys}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return parseAttributeConfig}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ComputedFormulaParseError}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return validateIconName}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return parseComputedFormula}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return isNativeObjectName}});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import { r as ValidationMessages } from "./index-
|
|
2
|
+
import { ot as DateAttribute } from "./exceptions-Bon8Edct.mjs";
|
|
3
|
+
import { r as ValidationMessages } from "./index-DF2Os8Es.mjs";
|
|
4
4
|
import { z as z$1 } from "zod";
|
|
5
5
|
//#region src/validation/primitives/date.d.ts
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
3
|
-
import { r as ValidationMessages } from "./index-
|
|
2
|
+
import { ot as DateAttribute } from "./exceptions-Bon8Edct.js";
|
|
3
|
+
import { r as ValidationMessages } from "./index-OO5ADZYz.js";
|
|
4
4
|
import { z as z$1 } from "zod";
|
|
5
5
|
//#region src/validation/primitives/date.d.ts
|
|
6
6
|
/**
|
|
@@ -704,6 +704,15 @@ interface FormulaAttribute extends Omit<BaseAttribute<never>, "defaultValue" | "
|
|
|
704
704
|
returnType: FormulaReturnType;
|
|
705
705
|
/** Decimal places for number results */
|
|
706
706
|
decimals?: number;
|
|
707
|
+
/**
|
|
708
|
+
* ISO 4217 code a `number` result renders with — `123 456 €` instead of
|
|
709
|
+
* `123456` — for a formula over money (#3419). Presentation only: the
|
|
710
|
+
* stored value stays a number, sort, filter and aggregation are untouched,
|
|
711
|
+
* and `returnType` stays `"number"` because that IS what the expression
|
|
712
|
+
* returns. The rollup's `targetCurrencyCode` (#2644), mirrored. Absent →
|
|
713
|
+
* the bare number, exactly as before.
|
|
714
|
+
*/
|
|
715
|
+
currencyCode?: CurrencyCode;
|
|
707
716
|
/** Source attribute for select-like computed options */
|
|
708
717
|
optionsSource?: ComputedOptionsSource;
|
|
709
718
|
/** Whether to allow relation references in the expression (e.g., "company.name") */
|
|
@@ -972,6 +981,12 @@ declare const SchemaErrorCode: {
|
|
|
972
981
|
readonly AGENT_MESSAGE_NOT_FOUND: "AGENT_MESSAGE_NOT_FOUND";
|
|
973
982
|
readonly AGENT_MESSAGE_NOT_EDITABLE: "AGENT_MESSAGE_NOT_EDITABLE";
|
|
974
983
|
readonly INVALID_TOOL_INPUT: "INVALID_TOOL_INPUT";
|
|
984
|
+
readonly AGENT_EXECUTION_CANCELLED: "AGENT_EXECUTION_CANCELLED";
|
|
985
|
+
readonly AGENT_EXECUTION_TIMEOUT: "AGENT_EXECUTION_TIMEOUT";
|
|
986
|
+
readonly AGENT_EXTERNAL_OUTCOME_UNKNOWN: "AGENT_EXTERNAL_OUTCOME_UNKNOWN";
|
|
987
|
+
readonly AGENT_TOOL_CANCELLATION_POLICY: "AGENT_TOOL_CANCELLATION_POLICY";
|
|
988
|
+
readonly AGENT_CANCELLATION_WATCH_CAPACITY: "AGENT_CANCELLATION_WATCH_CAPACITY";
|
|
989
|
+
readonly AGENT_CANCELLATION_CLEANUP: "AGENT_CANCELLATION_CLEANUP";
|
|
975
990
|
readonly DEVICE_NOT_FOUND: "DEVICE_NOT_FOUND";
|
|
976
991
|
readonly DEVICE_OFFLINE: "DEVICE_OFFLINE";
|
|
977
992
|
readonly DEVICE_CAPABILITY_MISMATCH: "DEVICE_CAPABILITY_MISMATCH";
|
|
@@ -986,6 +1001,7 @@ declare const SchemaErrorCode: {
|
|
|
986
1001
|
readonly AI_DECISION_FAILED: "AI_DECISION_FAILED";
|
|
987
1002
|
readonly AI_IMAGE_USAGE_PENDING: "AI_IMAGE_USAGE_PENDING";
|
|
988
1003
|
readonly AI_IMAGE_GENERATION_INDETERMINATE: "AI_IMAGE_GENERATION_INDETERMINATE";
|
|
1004
|
+
readonly AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE: "AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE";
|
|
989
1005
|
readonly AI_IMAGE_PUBLICATION_FAILED: "AI_IMAGE_PUBLICATION_FAILED";
|
|
990
1006
|
readonly DOCUMENT_MIME_NOT_ACCEPTED: "DOCUMENT_MIME_NOT_ACCEPTED";
|
|
991
1007
|
readonly DOCUMENT_MULTIPLE_NOT_ALLOWED: "DOCUMENT_MULTIPLE_NOT_ALLOWED";
|
|
@@ -1399,6 +1415,28 @@ declare class ObjectReferencedError extends SchemaError {
|
|
|
1399
1415
|
readonly referencingObjects: string[];
|
|
1400
1416
|
constructor(objectName: string, referencingObjects: string[]);
|
|
1401
1417
|
}
|
|
1418
|
+
/**
|
|
1419
|
+
* Supabase Realtime refused a publish because the channel was rate limited.
|
|
1420
|
+
*
|
|
1421
|
+
* Lives here rather than beside the publisher so the browser channel client and
|
|
1422
|
+
* the server publisher can share one error vocabulary without either package
|
|
1423
|
+
* depending on the other.
|
|
1424
|
+
*/
|
|
1425
|
+
declare class RealtimeRateLimitedError extends SchemaError {
|
|
1426
|
+
constructor();
|
|
1427
|
+
}
|
|
1428
|
+
/**
|
|
1429
|
+
* A Supabase Realtime publish did not reach the channel.
|
|
1430
|
+
*/
|
|
1431
|
+
declare class RealtimeDeliveryError extends SchemaError {
|
|
1432
|
+
constructor();
|
|
1433
|
+
}
|
|
1434
|
+
/**
|
|
1435
|
+
* A Supabase Realtime channel could not be subscribed to.
|
|
1436
|
+
*/
|
|
1437
|
+
declare class RealtimeSubscriptionError extends SchemaError {
|
|
1438
|
+
constructor();
|
|
1439
|
+
}
|
|
1402
1440
|
/**
|
|
1403
1441
|
* Check if an error is a RecordReferencedError
|
|
1404
1442
|
*/
|
|
@@ -1412,4 +1450,4 @@ declare function isAttributeInUseError(error: unknown): error is AttributeInUseE
|
|
|
1412
1450
|
*/
|
|
1413
1451
|
declare function isObjectReferencedError(error: unknown): error is ObjectReferencedError;
|
|
1414
1452
|
//#endregion
|
|
1415
|
-
export {
|
|
1453
|
+
export { AttributeGroup as $, asUserId as $t, SchemaErrorCode as A, ComputedFunctionName as An, SelectAttribute as At, ValidationErrorDetail as B, ComputedFormulaBinaryNode as Bn, isBilateralRelation as Bt, RecordReference as C, ComputedCompileSchema as Cn, RELATION_TARGET_ANY as Ct, ReservedObjectNameError as D, compileComputedFormula as Dn, RichtextAttribute as Dt, RepositoryOperation as E, assertAcyclicComputedDependencies as En, RichTextAttribute as Et, SyncCascadeError as F, ComputedOptionsSource as Fn, TimeFormat as Ft, isRecordReferencedError as G, ComputedFormulaPathNode as Gn, PropertySchema as Gt, isNotFoundError as H, ComputedFormulaCallNode as Hn, relationTargetsOf as Ht, SyncConflictError as I, ComputedPlan as In, UserAttribute as It, BuiltInTransform as J, resolvePropertyDefinitions as Jt, isSchemaError as K, parseComputedFormula as Kn, PropertyType as Kt, SyncError as L, ComputedReturnType as Ln, UserReferenceType as Lt, SearchBackendError as M, isComputedFunctionName as Mn, StatusAttribute as Mt, StorageError as N, ComputedDependency as Nn, StatusGroup as Nt, RoleNotFoundError as O, COMPUTED_FUNCTIONS as On, RollupAttribute as Ot, StorageOperation as P, ComputedFieldKind as Pn, TextAttribute as Pt, Attribute as Q, asTenantId as Qt, SystemEntityImmutableError as R, ComputedValueType as Rn, inferInverseCardinality as Rt, RecordNotFoundError as S, ComputedCompileObject as Sn, PhoneAttribute as St, RepositoryError as T, ComputedFormulaCompileError as Tn, RelationTarget as Tt, isObjectReferencedError as U, ComputedFormulaLiteralNode as Un, OptionPropertyAttribute as Ut, isAttributeInUseError as V, ComputedFormulaBinaryOperator as Vn, isUniversalRelation as Vt, isProtectedResourceError as W, ComputedFormulaParseError as Wn, PropertyAttribute as Wt, SchemaOperation as X, UserId as Xt, MigrationDefinition as Y, TenantId as Yt, ATTRIBUTE_TYPES as Z, Uuid as Zt, ProtectedResourceError as _, compileRollupAttribute as _n, MultiselectAttribute as _t, ChangeTypeNotSupportedError as a, sameStableValue as an, CurrencyAttribute as at, RealtimeRateLimitedError as b, CompileComputedFormulaInput as bn, Option as bt, DuplicateError as c, COMPUTED_FUNCTION_METADATA as cn, DateRangeValue as ct, MigrationTimeoutError as d, ComputedFormulaResult as dn, FormulaAttribute as dt, deepEqual as en, AttributeType as et, NotFoundError as f, evaluateComputedAst as fn, FormulaReturnType as ft, OrphanSystemAttributeError as g, isPlainRecord as gn, MultiRelationAttribute as gt, ObjectReferencedError as h, formatComputedResult as hn, LocationGranularity as ht, AttributeUsage as i, canonicalStringify as in, Currency as it, SchemaPlanNotFoundError as j, ComputedFunctionSignature as jn, SingleRelationAttribute as jt, SchemaError as k, COMPUTED_FUNCTION_NAMES as kn, RollupFunction as kt, ForbiddenError as l, ComputedFunctionCategory as ln, DateValue as lt, ObjectNotFoundError as m, evaluateComputedFormulaWithResult as mn, LocationAttribute as mt, AttributeInUseError as n, indexBy as nn, BilateralConfig as nt, ConcurrentModificationError as o, serializeCanonicalJson as on, DateAttribute as ot, NotImplementedError as p, evaluateComputedFormula as pn, Location as pt, isValidationError as q, hasOptions as qt, AttributeNotFoundError as r, NonJsonValueError as rn, CheckboxAttribute as rt, DestructiveSyncNotAllowedError as s, serializeStableJson as sn, DateFormat as st, AccessDeniedError as t, generateId as tn, BaseAttribute as tt, MemoryNotFoundError as u, ComputedFunctionMetadata as un, DocumentAttribute as ut, ProtectedRoleError as v, inferRollupReturnType as vn, NumberAttribute as vt, RecordReferencedError as w, ComputedDependencyGraphNode as wn, RelationAttribute as wt, RealtimeSubscriptionError as x, ComputedCompileAttribute as xn, Phone as xt, RealtimeDeliveryError as y, rollupToFormulaExpression as yn, NumberUnit as yt, ValidationError as z, ComputedFormulaAstNode as zn, isAttributeSortable as zt };
|
|
@@ -704,6 +704,15 @@ interface FormulaAttribute extends Omit<BaseAttribute<never>, "defaultValue" | "
|
|
|
704
704
|
returnType: FormulaReturnType;
|
|
705
705
|
/** Decimal places for number results */
|
|
706
706
|
decimals?: number;
|
|
707
|
+
/**
|
|
708
|
+
* ISO 4217 code a `number` result renders with — `123 456 €` instead of
|
|
709
|
+
* `123456` — for a formula over money (#3419). Presentation only: the
|
|
710
|
+
* stored value stays a number, sort, filter and aggregation are untouched,
|
|
711
|
+
* and `returnType` stays `"number"` because that IS what the expression
|
|
712
|
+
* returns. The rollup's `targetCurrencyCode` (#2644), mirrored. Absent →
|
|
713
|
+
* the bare number, exactly as before.
|
|
714
|
+
*/
|
|
715
|
+
currencyCode?: CurrencyCode;
|
|
707
716
|
/** Source attribute for select-like computed options */
|
|
708
717
|
optionsSource?: ComputedOptionsSource;
|
|
709
718
|
/** Whether to allow relation references in the expression (e.g., "company.name") */
|
|
@@ -972,6 +981,12 @@ declare const SchemaErrorCode: {
|
|
|
972
981
|
readonly AGENT_MESSAGE_NOT_FOUND: "AGENT_MESSAGE_NOT_FOUND";
|
|
973
982
|
readonly AGENT_MESSAGE_NOT_EDITABLE: "AGENT_MESSAGE_NOT_EDITABLE";
|
|
974
983
|
readonly INVALID_TOOL_INPUT: "INVALID_TOOL_INPUT";
|
|
984
|
+
readonly AGENT_EXECUTION_CANCELLED: "AGENT_EXECUTION_CANCELLED";
|
|
985
|
+
readonly AGENT_EXECUTION_TIMEOUT: "AGENT_EXECUTION_TIMEOUT";
|
|
986
|
+
readonly AGENT_EXTERNAL_OUTCOME_UNKNOWN: "AGENT_EXTERNAL_OUTCOME_UNKNOWN";
|
|
987
|
+
readonly AGENT_TOOL_CANCELLATION_POLICY: "AGENT_TOOL_CANCELLATION_POLICY";
|
|
988
|
+
readonly AGENT_CANCELLATION_WATCH_CAPACITY: "AGENT_CANCELLATION_WATCH_CAPACITY";
|
|
989
|
+
readonly AGENT_CANCELLATION_CLEANUP: "AGENT_CANCELLATION_CLEANUP";
|
|
975
990
|
readonly DEVICE_NOT_FOUND: "DEVICE_NOT_FOUND";
|
|
976
991
|
readonly DEVICE_OFFLINE: "DEVICE_OFFLINE";
|
|
977
992
|
readonly DEVICE_CAPABILITY_MISMATCH: "DEVICE_CAPABILITY_MISMATCH";
|
|
@@ -986,6 +1001,7 @@ declare const SchemaErrorCode: {
|
|
|
986
1001
|
readonly AI_DECISION_FAILED: "AI_DECISION_FAILED";
|
|
987
1002
|
readonly AI_IMAGE_USAGE_PENDING: "AI_IMAGE_USAGE_PENDING";
|
|
988
1003
|
readonly AI_IMAGE_GENERATION_INDETERMINATE: "AI_IMAGE_GENERATION_INDETERMINATE";
|
|
1004
|
+
readonly AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE: "AI_IMAGE_RESERVATION_CLEANUP_INDETERMINATE";
|
|
989
1005
|
readonly AI_IMAGE_PUBLICATION_FAILED: "AI_IMAGE_PUBLICATION_FAILED";
|
|
990
1006
|
readonly DOCUMENT_MIME_NOT_ACCEPTED: "DOCUMENT_MIME_NOT_ACCEPTED";
|
|
991
1007
|
readonly DOCUMENT_MULTIPLE_NOT_ALLOWED: "DOCUMENT_MULTIPLE_NOT_ALLOWED";
|
|
@@ -1399,6 +1415,28 @@ declare class ObjectReferencedError extends SchemaError {
|
|
|
1399
1415
|
readonly referencingObjects: string[];
|
|
1400
1416
|
constructor(objectName: string, referencingObjects: string[]);
|
|
1401
1417
|
}
|
|
1418
|
+
/**
|
|
1419
|
+
* Supabase Realtime refused a publish because the channel was rate limited.
|
|
1420
|
+
*
|
|
1421
|
+
* Lives here rather than beside the publisher so the browser channel client and
|
|
1422
|
+
* the server publisher can share one error vocabulary without either package
|
|
1423
|
+
* depending on the other.
|
|
1424
|
+
*/
|
|
1425
|
+
declare class RealtimeRateLimitedError extends SchemaError {
|
|
1426
|
+
constructor();
|
|
1427
|
+
}
|
|
1428
|
+
/**
|
|
1429
|
+
* A Supabase Realtime publish did not reach the channel.
|
|
1430
|
+
*/
|
|
1431
|
+
declare class RealtimeDeliveryError extends SchemaError {
|
|
1432
|
+
constructor();
|
|
1433
|
+
}
|
|
1434
|
+
/**
|
|
1435
|
+
* A Supabase Realtime channel could not be subscribed to.
|
|
1436
|
+
*/
|
|
1437
|
+
declare class RealtimeSubscriptionError extends SchemaError {
|
|
1438
|
+
constructor();
|
|
1439
|
+
}
|
|
1402
1440
|
/**
|
|
1403
1441
|
* Check if an error is a RecordReferencedError
|
|
1404
1442
|
*/
|
|
@@ -1412,4 +1450,4 @@ declare function isAttributeInUseError(error: unknown): error is AttributeInUseE
|
|
|
1412
1450
|
*/
|
|
1413
1451
|
declare function isObjectReferencedError(error: unknown): error is ObjectReferencedError;
|
|
1414
1452
|
//#endregion
|
|
1415
|
-
export {
|
|
1453
|
+
export { AttributeGroup as $, asUserId as $t, SchemaErrorCode as A, ComputedFunctionName as An, SelectAttribute as At, ValidationErrorDetail as B, ComputedFormulaBinaryNode as Bn, isBilateralRelation as Bt, RecordReference as C, ComputedCompileSchema as Cn, RELATION_TARGET_ANY as Ct, ReservedObjectNameError as D, compileComputedFormula as Dn, RichtextAttribute as Dt, RepositoryOperation as E, assertAcyclicComputedDependencies as En, RichTextAttribute as Et, SyncCascadeError as F, ComputedOptionsSource as Fn, TimeFormat as Ft, isRecordReferencedError as G, ComputedFormulaPathNode as Gn, PropertySchema as Gt, isNotFoundError as H, ComputedFormulaCallNode as Hn, relationTargetsOf as Ht, SyncConflictError as I, ComputedPlan as In, UserAttribute as It, BuiltInTransform as J, resolvePropertyDefinitions as Jt, isSchemaError as K, parseComputedFormula as Kn, PropertyType as Kt, SyncError as L, ComputedReturnType as Ln, UserReferenceType as Lt, SearchBackendError as M, isComputedFunctionName as Mn, StatusAttribute as Mt, StorageError as N, ComputedDependency as Nn, StatusGroup as Nt, RoleNotFoundError as O, COMPUTED_FUNCTIONS as On, RollupAttribute as Ot, StorageOperation as P, ComputedFieldKind as Pn, TextAttribute as Pt, Attribute as Q, asTenantId as Qt, SystemEntityImmutableError as R, ComputedValueType as Rn, inferInverseCardinality as Rt, RecordNotFoundError as S, ComputedCompileObject as Sn, PhoneAttribute as St, RepositoryError as T, ComputedFormulaCompileError as Tn, RelationTarget as Tt, isObjectReferencedError as U, ComputedFormulaLiteralNode as Un, OptionPropertyAttribute as Ut, isAttributeInUseError as V, ComputedFormulaBinaryOperator as Vn, isUniversalRelation as Vt, isProtectedResourceError as W, ComputedFormulaParseError as Wn, PropertyAttribute as Wt, SchemaOperation as X, UserId as Xt, MigrationDefinition as Y, TenantId as Yt, ATTRIBUTE_TYPES as Z, Uuid as Zt, ProtectedResourceError as _, compileRollupAttribute as _n, MultiselectAttribute as _t, ChangeTypeNotSupportedError as a, sameStableValue as an, CurrencyAttribute as at, RealtimeRateLimitedError as b, CompileComputedFormulaInput as bn, Option as bt, DuplicateError as c, COMPUTED_FUNCTION_METADATA as cn, DateRangeValue as ct, MigrationTimeoutError as d, ComputedFormulaResult as dn, FormulaAttribute as dt, deepEqual as en, AttributeType as et, NotFoundError as f, evaluateComputedAst as fn, FormulaReturnType as ft, OrphanSystemAttributeError as g, isPlainRecord as gn, MultiRelationAttribute as gt, ObjectReferencedError as h, formatComputedResult as hn, LocationGranularity as ht, AttributeUsage as i, canonicalStringify as in, Currency as it, SchemaPlanNotFoundError as j, ComputedFunctionSignature as jn, SingleRelationAttribute as jt, SchemaError as k, COMPUTED_FUNCTION_NAMES as kn, RollupFunction as kt, ForbiddenError as l, ComputedFunctionCategory as ln, DateValue as lt, ObjectNotFoundError as m, evaluateComputedFormulaWithResult as mn, LocationAttribute as mt, AttributeInUseError as n, indexBy as nn, BilateralConfig as nt, ConcurrentModificationError as o, serializeCanonicalJson as on, DateAttribute as ot, NotImplementedError as p, evaluateComputedFormula as pn, Location as pt, isValidationError as q, hasOptions as qt, AttributeNotFoundError as r, NonJsonValueError as rn, CheckboxAttribute as rt, DestructiveSyncNotAllowedError as s, serializeStableJson as sn, DateFormat as st, AccessDeniedError as t, generateId as tn, BaseAttribute as tt, MemoryNotFoundError as u, ComputedFunctionMetadata as un, DocumentAttribute as ut, ProtectedRoleError as v, inferRollupReturnType as vn, NumberAttribute as vt, RecordReferencedError as w, ComputedDependencyGraphNode as wn, RelationAttribute as wt, RealtimeSubscriptionError as x, ComputedCompileAttribute as xn, Phone as xt, RealtimeDeliveryError as y, rollupToFormulaExpression as yn, NumberUnit as yt, ValidationError as z, ComputedFormulaAstNode as zn, isAttributeSortable as zt };
|
package/dist/exceptions.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
|
|
2
|
-
import { A as
|
|
3
|
-
export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
|
|
2
|
+
import { A as SchemaErrorCode, B as ValidationErrorDetail, C as RecordReference, D as ReservedObjectNameError, E as RepositoryOperation, F as SyncCascadeError, G as isRecordReferencedError, H as isNotFoundError, I as SyncConflictError, K as isSchemaError, L as SyncError, M as SearchBackendError, N as StorageError, O as RoleNotFoundError, P as StorageOperation, R as SystemEntityImmutableError, S as RecordNotFoundError, T as RepositoryError, U as isObjectReferencedError, V as isAttributeInUseError, W as isProtectedResourceError, _ as ProtectedResourceError, a as ChangeTypeNotSupportedError, b as RealtimeRateLimitedError, c as DuplicateError, d as MigrationTimeoutError, f as NotFoundError, g as OrphanSystemAttributeError, h as ObjectReferencedError, i as AttributeUsage, j as SchemaPlanNotFoundError, k as SchemaError, l as ForbiddenError, m as ObjectNotFoundError, n as AttributeInUseError, o as ConcurrentModificationError, p as NotImplementedError, q as isValidationError, r as AttributeNotFoundError, s as DestructiveSyncNotAllowedError, t as AccessDeniedError, u as MemoryNotFoundError, v as ProtectedRoleError, w as RecordReferencedError, x as RealtimeSubscriptionError, y as RealtimeDeliveryError, z as ValidationError } from "./exceptions-Bon8Edct.mjs";
|
|
3
|
+
export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RealtimeDeliveryError, RealtimeRateLimitedError, RealtimeSubscriptionError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
|
package/dist/exceptions.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
|
|
2
|
-
import { A as
|
|
3
|
-
export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
|
|
2
|
+
import { A as SchemaErrorCode, B as ValidationErrorDetail, C as RecordReference, D as ReservedObjectNameError, E as RepositoryOperation, F as SyncCascadeError, G as isRecordReferencedError, H as isNotFoundError, I as SyncConflictError, K as isSchemaError, L as SyncError, M as SearchBackendError, N as StorageError, O as RoleNotFoundError, P as StorageOperation, R as SystemEntityImmutableError, S as RecordNotFoundError, T as RepositoryError, U as isObjectReferencedError, V as isAttributeInUseError, W as isProtectedResourceError, _ as ProtectedResourceError, a as ChangeTypeNotSupportedError, b as RealtimeRateLimitedError, c as DuplicateError, d as MigrationTimeoutError, f as NotFoundError, g as OrphanSystemAttributeError, h as ObjectReferencedError, i as AttributeUsage, j as SchemaPlanNotFoundError, k as SchemaError, l as ForbiddenError, m as ObjectNotFoundError, n as AttributeInUseError, o as ConcurrentModificationError, p as NotImplementedError, q as isValidationError, r as AttributeNotFoundError, s as DestructiveSyncNotAllowedError, t as AccessDeniedError, u as MemoryNotFoundError, v as ProtectedRoleError, w as RecordReferencedError, x as RealtimeSubscriptionError, y as RealtimeDeliveryError, z as ValidationError } from "./exceptions-Bon8Edct.js";
|
|
3
|
+
export { AccessDeniedError, AttributeInUseError, AttributeNotFoundError, AttributeUsage, ChangeTypeNotSupportedError, ConcurrentModificationError, DestructiveSyncNotAllowedError, DuplicateError, ForbiddenError, MemoryNotFoundError, MigrationTimeoutError, NotFoundError, NotImplementedError, ObjectNotFoundError, ObjectReferencedError, OrphanSystemAttributeError, ProtectedResourceError, ProtectedRoleError, RealtimeDeliveryError, RealtimeRateLimitedError, RealtimeSubscriptionError, RecordNotFoundError, RecordReference, RecordReferencedError, RepositoryError, RepositoryOperation, ReservedObjectNameError, RoleNotFoundError, SchemaError, SchemaErrorCode, SchemaPlanNotFoundError, SearchBackendError, StorageError, StorageOperation, SyncCascadeError, SyncConflictError, SyncError, SystemEntityImmutableError, ValidationError, ValidationErrorDetail, isAttributeInUseError, isNotFoundError, isObjectReferencedError, isProtectedResourceError, isRecordReferencedError, isSchemaError, isValidationError };
|