@23blocks/block-search 0.1.0 → 1.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/block-search",
3
- "version": "0.1.0",
3
+ "version": "1.0.0",
4
4
  "description": "Search block for 23blocks SDK - full-text search, history, favorites",
5
5
  "license": "MIT",
6
6
  "author": "23blocks <hello@23blocks.com>",
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export { createSearchBlock, searchBlockMetadata, type SearchBlock, type SearchBlockConfig, } from './lib/search.block.js';
2
- export type { SearchResult, SearchQuery, LastQuery, FavoriteEntity, EntityType, SearchRequest, SearchResponse, AddFavoriteRequest, } from './lib/types/index.js';
3
- export type { SearchService, SearchHistoryService, FavoritesService, } from './lib/services/index.js';
4
- export { searchResultMapper, searchQueryMapper, lastQueryMapper, favoriteEntityMapper, entityTypeMapper, } from './lib/mappers/index.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function blockSearch(): string;
2
- //# sourceMappingURL=block-search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"block-search.d.ts","sourceRoot":"","sources":["../../src/lib/block-search.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
@@ -1,3 +0,0 @@
1
- export { searchResultMapper, searchQueryMapper, lastQueryMapper, favoriteEntityMapper, entityTypeMapper, } from './search.mapper.js';
2
- export { parseString, parseDate, parseBoolean, parseNumber, parseStringArray } from './utils.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/mappers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,23 +0,0 @@
1
- import type { ResourceMapper } from '@23blocks/jsonapi-codec';
2
- import type { SearchResult, SearchQuery, LastQuery, FavoriteEntity, EntityType } from '../types/index.js';
3
- /**
4
- * Mapper for SearchResult resources
5
- */
6
- export declare const searchResultMapper: ResourceMapper<SearchResult>;
7
- /**
8
- * Mapper for SearchQuery resources
9
- */
10
- export declare const searchQueryMapper: ResourceMapper<SearchQuery>;
11
- /**
12
- * Mapper for LastQuery resources
13
- */
14
- export declare const lastQueryMapper: ResourceMapper<LastQuery>;
15
- /**
16
- * Mapper for FavoriteEntity resources
17
- */
18
- export declare const favoriteEntityMapper: ResourceMapper<FavoriteEntity>;
19
- /**
20
- * Mapper for EntityType resources
21
- */
22
- export declare const entityTypeMapper: ResourceMapper<EntityType>;
23
- //# sourceMappingURL=search.mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.mapper.d.ts","sourceRoot":"","sources":["../../../src/lib/mappers/search.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,yBAAyB,CAAC;AAE5F,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,YAAY,CA8B3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,WAAW,CA2CzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,SAAS,CA2CrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,cAAc,CA4B/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,UAAU,CAYvD,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Parse a string value, returning null for empty/undefined
3
- */
4
- export declare function parseString(value: unknown): string | null;
5
- /**
6
- * Parse a date value
7
- */
8
- export declare function parseDate(value: unknown): Date | null;
9
- /**
10
- * Parse a boolean value
11
- */
12
- export declare function parseBoolean(value: unknown): boolean;
13
- /**
14
- * Parse an array of strings
15
- */
16
- export declare function parseStringArray(value: unknown): string[] | null;
17
- /**
18
- * Parse a number value
19
- */
20
- export declare function parseNumber(value: unknown): number;
21
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/mappers/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAerD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAQhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMlD"}
@@ -1,78 +0,0 @@
1
- import type { Transport, BlockConfig } from '@23blocks/contracts';
2
- import { type SearchService, type SearchHistoryService, type FavoritesService } from './services/index.js';
3
- /**
4
- * Configuration for the Search block
5
- */
6
- export interface SearchBlockConfig extends BlockConfig {
7
- /** Application ID */
8
- appId: string;
9
- /** Default entity types to search (optional) */
10
- defaultEntityTypes?: string[];
11
- }
12
- /**
13
- * Search block interface
14
- */
15
- export interface SearchBlock {
16
- /**
17
- * Core search operations
18
- */
19
- search: SearchService;
20
- /**
21
- * Search history management
22
- */
23
- history: SearchHistoryService;
24
- /**
25
- * Favorites/bookmarks management
26
- */
27
- favorites: FavoritesService;
28
- }
29
- /**
30
- * Create the Search block
31
- *
32
- * @example
33
- * ```typescript
34
- * import { createSearchBlock } from '@23blocks/block-search';
35
- * import { createHttpTransport } from '@23blocks/transport-http';
36
- *
37
- * const transport = createHttpTransport({
38
- * baseUrl: 'https://api.example.com',
39
- * headers: () => ({
40
- * 'Authorization': `Bearer ${getToken()}`,
41
- * 'appid': 'your-app-id',
42
- * }),
43
- * });
44
- *
45
- * const searchBlock = createSearchBlock(transport, { appId: 'your-app-id' });
46
- *
47
- * // Execute a search
48
- * const { results, totalRecords } = await searchBlock.search.search({
49
- * query: 'hello world',
50
- * entityTypes: ['Product', 'Article'],
51
- * limit: 20,
52
- * });
53
- *
54
- * // Get suggestions
55
- * const suggestions = await searchBlock.search.suggest('hel');
56
- *
57
- * // Get recent searches
58
- * const recent = await searchBlock.history.recent(10);
59
- *
60
- * // Add to favorites
61
- * await searchBlock.favorites.add({
62
- * entityUniqueId: 'product-123',
63
- * entityType: 'Product',
64
- * entityAlias: 'My Favorite Product',
65
- * });
66
- * ```
67
- */
68
- export declare function createSearchBlock(transport: Transport, config: SearchBlockConfig): SearchBlock;
69
- /**
70
- * Block metadata
71
- */
72
- export declare const searchBlockMetadata: {
73
- name: string;
74
- version: string;
75
- description: string;
76
- resourceTypes: string[];
77
- };
78
- //# sourceMappingURL=search.block.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.block.d.ts","sourceRoot":"","sources":["../../src/lib/search.block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,oBAAoB,CAAC;IAE9B;;OAEG;IACH,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,iBAAiB,GACxB,WAAW,CAMb;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;CAW/B,CAAC"}
@@ -1,2 +0,0 @@
1
- export { createSearchService, createSearchHistoryService, createFavoritesService, type SearchService, type SearchHistoryService, type FavoritesService, } from './search.service.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
@@ -1,79 +0,0 @@
1
- import type { Transport, PageResult, ListParams } from '@23blocks/contracts';
2
- import type { SearchResult, SearchQuery, LastQuery, FavoriteEntity, EntityType, SearchRequest, SearchResponse, AddFavoriteRequest } from '../types/index.js';
3
- import type { SearchBlockConfig } from '../search.block.js';
4
- /**
5
- * Search service interface
6
- */
7
- export interface SearchService {
8
- /**
9
- * Execute a search query
10
- */
11
- search(request: SearchRequest): Promise<SearchResponse>;
12
- /**
13
- * Get search suggestions/autocomplete
14
- */
15
- suggest(query: string, limit?: number): Promise<SearchResult[]>;
16
- /**
17
- * Get available entity types
18
- */
19
- entityTypes(): Promise<EntityType[]>;
20
- }
21
- /**
22
- * Search history service interface
23
- */
24
- export interface SearchHistoryService {
25
- /**
26
- * Get recent searches for the current user
27
- */
28
- recent(limit?: number): Promise<LastQuery[]>;
29
- /**
30
- * Get a specific query by ID
31
- */
32
- get(id: string): Promise<SearchQuery>;
33
- /**
34
- * Clear search history
35
- */
36
- clear(): Promise<void>;
37
- /**
38
- * Delete a specific query from history
39
- */
40
- delete(id: string): Promise<void>;
41
- }
42
- /**
43
- * Favorites service interface
44
- */
45
- export interface FavoritesService {
46
- /**
47
- * List user's favorites
48
- */
49
- list(params?: ListParams): Promise<PageResult<FavoriteEntity>>;
50
- /**
51
- * Get a favorite by ID
52
- */
53
- get(id: string): Promise<FavoriteEntity>;
54
- /**
55
- * Add a favorite
56
- */
57
- add(request: AddFavoriteRequest): Promise<FavoriteEntity>;
58
- /**
59
- * Remove a favorite
60
- */
61
- remove(id: string): Promise<void>;
62
- /**
63
- * Check if an entity is favorited
64
- */
65
- isFavorite(entityUniqueId: string): Promise<boolean>;
66
- }
67
- /**
68
- * Create the search service
69
- */
70
- export declare function createSearchService(transport: Transport, _config: SearchBlockConfig): SearchService;
71
- /**
72
- * Create the search history service
73
- */
74
- export declare function createSearchHistoryService(transport: Transport, _config: SearchBlockConfig): SearchHistoryService;
75
- /**
76
- * Create the favorites service
77
- */
78
- export declare function createFavoritesService(transport: Transport, _config: SearchBlockConfig): FavoritesService;
79
- //# sourceMappingURL=search.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/search.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAExD;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhE;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAE7C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAE/D;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEzC;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAE1D;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAiCD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,iBAAiB,GACzB,aAAa,CAwHf;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,iBAAiB,GACzB,oBAAoB,CAuBtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAyClB"}
@@ -1,2 +0,0 @@
1
- export type { SearchResult, SearchQuery, LastQuery, FavoriteEntity, EntityType, SearchRequest, SearchResponse, AddFavoriteRequest, } from './search.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
@@ -1,152 +0,0 @@
1
- import type { IdentityCore, EntityStatus } from '@23blocks/contracts';
2
- /**
3
- * Search result entity
4
- */
5
- export interface SearchResult extends IdentityCore {
6
- partition: string | null;
7
- key: string | null;
8
- weight: number;
9
- relevance: number;
10
- uri: string | null;
11
- origin: string | null;
12
- entityUniqueId: string;
13
- entityAlias: string | null;
14
- entityDescription: string | null;
15
- entityAvatarUrl: string | null;
16
- entityType: string;
17
- entitySource: string | null;
18
- entityUrl: string | null;
19
- counter: number;
20
- favorite: boolean;
21
- status: EntityStatus;
22
- payload: Record<string, unknown> | null;
23
- }
24
- /**
25
- * Search query (saved/executed query)
26
- */
27
- export interface SearchQuery extends IdentityCore {
28
- partition: string | null;
29
- key: string | null;
30
- query: string;
31
- include: string[] | null;
32
- exclude: string[] | null;
33
- payload: Record<string, unknown> | null;
34
- userUniqueId: string | null;
35
- userProviderName: string | null;
36
- userName: string | null;
37
- userEmail: string | null;
38
- userRole: string | null;
39
- userRoleUniqueId: string | null;
40
- userRoleName: string | null;
41
- queryString: string | null;
42
- userAgent: string | null;
43
- url: string | null;
44
- path: string | null;
45
- ipaddress: string | null;
46
- origin: string | null;
47
- source: string | null;
48
- submittedAt: Date | null;
49
- device: string | null;
50
- browser: string | null;
51
- hash: string | null;
52
- elapsedTime: number | null;
53
- startedAt: Date | null;
54
- endedAt: Date | null;
55
- totalRecords: number;
56
- totalRecordsReturned: number;
57
- queryOrigin: string | null;
58
- }
59
- /**
60
- * Last query (recent search history)
61
- */
62
- export interface LastQuery extends IdentityCore {
63
- partition: string | null;
64
- key: string | null;
65
- query: string;
66
- include: string[] | null;
67
- exclude: string[] | null;
68
- payload: Record<string, unknown> | null;
69
- userUniqueId: string | null;
70
- userProviderName: string | null;
71
- userName: string | null;
72
- userEmail: string | null;
73
- userRole: string | null;
74
- userRoleUniqueId: string | null;
75
- userRoleName: string | null;
76
- queryString: string | null;
77
- userAgent: string | null;
78
- url: string | null;
79
- path: string | null;
80
- ipaddress: string | null;
81
- origin: string | null;
82
- source: string | null;
83
- submittedAt: Date | null;
84
- device: string | null;
85
- browser: string | null;
86
- hash: string | null;
87
- elapsedTime: number | null;
88
- startedAt: Date | null;
89
- endedAt: Date | null;
90
- totalRecords: number;
91
- totalRecordsReturned: number;
92
- queryOrigin: string | null;
93
- }
94
- /**
95
- * Favorite entity (bookmarked search result)
96
- */
97
- export interface FavoriteEntity extends IdentityCore {
98
- partition: string | null;
99
- key: string | null;
100
- weight: number;
101
- relevance: number;
102
- uri: string | null;
103
- origin: string | null;
104
- entityUniqueId: string;
105
- entityType: string;
106
- entityAlias: string | null;
107
- entitySource: string | null;
108
- entityUrl: string | null;
109
- entityAvatarUrl: string | null;
110
- counter: number;
111
- favorite: boolean;
112
- status: EntityStatus;
113
- }
114
- /**
115
- * Entity type (categorization of searchable entities)
116
- */
117
- export interface EntityType {
118
- id: string;
119
- entityType: string;
120
- entitySource: string | null;
121
- }
122
- /**
123
- * Search request parameters
124
- */
125
- export interface SearchRequest {
126
- query: string;
127
- entityTypes?: string[];
128
- include?: string[];
129
- exclude?: string[];
130
- limit?: number;
131
- offset?: number;
132
- }
133
- /**
134
- * Search response with results and metadata
135
- */
136
- export interface SearchResponse {
137
- results: SearchResult[];
138
- query: SearchQuery;
139
- totalRecords: number;
140
- elapsedTime: number;
141
- }
142
- /**
143
- * Add favorite request
144
- */
145
- export interface AddFavoriteRequest {
146
- entityUniqueId: string;
147
- entityType: string;
148
- entityAlias?: string;
149
- entityUrl?: string;
150
- entityAvatarUrl?: string;
151
- }
152
- //# sourceMappingURL=search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/lib/types/search.ts"],"names":[],"mappings":"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"}