@vicacha-devs/strapi-plugin-global-search 0.0.0-stage → 2.0.3
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/LICENSE +21 -0
- package/README.md +136 -2
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.js +2310 -0
- package/dist/admin/index.js.map +7 -0
- package/dist/admin/index.mjs +2310 -0
- package/dist/admin/index.mjs.map +7 -0
- package/dist/admin/translations/ar.json +89 -0
- package/dist/admin/translations/en.json +89 -0
- package/dist/admin/translations/es.json +89 -0
- package/dist/admin/translations/fr.json +89 -0
- package/dist/admin/translations/tr.json +89 -0
- package/dist/server/bootstrap.d.ts +6 -0
- package/dist/server/bootstrap.d.ts.map +1 -0
- package/dist/server/config/index.d.ts +15 -0
- package/dist/server/config/index.d.ts.map +1 -0
- package/dist/server/controllers/index.d.ts +94 -0
- package/dist/server/controllers/index.d.ts.map +1 -0
- package/dist/server/controllers/schema.d.ts +24 -0
- package/dist/server/controllers/schema.d.ts.map +1 -0
- package/dist/server/controllers/search.d.ts +21 -0
- package/dist/server/controllers/search.d.ts.map +1 -0
- package/dist/server/controllers/settings.d.ts +23 -0
- package/dist/server/controllers/settings.d.ts.map +1 -0
- package/dist/server/index.d.ts +212 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1186 -0
- package/dist/server/index.js.map +7 -0
- package/dist/server/index.mjs +1186 -0
- package/dist/server/index.mjs.map +7 -0
- package/dist/server/register.d.ts +6 -0
- package/dist/server/register.d.ts.map +1 -0
- package/dist/server/routes/index.d.ts +20 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/services/index.d.ts +89 -0
- package/dist/server/services/index.d.ts.map +1 -0
- package/dist/server/services/permissions.d.ts +13 -0
- package/dist/server/services/permissions.d.ts.map +1 -0
- package/dist/server/services/query.d.ts +25 -0
- package/dist/server/services/query.d.ts.map +1 -0
- package/dist/server/services/ranking.d.ts +27 -0
- package/dist/server/services/ranking.d.ts.map +1 -0
- package/dist/server/services/schema.d.ts +70 -0
- package/dist/server/services/schema.d.ts.map +1 -0
- package/dist/server/services/search.d.ts +36 -0
- package/dist/server/services/search.d.ts.map +1 -0
- package/dist/server/services/settings.d.ts +15 -0
- package/dist/server/services/settings.d.ts.map +1 -0
- package/dist/server/types.d.ts +195 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/utils/async.d.ts +8 -0
- package/dist/server/utils/async.d.ts.map +1 -0
- package/dist/server/utils/constants.d.ts +42 -0
- package/dist/server/utils/constants.d.ts.map +1 -0
- package/dist/server/utils/text.d.ts +20 -0
- package/dist/server/utils/text.d.ts.map +1 -0
- package/package.json +79 -3
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
export interface PluginSettings {
|
|
2
|
+
minChars: number;
|
|
3
|
+
debounce: number;
|
|
4
|
+
perTypeLimit: number;
|
|
5
|
+
maxResults: number;
|
|
6
|
+
deep: boolean;
|
|
7
|
+
maxDepth: number;
|
|
8
|
+
includeDrafts: boolean;
|
|
9
|
+
includePluginContentTypes: boolean;
|
|
10
|
+
queryTimeout: number;
|
|
11
|
+
concurrency: number;
|
|
12
|
+
excludedContentTypes: string[];
|
|
13
|
+
excludedFields: string[];
|
|
14
|
+
displayFields: Record<string, string[]>;
|
|
15
|
+
}
|
|
16
|
+
export type ContentTypeKind = "collectionType" | "singleType";
|
|
17
|
+
export interface ContentTypeDescriptor {
|
|
18
|
+
uid: string;
|
|
19
|
+
kind: ContentTypeKind | string;
|
|
20
|
+
displayName: string;
|
|
21
|
+
apiName?: string;
|
|
22
|
+
mainField: string;
|
|
23
|
+
mainFieldSearchable?: boolean;
|
|
24
|
+
idFields: string[];
|
|
25
|
+
topLevelFields: string[];
|
|
26
|
+
nestedFields: string[];
|
|
27
|
+
displayFields?: string[];
|
|
28
|
+
localized: boolean;
|
|
29
|
+
draftAndPublish: boolean;
|
|
30
|
+
searchable: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface RankedHit {
|
|
33
|
+
tier: number;
|
|
34
|
+
tierLabel: string;
|
|
35
|
+
matchedField: string | null;
|
|
36
|
+
matchedFieldLabel: string | null;
|
|
37
|
+
matchedSnippet: string | null;
|
|
38
|
+
exactCase: boolean;
|
|
39
|
+
valueLength: number;
|
|
40
|
+
contentTypeUid: string;
|
|
41
|
+
contentTypeLabel: string;
|
|
42
|
+
kind: string;
|
|
43
|
+
id: string | number;
|
|
44
|
+
documentId: string | null;
|
|
45
|
+
title: string;
|
|
46
|
+
mainField: string;
|
|
47
|
+
extra: Array<{
|
|
48
|
+
field: string;
|
|
49
|
+
value: unknown;
|
|
50
|
+
}>;
|
|
51
|
+
locale: string | null;
|
|
52
|
+
status: "published" | "draft" | null;
|
|
53
|
+
updatedAt: string | null;
|
|
54
|
+
adminUrl: string;
|
|
55
|
+
}
|
|
56
|
+
export interface SearchParams {
|
|
57
|
+
query?: string;
|
|
58
|
+
types?: string[];
|
|
59
|
+
locale?: string;
|
|
60
|
+
page?: number;
|
|
61
|
+
pageSize?: number;
|
|
62
|
+
userAbility?: {
|
|
63
|
+
can: (action: string, subject: string) => boolean;
|
|
64
|
+
} | null;
|
|
65
|
+
}
|
|
66
|
+
export interface SearchResult {
|
|
67
|
+
query: string;
|
|
68
|
+
results: RankedHit[];
|
|
69
|
+
groups: Array<{
|
|
70
|
+
uid: string;
|
|
71
|
+
label: string;
|
|
72
|
+
kind: string;
|
|
73
|
+
count: number;
|
|
74
|
+
truncated: boolean;
|
|
75
|
+
}>;
|
|
76
|
+
pagination: {
|
|
77
|
+
page: number;
|
|
78
|
+
pageSize: number;
|
|
79
|
+
total: number;
|
|
80
|
+
pageCount: number;
|
|
81
|
+
};
|
|
82
|
+
meta: {
|
|
83
|
+
searchedTypes: number;
|
|
84
|
+
truncatedTypes: string[];
|
|
85
|
+
failedTypes: Array<{
|
|
86
|
+
uid: string;
|
|
87
|
+
message: string;
|
|
88
|
+
}>;
|
|
89
|
+
minChars: number;
|
|
90
|
+
capped?: boolean;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface AttributeShape {
|
|
94
|
+
type?: string;
|
|
95
|
+
private?: boolean;
|
|
96
|
+
searchable?: boolean;
|
|
97
|
+
component?: string;
|
|
98
|
+
customField?: string;
|
|
99
|
+
relation?: string;
|
|
100
|
+
repeatable?: boolean;
|
|
101
|
+
components?: string[];
|
|
102
|
+
}
|
|
103
|
+
export interface ContentTypeShape {
|
|
104
|
+
uid: string;
|
|
105
|
+
kind?: string;
|
|
106
|
+
apiName?: string;
|
|
107
|
+
attributes?: Record<string, AttributeShape>;
|
|
108
|
+
info?: {
|
|
109
|
+
displayName?: string;
|
|
110
|
+
singularName?: string;
|
|
111
|
+
};
|
|
112
|
+
pluginOptions?: {
|
|
113
|
+
"i18n"?: {
|
|
114
|
+
localized?: boolean;
|
|
115
|
+
};
|
|
116
|
+
"content-manager"?: {
|
|
117
|
+
visible?: boolean;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
options?: {
|
|
121
|
+
draftAndPublish?: boolean;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export interface StrapiPluginService {
|
|
125
|
+
findConfiguration: (contentType: {
|
|
126
|
+
uid: string;
|
|
127
|
+
}) => Promise<{
|
|
128
|
+
settings?: {
|
|
129
|
+
mainField?: string;
|
|
130
|
+
};
|
|
131
|
+
} | undefined>;
|
|
132
|
+
getSearchableContentTypes: (opts?: {
|
|
133
|
+
force?: boolean;
|
|
134
|
+
}) => Promise<ContentTypeDescriptor[]>;
|
|
135
|
+
getAllContentTypes: () => Promise<ContentTypeDescriptor[]>;
|
|
136
|
+
clearCache: () => void;
|
|
137
|
+
filterReadableTypes: (types: ContentTypeDescriptor[], userAbility?: {
|
|
138
|
+
can: (action: string, subject: string) => boolean;
|
|
139
|
+
} | null) => ContentTypeDescriptor[];
|
|
140
|
+
get: () => Promise<PluginSettings>;
|
|
141
|
+
set: (patch?: Partial<PluginSettings>) => Promise<PluginSettings>;
|
|
142
|
+
reset: () => Promise<PluginSettings>;
|
|
143
|
+
search: (params?: SearchParams) => Promise<SearchResult>;
|
|
144
|
+
buildParams: (descriptor: ContentTypeDescriptor, opts: {
|
|
145
|
+
query: string;
|
|
146
|
+
locale?: string;
|
|
147
|
+
limit: number;
|
|
148
|
+
includeDrafts: boolean;
|
|
149
|
+
}) => Record<string, unknown> | null;
|
|
150
|
+
score: (entry: unknown, descriptor: ContentTypeDescriptor, query: string) => Pick<RankedHit, "tier" | "tierLabel" | "matchedField" | "matchedFieldLabel" | "matchedSnippet" | "exactCase" | "valueLength">;
|
|
151
|
+
sort: (hits: RankedHit[]) => RankedHit[];
|
|
152
|
+
}
|
|
153
|
+
/** Minimal Strapi-like shape used by services */
|
|
154
|
+
export interface StrapiLike {
|
|
155
|
+
contentTypes: Record<string, ContentTypeShape>;
|
|
156
|
+
components: Record<string, {
|
|
157
|
+
attributes?: Record<string, AttributeShape>;
|
|
158
|
+
}>;
|
|
159
|
+
config: {
|
|
160
|
+
get: (key: string, defaultValue?: unknown) => Record<string, unknown>;
|
|
161
|
+
};
|
|
162
|
+
store: (opts: {
|
|
163
|
+
type: string;
|
|
164
|
+
name: string;
|
|
165
|
+
}) => {
|
|
166
|
+
get: (opts: {
|
|
167
|
+
key: string;
|
|
168
|
+
}) => Promise<Record<string, unknown> | null | undefined>;
|
|
169
|
+
set: (opts: {
|
|
170
|
+
key: string;
|
|
171
|
+
value: unknown;
|
|
172
|
+
}) => Promise<void>;
|
|
173
|
+
};
|
|
174
|
+
log: {
|
|
175
|
+
debug: (msg: string) => void;
|
|
176
|
+
warn: (msg: string) => void;
|
|
177
|
+
error: (msg: string) => void;
|
|
178
|
+
};
|
|
179
|
+
plugin: (id: string) => {
|
|
180
|
+
service: (name: string) => StrapiPluginService;
|
|
181
|
+
};
|
|
182
|
+
documents: (uid: string) => {
|
|
183
|
+
findMany: (params: unknown) => Promise<unknown>;
|
|
184
|
+
};
|
|
185
|
+
admin?: {
|
|
186
|
+
services: {
|
|
187
|
+
permission: {
|
|
188
|
+
actionProvider: {
|
|
189
|
+
registerMany: (actions: unknown[]) => void;
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../server/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Rejects if `factory()` has not settled within `ms`. Always clears its timer. */
|
|
2
|
+
export declare const withTimeout: <T>(factory: () => T | Promise<T>, ms: number, label: string) => Promise<T>;
|
|
3
|
+
/**
|
|
4
|
+
* Runs `worker` over `items` with at most `concurrency` in flight, so an app with
|
|
5
|
+
* 60 content types cannot exhaust the database pool on a single keystroke.
|
|
6
|
+
*/
|
|
7
|
+
export declare const mapWithConcurrency: <T, R>(items: T[], concurrency: number, worker: (item: T, index: number) => Promise<R>) => Promise<R[]>;
|
|
8
|
+
//# sourceMappingURL=async.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../server/utils/async.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,SAAS,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC7B,IAAI,MAAM,EACV,OAAO,MAAM,KACZ,OAAO,CAAC,CAAC,CAcX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAU,CAAC,EAAE,CAAC,EAC3C,OAAO,CAAC,EAAE,EACV,aAAa,MAAM,EACnB,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAC7C,OAAO,CAAC,CAAC,EAAE,CAmBb,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export declare const PLUGIN_ID = "global-search";
|
|
2
|
+
/**
|
|
3
|
+
* Attribute types whose stored value is a plain string, i.e. the ones the query
|
|
4
|
+
* engine can match with `$containsi`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SEARCHABLE_SCALAR_TYPES: string[];
|
|
7
|
+
/**
|
|
8
|
+
* Internal Strapi system/infrastructure plugin UID prefixes that should not be
|
|
9
|
+
* indexed as user-facing Content-Manager content types by default.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SYSTEM_PLUGIN_PREFIXES: string[];
|
|
12
|
+
/**
|
|
13
|
+
* Attribute types we deliberately never walk into.
|
|
14
|
+
* - dynamiczone / blocks: the query engine cannot filter polymorphic JSON.
|
|
15
|
+
* - relation / media: would explode the join graph; relations are shown, not searched.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SKIPPED_ATTRIBUTE_TYPES: string[];
|
|
18
|
+
/** Attribute names that must never leave the server, whatever their type. */
|
|
19
|
+
export declare const BLOCKLISTED_ATTRIBUTE_NAMES: string[];
|
|
20
|
+
/**
|
|
21
|
+
* String attributes that identify an entry. `id` is numeric and handled
|
|
22
|
+
* separately. `documentId` is always queried in Strapi 5 even when it is not
|
|
23
|
+
* declared on the schema.
|
|
24
|
+
*/
|
|
25
|
+
export declare const IDENTIFIER_FIELDS: string[];
|
|
26
|
+
/** Used when the Content-Manager configuration has no mainField for a type. */
|
|
27
|
+
export declare const MAIN_FIELD_FALLBACKS: string[];
|
|
28
|
+
/** Ranking tiers — lower wins. Mirrors the documented ordering rule. */
|
|
29
|
+
export declare const TIER: {
|
|
30
|
+
ID_EXACT: number;
|
|
31
|
+
ID_CONTAINS: number;
|
|
32
|
+
MAIN_EXACT: number;
|
|
33
|
+
MAIN_STARTS_WITH: number;
|
|
34
|
+
MAIN_CONTAINS: number;
|
|
35
|
+
FIELD_CONTAINS: number;
|
|
36
|
+
NESTED_CONTAINS: number;
|
|
37
|
+
UNKNOWN: number;
|
|
38
|
+
};
|
|
39
|
+
export declare const TIER_LABELS: Record<number, string>;
|
|
40
|
+
export declare const MAX_QUERY_LENGTH = 200;
|
|
41
|
+
export declare const SNIPPET_RADIUS = 45;
|
|
42
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../server/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,UAQnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAalC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,UAOnC,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,2BAA2B,UAKvC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,UAkBhC,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,cAAc,KAAK,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const sanitizeQuery: (raw: unknown) => string;
|
|
2
|
+
/**
|
|
3
|
+
* Extracts human-readable text from ProseMirror / Tiptap JSON documents
|
|
4
|
+
* (`{ type: 'doc', content: [...] }` or `{ doc: { type: 'doc', content: [...] } }`),
|
|
5
|
+
* whether passed as an object or a serialized JSON string. Returns `null` if
|
|
6
|
+
* `value` is not a structured rich-text document.
|
|
7
|
+
*/
|
|
8
|
+
export declare const extractStructuredText: (value: unknown) => string | null;
|
|
9
|
+
/** Plain-text projection of richtext/HTML/Markdown/ProseMirror JSON, used for snippets. */
|
|
10
|
+
export declare const toPlainText: (value: unknown) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Walks a dotted path, transparently flattening arrays so repeatable components
|
|
13
|
+
* yield every one of their values.
|
|
14
|
+
*/
|
|
15
|
+
export declare const collectValues: (node: unknown, parts: string[]) => string[];
|
|
16
|
+
export declare const getValuesAtPath: (entry: unknown, path: string) => string[];
|
|
17
|
+
/** Extracts a short excerpt centred on the match, for highlighting in the UI. */
|
|
18
|
+
export declare const buildSnippet: (value: unknown, query: string) => string;
|
|
19
|
+
export declare const humanizeFieldPath: (path: string) => string;
|
|
20
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../server/utils/text.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,KAAG,MAI5C,CAAC;AA+CF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,IAoB/D,CAAC;AAgCF,2FAA2F;AAC3F,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAU5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,OAAO,EAAE,OAAO,MAAM,EAAE,KAAG,MAAM,EAgBpE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,EAAE,MAAM,MAAM,KAAG,MAAM,EAC9B,CAAC;AAExC,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,EAAE,OAAO,MAAM,KAAG,MAgB5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MASjC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,82 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vicacha-devs/strapi-plugin-global-search",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "2.0.3",
|
|
4
|
+
"description": "Spotlight-style global search across every collection type and single type in the Strapi v5 admin panel. Zero configuration.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"admin",
|
|
7
|
+
"command-palette",
|
|
8
|
+
"global-search",
|
|
9
|
+
"search",
|
|
10
|
+
"spotlight",
|
|
11
|
+
"strapi",
|
|
12
|
+
"strapi-plugin",
|
|
13
|
+
"strapi-v5"
|
|
14
|
+
],
|
|
15
|
+
"homepage": "https://github.com/Vicacha-Devs/strapi-v5-extensions/tree/main/packages/strapi-plugin-global-search#readme",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/Vicacha-Devs/strapi-v5-extensions/issues"
|
|
18
|
+
},
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"author": "Vicacha Devs",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/Vicacha-Devs/strapi-v5-extensions.git",
|
|
24
|
+
"directory": "packages/strapi-plugin-global-search"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"type": "module",
|
|
30
|
+
"exports": {
|
|
31
|
+
"./package.json": "./package.json",
|
|
32
|
+
"./strapi-admin": {
|
|
33
|
+
"types": "./dist/admin/index.d.ts",
|
|
34
|
+
"import": "./dist/admin/index.js",
|
|
35
|
+
"default": "./dist/admin/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./strapi-server": {
|
|
38
|
+
"types": "./dist/server/index.d.ts",
|
|
39
|
+
"import": "./dist/server/index.js",
|
|
40
|
+
"default": "./dist/server/index.js"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public",
|
|
45
|
+
"provenance": true
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/node": "^20.17.0",
|
|
49
|
+
"@types/react": "^18.3.0",
|
|
50
|
+
"@types/react-dom": "^18.3.0",
|
|
51
|
+
"esbuild": "^0.25.0",
|
|
52
|
+
"tsx": "^4.19.0",
|
|
53
|
+
"typescript": "^5.7.0",
|
|
54
|
+
"@vicacha-devs/plugin-shared": "1.0.0"
|
|
55
|
+
},
|
|
56
|
+
"peerDependencies": {
|
|
57
|
+
"@strapi/design-system": "^2.0.0",
|
|
58
|
+
"@strapi/icons": "^2.0.0",
|
|
59
|
+
"@strapi/strapi": "^5.0.0",
|
|
60
|
+
"react": "^18.0.0",
|
|
61
|
+
"react-dom": "^18.0.0",
|
|
62
|
+
"react-router-dom": "^6.0.0",
|
|
63
|
+
"styled-components": "^6.0.0"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=20.16.0",
|
|
67
|
+
"pnpm": ">=10.0.0"
|
|
68
|
+
},
|
|
69
|
+
"strapi": {
|
|
70
|
+
"name": "global-search",
|
|
71
|
+
"kind": "plugin",
|
|
72
|
+
"displayName": "Global Search",
|
|
73
|
+
"description": "Search every content type from one place, with a Cmd+K palette.",
|
|
74
|
+
"icon": "search"
|
|
75
|
+
},
|
|
76
|
+
"scripts": {
|
|
77
|
+
"build": "node scripts/build.ts",
|
|
78
|
+
"test": "tsx tests/services.test.ts",
|
|
79
|
+
"test:ts": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.server.json --noEmit",
|
|
80
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.server.json --noEmit"
|
|
81
|
+
}
|
|
6
82
|
}
|