tinacms 0.0.0-90b2aa2-20241028051505 → 0.0.0-97d38ab-20241104224426
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/admin/types.d.ts +3 -0
- package/dist/cache/node-cache.d.ts +1 -0
- package/dist/client.js +18 -16
- package/dist/client.mjs +1 -1
- package/dist/index.js +95 -26
- package/dist/index.mjs +95 -26
- package/dist/{node-cache-7fa2452c.mjs → node-cache-4c336858.mjs} +18 -11
- package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +8 -0
- package/package.json +4 -4
- package/dist/__vite-browser-external-d06ac358.mjs +0 -4
package/dist/admin/types.d.ts
CHANGED
package/dist/client.js
CHANGED
|
@@ -105,21 +105,27 @@
|
|
|
105
105
|
const client = new TinaClient(args);
|
|
106
106
|
return client;
|
|
107
107
|
}
|
|
108
|
-
const makeCacheDir = async (dir, fs) => {
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
108
|
+
const makeCacheDir = async (dir, fs, path, os) => {
|
|
109
|
+
const pathParts = dir.split(path.sep).filter(Boolean);
|
|
110
|
+
const cacheHash = pathParts[pathParts.length - 1];
|
|
111
|
+
const rootUser = pathParts[0];
|
|
112
112
|
let cacheDir = dir;
|
|
113
|
-
if (!fs.existsSync(path.join(path.sep,
|
|
114
|
-
cacheDir = path.join(os.tmpdir(),
|
|
113
|
+
if (!fs.existsSync(path.join(path.sep, rootUser))) {
|
|
114
|
+
cacheDir = path.join(os.tmpdir(), cacheHash);
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
118
|
+
} catch (error) {
|
|
119
|
+
throw new Error(`Failed to create cache directory: ${error.message}`);
|
|
115
120
|
}
|
|
116
|
-
fs.mkdirSync(cacheDir, { recursive: true });
|
|
117
121
|
return cacheDir;
|
|
118
122
|
};
|
|
119
123
|
const NodeCache = async (dir) => {
|
|
120
|
-
const fs =
|
|
121
|
-
const
|
|
122
|
-
const
|
|
124
|
+
const fs = require("node:fs");
|
|
125
|
+
const path = require("node:path");
|
|
126
|
+
const os = require("node:os");
|
|
127
|
+
const { createHash } = require("node:crypto");
|
|
128
|
+
const cacheDir = await makeCacheDir(dir, fs, path, os);
|
|
123
129
|
return {
|
|
124
130
|
makeKey: (key) => {
|
|
125
131
|
const input = key && key instanceof Object ? JSON.stringify(key) : key || "";
|
|
@@ -147,12 +153,8 @@
|
|
|
147
153
|
};
|
|
148
154
|
const nodeCache = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
149
155
|
__proto__: null,
|
|
150
|
-
NodeCache
|
|
151
|
-
|
|
152
|
-
const __viteBrowserExternal = {};
|
|
153
|
-
const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
154
|
-
__proto__: null,
|
|
155
|
-
default: __viteBrowserExternal
|
|
156
|
+
NodeCache,
|
|
157
|
+
makeCacheDir
|
|
156
158
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
157
159
|
exports2.TINA_HOST = TINA_HOST;
|
|
158
160
|
exports2.TinaClient = TinaClient;
|
package/dist/client.mjs
CHANGED
|
@@ -24,7 +24,7 @@ class TinaClient {
|
|
|
24
24
|
}
|
|
25
25
|
try {
|
|
26
26
|
if (this.cacheDir && typeof window === "undefined" && typeof require !== "undefined") {
|
|
27
|
-
const { NodeCache } = await import("./node-cache-
|
|
27
|
+
const { NodeCache } = await import("./node-cache-4c336858.mjs");
|
|
28
28
|
this.cache = await NodeCache(this.cacheDir);
|
|
29
29
|
}
|
|
30
30
|
} catch (e) {
|
package/dist/index.js
CHANGED
|
@@ -774,6 +774,22 @@ var __publicField = (obj, key, value) => {
|
|
|
774
774
|
);
|
|
775
775
|
};
|
|
776
776
|
}
|
|
777
|
+
function wrapFieldWithNoHeader(Field) {
|
|
778
|
+
return (props) => {
|
|
779
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
780
|
+
FieldMeta,
|
|
781
|
+
{
|
|
782
|
+
name: props.input.name,
|
|
783
|
+
label: false,
|
|
784
|
+
description: "",
|
|
785
|
+
error: props.meta.error,
|
|
786
|
+
index: props.index,
|
|
787
|
+
tinaForm: props.tinaForm
|
|
788
|
+
},
|
|
789
|
+
/* @__PURE__ */ React__namespace.createElement(Field, { ...props })
|
|
790
|
+
);
|
|
791
|
+
};
|
|
792
|
+
}
|
|
777
793
|
function wrapFieldWithError(Field) {
|
|
778
794
|
return (props) => {
|
|
779
795
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -850,9 +866,9 @@ var __publicField = (obj, key, value) => {
|
|
|
850
866
|
"span",
|
|
851
867
|
{
|
|
852
868
|
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
|
|
853
|
-
...props
|
|
854
|
-
|
|
855
|
-
|
|
869
|
+
...props,
|
|
870
|
+
dangerouslySetInnerHTML: { __html: children }
|
|
871
|
+
}
|
|
856
872
|
);
|
|
857
873
|
};
|
|
858
874
|
const FieldError = ({
|
|
@@ -5791,27 +5807,35 @@ flowchart TD
|
|
|
5791
5807
|
))))
|
|
5792
5808
|
))));
|
|
5793
5809
|
};
|
|
5794
|
-
const Group =
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5804
|
-
|
|
5810
|
+
const Group = wrapFieldWithNoHeader(
|
|
5811
|
+
({ tinaForm, field }) => {
|
|
5812
|
+
const cms = useCMS$1();
|
|
5813
|
+
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(
|
|
5814
|
+
Header,
|
|
5815
|
+
{
|
|
5816
|
+
onClick: () => {
|
|
5817
|
+
const state = tinaForm.finalForm.getState();
|
|
5818
|
+
if (state.invalid === true) {
|
|
5819
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
5820
|
+
return;
|
|
5821
|
+
}
|
|
5822
|
+
cms.dispatch({
|
|
5823
|
+
type: "forms:set-active-field-name",
|
|
5824
|
+
value: { formId: tinaForm.id, fieldName: field.name }
|
|
5825
|
+
});
|
|
5805
5826
|
}
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5809
|
-
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
|
|
5827
|
+
},
|
|
5828
|
+
field.label || field.name,
|
|
5829
|
+
field.description && /* @__PURE__ */ React__namespace.createElement(
|
|
5830
|
+
"span",
|
|
5831
|
+
{
|
|
5832
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
|
|
5833
|
+
dangerouslySetInnerHTML: { __html: field.description }
|
|
5834
|
+
}
|
|
5835
|
+
)
|
|
5836
|
+
));
|
|
5837
|
+
}
|
|
5838
|
+
);
|
|
5815
5839
|
const Header = ({ onClick, children }) => {
|
|
5816
5840
|
return /* @__PURE__ */ React__namespace.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React__namespace.createElement(
|
|
5817
5841
|
"button",
|
|
@@ -10308,7 +10332,7 @@ flowchart TD
|
|
|
10308
10332
|
"Event Log"
|
|
10309
10333
|
));
|
|
10310
10334
|
};
|
|
10311
|
-
const version = "2.
|
|
10335
|
+
const version = "2.4.0";
|
|
10312
10336
|
const Nav = ({
|
|
10313
10337
|
isLocalMode,
|
|
10314
10338
|
className = "",
|
|
@@ -30088,6 +30112,7 @@ mutation addPendingDocumentMutation(
|
|
|
30088
30112
|
relativePath
|
|
30089
30113
|
filename
|
|
30090
30114
|
extension
|
|
30115
|
+
hasReferences
|
|
30091
30116
|
}
|
|
30092
30117
|
}
|
|
30093
30118
|
}
|
|
@@ -30179,6 +30204,9 @@ mutation addPendingDocumentMutation(
|
|
|
30179
30204
|
document(collection:$collection, relativePath:$relativePath) {
|
|
30180
30205
|
... on Document {
|
|
30181
30206
|
_values
|
|
30207
|
+
_sys {
|
|
30208
|
+
hasReferences
|
|
30209
|
+
}
|
|
30182
30210
|
}
|
|
30183
30211
|
}
|
|
30184
30212
|
}`;
|
|
@@ -31905,6 +31933,23 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31905
31933
|
DeleteModal,
|
|
31906
31934
|
{
|
|
31907
31935
|
filename: vars.relativePath,
|
|
31936
|
+
checkRefsFunc: async () => {
|
|
31937
|
+
var _a2, _b2;
|
|
31938
|
+
try {
|
|
31939
|
+
const doc = await admin.fetchDocument(
|
|
31940
|
+
collection.name,
|
|
31941
|
+
vars.relativePath,
|
|
31942
|
+
true
|
|
31943
|
+
);
|
|
31944
|
+
return (_b2 = (_a2 = doc == null ? void 0 : doc.document) == null ? void 0 : _a2._sys) == null ? void 0 : _b2.hasReferences;
|
|
31945
|
+
} catch (error) {
|
|
31946
|
+
cms.alerts.error(
|
|
31947
|
+
"Document was not found, ask a developer for help or check the console for an error message"
|
|
31948
|
+
);
|
|
31949
|
+
console.error(error);
|
|
31950
|
+
throw error;
|
|
31951
|
+
}
|
|
31952
|
+
},
|
|
31908
31953
|
deleteFunc: async () => {
|
|
31909
31954
|
try {
|
|
31910
31955
|
await admin.deleteDocument(vars);
|
|
@@ -31913,6 +31958,12 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31913
31958
|
);
|
|
31914
31959
|
reFetchCollection();
|
|
31915
31960
|
} catch (error) {
|
|
31961
|
+
if (error.message.indexOf("has references")) {
|
|
31962
|
+
cms.alerts.error(
|
|
31963
|
+
error.message.split("\n ").filter(Boolean)[1]
|
|
31964
|
+
);
|
|
31965
|
+
return;
|
|
31966
|
+
}
|
|
31916
31967
|
cms.alerts.warn(
|
|
31917
31968
|
"Document was not deleted, ask a developer for help or check the console for an error message"
|
|
31918
31969
|
);
|
|
@@ -31964,6 +32015,12 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31964
32015
|
cms.alerts.info("Document was successfully renamed");
|
|
31965
32016
|
reFetchCollection();
|
|
31966
32017
|
} catch (error) {
|
|
32018
|
+
if (error.message.indexOf("has references")) {
|
|
32019
|
+
cms.alerts.error(
|
|
32020
|
+
error.message.split("\n ").filter(Boolean)[1]
|
|
32021
|
+
);
|
|
32022
|
+
return;
|
|
32023
|
+
}
|
|
31967
32024
|
cms.alerts.warn(
|
|
31968
32025
|
"Document was not renamed, ask a developer for help or check the console for an error message"
|
|
31969
32026
|
);
|
|
@@ -32437,8 +32494,19 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32437
32494
|
const NoDocumentsPlaceholder = () => {
|
|
32438
32495
|
return /* @__PURE__ */ React.createElement("div", { className: "text-center px-5 py-3 flex flex-col items-center justify-center shadow border border-gray-100 bg-gray-50 border-b border-gray-200 w-full max-w-full rounded-lg" }, /* @__PURE__ */ React.createElement("p", { className: "text-base italic font-medium text-gray-300" }, "No documents found."));
|
|
32439
32496
|
};
|
|
32440
|
-
const DeleteModal = ({
|
|
32441
|
-
|
|
32497
|
+
const DeleteModal = ({
|
|
32498
|
+
close: close2,
|
|
32499
|
+
deleteFunc,
|
|
32500
|
+
checkRefsFunc,
|
|
32501
|
+
filename
|
|
32502
|
+
}) => {
|
|
32503
|
+
const [hasRefs, setHasRefs] = React.useState();
|
|
32504
|
+
React.useEffect(() => {
|
|
32505
|
+
checkRefsFunc().then((result) => {
|
|
32506
|
+
setHasRefs(result);
|
|
32507
|
+
});
|
|
32508
|
+
}, [filename, checkRefsFunc]);
|
|
32509
|
+
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, "Delete ", filename), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement("p", null, `Are you sure you want to delete ${filename}?${hasRefs ? " References to this document will also be deleted." : ""}`)), /* @__PURE__ */ React.createElement(ModalActions, null, /* @__PURE__ */ React.createElement(Button$1, { style: { flexGrow: 2 }, onClick: close2 }, "Cancel"), /* @__PURE__ */ React.createElement(
|
|
32442
32510
|
Button$1,
|
|
32443
32511
|
{
|
|
32444
32512
|
style: { flexGrow: 3 },
|
|
@@ -33805,6 +33873,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
33805
33873
|
exports2.useScreenPlugin = useScreenPlugin;
|
|
33806
33874
|
exports2.useTinaAuthRedirect = useTinaAuthRedirect;
|
|
33807
33875
|
exports2.wrapFieldWithError = wrapFieldWithError;
|
|
33876
|
+
exports2.wrapFieldWithNoHeader = wrapFieldWithNoHeader;
|
|
33808
33877
|
exports2.wrapFieldsWithMeta = wrapFieldsWithMeta;
|
|
33809
33878
|
Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
33810
33879
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -801,6 +801,22 @@ function wrapFieldsWithMeta(Field2) {
|
|
|
801
801
|
);
|
|
802
802
|
};
|
|
803
803
|
}
|
|
804
|
+
function wrapFieldWithNoHeader(Field2) {
|
|
805
|
+
return (props) => {
|
|
806
|
+
return /* @__PURE__ */ React.createElement(
|
|
807
|
+
FieldMeta,
|
|
808
|
+
{
|
|
809
|
+
name: props.input.name,
|
|
810
|
+
label: false,
|
|
811
|
+
description: "",
|
|
812
|
+
error: props.meta.error,
|
|
813
|
+
index: props.index,
|
|
814
|
+
tinaForm: props.tinaForm
|
|
815
|
+
},
|
|
816
|
+
/* @__PURE__ */ React.createElement(Field2, { ...props })
|
|
817
|
+
);
|
|
818
|
+
};
|
|
819
|
+
}
|
|
804
820
|
function wrapFieldWithError(Field2) {
|
|
805
821
|
return (props) => {
|
|
806
822
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -877,9 +893,9 @@ const FieldDescription = ({
|
|
|
877
893
|
"span",
|
|
878
894
|
{
|
|
879
895
|
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
|
|
880
|
-
...props
|
|
881
|
-
|
|
882
|
-
|
|
896
|
+
...props,
|
|
897
|
+
dangerouslySetInnerHTML: { __html: children }
|
|
898
|
+
}
|
|
883
899
|
);
|
|
884
900
|
};
|
|
885
901
|
const FieldError = ({
|
|
@@ -5818,27 +5834,35 @@ const BlockSelector = ({
|
|
|
5818
5834
|
))))
|
|
5819
5835
|
))));
|
|
5820
5836
|
};
|
|
5821
|
-
const Group =
|
|
5822
|
-
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5837
|
+
const Group = wrapFieldWithNoHeader(
|
|
5838
|
+
({ tinaForm, field }) => {
|
|
5839
|
+
const cms = useCMS$1();
|
|
5840
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
5841
|
+
Header,
|
|
5842
|
+
{
|
|
5843
|
+
onClick: () => {
|
|
5844
|
+
const state = tinaForm.finalForm.getState();
|
|
5845
|
+
if (state.invalid === true) {
|
|
5846
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
5847
|
+
return;
|
|
5848
|
+
}
|
|
5849
|
+
cms.dispatch({
|
|
5850
|
+
type: "forms:set-active-field-name",
|
|
5851
|
+
value: { formId: tinaForm.id, fieldName: field.name }
|
|
5852
|
+
});
|
|
5832
5853
|
}
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5854
|
+
},
|
|
5855
|
+
field.label || field.name,
|
|
5856
|
+
field.description && /* @__PURE__ */ React.createElement(
|
|
5857
|
+
"span",
|
|
5858
|
+
{
|
|
5859
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
|
|
5860
|
+
dangerouslySetInnerHTML: { __html: field.description }
|
|
5861
|
+
}
|
|
5862
|
+
)
|
|
5863
|
+
));
|
|
5864
|
+
}
|
|
5865
|
+
);
|
|
5842
5866
|
const Header = ({ onClick, children }) => {
|
|
5843
5867
|
return /* @__PURE__ */ React.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React.createElement(
|
|
5844
5868
|
"button",
|
|
@@ -10335,7 +10359,7 @@ const SyncStatus = ({ cms, setEventsOpen }) => {
|
|
|
10335
10359
|
"Event Log"
|
|
10336
10360
|
));
|
|
10337
10361
|
};
|
|
10338
|
-
const version = "2.
|
|
10362
|
+
const version = "2.4.0";
|
|
10339
10363
|
const Nav = ({
|
|
10340
10364
|
isLocalMode,
|
|
10341
10365
|
className = "",
|
|
@@ -30115,6 +30139,7 @@ class TinaAdminApi {
|
|
|
30115
30139
|
relativePath
|
|
30116
30140
|
filename
|
|
30117
30141
|
extension
|
|
30142
|
+
hasReferences
|
|
30118
30143
|
}
|
|
30119
30144
|
}
|
|
30120
30145
|
}
|
|
@@ -30206,6 +30231,9 @@ class TinaAdminApi {
|
|
|
30206
30231
|
document(collection:$collection, relativePath:$relativePath) {
|
|
30207
30232
|
... on Document {
|
|
30208
30233
|
_values
|
|
30234
|
+
_sys {
|
|
30235
|
+
hasReferences
|
|
30236
|
+
}
|
|
30209
30237
|
}
|
|
30210
30238
|
}
|
|
30211
30239
|
}`;
|
|
@@ -31932,6 +31960,23 @@ const CollectionListPage = () => {
|
|
|
31932
31960
|
DeleteModal,
|
|
31933
31961
|
{
|
|
31934
31962
|
filename: vars.relativePath,
|
|
31963
|
+
checkRefsFunc: async () => {
|
|
31964
|
+
var _a2, _b2;
|
|
31965
|
+
try {
|
|
31966
|
+
const doc = await admin.fetchDocument(
|
|
31967
|
+
collection.name,
|
|
31968
|
+
vars.relativePath,
|
|
31969
|
+
true
|
|
31970
|
+
);
|
|
31971
|
+
return (_b2 = (_a2 = doc == null ? void 0 : doc.document) == null ? void 0 : _a2._sys) == null ? void 0 : _b2.hasReferences;
|
|
31972
|
+
} catch (error) {
|
|
31973
|
+
cms.alerts.error(
|
|
31974
|
+
"Document was not found, ask a developer for help or check the console for an error message"
|
|
31975
|
+
);
|
|
31976
|
+
console.error(error);
|
|
31977
|
+
throw error;
|
|
31978
|
+
}
|
|
31979
|
+
},
|
|
31935
31980
|
deleteFunc: async () => {
|
|
31936
31981
|
try {
|
|
31937
31982
|
await admin.deleteDocument(vars);
|
|
@@ -31940,6 +31985,12 @@ const CollectionListPage = () => {
|
|
|
31940
31985
|
);
|
|
31941
31986
|
reFetchCollection();
|
|
31942
31987
|
} catch (error) {
|
|
31988
|
+
if (error.message.indexOf("has references")) {
|
|
31989
|
+
cms.alerts.error(
|
|
31990
|
+
error.message.split("\n ").filter(Boolean)[1]
|
|
31991
|
+
);
|
|
31992
|
+
return;
|
|
31993
|
+
}
|
|
31943
31994
|
cms.alerts.warn(
|
|
31944
31995
|
"Document was not deleted, ask a developer for help or check the console for an error message"
|
|
31945
31996
|
);
|
|
@@ -31991,6 +32042,12 @@ const CollectionListPage = () => {
|
|
|
31991
32042
|
cms.alerts.info("Document was successfully renamed");
|
|
31992
32043
|
reFetchCollection();
|
|
31993
32044
|
} catch (error) {
|
|
32045
|
+
if (error.message.indexOf("has references")) {
|
|
32046
|
+
cms.alerts.error(
|
|
32047
|
+
error.message.split("\n ").filter(Boolean)[1]
|
|
32048
|
+
);
|
|
32049
|
+
return;
|
|
32050
|
+
}
|
|
31994
32051
|
cms.alerts.warn(
|
|
31995
32052
|
"Document was not renamed, ask a developer for help or check the console for an error message"
|
|
31996
32053
|
);
|
|
@@ -32464,8 +32521,19 @@ const Breadcrumb = ({ folder, navigate, collectionName }) => {
|
|
|
32464
32521
|
const NoDocumentsPlaceholder = () => {
|
|
32465
32522
|
return /* @__PURE__ */ React__default.createElement("div", { className: "text-center px-5 py-3 flex flex-col items-center justify-center shadow border border-gray-100 bg-gray-50 border-b border-gray-200 w-full max-w-full rounded-lg" }, /* @__PURE__ */ React__default.createElement("p", { className: "text-base italic font-medium text-gray-300" }, "No documents found."));
|
|
32466
32523
|
};
|
|
32467
|
-
const DeleteModal = ({
|
|
32468
|
-
|
|
32524
|
+
const DeleteModal = ({
|
|
32525
|
+
close: close2,
|
|
32526
|
+
deleteFunc,
|
|
32527
|
+
checkRefsFunc,
|
|
32528
|
+
filename
|
|
32529
|
+
}) => {
|
|
32530
|
+
const [hasRefs, setHasRefs] = React__default.useState();
|
|
32531
|
+
useEffect(() => {
|
|
32532
|
+
checkRefsFunc().then((result) => {
|
|
32533
|
+
setHasRefs(result);
|
|
32534
|
+
});
|
|
32535
|
+
}, [filename, checkRefsFunc]);
|
|
32536
|
+
return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Delete ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement("p", null, `Are you sure you want to delete ${filename}?${hasRefs ? " References to this document will also be deleted." : ""}`)), /* @__PURE__ */ React__default.createElement(ModalActions, null, /* @__PURE__ */ React__default.createElement(Button$1, { style: { flexGrow: 2 }, onClick: close2 }, "Cancel"), /* @__PURE__ */ React__default.createElement(
|
|
32469
32537
|
Button$1,
|
|
32470
32538
|
{
|
|
32471
32539
|
style: { flexGrow: 3 },
|
|
@@ -33827,5 +33895,6 @@ export {
|
|
|
33827
33895
|
useScreenPlugin,
|
|
33828
33896
|
useTinaAuthRedirect,
|
|
33829
33897
|
wrapFieldWithError,
|
|
33898
|
+
wrapFieldWithNoHeader,
|
|
33830
33899
|
wrapFieldsWithMeta
|
|
33831
33900
|
};
|
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
const makeCacheDir = async (dir, fs) => {
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
1
|
+
const makeCacheDir = async (dir, fs, path, os) => {
|
|
2
|
+
const pathParts = dir.split(path.sep).filter(Boolean);
|
|
3
|
+
const cacheHash = pathParts[pathParts.length - 1];
|
|
4
|
+
const rootUser = pathParts[0];
|
|
5
5
|
let cacheDir = dir;
|
|
6
|
-
if (!fs.existsSync(path.join(path.sep,
|
|
7
|
-
cacheDir = path.join(os.tmpdir(),
|
|
6
|
+
if (!fs.existsSync(path.join(path.sep, rootUser))) {
|
|
7
|
+
cacheDir = path.join(os.tmpdir(), cacheHash);
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
11
|
+
} catch (error) {
|
|
12
|
+
throw new Error(`Failed to create cache directory: ${error.message}`);
|
|
8
13
|
}
|
|
9
|
-
fs.mkdirSync(cacheDir, { recursive: true });
|
|
10
14
|
return cacheDir;
|
|
11
15
|
};
|
|
12
16
|
const NodeCache = async (dir) => {
|
|
13
|
-
const fs =
|
|
14
|
-
const
|
|
15
|
-
const
|
|
17
|
+
const fs = require("node:fs");
|
|
18
|
+
const path = require("node:path");
|
|
19
|
+
const os = require("node:os");
|
|
20
|
+
const { createHash } = require("node:crypto");
|
|
21
|
+
const cacheDir = await makeCacheDir(dir, fs, path, os);
|
|
16
22
|
return {
|
|
17
23
|
makeKey: (key) => {
|
|
18
24
|
const input = key && key instanceof Object ? JSON.stringify(key) : key || "";
|
|
@@ -39,5 +45,6 @@ const NodeCache = async (dir) => {
|
|
|
39
45
|
};
|
|
40
46
|
};
|
|
41
47
|
export {
|
|
42
|
-
NodeCache
|
|
48
|
+
NodeCache,
|
|
49
|
+
makeCacheDir
|
|
43
50
|
};
|
|
@@ -3,6 +3,14 @@ import { FieldProps } from './field-props';
|
|
|
3
3
|
import { Form } from '../../forms';
|
|
4
4
|
export type InputFieldType<ExtraFieldProps, InputProps> = FieldProps<InputProps> & ExtraFieldProps;
|
|
5
5
|
export declare function wrapFieldsWithMeta<ExtraFieldProps = {}, InputProps = {}>(Field: React.FunctionComponent<InputFieldType<ExtraFieldProps, InputProps>> | React.ComponentClass<InputFieldType<ExtraFieldProps, InputProps>>): (props: InputFieldType<ExtraFieldProps, InputProps>) => React.JSX.Element;
|
|
6
|
+
/**
|
|
7
|
+
* Same as wrapFieldsWithMeta but excludes the label, and description useful for fields that render their label and description
|
|
8
|
+
*/
|
|
9
|
+
export declare function wrapFieldWithNoHeader<ExtraFieldProps = {}, InputProps = {}>(Field: React.FunctionComponent<InputFieldType<ExtraFieldProps, InputProps>> | React.ComponentClass<InputFieldType<ExtraFieldProps, InputProps>>): (props: InputFieldType<ExtraFieldProps, InputProps>) => React.JSX.Element;
|
|
10
|
+
/**
|
|
11
|
+
* Same as above but excludes the label, useful for fields that have their own label
|
|
12
|
+
* @deprecated This function is deprecated and will be removed in future versions.
|
|
13
|
+
*/
|
|
6
14
|
export declare function wrapFieldWithError<ExtraFieldProps = {}, InputProps = {}>(Field: React.FunctionComponent<InputFieldType<ExtraFieldProps, InputProps>> | React.ComponentClass<InputFieldType<ExtraFieldProps, InputProps>>): (props: InputFieldType<ExtraFieldProps, InputProps>) => React.JSX.Element;
|
|
7
15
|
interface FieldMetaProps extends React.HTMLAttributes<HTMLElement> {
|
|
8
16
|
name: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinacms",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-97d38ab-20241104224426",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -129,9 +129,9 @@
|
|
|
129
129
|
"webfontloader": "1.6.28",
|
|
130
130
|
"yup": "^1.4.0",
|
|
131
131
|
"zod": "^3.23.8",
|
|
132
|
-
"@tinacms/mdx": "0.0.0-
|
|
133
|
-
"@tinacms/schema-tools": "0.0.0-
|
|
134
|
-
"@tinacms/search": "0.0.0-
|
|
132
|
+
"@tinacms/mdx": "0.0.0-97d38ab-20241104224426",
|
|
133
|
+
"@tinacms/schema-tools": "0.0.0-97d38ab-20241104224426",
|
|
134
|
+
"@tinacms/search": "0.0.0-97d38ab-20241104224426"
|
|
135
135
|
},
|
|
136
136
|
"devDependencies": {
|
|
137
137
|
"@graphql-tools/utils": "^10.5.4",
|