create-twenty-app 2.26.0 → 2.27.0
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/cli.mjs
CHANGED
|
@@ -30,7 +30,7 @@ var b = Object.create, x = Object.defineProperty, S = Object.getOwnPropertyDescr
|
|
|
30
30
|
enumerable: !0
|
|
31
31
|
}) : n, e)), re = {
|
|
32
32
|
name: "create-twenty-app",
|
|
33
|
-
version: "2.
|
|
33
|
+
version: "2.27.0",
|
|
34
34
|
description: "Command-line interface to create Twenty application",
|
|
35
35
|
main: "dist/cli.cjs",
|
|
36
36
|
bin: "dist/cli.cjs",
|
|
@@ -12836,7 +12836,7 @@ function cp(e) {
|
|
|
12836
12836
|
return e != null;
|
|
12837
12837
|
}
|
|
12838
12838
|
//#endregion
|
|
12839
|
-
//#region ../twenty-shared/dist/types-
|
|
12839
|
+
//#region ../twenty-shared/dist/types-Cw_53d6H.mjs
|
|
12840
12840
|
var lp = /* @__PURE__ */ function(e) {
|
|
12841
12841
|
return e.EMAIL = "EMAIL", e.CALENDAR = "CALENDAR", e.WORKFLOW = "WORKFLOW", e.AGENT = "AGENT", e.API = "API", e.IMPORT = "IMPORT", e.MANUAL = "MANUAL", e.SYSTEM = "SYSTEM", e.WEBHOOK = "WEBHOOK", e.APPLICATION = "APPLICATION", e;
|
|
12842
12842
|
}({}), up = {
|
|
@@ -13444,7 +13444,7 @@ var vp = /* @__PURE__ */ function(e) {
|
|
|
13444
13444
|
A.RAW_JSON
|
|
13445
13445
|
]), yp.DAY, yp.WEEK, yp.MONTH, yp.QUARTER, yp.YEAR, A.FILES, A.LINKS, A.TEXT, A.FULL_NAME, A.UUID;
|
|
13446
13446
|
//#endregion
|
|
13447
|
-
//#region ../twenty-shared/dist/constants-
|
|
13447
|
+
//#region ../twenty-shared/dist/constants-Cjh8QmJf.mjs
|
|
13448
13448
|
var Tp = [
|
|
13449
13449
|
"RATING_1",
|
|
13450
13450
|
"RATING_2",
|
|
@@ -60755,7 +60755,7 @@ function jk() {
|
|
|
60755
60755
|
}
|
|
60756
60756
|
bD();
|
|
60757
60757
|
//#endregion
|
|
60758
|
-
//#region ../twenty-shared/dist/utils-
|
|
60758
|
+
//#region ../twenty-shared/dist/utils-ClVhjZ_j.mjs
|
|
60759
60759
|
var Mk = /* @__PURE__ */ ne(sO(), 1);
|
|
60760
60760
|
cO(), ek(), ak(), A.TEXT, A.FULL_NAME, A.EMAILS, A.ADDRESS, A.LINKS, A.PHONES, A.RICH_TEXT, A.UUID;
|
|
60761
60761
|
var Nk = (e) => /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e);
|
|
@@ -62470,10 +62470,10 @@ var kj = [Y.IS_EMPTY, Y.IS_NOT_EMPTY], Aj = [Y.IS, Y.IS_NOT];
|
|
|
62470
62470
|
Y.IS_NOT,
|
|
62471
62471
|
...kj
|
|
62472
62472
|
], Y.IS, Y.IS_NOT, Y.IS_EMPTY, Y.IS_NOT_EMPTY;
|
|
62473
|
-
var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().transform((e) => e === "" ? [] :
|
|
62473
|
+
var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().transform((e) => e === "" ? [] : pM(e) ? [e] : JSON.parse(e)).refine((e) => Array.isArray(e) && e.every((e) => typeof e == "string"), { error: "Expected an array of strings" }), Nj = zf((e) => {
|
|
62474
62474
|
try {
|
|
62475
62475
|
if (typeof e == "string") {
|
|
62476
|
-
if (
|
|
62476
|
+
if (pM(e)) return [e];
|
|
62477
62477
|
try {
|
|
62478
62478
|
let t = JSON.parse(e);
|
|
62479
62479
|
return Array.isArray(t) ? t : [t];
|
|
@@ -62485,7 +62485,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62485
62485
|
} catch {
|
|
62486
62486
|
return [];
|
|
62487
62487
|
}
|
|
62488
|
-
}, Cd($l().refine((e) => Nk(e) ||
|
|
62488
|
+
}, Cd($l().refine((e) => Nk(e) || pM(e), "Must be a valid UUID or a variable with {{ }} syntax"))).catch([]), Pj = Ed({
|
|
62489
62489
|
isCurrentWorkspaceMemberSelected: q().optional(),
|
|
62490
62490
|
isCurrentRecordSelected: q().optional(),
|
|
62491
62491
|
selectedRecordIds: Cd($l())
|
|
@@ -62498,13 +62498,13 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62498
62498
|
message: e.message
|
|
62499
62499
|
}), Se;
|
|
62500
62500
|
}
|
|
62501
|
-
}).pipe(Pj), Ij = ({ recordFilter: e, fieldMetadataItemById: t, filterValueDependencies: n }) => {
|
|
62501
|
+
}).pipe(Pj), Ij = /(?!^)\+|[^0-9+]/g, Lj = /[0-9]/, Rj = ({ recordFilter: e, fieldMetadataItemById: t, filterValueDependencies: n }) => {
|
|
62502
62502
|
let r = t.get(e.fieldMetadataId);
|
|
62503
62503
|
if (k(r) && Sj(e)) {
|
|
62504
62504
|
if (r.type === A.RELATION && k(e.relationTargetFieldMetadataId)) {
|
|
62505
62505
|
let i = t.get(e.relationTargetFieldMetadataId);
|
|
62506
62506
|
if (!k(i)) return;
|
|
62507
|
-
let a =
|
|
62507
|
+
let a = Bj({
|
|
62508
62508
|
recordFilter: {
|
|
62509
62509
|
...e,
|
|
62510
62510
|
fieldMetadataId: i.id,
|
|
@@ -62515,13 +62515,13 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62515
62515
|
});
|
|
62516
62516
|
return k(a) ? { [r.name]: a } : void 0;
|
|
62517
62517
|
}
|
|
62518
|
-
return
|
|
62518
|
+
return Bj({
|
|
62519
62519
|
recordFilter: e,
|
|
62520
62520
|
fieldMetadataItem: r,
|
|
62521
62521
|
filterValueDependencies: n
|
|
62522
62522
|
});
|
|
62523
62523
|
}
|
|
62524
|
-
},
|
|
62524
|
+
}, zj = ({ fieldMetadataItem: e, filterValueDependencies: t }) => {
|
|
62525
62525
|
if (e.type !== A.MORPH_RELATION) return fj({ name: e.name });
|
|
62526
62526
|
let n = e.morphRelations?.find((e) => e.targetObjectMetadata.nameSingular === t.currentRecord?.objectMetadataNameSingular);
|
|
62527
62527
|
if (k(n)) return pj({
|
|
@@ -62530,7 +62530,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62530
62530
|
targetObjectMetadataNameSingular: n.targetObjectMetadata.nameSingular,
|
|
62531
62531
|
targetObjectMetadataNamePlural: n.targetObjectMetadata.namePlural
|
|
62532
62532
|
});
|
|
62533
|
-
},
|
|
62533
|
+
}, Bj = ({ recordFilter: e, fieldMetadataItem: t, filterValueDependencies: n }) => {
|
|
62534
62534
|
if (gj({
|
|
62535
62535
|
recordFilterOperand: e.operand,
|
|
62536
62536
|
correspondingFieldMetadataItem: t
|
|
@@ -62562,7 +62562,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62562
62562
|
}
|
|
62563
62563
|
case "DATE":
|
|
62564
62564
|
if (e.operand === Y.IS_RELATIVE) {
|
|
62565
|
-
let n =
|
|
62565
|
+
let n = tM(e.value), r = nM({
|
|
62566
62566
|
value: "PAST_1_DAY",
|
|
62567
62567
|
operand: Y.IS_RELATIVE
|
|
62568
62568
|
});
|
|
@@ -62588,9 +62588,9 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62588
62588
|
throw Error(`Unknown operand ${e.operand} for ${a} filter`);
|
|
62589
62589
|
case "DATE_TIME":
|
|
62590
62590
|
if (e.operand === Y.IS_RELATIVE) {
|
|
62591
|
-
let r =
|
|
62591
|
+
let r = aM(e), i = k(r) && typeof r == "object" ? r : null;
|
|
62592
62592
|
if (!k(i)) throw Error(`Cannot parse relative date filter : "${e.value}"`);
|
|
62593
|
-
let a =
|
|
62593
|
+
let a = aM({
|
|
62594
62594
|
value: `PAST_1_DAY;;${n.timeZone}`,
|
|
62595
62595
|
operand: Y.IS_RELATIVE
|
|
62596
62596
|
});
|
|
@@ -62603,7 +62603,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62603
62603
|
switch (e.operand) {
|
|
62604
62604
|
case Y.IS_IN_PAST: return { [t.name]: { lt: r.toInstant().round("minute").toString() } };
|
|
62605
62605
|
case Y.IS_IN_FUTURE: return { [t.name]: { gt: r.toInstant().round("minute").toString() } };
|
|
62606
|
-
case Y.IS_TODAY: return { and: [{ [t.name]: { gte:
|
|
62606
|
+
case Y.IS_TODAY: return { and: [{ [t.name]: { gte: Gj(r, "DAY").toInstant().toString() } }, { [t.name]: { lt: Kj(r, "DAY").toInstant().toString() } }] };
|
|
62607
62607
|
}
|
|
62608
62608
|
} else {
|
|
62609
62609
|
if (!(0, xe.isNonEmptyString)(e.value)) throw Error("Date filter is empty");
|
|
@@ -62649,7 +62649,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62649
62649
|
...i ? [n.currentRecord?.id] : []
|
|
62650
62650
|
].filter(k);
|
|
62651
62651
|
if (s.length === 0) return;
|
|
62652
|
-
let c =
|
|
62652
|
+
let c = zj({
|
|
62653
62653
|
fieldMetadataItem: t,
|
|
62654
62654
|
filterValueDependencies: n
|
|
62655
62655
|
});
|
|
@@ -62799,8 +62799,8 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62799
62799
|
});
|
|
62800
62800
|
case "PHONES": {
|
|
62801
62801
|
if (!i) {
|
|
62802
|
-
let n = e.value.replace(
|
|
62803
|
-
if (!
|
|
62802
|
+
let n = e.value.trim().replace(Ij, "");
|
|
62803
|
+
if (!Lj.test(n)) return;
|
|
62804
62804
|
switch (e.operand) {
|
|
62805
62805
|
case Y.CONTAINS: return { or: [
|
|
62806
62806
|
{ [t.name]: { primaryPhoneNumber: { ilike: `%${n}%` } } },
|
|
@@ -62846,14 +62846,14 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62846
62846
|
}
|
|
62847
62847
|
default: throw Error("Unknown filter type");
|
|
62848
62848
|
}
|
|
62849
|
-
},
|
|
62849
|
+
}, Vj = ({ filterValueDependencies: e, filters: t, fieldMetadataItemById: n, recordFilterGroups: r, currentRecordFilterGroupId: i }) => {
|
|
62850
62850
|
let a = r.find((e) => e.id === i);
|
|
62851
62851
|
if (!k(a)) return;
|
|
62852
|
-
let o = t.filter((e) => e.recordFilterGroupId === i).map((t) =>
|
|
62852
|
+
let o = t.filter((e) => e.recordFilterGroupId === i).map((t) => Rj({
|
|
62853
62853
|
filterValueDependencies: e,
|
|
62854
62854
|
recordFilter: t,
|
|
62855
62855
|
fieldMetadataItemById: n
|
|
62856
|
-
})).filter(k), s = r.filter((e) => e.parentRecordFilterGroupId === i).map((i) =>
|
|
62856
|
+
})).filter(k), s = r.filter((e) => e.parentRecordFilterGroupId === i).map((i) => Vj({
|
|
62857
62857
|
filterValueDependencies: e,
|
|
62858
62858
|
filters: t,
|
|
62859
62859
|
fieldMetadataItemById: n,
|
|
@@ -62863,7 +62863,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62863
62863
|
if (a.logicalOperator === bp.AND) return { and: [...o, ...s] };
|
|
62864
62864
|
if (a.logicalOperator === bp.OR) return { or: [...o, ...s] };
|
|
62865
62865
|
throw Error(`Unknown logical operator ${a.logicalOperator}`);
|
|
62866
|
-
},
|
|
62866
|
+
}, Hj = (e, t, n) => {
|
|
62867
62867
|
switch (t) {
|
|
62868
62868
|
case "DAY": return e.add({ days: n });
|
|
62869
62869
|
case "WEEK": return e.add({ weeks: n });
|
|
@@ -62875,22 +62875,22 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62875
62875
|
case "HOUR": return e.add({ hours: n });
|
|
62876
62876
|
default: return Pk(t);
|
|
62877
62877
|
}
|
|
62878
|
-
},
|
|
62878
|
+
}, Uj = Zf.enum([
|
|
62879
62879
|
vp.MONDAY,
|
|
62880
62880
|
vp.SATURDAY,
|
|
62881
62881
|
vp.SUNDAY
|
|
62882
|
-
]),
|
|
62882
|
+
]), Wj = (e) => {
|
|
62883
62883
|
switch (e) {
|
|
62884
62884
|
case vp.MONDAY: return 1;
|
|
62885
62885
|
case vp.SATURDAY: return 6;
|
|
62886
62886
|
case vp.SUNDAY: return 7;
|
|
62887
62887
|
default: return Pk(e);
|
|
62888
62888
|
}
|
|
62889
|
-
},
|
|
62889
|
+
}, Gj = (e, t, n) => {
|
|
62890
62890
|
switch (t) {
|
|
62891
62891
|
case "DAY": return e.startOfDay();
|
|
62892
62892
|
case "WEEK": {
|
|
62893
|
-
let t = k(n) ?
|
|
62893
|
+
let t = k(n) ? Wj(n) : 1, r = (e.dayOfWeek - t + 7) % 7;
|
|
62894
62894
|
return e.startOfDay().subtract({ days: r });
|
|
62895
62895
|
}
|
|
62896
62896
|
case "QUARTER": {
|
|
@@ -62925,23 +62925,23 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62925
62925
|
});
|
|
62926
62926
|
default: return Pk(t);
|
|
62927
62927
|
}
|
|
62928
|
-
},
|
|
62928
|
+
}, Kj = (e, t, n) => {
|
|
62929
62929
|
switch (t) {
|
|
62930
|
-
case "DAY": return
|
|
62931
|
-
case "WEEK": return
|
|
62932
|
-
case "MONTH": return
|
|
62933
|
-
case "QUARTER": return
|
|
62934
|
-
case "YEAR": return
|
|
62935
|
-
case "SECOND": return
|
|
62936
|
-
case "MINUTE": return
|
|
62937
|
-
case "HOUR": return
|
|
62930
|
+
case "DAY": return Gj(e, "DAY").add({ days: 1 });
|
|
62931
|
+
case "WEEK": return Gj(e, "WEEK", n).add({ weeks: 1 });
|
|
62932
|
+
case "MONTH": return Gj(e, "MONTH", n).add({ months: 1 });
|
|
62933
|
+
case "QUARTER": return Gj(e, "QUARTER", n).add({ months: 3 });
|
|
62934
|
+
case "YEAR": return Gj(e, "YEAR", n).add({ years: 1 });
|
|
62935
|
+
case "SECOND": return Gj(e, "SECOND").add({ seconds: 1 });
|
|
62936
|
+
case "MINUTE": return Gj(e, "MINUTE").add({ minutes: 1 });
|
|
62937
|
+
case "HOUR": return Gj(e, "HOUR").add({ hours: 1 });
|
|
62938
62938
|
default: return Pk(t);
|
|
62939
62939
|
}
|
|
62940
|
-
},
|
|
62940
|
+
}, qj = Zf.union([Zf.coerce.number().int().positive(), Zf.literal("undefined")]).transform((e) => e === "undefined" ? void 0 : e), Jj = Zf.enum([
|
|
62941
62941
|
"NEXT",
|
|
62942
62942
|
"THIS",
|
|
62943
62943
|
"PAST"
|
|
62944
|
-
]),
|
|
62944
|
+
]), Yj = Zf.enum([
|
|
62945
62945
|
"SECOND",
|
|
62946
62946
|
"MINUTE",
|
|
62947
62947
|
"HOUR",
|
|
@@ -62950,24 +62950,24 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62950
62950
|
"MONTH",
|
|
62951
62951
|
"QUARTER",
|
|
62952
62952
|
"YEAR"
|
|
62953
|
-
]),
|
|
62954
|
-
direction:
|
|
62955
|
-
amount:
|
|
62956
|
-
unit:
|
|
62953
|
+
]), Xj = Zf.object({
|
|
62954
|
+
direction: Jj,
|
|
62955
|
+
amount: qj.nullish(),
|
|
62956
|
+
unit: Yj,
|
|
62957
62957
|
timezone: Zf.string().nullish(),
|
|
62958
|
-
firstDayOfTheWeek:
|
|
62959
|
-
}).refine((e) => !(e.amount === void 0 && e.direction !== "THIS"), { error: "Amount cannot be 'undefined' unless direction is 'THIS'" }),
|
|
62960
|
-
let n = new RegExp(
|
|
62958
|
+
firstDayOfTheWeek: Uj.nullish()
|
|
62959
|
+
}).refine((e) => !(e.amount === void 0 && e.direction !== "THIS"), { error: "Amount cannot be 'undefined' unless direction is 'THIS'" }), Zj = /((?:THIS)|(?:PAST)|(?:NEXT))_(\d*)_(DAY|MONTH|YEAR|WEEK|QUARTER|HOUR|MINUTE|SECOND)(?:(?:;;([^;;]*);;)?(?:(MONDAY|SUNDAY|SATURDAY);;)?)?/, Qj = Zf.string().transform((e, t) => {
|
|
62960
|
+
let n = new RegExp(Zj).exec(e);
|
|
62961
62961
|
if (!(0, xe.isNonEmptyArray)(n)) return t.addIssue(`Cannot parse stringified inline relative date filter, value : "${e}"`), Zf.NEVER;
|
|
62962
62962
|
let [r, i, a, o, s, c] = n;
|
|
62963
|
-
return
|
|
62963
|
+
return Xj.parse({
|
|
62964
62964
|
direction: i,
|
|
62965
62965
|
amount: a,
|
|
62966
62966
|
unit: o,
|
|
62967
62967
|
timezone: s,
|
|
62968
62968
|
firstDayOfTheWeek: c
|
|
62969
62969
|
});
|
|
62970
|
-
}),
|
|
62970
|
+
}), $j = (e, t, n) => {
|
|
62971
62971
|
switch (t) {
|
|
62972
62972
|
case "DAY": return e.subtract({ days: n });
|
|
62973
62973
|
case "WEEK": return e.subtract({ weeks: n });
|
|
@@ -62979,12 +62979,12 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62979
62979
|
case "HOUR": return e.subtract({ hours: n });
|
|
62980
62980
|
default: return Pk(t);
|
|
62981
62981
|
}
|
|
62982
|
-
},
|
|
62982
|
+
}, eM = (e, t) => {
|
|
62983
62983
|
let { direction: n, amount: r, unit: i, firstDayOfTheWeek: a } = e;
|
|
62984
62984
|
switch (n) {
|
|
62985
62985
|
case "NEXT": {
|
|
62986
62986
|
if (!cp(r)) throw Error("Amount is required");
|
|
62987
|
-
let n =
|
|
62987
|
+
let n = Kj(t, i, a), o = Hj(n, i, r);
|
|
62988
62988
|
return {
|
|
62989
62989
|
...e,
|
|
62990
62990
|
start: n.toPlainDate().toString(),
|
|
@@ -62993,7 +62993,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
62993
62993
|
}
|
|
62994
62994
|
case "PAST": {
|
|
62995
62995
|
if (!cp(r)) throw Error("Amount is required");
|
|
62996
|
-
let n =
|
|
62996
|
+
let n = Gj(t, i, a), o = $j(n, i, r);
|
|
62997
62997
|
return {
|
|
62998
62998
|
...e,
|
|
62999
62999
|
start: o.toPlainDate().toString(),
|
|
@@ -63001,7 +63001,7 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
63001
63001
|
};
|
|
63002
63002
|
}
|
|
63003
63003
|
case "THIS": {
|
|
63004
|
-
let n =
|
|
63004
|
+
let n = Gj(t, i, a), r = Kj(t, i, a), o = n?.toPlainDate().toString(), s = r?.toPlainDate().toString();
|
|
63005
63005
|
return {
|
|
63006
63006
|
...e,
|
|
63007
63007
|
start: o,
|
|
@@ -63009,62 +63009,62 @@ var jj = (e, t, n) => Object.values(Cp[e]).includes(t) && t === n, Mj = $l().tra
|
|
|
63009
63009
|
};
|
|
63010
63010
|
}
|
|
63011
63011
|
}
|
|
63012
|
-
},
|
|
63012
|
+
}, tM = (e) => {
|
|
63013
63013
|
if (!(0, xe.isNonEmptyString)(e)) return null;
|
|
63014
|
-
let t =
|
|
63014
|
+
let t = Qj.safeParse(e);
|
|
63015
63015
|
if (!t.success) return null;
|
|
63016
63016
|
let n = t.data;
|
|
63017
|
-
return
|
|
63018
|
-
},
|
|
63017
|
+
return eM(n, cp(n.timezone) ? _D.Now.zonedDateTimeISO(n.timezone) : _D.Now.zonedDateTimeISO());
|
|
63018
|
+
}, nM = (e) => e.value ? e.operand === Y.IS_RELATIVE ? tM(e.value) : e.value : null, rM = (e, t) => {
|
|
63019
63019
|
let { direction: n, amount: r, unit: i, firstDayOfTheWeek: a } = e;
|
|
63020
63020
|
switch (n) {
|
|
63021
63021
|
case "NEXT": {
|
|
63022
63022
|
if (!k(r)) throw Error("Amount is required");
|
|
63023
|
-
let n =
|
|
63023
|
+
let n = Kj(t, i, a);
|
|
63024
63024
|
return {
|
|
63025
63025
|
...e,
|
|
63026
63026
|
start: n,
|
|
63027
|
-
end:
|
|
63027
|
+
end: Hj(n, i, r)
|
|
63028
63028
|
};
|
|
63029
63029
|
}
|
|
63030
63030
|
case "PAST": {
|
|
63031
63031
|
if (!k(r)) throw Error("Amount is required");
|
|
63032
|
-
let n =
|
|
63032
|
+
let n = Gj(t, i, a);
|
|
63033
63033
|
return {
|
|
63034
63034
|
...e,
|
|
63035
|
-
start:
|
|
63035
|
+
start: $j(n, i, r),
|
|
63036
63036
|
end: n
|
|
63037
63037
|
};
|
|
63038
63038
|
}
|
|
63039
63039
|
case "THIS": return {
|
|
63040
63040
|
...e,
|
|
63041
|
-
start:
|
|
63042
|
-
end:
|
|
63041
|
+
start: Gj(t, i, a),
|
|
63042
|
+
end: Kj(t, i, a)
|
|
63043
63043
|
};
|
|
63044
63044
|
}
|
|
63045
|
-
},
|
|
63045
|
+
}, iM = (e) => {
|
|
63046
63046
|
if (!(0, xe.isNonEmptyString)(e)) return null;
|
|
63047
|
-
let t =
|
|
63047
|
+
let t = Qj.safeParse(e);
|
|
63048
63048
|
if (t.success) {
|
|
63049
63049
|
let e = t.data;
|
|
63050
|
-
return
|
|
63050
|
+
return rM(e, (cp(e.timezone) ? _D.Now.zonedDateTimeISO(e.timezone) : _D.Now.zonedDateTimeISO()).round({ smallestUnit: "second" }));
|
|
63051
63051
|
} else return null;
|
|
63052
|
-
},
|
|
63052
|
+
}, aM = (e) => e.value ? e.operand === Y.IS_RELATIVE ? iM(e.value) : e.value : null;
|
|
63053
63053
|
xp.Is, Y.IS, xp.IsNotNull, Y.IS_NOT_NULL, xp.IsNot, Y.IS_NOT, xp.LessThanOrEqual, Y.LESS_THAN_OR_EQUAL, xp.GreaterThanOrEqual, Y.GREATER_THAN_OR_EQUAL, xp.IsBefore, Y.IS_BEFORE, xp.IsAfter, Y.IS_AFTER, xp.Contains, Y.CONTAINS, xp.DoesNotContain, Y.DOES_NOT_CONTAIN, xp.IsEmpty, Y.IS_EMPTY, xp.IsNotEmpty, Y.IS_NOT_EMPTY, xp.IsRelative, Y.IS_RELATIVE, xp.IsInPast, Y.IS_IN_PAST, xp.IsInFuture, Y.IS_IN_FUTURE, xp.IsToday, Y.IS_TODAY, Y.IS, Y.IS, Y.IS_NOT_NULL, Y.IS_NOT_NULL, Y.IS_NOT, Y.IS_NOT, Y.LESS_THAN_OR_EQUAL, Y.LESS_THAN_OR_EQUAL, Y.GREATER_THAN_OR_EQUAL, Y.GREATER_THAN_OR_EQUAL, Y.IS_BEFORE, Y.IS_BEFORE, Y.IS_AFTER, Y.IS_AFTER, Y.CONTAINS, Y.CONTAINS, Y.DOES_NOT_CONTAIN, Y.DOES_NOT_CONTAIN, Y.IS_EMPTY, Y.IS_EMPTY, Y.IS_NOT_EMPTY, Y.IS_NOT_EMPTY, Y.IS_RELATIVE, Y.IS_RELATIVE, Y.IS_IN_PAST, Y.IS_IN_PAST, Y.IS_IN_FUTURE, Y.IS_IN_FUTURE, Y.IS_TODAY, Y.IS_TODAY, Y.VECTOR_SEARCH, Y.VECTOR_SEARCH;
|
|
63054
|
-
var
|
|
63054
|
+
var oM = (e) => {
|
|
63055
63055
|
try {
|
|
63056
63056
|
return new URL(e);
|
|
63057
63057
|
} catch {
|
|
63058
63058
|
return null;
|
|
63059
63059
|
}
|
|
63060
|
-
},
|
|
63060
|
+
}, sM = (e) => e === void 0 || typeof e != "object" || !e ? e : Array.isArray(e) ? e.map((e) => sM(e)).filter((e) => !(0, xe.isUndefined)(e)) : Object.entries(e).reduce((e, [t, n]) => {
|
|
63061
63061
|
if ((0, xe.isUndefined)(n)) return e;
|
|
63062
63062
|
if (n === null || n instanceof Date) return {
|
|
63063
63063
|
...e,
|
|
63064
63064
|
[t]: n
|
|
63065
63065
|
};
|
|
63066
63066
|
if (typeof n == "object") {
|
|
63067
|
-
let r =
|
|
63067
|
+
let r = sM(n);
|
|
63068
63068
|
return !(0, xe.isUndefined)(r) && Object.keys(r).length > 0 ? {
|
|
63069
63069
|
...e,
|
|
63070
63070
|
[t]: r
|
|
@@ -63074,29 +63074,29 @@ var iM = (e) => {
|
|
|
63074
63074
|
...e,
|
|
63075
63075
|
[t]: n
|
|
63076
63076
|
};
|
|
63077
|
-
}, {}),
|
|
63077
|
+
}, {}), cM = {
|
|
63078
63078
|
BOLD: "bold",
|
|
63079
63079
|
ITALIC: "italic",
|
|
63080
63080
|
UNDERLINE: "underline",
|
|
63081
63081
|
STRIKE: "strike",
|
|
63082
63082
|
LINK: "link"
|
|
63083
63083
|
};
|
|
63084
|
-
|
|
63085
|
-
var
|
|
63084
|
+
cM.UNDERLINE, cM.BOLD, cM.ITALIC, cM.STRIKE, cM.LINK;
|
|
63085
|
+
var lM = (e) => {
|
|
63086
63086
|
let t = e.trim();
|
|
63087
63087
|
return t.startsWith("http://") || t.startsWith("https://") || t.startsWith("HTTPS://") || t.startsWith("HTTP://") ? t : `https://${t}`;
|
|
63088
|
-
},
|
|
63088
|
+
}, uM = (e, t) => {
|
|
63089
63089
|
let n = t?.allowIp ?? !0, r = t?.allowLocalhost ?? !0, i = /^(((?!-))(xn--|_)?[a-z0-9-]{0,61}[a-z0-9]{1,1}\.){1,10}(xn--)?([a-z0-9][a-z0-9-]{0,60}|[a-z0-9-]{1,30}\.[a-z]{2,})$/.test(e), a = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(e), o = e === "localhost" || e === "127.0.0.1";
|
|
63090
63090
|
return o && !r || a && !n ? !1 : i || o || a;
|
|
63091
63091
|
};
|
|
63092
63092
|
$l().transform((e, t) => {
|
|
63093
|
-
let n =
|
|
63093
|
+
let n = lM(e.trim()), r = n.replace("https://", "").replace("http://", "").replace("HTTPS://", "").replace("HTTP://", "");
|
|
63094
63094
|
if (/^\d+(?:\/[a-zA-Z]*)?$/.test(r)) return t.addIssue({
|
|
63095
63095
|
code: "custom",
|
|
63096
63096
|
message: "domain is not a valid url"
|
|
63097
63097
|
}), Se;
|
|
63098
63098
|
try {
|
|
63099
|
-
return
|
|
63099
|
+
return uM(new URL(n).hostname) ? n : (t.addIssue({
|
|
63100
63100
|
code: "custom",
|
|
63101
63101
|
message: "domain is not a valid url"
|
|
63102
63102
|
}), Se);
|
|
@@ -63107,61 +63107,61 @@ $l().transform((e, t) => {
|
|
|
63107
63107
|
}), Se;
|
|
63108
63108
|
}
|
|
63109
63109
|
});
|
|
63110
|
-
var
|
|
63111
|
-
let t =
|
|
63110
|
+
var dM = (e) => {
|
|
63111
|
+
let t = oM(e);
|
|
63112
63112
|
return k(t) ? (t.origin + t.pathname + t.search + t.hash).replace(/\/$/, "") : e;
|
|
63113
|
-
},
|
|
63113
|
+
}, fM = (e) => {
|
|
63114
63114
|
let t = e.trim();
|
|
63115
|
-
return t === "" ? t : lM(
|
|
63115
|
+
return t === "" ? t : dM(lM(t));
|
|
63116
63116
|
};
|
|
63117
63117
|
nu({ pattern: wn }).max(255);
|
|
63118
|
-
var
|
|
63118
|
+
var pM = (e) => /^{{[^{}]+}}$/.test(e), mM = /* @__PURE__ */ new Map();
|
|
63119
63119
|
for (let e of Ak()) {
|
|
63120
|
-
let t = jk(e), n =
|
|
63121
|
-
n ? n.push(e) :
|
|
63120
|
+
let t = jk(e), n = mM.get(t);
|
|
63121
|
+
n ? n.push(e) : mM.set(t, [e]);
|
|
63122
63122
|
}
|
|
63123
63123
|
new Set(Ak());
|
|
63124
|
-
var
|
|
63124
|
+
var hM = (e) => typeof e == "string", gM = RegExp("\\{\\{([^{}]+)\\}\\}", "g"), _M = (e, t) => k(e) ? hM(e) ? bM(e, t) : Array.isArray(e) ? vM(e, t) : typeof e == "object" && e ? yM(e, t) : e : e, vM = (e, t) => {
|
|
63125
63125
|
let n = e;
|
|
63126
|
-
for (let r = 0; r < e.length; ++r) n[r] =
|
|
63126
|
+
for (let r = 0; r < e.length; ++r) n[r] = _M(e[r], t);
|
|
63127
63127
|
return n;
|
|
63128
|
-
},
|
|
63129
|
-
let i =
|
|
63130
|
-
return e[typeof i == "string" ? i : String(i)] =
|
|
63131
|
-
}, {}),
|
|
63132
|
-
let n = e.match(
|
|
63133
|
-
return !n || n.length === 0 ? e : n.length === 1 && n[0] === e ? uj(e, t) : e.replace(
|
|
63128
|
+
}, yM = (e, t) => Object.entries(e).reduce((e, [n, r]) => {
|
|
63129
|
+
let i = _M(n, t);
|
|
63130
|
+
return e[typeof i == "string" ? i : String(i)] = _M(r, t), e;
|
|
63131
|
+
}, {}), bM = (e, t) => {
|
|
63132
|
+
let n = e.match(gM);
|
|
63133
|
+
return !n || n.length === 0 ? e : n.length === 1 && n[0] === e ? uj(e, t) : e.replace(gM, (e, n) => {
|
|
63134
63134
|
let r = uj(e, t);
|
|
63135
63135
|
return typeof r == "object" && r ? JSON.stringify(r) : r;
|
|
63136
63136
|
});
|
|
63137
63137
|
};
|
|
63138
63138
|
Sp.TABLE, Sp.TABLE, Sp.KANBAN, Sp.KANBAN, Sp.CALENDAR, Sp.CALENDAR, Sp.FIELDS_WIDGET, Sp.FIELDS_WIDGET, Sp.TABLE_WIDGET, Sp.TABLE, Sp.KANBAN_WIDGET, Sp.KANBAN, Sp.CALENDAR_WIDGET, Sp.CALENDAR, Sp.FIELDS_WIDGET, Sp.TABLE_WIDGET, Sp.KANBAN_WIDGET, Sp.CALENDAR_WIDGET;
|
|
63139
|
-
var
|
|
63139
|
+
var xM = {
|
|
63140
63140
|
darwin: "https://docs.docker.com/desktop/setup/install/mac-install/",
|
|
63141
63141
|
win32: "https://docs.docker.com/desktop/setup/install/windows-install/",
|
|
63142
63142
|
linux: "https://docs.docker.com/engine/install/"
|
|
63143
|
-
},
|
|
63143
|
+
}, SM = () => {
|
|
63144
63144
|
try {
|
|
63145
63145
|
return d("docker --version", { stdio: "ignore" }), !0;
|
|
63146
63146
|
} catch {
|
|
63147
63147
|
return !1;
|
|
63148
63148
|
}
|
|
63149
|
-
},
|
|
63149
|
+
}, CM = () => [
|
|
63150
63150
|
" Docker is required but not installed.",
|
|
63151
63151
|
"",
|
|
63152
|
-
` Install Docker: ${
|
|
63152
|
+
` Install Docker: ${xM[process.platform] ?? xM.linux}`,
|
|
63153
63153
|
"",
|
|
63154
63154
|
" Then run this command again.",
|
|
63155
63155
|
"",
|
|
63156
63156
|
" Alternatively, connect to an existing Twenty instance:",
|
|
63157
63157
|
" npx create-twenty-app@latest my-twenty-app --url <your-instance-url>"
|
|
63158
|
-
].join("\n"),
|
|
63158
|
+
].join("\n"), wM = process.env.INIT_CWD || process.cwd(), TM = "twentycrm/twenty-app-dev:latest", EM = class {
|
|
63159
63159
|
constructor() {
|
|
63160
63160
|
this.stepCounter = 0, this.totalSteps = 0;
|
|
63161
63161
|
}
|
|
63162
63162
|
async execute(t = {}) {
|
|
63163
63163
|
let { appName: n, appDisplayName: i, appDirectory: a, appDescription: o } = this.getAppInfos(t), s = t.serverUrl ?? h, c = s !== h;
|
|
63164
|
-
!c && !
|
|
63164
|
+
!c && !SM() && (console.log(e.yellow("\n" + CM() + "\n")), process.exit(1)), c && t.authenticationMethod === "apiKey" && console.log(e.yellow("API key authentication is only supported on a local Docker instance. Ignoring and switching to OAuth authentication."));
|
|
63165
63165
|
let l = c ? "oauth" : t.authenticationMethod ?? "apiKey";
|
|
63166
63166
|
try {
|
|
63167
63167
|
await this.validateDirectory(a), this.totalSteps = this.computeTotalSteps({ skipLocalInstance: c }), this.stepCounter = 0;
|
|
@@ -63206,7 +63206,7 @@ var yM = {
|
|
|
63206
63206
|
return {
|
|
63207
63207
|
appName: t,
|
|
63208
63208
|
appDisplayName: n,
|
|
63209
|
-
appDirectory: e.directory ? i.join(
|
|
63209
|
+
appDirectory: e.directory ? i.join(wM, e.directory) : i.join(wM, u(t)),
|
|
63210
63210
|
appDescription: r
|
|
63211
63211
|
};
|
|
63212
63212
|
}
|
|
@@ -63224,7 +63224,7 @@ var yM = {
|
|
|
63224
63224
|
}
|
|
63225
63225
|
pullImageInBackground() {
|
|
63226
63226
|
return new Promise((e) => {
|
|
63227
|
-
let t = f("docker", ["pull",
|
|
63227
|
+
let t = f("docker", ["pull", TM], { stdio: "ignore" });
|
|
63228
63228
|
t.on("close", (t) => e(t === 0)), t.on("error", () => e(!1));
|
|
63229
63229
|
});
|
|
63230
63230
|
}
|
|
@@ -63259,7 +63259,7 @@ var yM = {
|
|
|
63259
63259
|
let r = (await n.json()).data?.currentWorkspace?.workspaceUrls;
|
|
63260
63260
|
if (!r) return null;
|
|
63261
63261
|
let i = r.customUrl ?? r.subdomainUrl;
|
|
63262
|
-
return i ?
|
|
63262
|
+
return i ? fM(i) : null;
|
|
63263
63263
|
}
|
|
63264
63264
|
async readMainPageLayoutUniversalIdentifier(e) {
|
|
63265
63265
|
let t = i.join(e, "src", "constants", "universal-identifiers.ts");
|
|
@@ -63370,10 +63370,10 @@ var yM = {
|
|
|
63370
63370
|
let o = 1;
|
|
63371
63371
|
console.log(e.white(` ${o}. Navigate to your project`)), console.log(e.cyan(` cd ${i}\n`)), o++, r || (console.log(e.white(` ${o}. Connect to a Twenty instance`)), console.log(e.cyan(" yarn twenty remote:add --url <your-instance-url>\n")), o++), console.log(e.white(` ${o}. Start developing`)), console.log(e.cyan(" yarn twenty dev\n")), o++, console.log(e.white(` ${o}. Open your twenty instance`)), console.log(e.cyan(` ${n}\n`)), console.log(e.gray(" Documentation: https://docs.twenty.com/developers/extend/apps/getting-started/quick-start"));
|
|
63372
63372
|
}
|
|
63373
|
-
},
|
|
63373
|
+
}, DM = new t(re.name).description("CLI tool to initialize a new Twenty application").version(re.version, "-v, --version", "Output the current version of create-twenty-app.").argument("[directory]").option("-n, --name <name>", "Application name").option("-d, --display-name <displayName>", "Application display name").option("--description <description>", "Application description").option("--url <url>", "Twenty server URL (default: http://localhost:2020)").option("--api-url <apiUrl>", "[deprecated: use --url]").option("--authentication-method <method>", "Authentication method: oauth or apiKey (default: apiKey for local, oauth for remote)").helpOption("-h, --help", "Display this help message.").action(async (t, n) => {
|
|
63374
63374
|
t && !/^[a-z0-9-]+$/.test(t) && (console.error(e.red(`Invalid directory "${t}". Must contain only lowercase letters, numbers, and hyphens`)), process.exit(1)), n?.name !== void 0 && n.name.trim().length === 0 && (console.error(e.red("Error: --name cannot be empty.")), process.exit(1)), n?.authenticationMethod && !["oauth", "apiKey"].includes(n.authenticationMethod) && (console.error(e.red("Error: --authentication-method must be \"oauth\" or \"apiKey\".")), process.exit(1)), n?.apiUrl && console.warn(e.yellow("Warning: --api-url is deprecated. Use --url instead."));
|
|
63375
63375
|
let r = (n?.url ?? n?.apiUrl)?.replace(/\/+$/, "");
|
|
63376
|
-
await new
|
|
63376
|
+
await new EM().execute({
|
|
63377
63377
|
directory: t,
|
|
63378
63378
|
name: n?.name,
|
|
63379
63379
|
displayName: n?.displayName,
|
|
@@ -63382,9 +63382,9 @@ var yM = {
|
|
|
63382
63382
|
authenticationMethod: n?.authenticationMethod
|
|
63383
63383
|
});
|
|
63384
63384
|
});
|
|
63385
|
-
|
|
63385
|
+
DM.exitOverride();
|
|
63386
63386
|
try {
|
|
63387
|
-
|
|
63387
|
+
DM.parse();
|
|
63388
63388
|
} catch (t) {
|
|
63389
63389
|
t instanceof n && process.exit(t.exitCode), t instanceof Error && (console.error(e.red("Error:"), t.message), process.exit(1));
|
|
63390
63390
|
}
|
|
@@ -43,7 +43,6 @@
|
|
|
43
43
|
|
|
44
44
|
## Common Pitfalls
|
|
45
45
|
|
|
46
|
-
- Creating an object without an index view associated. Unless this is a technical object, user will need to visualize it.
|
|
47
46
|
- Creating a view without a navigationMenuItem associated. This will make the view available on the left sidebar.
|
|
48
47
|
- Creating a front-end component that has a scroll instead of being responsive to its fixed widget height and width, unless it is specifically meant to be used in a canvas tab.
|
|
49
48
|
|
|
@@ -18,7 +18,7 @@ export default definePageLayout({
|
|
|
18
18
|
title: 'Overview',
|
|
19
19
|
position: 0,
|
|
20
20
|
icon: 'IconApps',
|
|
21
|
-
layoutMode: PageLayoutTabLayoutMode.
|
|
21
|
+
layoutMode: PageLayoutTabLayoutMode.VERTICAL_LIST,
|
|
22
22
|
widgets: [
|
|
23
23
|
{
|
|
24
24
|
universalIdentifier: MAIN_PAGE_WIDGET_UNIVERSAL_IDENTIFIER,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-twenty-app",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.27.0",
|
|
4
4
|
"description": "Command-line interface to create Twenty application",
|
|
5
5
|
"main": "dist/cli.cjs",
|
|
6
6
|
"bin": "dist/cli.cjs",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"lodash.camelcase": "^4.3.0",
|
|
35
35
|
"lodash.kebabcase": "^4.1.1",
|
|
36
36
|
"lodash.startcase": "^4.4.0",
|
|
37
|
-
"twenty-sdk": "2.
|
|
37
|
+
"twenty-sdk": "2.27.0",
|
|
38
38
|
"uuid": "^13.0.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|