@crowdstrike/foundry-js 0.2.2 → 0.5.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.
Files changed (36) hide show
  1. package/dist/abstraction/api-integration.d.ts +23 -0
  2. package/dist/abstraction/cloud-function.d.ts +49 -0
  3. package/dist/abstraction/collection.d.ts +20 -0
  4. package/dist/abstraction/logscale.d.ts +14 -0
  5. package/dist/api.d.ts +32 -2
  6. package/dist/apis/actors/index.d.ts +77 -0
  7. package/dist/apis/alerts/index.d.ts +126 -0
  8. package/dist/apis/available-apis.d.ts +1 -1
  9. package/dist/apis/customobjects/index.d.ts +89 -0
  10. package/dist/apis/detects/index.d.ts +93 -0
  11. package/dist/apis/devices/index.d.ts +270 -0
  12. package/dist/apis/faas-gateway/index.d.ts +41 -0
  13. package/dist/apis/fwmgr/index.d.ts +407 -0
  14. package/dist/apis/incidents/index.d.ts +112 -0
  15. package/dist/apis/loggingapi/index.d.ts +68 -0
  16. package/dist/apis/mitre/index.d.ts +31 -0
  17. package/dist/apis/plugins/index.d.ts +52 -0
  18. package/dist/apis/public-api.d.ts +25 -3
  19. package/dist/apis/remote-response/index.d.ts +74 -0
  20. package/dist/apis/types-response-for.d.ts +29 -0
  21. package/dist/apis/types.d.ts +30 -2
  22. package/dist/apis/workflows/index.d.ts +58 -0
  23. package/dist/bridge.d.ts +8 -3
  24. package/dist/index.d.ts +2 -1
  25. package/dist/index.js +2210 -332
  26. package/dist/index.js.map +1 -1
  27. package/dist/lib/navigation.d.ts +18 -0
  28. package/dist/lib/resize-tracker.d.ts +9 -0
  29. package/dist/lib/ui.d.ts +8 -0
  30. package/dist/types.d.ts +129 -10
  31. package/dist/utils.d.ts +2 -2
  32. package/package.json +1 -1
  33. package/dist/apis/incidents/bridge.d.ts +0 -15
  34. package/dist/apis/incidents/types.d.ts +0 -33
  35. package/dist/apis/remote-response/bridge.d.ts +0 -15
  36. package/dist/apis/remote-response/types.d.ts +0 -33
@@ -0,0 +1,18 @@
1
+ import type FalconApi from '../api';
2
+ import type { LocalData } from '../types';
3
+ import type { NavigateToRequestMessage } from '../types';
4
+ declare const ALLOWED_TARGETS: readonly ["_self", "_blank"];
5
+ export declare class Navigation<DATA extends LocalData = LocalData> {
6
+ private readonly falcon;
7
+ constructor(falcon: FalconApi<DATA>);
8
+ navigateTo({ path, type, target, metaKey, ctrlKey, shiftKey, }: {
9
+ path: string;
10
+ target?: NavigateToRequestMessage['payload']['target'];
11
+ type?: NavigateToRequestMessage['payload']['type'];
12
+ metaKey?: boolean;
13
+ ctrlKey?: boolean;
14
+ shiftKey?: boolean;
15
+ }): Promise<void>;
16
+ onClick(event: MouseEvent | KeyboardEvent, defaultTarget?: (typeof ALLOWED_TARGETS)[number], defaultType?: NavigateToRequestMessage['payload']['type']): Promise<void>;
17
+ }
18
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { Bridge } from '../bridge';
2
+ import type { LocalData } from '../types';
3
+ export declare class ResizeTracker<DATA extends LocalData = LocalData> {
4
+ private bridge;
5
+ private observer;
6
+ constructor(bridge: Bridge<DATA>);
7
+ private handleResizeEvent;
8
+ destroy(): void;
9
+ }
@@ -0,0 +1,8 @@
1
+ import type { Bridge } from '../bridge';
2
+ import type { ExtensionIdentifier, LocalData, OpenModalOptions } from '../types';
3
+ export declare class UI<DATA extends LocalData = LocalData> {
4
+ private bridge;
5
+ constructor(bridge: Bridge<DATA>);
6
+ openModal<PAYLOAD = unknown>(extension: ExtensionIdentifier, title: string, options?: OpenModalOptions): Promise<PAYLOAD>;
7
+ closeModal<PAYLOAD = unknown>(payload?: PAYLOAD): void;
8
+ }
package/dist/types.d.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  import type { ApiIdentifier } from './apis/available-apis';
2
- import { GetQueriesIncidentsV1RequestMessage, GetQueriesIncidentsV1ResponseMessage, IncidentsApiRequestMessage, IncidentsApiResponseMessage, PostEntitiesIncidentsGetV1RequestMessage, PostEntitiesIncidentsGetV1ResponseMessage } from './apis/incidents/types';
3
- import { GetQueriesScriptsV1RequestMessage, GetQueriesScriptsV1ResponseMessage, PostEntitiesScriptsGetV2RequestMessage, PostEntitiesScriptsGetV2ResponseMessage, RemoteResponseApiRequestMessage, RemoteResponseApiResponseMessage } from './apis/remote-response/types';
2
+ import type { ApiRequestMessage, ApiResponseMessage } from './apis/types';
3
+ import type { PostEntitiesPutFilesGetV1ApiResponse } from './apis/remote-response';
4
4
  export type QueryParam = string | number | string[] | number[] | boolean;
5
5
  export interface BaseUrlParams {
6
6
  [key: string]: QueryParam | undefined;
7
7
  }
8
- export type LocalData = unknown;
9
- export type MessageType = 'connect' | 'api' | 'data';
8
+ export type MessageType = 'connect' | 'navigateTo' | 'loggingapi' | 'api' | 'data' | 'broadcast' | 'fileUpload' | 'collection' | 'livereload' | 'resize' | 'openModal' | 'closeModal';
10
9
  export interface BaseMessage {
11
10
  type: MessageType;
12
11
  payload?: unknown;
@@ -21,10 +20,124 @@ export interface ConnectResponseMessage<DATA extends LocalData = LocalData> exte
21
20
  data?: DATA;
22
21
  };
23
22
  }
23
+ export type Theme = 'theme-light' | 'theme-dark';
24
+ export interface LocalData {
25
+ theme: Theme;
26
+ cid: string;
27
+ locale: string;
28
+ timezone?: string;
29
+ dateFormat?: string;
30
+ [key: string]: unknown;
31
+ }
24
32
  export interface DataUpdateMessage<DATA extends LocalData = LocalData> extends BaseMessage {
25
33
  type: 'data';
26
34
  payload: DATA;
27
35
  }
36
+ export interface ResizeMessage extends BaseMessage {
37
+ type: 'resize';
38
+ payload: {
39
+ height: number;
40
+ };
41
+ }
42
+ export interface LogscaleRequestMessage extends BaseMessage {
43
+ type: 'loggingapi';
44
+ payload: {
45
+ type: 'ingest' | 'dynamic-execute' | 'saved-query-execute';
46
+ data: Record<string, unknown>;
47
+ tag?: string;
48
+ tagSource?: string;
49
+ testData?: boolean;
50
+ };
51
+ }
52
+ export interface LogscaleResponseMessage extends BaseMessage {
53
+ type: 'loggingapi';
54
+ payload: unknown;
55
+ }
56
+ export interface NavigateToRequestMessage extends BaseMessage {
57
+ type: 'navigateTo';
58
+ payload: {
59
+ path: string;
60
+ type: 'internal' | 'falcon';
61
+ target: '_self' | '_blank';
62
+ metaKey: boolean;
63
+ ctrlKey: boolean;
64
+ shiftKey: boolean;
65
+ };
66
+ }
67
+ export interface NavigateToResponseMessage extends BaseMessage {
68
+ type: 'navigateTo';
69
+ }
70
+ export interface CollectionRequestMessage extends BaseMessage {
71
+ type: 'collection';
72
+ payload: {
73
+ type: 'write';
74
+ key: string;
75
+ collection: string;
76
+ data: Record<string, unknown>;
77
+ } | {
78
+ type: 'search';
79
+ startKey: string;
80
+ endKey: string;
81
+ limit: string;
82
+ collection: string;
83
+ } | {
84
+ type: 'read' | 'delete';
85
+ key: string;
86
+ collection: string;
87
+ };
88
+ }
89
+ export interface CollectionResponseMessage extends BaseMessage {
90
+ type: 'collection';
91
+ payload: unknown;
92
+ }
93
+ export interface OpenModalOptions {
94
+ path?: string;
95
+ data?: Record<string, unknown>;
96
+ align?: 'top';
97
+ size?: 'sm' | 'md' | 'lg' | 'xl';
98
+ }
99
+ export interface OpenModalRequestMessage extends BaseMessage {
100
+ type: 'openModal';
101
+ payload: {
102
+ extension: ExtensionIdentifier;
103
+ title: string;
104
+ options: OpenModalOptions;
105
+ };
106
+ }
107
+ export interface CloseModalRequestMessage<PAYLOAD = unknown> extends BaseMessage {
108
+ type: 'closeModal';
109
+ payload: PAYLOAD;
110
+ }
111
+ export interface OpenModalResponseMessage<PAYLOAD = unknown> extends BaseMessage {
112
+ type: 'openModal';
113
+ payload: PAYLOAD;
114
+ }
115
+ export interface BroadcastMessage<PAYLOAD = unknown> extends BaseMessage {
116
+ type: 'broadcast';
117
+ payload: PAYLOAD;
118
+ }
119
+ export interface LivereloadMessage extends BaseMessage {
120
+ type: 'livereload';
121
+ }
122
+ export type FileUploadType = 'remote-response';
123
+ export interface RtrFileUploadPayload {
124
+ name?: string;
125
+ description?: string;
126
+ comments_for_audit_log?: string;
127
+ }
128
+ export type RtrFileUploadResponse = PostEntitiesPutFilesGetV1ApiResponse;
129
+ export type PayloadForFileUploadType<TYPE extends FileUploadType> = TYPE extends 'remote-response' ? RtrFileUploadPayload : never;
130
+ export type ResponseForFileUploadType<TYPE extends FileUploadType> = TYPE extends 'remote-response' ? RtrFileUploadResponse : never;
131
+ export interface FileUploadRequestMessage<T extends FileUploadType = FileUploadType> extends BaseMessage {
132
+ type: 'fileUpload';
133
+ fileUploadType: T;
134
+ payload?: PayloadForFileUploadType<T>;
135
+ }
136
+ export interface FileUploadResponseMessage<T extends FileUploadType = FileUploadType> extends BaseMessage {
137
+ type: 'fileUpload';
138
+ fileUploadType: T;
139
+ payload?: ResponseForFileUploadType<T>;
140
+ }
28
141
  export interface ApiRequestGetPayload<PARAMS extends BaseUrlParams = BaseUrlParams> {
29
142
  params: PARAMS;
30
143
  }
@@ -52,10 +165,6 @@ export interface BaseApiResponseMessage<T = unknown> extends BaseMessage {
52
165
  type: 'api';
53
166
  payload: T;
54
167
  }
55
- export type ApiRequestMessage = IncidentsApiRequestMessage | RemoteResponseApiRequestMessage;
56
- export type RequestMessage = ConnectRequestMessage | ApiRequestMessage;
57
- export type ApiResponseMessage = IncidentsApiResponseMessage | RemoteResponseApiResponseMessage;
58
- export type ResponseMessage<DATA extends LocalData = LocalData> = ConnectResponseMessage<DATA> | ApiResponseMessage | DataUpdateMessage<DATA>;
59
168
  export interface MessageMetadata {
60
169
  messageId: string;
61
170
  version?: string;
@@ -64,6 +173,16 @@ export interface MessageEnvelope<M> {
64
173
  message: M;
65
174
  meta: MessageMetadata;
66
175
  }
67
- export type ResponseFor<REQ extends RequestMessage, DATA extends LocalData> = REQ extends ConnectRequestMessage ? ConnectResponseMessage<DATA> : REQ extends GetQueriesIncidentsV1RequestMessage ? GetQueriesIncidentsV1ResponseMessage : REQ extends PostEntitiesIncidentsGetV1RequestMessage ? PostEntitiesIncidentsGetV1ResponseMessage : REQ extends GetQueriesScriptsV1RequestMessage ? GetQueriesScriptsV1ResponseMessage : REQ extends PostEntitiesScriptsGetV2RequestMessage ? PostEntitiesScriptsGetV2ResponseMessage : unknown;
68
- export type PayloadOf<RESPONSE extends ResponseMessage> = RESPONSE['payload'];
176
+ export type UnidirectionalRequestMessage = BroadcastMessage | ResizeMessage | CloseModalRequestMessage;
177
+ export type RequestMessage = ConnectRequestMessage | NavigateToRequestMessage | CollectionRequestMessage | ApiRequestMessage | FileUploadRequestMessage | LogscaleRequestMessage | OpenModalRequestMessage;
69
178
  export { ApiIdentifier };
179
+ export type ResponseMessage<DATA extends LocalData = LocalData> = ConnectResponseMessage<DATA> | NavigateToResponseMessage | ApiResponseMessage | DataUpdateMessage<DATA> | BroadcastMessage | FileUploadResponseMessage | CollectionResponseMessage | LivereloadMessage | LogscaleResponseMessage | OpenModalResponseMessage;
180
+ import type { ResponseFor as ApiResponseFor } from './apis/types-response-for';
181
+ type ResponseFor<REQ extends RequestMessage, DATA extends LocalData> = REQ extends ConnectRequestMessage ? ConnectResponseMessage<DATA> : REQ extends NavigateToRequestMessage ? NavigateToResponseMessage : REQ extends CollectionRequestMessage ? CollectionResponseMessage : REQ extends LogscaleRequestMessage ? LogscaleResponseMessage : REQ extends FileUploadRequestMessage<infer FILEUPLOADTYPE> ? FileUploadResponseMessage<FILEUPLOADTYPE> : REQ extends OpenModalRequestMessage ? OpenModalResponseMessage : ApiResponseFor<REQ>;
182
+ export { ResponseFor };
183
+ export type PayloadOf<RESPONSE extends ResponseMessage> = RESPONSE['payload'];
184
+ export type ExtensionType = 'extension' | 'page';
185
+ export interface ExtensionIdentifier {
186
+ type: ExtensionType;
187
+ id: string;
188
+ }
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { LocalData, MessageEnvelope, ResponseMessage } from './types';
2
- import FalconPublicApis from './apis/public-api';
1
+ import type FalconPublicApis from './apis/public-api';
2
+ import type { LocalData, MessageEnvelope, ResponseMessage } from './types';
3
3
  export declare function assertConnection(falcon: FalconPublicApis): void;
4
4
  export declare function isValidResponse<DATA extends LocalData>(event: MessageEvent<MessageEnvelope<ResponseMessage<DATA>> | any>): event is MessageEvent<MessageEnvelope<ResponseMessage<DATA>>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crowdstrike/foundry-js",
3
- "version": "0.2.2",
3
+ "version": "0.5.0",
4
4
  "description": "foundry.js is the JavaScript SDK for authoring UI Extensions for CrowdStrike's Foundry platform.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,15 +0,0 @@
1
- /**
2
- *
3
- * This file is autogenerated.
4
- *
5
- * DO NOT EDIT DIRECTLY
6
- *
7
- **/
8
- import type { Bridge } from '../../bridge';
9
- import type { GetQueriesIncidentsV1ApiResponse, GetQueriesIncidentsV1QueryParams, PostEntitiesIncidentsGetV1ApiResponse, PostEntitiesIncidentsGetV1PostData, PostEntitiesIncidentsGetV1QueryParams } from './types';
10
- export declare class IncidentsApiBridge {
11
- private bridge;
12
- constructor(bridge: Bridge);
13
- getIncidentIds(urlParams?: GetQueriesIncidentsV1QueryParams): Promise<GetQueriesIncidentsV1ApiResponse>;
14
- getIncidentEntities(postBody: PostEntitiesIncidentsGetV1PostData, urlParams?: PostEntitiesIncidentsGetV1QueryParams): Promise<PostEntitiesIncidentsGetV1ApiResponse>;
15
- }
@@ -1,33 +0,0 @@
1
- /**
2
- *
3
- * This file is autogenerated.
4
- *
5
- * DO NOT EDIT DIRECTLY
6
- *
7
- **/
8
- import type { BaseApiRequestMessage, BaseApiResponseMessage, ApiResponsePayload, BaseUrlParams, QueryParam } from '../../types';
9
- export type IncidentsRequestApi = 'incidents';
10
- export interface GetQueriesIncidentsV1QueryParams extends BaseUrlParams {
11
- filter?: string;
12
- limit?: QueryParam;
13
- offset?: QueryParam;
14
- sort?: QueryParam;
15
- }
16
- export type GetQueriesIncidentsV1ApiResponse = ApiResponsePayload<string>;
17
- export interface GetQueriesIncidentsV1RequestMessage extends BaseApiRequestMessage<GetQueriesIncidentsV1QueryParams> {
18
- api: IncidentsRequestApi;
19
- method: 'getQueriesIncidentsV1';
20
- }
21
- export type GetQueriesIncidentsV1ResponseMessage = BaseApiResponseMessage<GetQueriesIncidentsV1ApiResponse>;
22
- export interface PostEntitiesIncidentsGetV1QueryParams extends BaseUrlParams {
23
- }
24
- export interface PostEntitiesIncidentsGetV1PostData {
25
- }
26
- export type PostEntitiesIncidentsGetV1ApiResponse = ApiResponsePayload<any>;
27
- export interface PostEntitiesIncidentsGetV1RequestMessage extends BaseApiRequestMessage<PostEntitiesIncidentsGetV1QueryParams, PostEntitiesIncidentsGetV1PostData> {
28
- api: IncidentsRequestApi;
29
- method: 'postEntitiesIncidentsGetV1';
30
- }
31
- export type PostEntitiesIncidentsGetV1ResponseMessage = BaseApiResponseMessage<PostEntitiesIncidentsGetV1ApiResponse>;
32
- export type IncidentsApiRequestMessage = GetQueriesIncidentsV1RequestMessage | PostEntitiesIncidentsGetV1RequestMessage;
33
- export type IncidentsApiResponseMessage = GetQueriesIncidentsV1ResponseMessage | PostEntitiesIncidentsGetV1ResponseMessage;
@@ -1,15 +0,0 @@
1
- /**
2
- *
3
- * This file is autogenerated.
4
- *
5
- * DO NOT EDIT DIRECTLY
6
- *
7
- **/
8
- import type { Bridge } from '../../bridge';
9
- import { GetQueriesScriptsV1ApiResponse, GetQueriesScriptsV1QueryParams, PostEntitiesScriptsGetV2ApiResponse, PostEntitiesScriptsGetV2PostData, PostEntitiesScriptsGetV2QueryParams } from './types';
10
- export declare class RemoteResponseApiBridge {
11
- private bridge;
12
- constructor(bridge: Bridge);
13
- getScriptIds(urlParams?: GetQueriesScriptsV1QueryParams): Promise<GetQueriesScriptsV1ApiResponse>;
14
- getScriptEntities(postBody: PostEntitiesScriptsGetV2PostData, urlParams?: PostEntitiesScriptsGetV2QueryParams): Promise<PostEntitiesScriptsGetV2ApiResponse>;
15
- }
@@ -1,33 +0,0 @@
1
- /**
2
- *
3
- * This file is autogenerated.
4
- *
5
- * DO NOT EDIT DIRECTLY
6
- *
7
- **/
8
- import type { BaseApiRequestMessage, BaseApiResponseMessage, ApiResponsePayload, BaseUrlParams, QueryParam } from '../../types';
9
- export type RemoteResponseRequestApi = 'remoteResponse';
10
- export interface GetQueriesScriptsV1QueryParams extends BaseUrlParams {
11
- filter?: string;
12
- limit?: QueryParam;
13
- offset?: QueryParam;
14
- sort?: QueryParam;
15
- }
16
- export type GetQueriesScriptsV1ApiResponse = ApiResponsePayload<string>;
17
- export interface GetQueriesScriptsV1RequestMessage extends BaseApiRequestMessage<GetQueriesScriptsV1QueryParams> {
18
- api: RemoteResponseRequestApi;
19
- method: 'getQueriesScriptsV1';
20
- }
21
- export type GetQueriesScriptsV1ResponseMessage = BaseApiResponseMessage<GetQueriesScriptsV1ApiResponse>;
22
- export interface PostEntitiesScriptsGetV2QueryParams extends BaseUrlParams {
23
- }
24
- export interface PostEntitiesScriptsGetV2PostData {
25
- }
26
- export type PostEntitiesScriptsGetV2ApiResponse = ApiResponsePayload<any>;
27
- export interface PostEntitiesScriptsGetV2RequestMessage extends BaseApiRequestMessage<PostEntitiesScriptsGetV2QueryParams, PostEntitiesScriptsGetV2PostData> {
28
- api: RemoteResponseRequestApi;
29
- method: 'postEntitiesScriptsGetV2';
30
- }
31
- export type PostEntitiesScriptsGetV2ResponseMessage = BaseApiResponseMessage<PostEntitiesScriptsGetV2ApiResponse>;
32
- export type RemoteResponseApiRequestMessage = GetQueriesScriptsV1RequestMessage | PostEntitiesScriptsGetV2RequestMessage;
33
- export type RemoteResponseApiResponseMessage = GetQueriesScriptsV1ResponseMessage | PostEntitiesScriptsGetV2ResponseMessage;