tinacms 0.0.0-e0ddb8c-20241004065742 → 0.0.0-e623534-20250401065516
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/README.md +1 -1
- package/dist/admin/api.d.ts +1 -0
- package/dist/admin/components/GetCollection.d.ts +2 -2
- package/dist/admin/types.d.ts +3 -0
- package/dist/auth/TinaCloudProvider.d.ts +1 -1
- package/dist/cache/node-cache.d.ts +1 -0
- package/dist/client.js +90 -61
- package/dist/client.mjs +49 -35
- package/dist/hooks/create-page-plugin.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4161 -2431
- package/dist/index.mjs +4157 -2424
- package/dist/internalClient/index.d.ts +3 -3
- package/dist/node-cache-5e8db9f0.mjs +63 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.js +13 -1
- package/dist/react.mjs +13 -1
- package/dist/rich-text/index.js +42 -11
- package/dist/rich-text/index.mjs +42 -11
- package/dist/toolkit/components/media/media-manager.d.ts +1 -1
- package/dist/toolkit/fields/components/reference/reference-select.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/index.d.ts +4 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/fixed-toolbar-buttons.d.ts +0 -4
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/indent-list-toolbar-button.d.ts +17 -5
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mark-toolbar-button.d.ts +4 -18
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/resizable.d.ts +39 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table-cell-element.d.ts +27 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table-dropdown-menu.d.ts +3 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table-element.d.ts +14 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table-row-element.d.ts +13 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/index.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/common.d.ts +1 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +54 -11
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-overrides.d.ts +11 -3
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-provider.d.ts +2 -2
- package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +8 -0
- package/dist/toolkit/plugin-branch-switcher/branch-switcher-legacy.d.ts +1 -1
- package/dist/toolkit/plugin-branch-switcher/branch-switcher.d.ts +1 -1
- package/dist/toolkit/react-cloud-config/cloud-config-plugin.d.ts +3 -3
- package/dist/toolkit/react-sidebar/components/sidebar-body.d.ts +5 -4
- package/dist/toolkit/react-sidebar/components/sidebar-loading-placeholder.d.ts +2 -0
- package/dist/toolkit/react-sidebar/components/sidebar-no-forms-placeholder.d.ts +2 -0
- package/dist/toolkit/react-sidebar/sidebar.d.ts +2 -2
- package/dist/toolkit/tina-state.d.ts +4 -0
- package/dist/unifiedClient/index.d.ts +8 -1
- package/package.json +43 -42
- package/dist/__vite-browser-external-d06ac358.mjs +0 -4
- package/dist/node-cache-7fa2452c.mjs +0 -43
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/hooks/use-mermaid-element.d.ts +0 -3
- package/dist/toolkit/react-sidebar/components/no-forms-placeholder.d.ts +0 -8
package/README.md
CHANGED
package/dist/admin/api.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
|
|
3
3
|
*/
|
|
4
|
-
import React from 'react';
|
|
5
|
-
import type { TinaCMS } from '@tinacms/toolkit';
|
|
6
4
|
import type { Collection } from '@tinacms/schema-tools';
|
|
5
|
+
import type { TinaCMS } from '@tinacms/toolkit';
|
|
6
|
+
import React from 'react';
|
|
7
7
|
import { FilterArgs } from '../api';
|
|
8
8
|
import type { CollectionResponse } from '../types';
|
|
9
9
|
export declare const useGetCollection: (cms: TinaCMS, collectionName: string, includeDocuments: boolean, folder: {
|
package/dist/admin/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { MediaStore, StaticMedia, TinaCMS } from '@tinacms/toolkit';
|
|
1
2
|
import React from 'react';
|
|
2
|
-
import { TinaCMS, MediaStore, StaticMedia } from '@tinacms/toolkit';
|
|
3
3
|
import { Client, TinaIOConfig } from '../internalClient';
|
|
4
4
|
import { CreateClientProps } from '../utils';
|
|
5
5
|
export interface TinaCloudMediaStoreClass {
|
package/dist/client.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
(function(global, factory) {
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("
|
|
3
|
-
})(this, function(exports2,
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("async-lock")) : typeof define === "function" && define.amd ? define(["exports", "async-lock"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP));
|
|
3
|
+
})(this, function(exports2, AsyncLock) {
|
|
4
4
|
"use strict";
|
|
5
|
-
const { fetch: fetchPonyfillFN, Headers: HeadersPonyfill } = fetchPonyfill();
|
|
6
|
-
const fetchDefined = typeof fetch === "undefined" ? fetchPonyfillFN : fetch;
|
|
7
|
-
const HeadersDefined = typeof Headers === "undefined" ? HeadersPonyfill : Headers;
|
|
8
5
|
const TINA_HOST = "content.tinajs.io";
|
|
9
6
|
class TinaClient {
|
|
10
7
|
constructor({
|
|
@@ -29,6 +26,7 @@
|
|
|
29
26
|
if (this.cacheDir && typeof window === "undefined" && typeof require !== "undefined") {
|
|
30
27
|
const { NodeCache: NodeCache2 } = await Promise.resolve().then(() => nodeCache);
|
|
31
28
|
this.cache = await NodeCache2(this.cacheDir);
|
|
29
|
+
this.cacheLock = new AsyncLock();
|
|
32
30
|
}
|
|
33
31
|
} catch (e) {
|
|
34
32
|
console.error(e);
|
|
@@ -39,7 +37,7 @@
|
|
|
39
37
|
var _a;
|
|
40
38
|
await this.init();
|
|
41
39
|
const errorPolicyDefined = errorPolicy || this.errorPolicy;
|
|
42
|
-
const headers = new
|
|
40
|
+
const headers = new Headers();
|
|
43
41
|
if (this.readonlyToken) {
|
|
44
42
|
headers.append("X-API-KEY", this.readonlyToken);
|
|
45
43
|
}
|
|
@@ -65,94 +63,125 @@
|
|
|
65
63
|
...providedFetchOptions
|
|
66
64
|
};
|
|
67
65
|
let key = "";
|
|
66
|
+
let result;
|
|
68
67
|
if (this.cache) {
|
|
69
68
|
key = this.cache.makeKey(bodyString);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
`Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
|
|
89
|
-
Errors:
|
|
90
|
-
${json.errors.map((error) => error.message).join("\n")}`
|
|
69
|
+
await this.cacheLock.acquire(key, async () => {
|
|
70
|
+
result = await this.cache.get(key);
|
|
71
|
+
if (!result) {
|
|
72
|
+
result = await requestFromServer(
|
|
73
|
+
url,
|
|
74
|
+
args.query,
|
|
75
|
+
optionsObject,
|
|
76
|
+
errorPolicyDefined
|
|
77
|
+
);
|
|
78
|
+
await this.cache.set(key, result);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
} else {
|
|
82
|
+
result = await requestFromServer(
|
|
83
|
+
url,
|
|
84
|
+
args.query,
|
|
85
|
+
optionsObject,
|
|
86
|
+
errorPolicyDefined
|
|
91
87
|
);
|
|
92
88
|
}
|
|
93
|
-
const result = {
|
|
94
|
-
data: json == null ? void 0 : json.data,
|
|
95
|
-
errors: (json == null ? void 0 : json.errors) || null,
|
|
96
|
-
query: args.query
|
|
97
|
-
};
|
|
98
|
-
if (this.cache) {
|
|
99
|
-
await this.cache.set(key, result);
|
|
100
|
-
}
|
|
101
89
|
return result;
|
|
102
90
|
}
|
|
103
91
|
}
|
|
92
|
+
async function requestFromServer(url, query, optionsObject, errorPolicyDefined) {
|
|
93
|
+
const res = await fetch(url, optionsObject);
|
|
94
|
+
if (!res.ok) {
|
|
95
|
+
let additionalInfo = "";
|
|
96
|
+
if (res.status === 401) {
|
|
97
|
+
additionalInfo = "Please check that your client ID, URL and read only token are configured properly.";
|
|
98
|
+
}
|
|
99
|
+
throw new Error(
|
|
100
|
+
`Server responded with status code ${res.status}, ${res.statusText}. ${additionalInfo ? additionalInfo : ""} Please see our FAQ for more information: https://tina.io/docs/errors/faq/`
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
const json = await res.json();
|
|
104
|
+
if (json.errors && errorPolicyDefined === "throw") {
|
|
105
|
+
throw new Error(
|
|
106
|
+
`Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
|
|
107
|
+
Errors:
|
|
108
|
+
${json.errors.map((error) => error.message).join("\n")}`
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
const result = {
|
|
112
|
+
data: json == null ? void 0 : json.data,
|
|
113
|
+
errors: (json == null ? void 0 : json.errors) || null,
|
|
114
|
+
query
|
|
115
|
+
};
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
104
118
|
function createClient(args) {
|
|
105
119
|
const client = new TinaClient(args);
|
|
106
120
|
return client;
|
|
107
121
|
}
|
|
108
|
-
const makeCacheDir = async (dir, fs) => {
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
122
|
+
const makeCacheDir = async (dir, fs, path, os) => {
|
|
123
|
+
const pathParts = dir.split(path.sep).filter(Boolean);
|
|
124
|
+
const cacheHash = pathParts[pathParts.length - 1];
|
|
125
|
+
const rootUser = pathParts[0];
|
|
112
126
|
let cacheDir = dir;
|
|
113
|
-
if (!fs.existsSync(path.join(path.sep,
|
|
114
|
-
cacheDir = path.join(os.tmpdir(),
|
|
127
|
+
if (!fs.existsSync(path.join(path.sep, rootUser))) {
|
|
128
|
+
cacheDir = path.join(os.tmpdir(), cacheHash);
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
132
|
+
} catch (error) {
|
|
133
|
+
throw new Error(`Failed to create cache directory: ${error.message}`);
|
|
115
134
|
}
|
|
116
|
-
fs.mkdirSync(cacheDir, { recursive: true });
|
|
117
135
|
return cacheDir;
|
|
118
136
|
};
|
|
119
137
|
const NodeCache = async (dir) => {
|
|
120
|
-
const fs =
|
|
121
|
-
const
|
|
122
|
-
const
|
|
138
|
+
const fs = require("node:fs");
|
|
139
|
+
const path = require("node:path");
|
|
140
|
+
const os = require("node:os");
|
|
141
|
+
const { createHash } = require("node:crypto");
|
|
142
|
+
const cacheDir = await makeCacheDir(dir, fs, path, os);
|
|
123
143
|
return {
|
|
124
144
|
makeKey: (key) => {
|
|
125
145
|
const input = key && key instanceof Object ? JSON.stringify(key) : key || "";
|
|
126
146
|
return createHash("sha256").update(input).digest("hex");
|
|
127
147
|
},
|
|
128
148
|
get: async (key) => {
|
|
149
|
+
let readValue;
|
|
150
|
+
const cacheFilename = `${cacheDir}/${key}`;
|
|
129
151
|
try {
|
|
130
|
-
const data = await fs.promises.readFile(
|
|
131
|
-
|
|
152
|
+
const data = await fs.promises.readFile(cacheFilename, "utf-8");
|
|
153
|
+
readValue = JSON.parse(data);
|
|
132
154
|
} catch (e) {
|
|
133
|
-
if (e.code
|
|
134
|
-
|
|
155
|
+
if (e.code !== "ENOENT") {
|
|
156
|
+
console.error(
|
|
157
|
+
`Failed to read cache file to ${cacheFilename}: ${e.message}`
|
|
158
|
+
);
|
|
135
159
|
}
|
|
136
|
-
throw e;
|
|
137
160
|
}
|
|
161
|
+
return readValue;
|
|
138
162
|
},
|
|
139
163
|
set: async (key, value) => {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
JSON.stringify(value),
|
|
143
|
-
|
|
144
|
-
|
|
164
|
+
const cacheFilename = `${cacheDir}/${key}`;
|
|
165
|
+
try {
|
|
166
|
+
await fs.promises.writeFile(cacheFilename, JSON.stringify(value), {
|
|
167
|
+
encoding: "utf-8",
|
|
168
|
+
flag: "wx"
|
|
169
|
+
// Don't overwrite existing caches
|
|
170
|
+
});
|
|
171
|
+
} catch (e) {
|
|
172
|
+
if (e.code !== "EEXIST") {
|
|
173
|
+
console.error(
|
|
174
|
+
`Failed to write cache file to ${cacheFilename}: ${e.message}`
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
145
178
|
}
|
|
146
179
|
};
|
|
147
180
|
};
|
|
148
181
|
const nodeCache = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
149
182
|
__proto__: null,
|
|
150
|
-
NodeCache
|
|
151
|
-
|
|
152
|
-
const __viteBrowserExternal = {};
|
|
153
|
-
const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
154
|
-
__proto__: null,
|
|
155
|
-
default: __viteBrowserExternal
|
|
183
|
+
NodeCache,
|
|
184
|
+
makeCacheDir
|
|
156
185
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
157
186
|
exports2.TINA_HOST = TINA_HOST;
|
|
158
187
|
exports2.TinaClient = TinaClient;
|
package/dist/client.mjs
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
const { fetch: fetchPonyfillFN, Headers: HeadersPonyfill } = fetchPonyfill();
|
|
3
|
-
const fetchDefined = typeof fetch === "undefined" ? fetchPonyfillFN : fetch;
|
|
4
|
-
const HeadersDefined = typeof Headers === "undefined" ? HeadersPonyfill : Headers;
|
|
1
|
+
import AsyncLock from "async-lock";
|
|
5
2
|
const TINA_HOST = "content.tinajs.io";
|
|
6
3
|
class TinaClient {
|
|
7
4
|
constructor({
|
|
@@ -24,8 +21,9 @@ class TinaClient {
|
|
|
24
21
|
}
|
|
25
22
|
try {
|
|
26
23
|
if (this.cacheDir && typeof window === "undefined" && typeof require !== "undefined") {
|
|
27
|
-
const { NodeCache } = await import("./node-cache-
|
|
24
|
+
const { NodeCache } = await import("./node-cache-5e8db9f0.mjs");
|
|
28
25
|
this.cache = await NodeCache(this.cacheDir);
|
|
26
|
+
this.cacheLock = new AsyncLock();
|
|
29
27
|
}
|
|
30
28
|
} catch (e) {
|
|
31
29
|
console.error(e);
|
|
@@ -36,7 +34,7 @@ class TinaClient {
|
|
|
36
34
|
var _a;
|
|
37
35
|
await this.init();
|
|
38
36
|
const errorPolicyDefined = errorPolicy || this.errorPolicy;
|
|
39
|
-
const headers = new
|
|
37
|
+
const headers = new Headers();
|
|
40
38
|
if (this.readonlyToken) {
|
|
41
39
|
headers.append("X-API-KEY", this.readonlyToken);
|
|
42
40
|
}
|
|
@@ -62,42 +60,58 @@ class TinaClient {
|
|
|
62
60
|
...providedFetchOptions
|
|
63
61
|
};
|
|
64
62
|
let key = "";
|
|
63
|
+
let result;
|
|
65
64
|
if (this.cache) {
|
|
66
65
|
key = this.cache.makeKey(bodyString);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
66
|
+
await this.cacheLock.acquire(key, async () => {
|
|
67
|
+
result = await this.cache.get(key);
|
|
68
|
+
if (!result) {
|
|
69
|
+
result = await requestFromServer(
|
|
70
|
+
url,
|
|
71
|
+
args.query,
|
|
72
|
+
optionsObject,
|
|
73
|
+
errorPolicyDefined
|
|
74
|
+
);
|
|
75
|
+
await this.cache.set(key, result);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
} else {
|
|
79
|
+
result = await requestFromServer(
|
|
80
|
+
url,
|
|
81
|
+
args.query,
|
|
82
|
+
optionsObject,
|
|
83
|
+
errorPolicyDefined
|
|
80
84
|
);
|
|
81
85
|
}
|
|
82
|
-
const json = await res.json();
|
|
83
|
-
if (json.errors && errorPolicyDefined === "throw") {
|
|
84
|
-
throw new Error(
|
|
85
|
-
`Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
|
|
86
|
-
Errors:
|
|
87
|
-
${json.errors.map((error) => error.message).join("\n")}`
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
const result = {
|
|
91
|
-
data: json == null ? void 0 : json.data,
|
|
92
|
-
errors: (json == null ? void 0 : json.errors) || null,
|
|
93
|
-
query: args.query
|
|
94
|
-
};
|
|
95
|
-
if (this.cache) {
|
|
96
|
-
await this.cache.set(key, result);
|
|
97
|
-
}
|
|
98
86
|
return result;
|
|
99
87
|
}
|
|
100
88
|
}
|
|
89
|
+
async function requestFromServer(url, query, optionsObject, errorPolicyDefined) {
|
|
90
|
+
const res = await fetch(url, optionsObject);
|
|
91
|
+
if (!res.ok) {
|
|
92
|
+
let additionalInfo = "";
|
|
93
|
+
if (res.status === 401) {
|
|
94
|
+
additionalInfo = "Please check that your client ID, URL and read only token are configured properly.";
|
|
95
|
+
}
|
|
96
|
+
throw new Error(
|
|
97
|
+
`Server responded with status code ${res.status}, ${res.statusText}. ${additionalInfo ? additionalInfo : ""} Please see our FAQ for more information: https://tina.io/docs/errors/faq/`
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
const json = await res.json();
|
|
101
|
+
if (json.errors && errorPolicyDefined === "throw") {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
|
|
104
|
+
Errors:
|
|
105
|
+
${json.errors.map((error) => error.message).join("\n")}`
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
const result = {
|
|
109
|
+
data: json == null ? void 0 : json.data,
|
|
110
|
+
errors: (json == null ? void 0 : json.errors) || null,
|
|
111
|
+
query
|
|
112
|
+
};
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
101
115
|
function createClient(args) {
|
|
102
116
|
const client = new TinaClient(args);
|
|
103
117
|
return client;
|
|
@@ -29,7 +29,7 @@ export type OnNewDocument = (args: {
|
|
|
29
29
|
path: string;
|
|
30
30
|
}) => void;
|
|
31
31
|
export declare class ContentCreatorPlugin implements AddContentPlugin<FormShape> {
|
|
32
|
-
__type:
|
|
32
|
+
__type: "content-creator";
|
|
33
33
|
fields: AddContentPlugin<FormShape>['fields'];
|
|
34
34
|
onNewDocument?: OnNewDocument;
|
|
35
35
|
onChange: (values: any) => void;
|
package/dist/index.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export type TinaCollection = Collection;
|
|
|
53
53
|
export type TinaCloudSchema = Schema;
|
|
54
54
|
export declare const defineSchema: (config: Schema) => Schema<false>;
|
|
55
55
|
export declare const defineLegacyConfig: (config: Omit<TinaCMSProviderDefaultProps, "children">) => Omit<TinaCMSProviderDefaultProps, "children">;
|
|
56
|
-
interface MediaStoreClass {
|
|
56
|
+
export interface MediaStoreClass {
|
|
57
57
|
new (...args: any[]): MediaStore;
|
|
58
58
|
}
|
|
59
59
|
export declare const defineStaticConfig: (config: Config<(cms: TinaCMS) => TinaCMS, formifyCallback, DocumentCreatorCallback, MediaStoreClass>) => Config<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, MediaStoreClass, undefined>;
|