@nlabs/metropolisjs 0.1.1 → 0.1.2
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/FACTORY_PATTERN_GUIDE.md +244 -0
- package/README.md +332 -0
- package/examples/factory-pattern-usage.ts +283 -0
- package/lex.config.mjs +17 -0
- package/lib/actions/eventActions/eventActions.d.ts +45 -0
- package/lib/actions/eventActions/eventActions.js +2 -0
- package/lib/actions/imageActions/imageActions.d.ts +56 -0
- package/lib/actions/imageActions/imageActions.js +2 -0
- package/lib/actions/index.d.ts +9 -0
- package/lib/actions/index.js +2 -0
- package/lib/actions/locationActions/locationActions.d.ts +58 -0
- package/lib/actions/locationActions/locationActions.js +2 -0
- package/lib/actions/messageActions/messageActions.d.ts +54 -0
- package/lib/actions/messageActions/messageActions.js +2 -0
- package/lib/actions/postActions/postActions.d.ts +56 -0
- package/lib/actions/postActions/postActions.js +2 -0
- package/lib/actions/profileActions/profileActions.d.ts +50 -0
- package/lib/actions/profileActions/profileActions.js +2 -0
- package/lib/actions/reactionActions/reactionActions.d.ts +52 -0
- package/lib/actions/reactionActions/reactionActions.js +2 -0
- package/lib/actions/sseActions/sseActions.d.ts +37 -0
- package/lib/actions/sseActions/sseActions.js +2 -0
- package/lib/actions/tagActions/tagActions.d.ts +55 -0
- package/lib/actions/tagActions/tagActions.js +2 -0
- package/lib/actions/userActions/userActions.d.ts +131 -0
- package/lib/actions/userActions/userActions.js +2 -0
- package/lib/actions/websocketActions/websocketActions.d.ts +31 -0
- package/lib/actions/websocketActions/websocketActions.js +2 -0
- package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +20 -0
- package/lib/adapters/arangoAdapter/arangoAdapter.js +2 -0
- package/lib/adapters/contentAdapter/contentAdapter.d.ts +31 -0
- package/lib/adapters/contentAdapter/contentAdapter.js +2 -0
- package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +23 -0
- package/lib/adapters/conversationAdapter/conversationAdapter.js +2 -0
- package/lib/adapters/eventAdapter/eventAdapter.d.ts +43 -0
- package/lib/adapters/eventAdapter/eventAdapter.js +2 -0
- package/lib/adapters/fileAdapter/fileAdapter.d.ts +29 -0
- package/lib/adapters/fileAdapter/fileAdapter.js +2 -0
- package/lib/adapters/imageAdapter/imageAdapter.d.ts +31 -0
- package/lib/adapters/imageAdapter/imageAdapter.js +2 -0
- package/lib/adapters/index.d.ts +16 -0
- package/lib/adapters/index.js +2 -0
- package/lib/adapters/locationAdapter/locationAdapter.d.ts +27 -0
- package/lib/adapters/locationAdapter/locationAdapter.js +2 -0
- package/lib/adapters/messageAdapter/messageAdapter.d.ts +27 -0
- package/lib/adapters/messageAdapter/messageAdapter.js +2 -0
- package/lib/adapters/personaAdapter/personaAdapter.d.ts +18 -0
- package/lib/adapters/personaAdapter/personaAdapter.js +2 -0
- package/lib/adapters/postAdapter/postAdapter.d.ts +32 -0
- package/lib/adapters/postAdapter/postAdapter.js +2 -0
- package/lib/adapters/profileAdapter/profileAdapter.d.ts +32 -0
- package/lib/adapters/profileAdapter/profileAdapter.js +2 -0
- package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +20 -0
- package/lib/adapters/reactionAdapter/reactionAdapter.js +2 -0
- package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +16 -0
- package/lib/adapters/reaktorAdapter/reaktorAdapter.js +2 -0
- package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +23 -0
- package/lib/adapters/sessionAdapter/sessionAdapter.js +2 -0
- package/lib/adapters/tagAdapter/tagAdapter.d.ts +20 -0
- package/lib/adapters/tagAdapter/tagAdapter.js +2 -0
- package/lib/adapters/userAdapter/userAdapter.d.ts +55 -0
- package/lib/adapters/userAdapter/userAdapter.js +2 -0
- package/lib/config/index.d.ts +31 -0
- package/lib/config/index.js +2 -0
- package/lib/constants/MetropolisConstants.d.ts +14 -0
- package/lib/constants/MetropolisConstants.js +2 -0
- package/lib/graphql/message.d.ts +2 -0
- package/lib/graphql/message.js +18 -0
- package/lib/graphql/notification.d.ts +2 -0
- package/lib/graphql/notification.js +18 -0
- package/lib/graphql/session.d.ts +1 -0
- package/lib/graphql/session.js +16 -0
- package/lib/index.d.ts +29 -0
- package/lib/index.js +2 -0
- package/lib/stores/appStore.d.ts +22 -0
- package/lib/stores/appStore.js +2 -0
- package/lib/stores/eventStore.d.ts +34 -0
- package/lib/stores/eventStore.js +2 -0
- package/lib/stores/imageStore.d.ts +35 -0
- package/lib/stores/imageStore.js +2 -0
- package/lib/stores/index.d.ts +15 -0
- package/lib/stores/index.js +2 -0
- package/lib/stores/locationStore.d.ts +33 -0
- package/lib/stores/locationStore.js +2 -0
- package/lib/stores/messageStore.d.ts +36 -0
- package/lib/stores/messageStore.js +2 -0
- package/lib/stores/postStore.d.ts +33 -0
- package/lib/stores/postStore.js +2 -0
- package/lib/stores/profileStore.d.ts +24 -0
- package/lib/stores/profileStore.js +2 -0
- package/lib/stores/reactionStore.d.ts +24 -0
- package/lib/stores/reactionStore.js +2 -0
- package/lib/stores/tagStore.d.ts +31 -0
- package/lib/stores/tagStore.js +2 -0
- package/lib/stores/userStore.d.ts +73 -0
- package/lib/stores/userStore.js +2 -0
- package/lib/stores/websocketStore.d.ts +23 -0
- package/lib/stores/websocketStore.js +2 -0
- package/lib/utils/MetropolisProvider.d.ts +34 -0
- package/lib/utils/MetropolisProvider.js +2 -0
- package/lib/utils/actionFactory.d.ts +22 -0
- package/lib/utils/actionFactory.js +2 -0
- package/lib/utils/api.d.ts +43 -0
- package/lib/utils/api.js +7 -0
- package/lib/utils/app.d.ts +6 -0
- package/lib/utils/app.js +2 -0
- package/lib/utils/baseActionFactory.d.ts +34 -0
- package/lib/utils/baseActionFactory.js +2 -0
- package/lib/utils/dateUtils.d.ts +2 -0
- package/lib/utils/dateUtils.js +2 -0
- package/lib/utils/file.d.ts +1 -0
- package/lib/utils/file.js +2 -0
- package/lib/utils/location.d.ts +9 -0
- package/lib/utils/location.js +2 -0
- package/lib/utils/useMetropolis.d.ts +12 -0
- package/lib/utils/useMetropolis.js +2 -0
- package/lib/utils/validatorFactory.d.ts +48 -0
- package/lib/utils/validatorFactory.js +2 -0
- package/package.json +33 -27
- package/tsconfig.lint.json +25 -0
- package/tsconfig.test.json +14 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FluxFramework } from '@nlabs/arkhamjs';
|
|
2
|
+
import type { TagType } from '../../adapters/tagAdapter/tagAdapter';
|
|
3
|
+
export interface TagAdapterOptions {
|
|
4
|
+
strict?: boolean;
|
|
5
|
+
allowPartial?: boolean;
|
|
6
|
+
environment?: 'development' | 'production' | 'test';
|
|
7
|
+
customValidation?: (input: unknown) => unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface TagActionsOptions {
|
|
10
|
+
tagAdapter?: (input: unknown, options?: TagAdapterOptions) => any;
|
|
11
|
+
tagAdapterOptions?: TagAdapterOptions;
|
|
12
|
+
}
|
|
13
|
+
export type TagApiResultsType = {
|
|
14
|
+
tags: {
|
|
15
|
+
addTag: TagType;
|
|
16
|
+
addTagToProfile: TagType;
|
|
17
|
+
deleteTag: TagType;
|
|
18
|
+
deleteTagFromProfile: TagType;
|
|
19
|
+
getTags: TagType[];
|
|
20
|
+
updateTag: TagType;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export interface TagActions {
|
|
24
|
+
addTag: (tag: Partial<TagType>, tagProps?: string[]) => Promise<TagType>;
|
|
25
|
+
addTagToProfile: (tagId: string, tagProps?: string[]) => Promise<TagType>;
|
|
26
|
+
deleteTag: (tagId: string, tagProps?: string[]) => Promise<TagType>;
|
|
27
|
+
deleteTagFromProfile: (tagId: string, tagProps?: string[]) => Promise<TagType>;
|
|
28
|
+
getTags: (tagProps?: string[]) => Promise<TagType[]>;
|
|
29
|
+
updateTag: (tag: Partial<TagType>, tagProps?: string[]) => Promise<TagType>;
|
|
30
|
+
updateTagAdapter: (adapter: (input: unknown, options?: TagAdapterOptions) => any) => void;
|
|
31
|
+
updateTagAdapterOptions: (options: TagAdapterOptions) => void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Factory function to create TagActions with enhanced adapter injection capabilities.
|
|
35
|
+
* Custom adapters are merged with default behavior, allowing partial overrides.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* // Basic usage with default adapters
|
|
39
|
+
* const tagActions = createTagActions(flux);
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Custom adapter that extends default behavior
|
|
43
|
+
* const customTagAdapter = (input: unknown, options?: TagAdapterOptions) => {
|
|
44
|
+
* // input is already validated by default adapter
|
|
45
|
+
* if (input.name && input.name.length > 50) {
|
|
46
|
+
* throw new Error('Tag name too long');
|
|
47
|
+
* }
|
|
48
|
+
* return input;
|
|
49
|
+
* };
|
|
50
|
+
*
|
|
51
|
+
* const tagActions = createTagActions(flux, {
|
|
52
|
+
* tagAdapter: customTagAdapter
|
|
53
|
+
* });
|
|
54
|
+
*/
|
|
55
|
+
export declare const createTagActions: (flux: FluxFramework, options?: TagActionsOptions) => TagActions;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{validateTagInput as E}from"../../adapters/tagAdapter/tagAdapter";import{TAG_CONSTANTS as s}from"../../stores/tagStore";import{appMutation as l,appQuery as S}from"../../utils/api";const y="tags",O=(t,u)=>E(t),m=(t,u)=>(T,d)=>{const i={...u,...d};let c=O(T,i);return t&&(c=t(c,i)),i?.customValidation&&(c=i.customValidation(c)),c},F=(t,u)=>{let T=u?.tagAdapterOptions||{},d=u?.tagAdapter,i=m(d,T);return{addTag:async(e,o=[])=>{try{const a={tag:{type:"TagInput!",value:i(e,T)}},g=n=>{const{tags:{addTag:p={}}}=n;return t.dispatch({tag:p,type:s.ADD_ITEM_SUCCESS})},{tag:r}=await l(t,"addTag",y,a,["category","id","name","tagId",...o],{onSuccess:g});return r}catch(a){throw t.dispatch({error:a,type:s.ADD_ITEM_ERROR}),a}},addTagToProfile:async(e,o=[])=>{try{const a={tagId:{type:"ID!",value:e}},g=n=>{const{tags:{addTagToProfile:p={}}}=n;return t.dispatch({tag:p,type:s.ADD_PROFILE_SUCCESS})},{tag:r}=await l(t,"addTagToProfile",y,a,["category","id","name","tagId",...o],{onSuccess:g});return r}catch(a){throw t.dispatch({error:a,type:s.ADD_PROFILE_ERROR}),a}},deleteTag:async(e,o=[])=>{try{const a={tagId:{type:"ID!",value:e}},g=n=>{const{tags:{deleteTag:p={}}}=n;return t.dispatch({tag:p,type:s.REMOVE_ITEM_SUCCESS})},{tag:r}=await l(t,"deleteTag",y,a,["category","id","name","tagId",...o],{onSuccess:g});return r}catch(a){throw t.dispatch({error:a,type:s.REMOVE_ITEM_ERROR}),a}},deleteTagFromProfile:async(e,o=[])=>{try{const a={tagId:{type:"ID!",value:e}},g=n=>{const{tags:{deleteTagFromProfile:p={}}}=n;return t.dispatch({tag:p,type:s.REMOVE_PROFILE_SUCCESS})},{tag:r}=await l(t,"deleteTagFromProfile",y,a,["category","id","name","tagId",...o],{onSuccess:g});return r}catch(a){throw t.dispatch({error:a,type:s.REMOVE_PROFILE_ERROR}),a}},getTags:async(e=[])=>{const o=t.getState("tag.list",[]),a=t.getState("tag.expires",0),g=Date.now();if(o.length&&g<a)return await t.dispatch({tags:o,type:s.GET_LIST_SUCCESS}),o;try{const r={from:{type:"String",value:0},search:{type:"Int",value:""},to:{type:"Int",value:-1}},n=A=>{const{tags:{getTags:P}}=A;return t.dispatch({tags:P,type:s.GET_LIST_SUCCESS})},{tags:p}=await S(t,"tags",y,r,["category","id","name","tagId",...e],{onSuccess:n});return p}catch(r){throw t.dispatch({error:r,type:s.GET_LIST_SUCCESS}),r}},updateTag:async(e,o=[])=>{try{const a={tag:{type:"TagInput!",value:i(e,T)}},g=n=>{const{tags:{updateTag:p={}}}=n;return t.dispatch({tag:p,type:s.UPDATE_ITEM_SUCCESS})},{tag:r}=await l(t,"updateTag",y,a,["category","id","name","tagId",...o],{onSuccess:g});return r}catch(a){throw t.dispatch({error:a,type:s.UPDATE_ITEM_ERROR}),a}},updateTagAdapter:e=>{d=e,i=m(d,T)},updateTagAdapterOptions:e=>{T={...T,...e},i=m(d,T)}}};export{F as createTagActions};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvdGFnQWN0aW9ucy90YWdBY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHt2YWxpZGF0ZVRhZ0lucHV0fSBmcm9tICcuLi8uLi9hZGFwdGVycy90YWdBZGFwdGVyL3RhZ0FkYXB0ZXInO1xuaW1wb3J0IHtUQUdfQ09OU1RBTlRTfSBmcm9tICcuLi8uLi9zdG9yZXMvdGFnU3RvcmUnO1xuaW1wb3J0IHthcHBNdXRhdGlvbiwgYXBwUXVlcnl9IGZyb20gJy4uLy4uL3V0aWxzL2FwaSc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge1RhZ1R5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlcic7XG5pbXBvcnQgdHlwZSB7UmVha3RvckRiQ29sbGVjdGlvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpJztcblxuY29uc3QgREFUQV9UWVBFOiBSZWFrdG9yRGJDb2xsZWN0aW9uID0gJ3RhZ3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0FkYXB0ZXJPcHRpb25zIHtcbiAgc3RyaWN0PzogYm9vbGVhbjtcbiAgYWxsb3dQYXJ0aWFsPzogYm9vbGVhbjtcbiAgZW52aXJvbm1lbnQ/OiAnZGV2ZWxvcG1lbnQnIHwgJ3Byb2R1Y3Rpb24nIHwgJ3Rlc3QnO1xuICBjdXN0b21WYWxpZGF0aW9uPzogKGlucHV0OiB1bmtub3duKSA9PiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0FjdGlvbnNPcHRpb25zIHtcbiAgdGFnQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiBhbnk7XG4gIHRhZ0FkYXB0ZXJPcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ0FwaVJlc3VsdHNUeXBlID0ge1xuICB0YWdzOiB7XG4gICAgYWRkVGFnOiBUYWdUeXBlO1xuICAgIGFkZFRhZ1RvUHJvZmlsZTogVGFnVHlwZTtcbiAgICBkZWxldGVUYWc6IFRhZ1R5cGU7XG4gICAgZGVsZXRlVGFnRnJvbVByb2ZpbGU6IFRhZ1R5cGU7XG4gICAgZ2V0VGFnczogVGFnVHlwZVtdO1xuICAgIHVwZGF0ZVRhZzogVGFnVHlwZTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnQWN0aW9ucyB7XG4gIGFkZFRhZzogKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgYWRkVGFnVG9Qcm9maWxlOiAodGFnSWQ6IHN0cmluZywgdGFnUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgZGVsZXRlVGFnOiAodGFnSWQ6IHN0cmluZywgdGFnUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxUYWdUeXBlPjtcbiAgZGVsZXRlVGFnRnJvbVByb2ZpbGU6ICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFRhZ1R5cGU+O1xuICBnZXRUYWdzOiAodGFnUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxUYWdUeXBlW10+O1xuICB1cGRhdGVUYWc6ICh0YWc6IFBhcnRpYWw8VGFnVHlwZT4sIHRhZ1Byb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8VGFnVHlwZT47XG4gIHVwZGF0ZVRhZ0FkYXB0ZXI6IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVUYWdBZGFwdGVyT3B0aW9uczogKG9wdGlvbnM6IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBEZWZhdWx0IHZhbGlkYXRpb24gZnVuY3Rpb25cbmNvbnN0IGRlZmF1bHRUYWdWYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4gdmFsaWRhdGVUYWdJbnB1dChpbnB1dCk7XG5cbi8vIEVuaGFuY2VkIHZhbGlkYXRpb24gZnVuY3Rpb24gdGhhdCBtZXJnZXMgY3VzdG9tIGxvZ2ljIHdpdGggZGVmYXVsdHNcbmNvbnN0IGNyZWF0ZVRhZ1ZhbGlkYXRvciA9IChcbiAgY3VzdG9tQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiBhbnksXG4gIG9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9uc1xuKSA9PiAoaW5wdXQ6IHVua25vd24sIHZhbGlkYXRvck9wdGlvbnM/OiBUYWdBZGFwdGVyT3B0aW9ucykgPT4ge1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0gey4uLm9wdGlvbnMsIC4uLnZhbGlkYXRvck9wdGlvbnN9O1xuXG4gIC8vIFN0YXJ0IHdpdGggZGVmYXVsdCB2YWxpZGF0aW9uXG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0VGFnVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICAvLyBBcHBseSBjdXN0b20gdmFsaWRhdGlvbiBpZiBwcm92aWRlZFxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gQXBwbHkgY3VzdG9tIHZhbGlkYXRpb24gZnJvbSBvcHRpb25zIGlmIHByb3ZpZGVkXG4gIGlmKG1lcmdlZE9wdGlvbnM/LmN1c3RvbVZhbGlkYXRpb24pIHtcbiAgICB2YWxpZGF0ZWQgPSBtZXJnZWRPcHRpb25zLmN1c3RvbVZhbGlkYXRpb24odmFsaWRhdGVkKSBhcyBUYWdUeXBlO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlZDtcbn07XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgVGFnQWN0aW9ucyB3aXRoIGVuaGFuY2VkIGFkYXB0ZXIgaW5qZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIEN1c3RvbSBhZGFwdGVycyBhcmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBiZWhhdmlvciwgYWxsb3dpbmcgcGFydGlhbCBvdmVycmlkZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZGFwdGVyc1xuICogY29uc3QgdGFnQWN0aW9ucyA9IGNyZWF0ZVRhZ0FjdGlvbnMoZmx1eCk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBhZGFwdGVyIHRoYXQgZXh0ZW5kcyBkZWZhdWx0IGJlaGF2aW9yXG4gKiBjb25zdCBjdXN0b21UYWdBZGFwdGVyID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVGFnQWRhcHRlck9wdGlvbnMpID0+IHtcbiAqICAgLy8gaW5wdXQgaXMgYWxyZWFkeSB2YWxpZGF0ZWQgYnkgZGVmYXVsdCBhZGFwdGVyXG4gKiAgIGlmIChpbnB1dC5uYW1lICYmIGlucHV0Lm5hbWUubGVuZ3RoID4gNTApIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBuYW1lIHRvbyBsb25nJyk7XG4gKiAgIH1cbiAqICAgcmV0dXJuIGlucHV0O1xuICogfTtcbiAqXG4gKiBjb25zdCB0YWdBY3Rpb25zID0gY3JlYXRlVGFnQWN0aW9ucyhmbHV4LCB7XG4gKiAgIHRhZ0FkYXB0ZXI6IGN1c3RvbVRhZ0FkYXB0ZXJcbiAqIH0pO1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlVGFnQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFRhZ0FjdGlvbnNPcHRpb25zXG4pOiBUYWdBY3Rpb25zID0+IHtcbiAgLy8gSW5pdGlhbGl6ZSBhZGFwdGVyIHN0YXRlXG4gIGxldCB0YWdBZGFwdGVyT3B0aW9uczogVGFnQWRhcHRlck9wdGlvbnMgPSBvcHRpb25zPy50YWdBZGFwdGVyT3B0aW9ucyB8fCB7fTtcbiAgbGV0IGN1c3RvbVRhZ0FkYXB0ZXIgPSBvcHRpb25zPy50YWdBZGFwdGVyO1xuXG4gIC8vIENyZWF0ZSB2YWxpZGF0b3JzIHRoYXQgbWVyZ2UgY3VzdG9tIGFkYXB0ZXJzIHdpdGggZGVmYXVsdHNcbiAgbGV0IHZhbGlkYXRlVGFnID0gY3JlYXRlVGFnVmFsaWRhdG9yKGN1c3RvbVRhZ0FkYXB0ZXIsIHRhZ0FkYXB0ZXJPcHRpb25zKTtcblxuICAvLyBVcGRhdGUgZnVuY3Rpb25zIHRoYXQgcmVjcmVhdGUgdmFsaWRhdG9yc1xuICBjb25zdCB1cGRhdGVUYWdBZGFwdGVyID0gKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFRhZ0FkYXB0ZXJPcHRpb25zKSA9PiBhbnkpOiB2b2lkID0+IHtcbiAgICBjdXN0b21UYWdBZGFwdGVyID0gYWRhcHRlcjtcbiAgICB2YWxpZGF0ZVRhZyA9IGNyZWF0ZVRhZ1ZhbGlkYXRvcihjdXN0b21UYWdBZGFwdGVyLCB0YWdBZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlVGFnQWRhcHRlck9wdGlvbnMgPSAob3B0aW9uczogVGFnQWRhcHRlck9wdGlvbnMpOiB2b2lkID0+IHtcbiAgICB0YWdBZGFwdGVyT3B0aW9ucyA9IHsuLi50YWdBZGFwdGVyT3B0aW9ucywgLi4ub3B0aW9uc307XG4gICAgdmFsaWRhdGVUYWcgPSBjcmVhdGVUYWdWYWxpZGF0b3IoY3VzdG9tVGFnQWRhcHRlciwgdGFnQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIEFjdGlvbiBpbXBsZW1lbnRhdGlvbnNcbiAgY29uc3QgYWRkVGFnID0gYXN5bmMgKHRhZzogUGFydGlhbDxUYWdUeXBlPiwgdGFnUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHRhZzoge1xuICAgICAgICAgIHR5cGU6ICdUYWdJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB2YWxpZGF0ZVRhZyh0YWcsIHRhZ0FkYXB0ZXJPcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3RhZ3M6IHthZGRUYWc6IHRhZyA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7dGFnLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkFERF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt0YWc6IGFkZGVkVGFnfSA9IGF3YWl0IGFwcE11dGF0aW9uKFxuICAgICAgICBmbHV4LFxuICAgICAgICAnYWRkVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWydjYXRlZ29yeScsICdpZCcsICduYW1lJywgJ3RhZ0lkJywgLi4udGFnUHJvcHNdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGFkZGVkVGFnIGFzIFRhZ1R5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRUYWdUb1Byb2ZpbGUgPSBhc3luYyAodGFnSWQ6IHN0cmluZywgdGFnUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFRhZ1R5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHRhZ0lkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IHRhZ0lkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7dGFnczoge2FkZFRhZ1RvUHJvZmlsZTogdGFnID0ge319fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuQUREX1BST0ZJTEVfU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3RhZzogYWRkZWRUYWd9ID0gYXdhaXQgYXBwTXV0YXRpb24oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRUYWdUb1Byb2ZpbGUnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2NhdGVnb3J5JywgJ2lkJywgJ25hbWUnLCAndGFnSWQnLCAuLi50YWdQcm9wc10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gYWRkZWRUYWcgYXMgVGFnVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5BRERfUFJPRklMRV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVRhZyA9IGFzeW5jICh0YWdJZDogc3RyaW5nLCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgdGFnSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogdGFnSWRcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFRhZ0FwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHt0YWdzOiB7ZGVsZXRlVGFnOiB0YWcgPSB7fX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3RhZywgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7dGFnOiBkZWxldGVkVGFnfSA9IGF3YWl0IGFwcE11dGF0aW9uKFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZGVsZXRlVGFnJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWydjYXRlZ29yeScsICdpZCcsICduYW1lJywgJ3RhZ0lkJywgLi4udGFnUHJvcHNdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGRlbGV0ZWRUYWcgYXMgVGFnVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZVRhZ0Zyb21Qcm9maWxlID0gYXN5bmMgKHRhZ0lkOiBzdHJpbmcsIHRhZ1Byb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxUYWdUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB0YWdJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiB0YWdJZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogVGFnQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3RhZ3M6IHtkZWxldGVUYWdGcm9tUHJvZmlsZTogdGFnID0ge319fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0YWcsXG4gICAgICAgICAgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfUFJPRklMRV9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3RhZzogZGVsZXRlZFRhZ30gPSBhd2FpdCBhcHBNdXRhdGlvbihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RlbGV0ZVRhZ0Zyb21Qcm9maWxlJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWydjYXRlZ29yeScsICdpZCcsICduYW1lJywgJ3RhZ0lkJywgLi4udGFnUHJvcHNdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGRlbGV0ZWRUYWcgYXMgVGFnVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVEFHX0NPTlNUQU5UUy5SRU1PVkVfUFJPRklMRV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFRhZ3MgPSBhc3luYyAodGFnUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFRhZ1R5cGVbXT4gPT4ge1xuICAgIGNvbnN0IGluaXRpYWxUYWdzOiBUYWdUeXBlW10gPSBmbHV4LmdldFN0YXRlKCd0YWcubGlzdCcsIFtdKSBhcyBUYWdUeXBlW107XG4gICAgY29uc3QgY2FjaGVFeHBpcmVzOiBudW1iZXIgPSBmbHV4LmdldFN0YXRlKCd0YWcuZXhwaXJlcycsIDApIGFzIG51bWJlcjtcbiAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICBpZihpbml0aWFsVGFncy5sZW5ndGggJiYgbm93IDwgY2FjaGVFeHBpcmVzKSB7XG4gICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0YWdzOiBpbml0aWFsVGFncywgdHlwZTogVEFHX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTfSk7XG4gICAgICByZXR1cm4gaW5pdGlhbFRhZ3M7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHRvOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6IC0xXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7dGFnczoge2dldFRhZ3N9fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0YWdzOiBnZXRUYWdzLFxuICAgICAgICAgIHR5cGU6IFRBR19DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt0YWdzOiB0YWdzTGlzdH0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3RhZ3MnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2NhdGVnb3J5JywgJ2lkJywgJ25hbWUnLCAndGFnSWQnLCAuLi50YWdQcm9wc10sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4gdGFnc0xpc3QgYXMgVGFnVHlwZVtdO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUQUdfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1N9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB1cGRhdGVUYWcgPSBhc3luYyAodGFnOiBQYXJ0aWFsPFRhZ1R5cGU+LCB0YWdQcm9wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8VGFnVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgdGFnOiB7XG4gICAgICAgICAgdHlwZTogJ1RhZ0lucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHZhbGlkYXRlVGFnKHRhZywgdGFnQWRhcHRlck9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBUYWdBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7dGFnczoge3VwZGF0ZVRhZzogdGFnID0ge319fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHt0YWcsIHR5cGU6IFRBR19DT05TVEFOVFMuVVBEQVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3RhZzogdXBkYXRlZFRhZ30gPSBhd2FpdCBhcHBNdXRhdGlvbihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3VwZGF0ZVRhZycsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFsnY2F0ZWdvcnknLCAnaWQnLCAnbmFtZScsICd0YWdJZCcsIC4uLnRhZ1Byb3BzXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB1cGRhdGVkVGFnIGFzIFRhZ1R5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRBR19DT05TVEFOVFMuVVBEQVRFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIGFjdGlvbnMgb2JqZWN0XG4gIHJldHVybiB7XG4gICAgYWRkVGFnLFxuICAgIGFkZFRhZ1RvUHJvZmlsZSxcbiAgICBkZWxldGVUYWcsXG4gICAgZGVsZXRlVGFnRnJvbVByb2ZpbGUsXG4gICAgZ2V0VGFncyxcbiAgICB1cGRhdGVUYWcsXG4gICAgdXBkYXRlVGFnQWRhcHRlcixcbiAgICB1cGRhdGVUYWdBZGFwdGVyT3B0aW9uc1xuICB9O1xufTtcblxuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxvQkFBQUEsTUFBdUIsdUNBQy9CLE9BQVEsaUJBQUFDLE1BQW9CLHdCQUM1QixPQUFRLGVBQUFDLEVBQWEsWUFBQUMsTUFBZSxrQkFNcEMsTUFBTUMsRUFBaUMsT0FxQ2pDQyxFQUFzQixDQUFDQyxFQUFnQkMsSUFBZ0NQLEVBQWlCTSxDQUFLLEVBRzdGRSxFQUFxQixDQUN6QkMsRUFDQUYsSUFDRyxDQUFDRCxFQUFnQkksSUFBeUMsQ0FDN0QsTUFBTUMsRUFBZ0IsQ0FBQyxHQUFHSixFQUFTLEdBQUdHLENBQWdCLEVBR3RELElBQUlFLEVBQVlQLEVBQW9CQyxFQUFPSyxDQUFhLEVBR3hELE9BQUdGLElBQ0RHLEVBQVlILEVBQWNHLEVBQVdELENBQWEsR0FJakRBLEdBQWUsbUJBQ2hCQyxFQUFZRCxFQUFjLGlCQUFpQkMsQ0FBUyxHQUcvQ0EsQ0FDVCxFQXdCYUMsRUFBbUIsQ0FDOUJDLEVBQ0FQLElBQ2UsQ0FFZixJQUFJUSxFQUF1Q1IsR0FBUyxtQkFBcUIsQ0FBQyxFQUN0RVMsRUFBbUJULEdBQVMsV0FHNUJVLEVBQWNULEVBQW1CUSxFQUFrQkQsQ0FBaUIsRUEwTnhFLE1BQU8sQ0FDTCxPQTdNYSxNQUFPRyxFQUF1QkMsRUFBcUIsQ0FBQyxJQUF3QixDQUN6RixHQUFJLENBQ0YsTUFBTUMsRUFBaUIs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R0FBSSxDQUNGLE1BQU1DLEVBQWlCLENBQ3JCLElBQUssQ0FDSCxLQUFNLFlBQ04sTUFBT0gsRUFBWUMsRUFBS0gsQ0FBaUIsQ0FDM0MsQ0FDRixFQUVNTSxFQUFhQyxHQUE0QixDQUM3QyxLQUFNLENBQUMsS0FBTSxDQUFDLFVBQVdKLEVBQU0sQ0FBQyxDQUFDLENBQUMsRUFBSUksRUFDdEMsT0FBT1IsRUFBSyxTQUFTLENBQUMsSUFBQUksRUFBSyxLQUFNakIsRUFBYyxtQkFBbUIsQ0FBQyxDQUNyRSxFQUVNLENBQUMsSUFBSytCLENBQVUsRUFBSSxNQUFNOUIsRUFDOUJZLEVBQ0EsWUFDQVYsRUFDQWdCLEVBQ0EsQ0FBQyxXQUFZLEtBQU0sT0FBUSxRQUFTLEdBQUdELENBQVEsRUFDL0MsQ0FBQyxVQUFBRSxDQUFTLENBQ1osRUFFQSxPQUFPVyxDQUNULE9BQVFSLEVBQU8sQ0FDYixNQUFBVixFQUFLLFNBQVMsQ0FBQyxNQUFBVSxFQUFPLEtBQU12QixFQUFjLGlCQUFpQixDQUFDLEVBQ3REdUIsQ0FDUixDQUNGLEVBVUUsaUJBOU53QlMsR0FBd0UsQ0FDaEdqQixFQUFtQmlCLEVBQ25CaEIsRUFBY1QsRUFBbUJRLEVBQWtCRCxDQUFpQixDQUN0RSxFQTRORSx3QkExTitCUixHQUFxQyxDQUNwRVEsRUFBb0IsQ0FBQyxHQUFHQSxFQUFtQixHQUFHUixDQUFPLEVBQ3JEVSxFQUFjVCxFQUFtQlEsRUFBa0JELENBQWlCLENBQ3RFLENBd05BLENBQ0YiLAogICJuYW1lcyI6IFsidmFsaWRhdGVUYWdJbnB1dCIsICJUQUdfQ09OU1RBTlRTIiwgImFwcE11dGF0aW9uIiwgImFwcFF1ZXJ5IiwgIkRBVEFfVFlQRSIsICJkZWZhdWx0VGFnVmFsaWRhdG9yIiwgImlucHV0IiwgIm9wdGlvbnMiLCAiY3JlYXRlVGFnVmFsaWRhdG9yIiwgImN1c3RvbUFkYXB0ZXIiLCAidmFsaWRhdG9yT3B0aW9ucyIsICJtZXJnZWRPcHRpb25zIiwgInZhbGlkYXRlZCIsICJjcmVhdGVUYWdBY3Rpb25zIiwgImZsdXgiLCAidGFnQWRhcHRlck9wdGlvbnMiLCAiY3VzdG9tVGFnQWRhcHRlciIsICJ2YWxpZGF0ZVRhZyIsICJ0YWciLCAidGFnUHJvcHMiLCAicXVlcnlWYXJpYWJsZXMiLCAib25TdWNjZXNzIiwgImRhdGEiLCAiYWRkZWRUYWciLCAiZXJyb3IiLCAidGFnSWQiLCAiZGVsZXRlZFRhZyIsICJpbml0aWFsVGFncyIsICJjYWNoZUV4cGlyZXMiLCAibm93IiwgImdldFRhZ3MiLCAidGFnc0xpc3QiLCAidXBkYXRlZFRhZyIsICJhZGFwdGVyIl0KfQo=
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { FluxFramework } from '@nlabs/arkhamjs';
|
|
2
|
+
import type { PersonaType } from '../../adapters/personaAdapter/personaAdapter';
|
|
3
|
+
import type { User } from '../../adapters/userAdapter/userAdapter';
|
|
4
|
+
import type { SessionType } from '../../utils/api';
|
|
5
|
+
import type { BaseAdapterOptions } from '../../utils/validatorFactory';
|
|
6
|
+
export interface UserAdapterOptions extends BaseAdapterOptions {
|
|
7
|
+
}
|
|
8
|
+
export interface PersonaAdapterOptions extends BaseAdapterOptions {
|
|
9
|
+
}
|
|
10
|
+
export interface UserActionsOptions {
|
|
11
|
+
readonly userAdapter?: (input: unknown, options?: UserAdapterOptions) => any;
|
|
12
|
+
readonly personaAdapter?: (input: unknown, options?: PersonaAdapterOptions) => any;
|
|
13
|
+
readonly userAdapterOptions?: UserAdapterOptions;
|
|
14
|
+
readonly personaAdapterOptions?: PersonaAdapterOptions;
|
|
15
|
+
}
|
|
16
|
+
export interface UserApiResultsType {
|
|
17
|
+
readonly users: {
|
|
18
|
+
readonly activeCount?: number;
|
|
19
|
+
readonly add?: Partial<User>;
|
|
20
|
+
readonly confirmCode?: boolean;
|
|
21
|
+
readonly deactivate?: Partial<User>;
|
|
22
|
+
readonly forgotPassword?: boolean;
|
|
23
|
+
readonly itemById?: Partial<User>;
|
|
24
|
+
readonly itemBySession?: Partial<User>;
|
|
25
|
+
readonly itemByToken?: Partial<User>;
|
|
26
|
+
readonly itemByUsername?: Partial<User>;
|
|
27
|
+
readonly list?: User[];
|
|
28
|
+
readonly listByConnection?: User[];
|
|
29
|
+
readonly listByLatest?: User[];
|
|
30
|
+
readonly listByReactions?: User[];
|
|
31
|
+
readonly listByTags?: User[];
|
|
32
|
+
readonly refreshSession?: SessionType;
|
|
33
|
+
readonly remove?: Partial<User>;
|
|
34
|
+
readonly resetPassword?: boolean;
|
|
35
|
+
readonly session?: Partial<User>;
|
|
36
|
+
readonly signIn?: Partial<User>;
|
|
37
|
+
readonly signUp?: Partial<User>;
|
|
38
|
+
readonly update?: Partial<User>;
|
|
39
|
+
readonly updatePassword?: Partial<boolean>;
|
|
40
|
+
readonly updatePersona?: Partial<PersonaType>;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface userActions {
|
|
44
|
+
add: (userInput: Partial<User>, userProps?: string[]) => Promise<User>;
|
|
45
|
+
confirmCode: (type: 'email' | 'phone', code: number) => Promise<boolean>;
|
|
46
|
+
remove: (userId: string) => Promise<User>;
|
|
47
|
+
session: (userProps?: string[]) => Promise<User>;
|
|
48
|
+
itemById: (userId: string, userProps?: string[]) => Promise<User>;
|
|
49
|
+
listByLatest: (username?: string, from?: number, to?: number, userProps?: string[]) => Promise<User[]>;
|
|
50
|
+
listByConnection: (userId: string, from?: number, to?: number, userProps?: string[]) => Promise<User[]>;
|
|
51
|
+
listByReactions: (username: string, reactionNames: string[], from?: number, to?: number, profileProps?: string[]) => Promise<User[]>;
|
|
52
|
+
listByTags: (username: string, tagNames: string[], from?: number, to?: number, profileProps?: string[]) => Promise<User[]>;
|
|
53
|
+
isLoggedIn: () => boolean;
|
|
54
|
+
refreshSession: (token?: string, expires?: number) => Promise<SessionType>;
|
|
55
|
+
signIn: (username: string, password: string, expires?: number) => Promise<SessionType>;
|
|
56
|
+
signOut: () => Promise<boolean>;
|
|
57
|
+
confirmSignUp: (code: string, type: 'email' | 'phone') => Promise<boolean>;
|
|
58
|
+
forgotPassword: (username: string) => Promise<boolean>;
|
|
59
|
+
resetPassword: (username: string, password: string, code: string, type: 'email' | 'phone') => Promise<boolean>;
|
|
60
|
+
updatePassword: (password: string, newPassword: string) => Promise<boolean>;
|
|
61
|
+
updateUser: (userInput: Partial<User>, userProps?: string[]) => Promise<User>;
|
|
62
|
+
updatePersona: (personaInput: Partial<PersonaType>) => Promise<PersonaType>;
|
|
63
|
+
signUp: (userInput: Partial<User>, userProps?: string[]) => Promise<User>;
|
|
64
|
+
updateUserAdapter: (adapter: (input: unknown, options?: UserAdapterOptions) => any) => void;
|
|
65
|
+
updatePersonaAdapter: (adapter: (input: unknown, options?: PersonaAdapterOptions) => any) => void;
|
|
66
|
+
updateUserAdapterOptions: (options: UserAdapterOptions) => void;
|
|
67
|
+
updatePersonaAdapterOptions: (options: PersonaAdapterOptions) => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Factory function to create userActions with enhanced adapter injection capabilities.
|
|
71
|
+
* Custom adapters are merged with default behavior, allowing partial overrides.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* // Basic usage with default adapters
|
|
75
|
+
* const userActions = createUserActions(flux);
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* // Custom adapter that extends default behavior
|
|
79
|
+
* const customUserAdapter = (input: unknown, options?: UserAdapterOptions) => {
|
|
80
|
+
* // input is already validated by default adapter
|
|
81
|
+
* if (input.email && !input.email.includes('@company.com')) {
|
|
82
|
+
* throw new Error('Only company emails allowed');
|
|
83
|
+
* }
|
|
84
|
+
* return input;
|
|
85
|
+
* };
|
|
86
|
+
*
|
|
87
|
+
* const userActions = createUserActions(flux, {
|
|
88
|
+
* userAdapter: customUserAdapter
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* // Configuration-based adapters
|
|
93
|
+
* const userActions = createUserActions(flux, {
|
|
94
|
+
* userAdapterOptions: {
|
|
95
|
+
* strict: true,
|
|
96
|
+
* environment: 'production'
|
|
97
|
+
* }
|
|
98
|
+
* });
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* // Runtime adapter updates
|
|
102
|
+
* userActions.updateUserAdapter(customUserAdapter);
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* // Complex adapter with business logic
|
|
106
|
+
* const businessUserAdapter = (input: unknown, options?: UserAdapterOptions) => {
|
|
107
|
+
* // input is already validated by default adapter
|
|
108
|
+
* const user = input as any;
|
|
109
|
+
*
|
|
110
|
+
* // Add business-specific validation
|
|
111
|
+
* if (user.userAccess > 5) {
|
|
112
|
+
* throw new Error('User access level too high');
|
|
113
|
+
* }
|
|
114
|
+
*
|
|
115
|
+
* // Add computed fields
|
|
116
|
+
* return {
|
|
117
|
+
* ...user,
|
|
118
|
+
* fullName: `${user.first || ''} ${user.last || ''}`.trim(),
|
|
119
|
+
* isAdmin: user.userAccess >= 3
|
|
120
|
+
* };
|
|
121
|
+
* };
|
|
122
|
+
*
|
|
123
|
+
* const userActions = createUserActions(flux, {
|
|
124
|
+
* userAdapter: businessUserAdapter,
|
|
125
|
+
* userAdapterOptions: {
|
|
126
|
+
* strict: true,
|
|
127
|
+
* environment: 'production'
|
|
128
|
+
* }
|
|
129
|
+
* });
|
|
130
|
+
*/
|
|
131
|
+
export declare const createUserActions: (flux: FluxFramework, options?: UserActionsOptions) => userActions;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{DateTime as y}from"luxon";import{validatePersonaInput as A}from"../../adapters/personaAdapter/personaAdapter";import{validateUserInput as b}from"../../adapters/userAdapter/userAdapter";import{USER_CONSTANTS as d}from"../../stores/userStore";import{appMutation as P,publicMutation as l,refreshSession as S}from"../../utils/api";import{createBaseActions as g}from"../../utils/baseActionFactory";const m="users",f=(r,p)=>{const i=b(r);if(p?.strict&&!i.username)throw new Error("Username is required in strict mode");return i},I=(r,p)=>A(r),Q=(r,p)=>{const i=g(r,f,{adapter:p?.userAdapter,adapterOptions:p?.userAdapterOptions}),c=g(r,I,{adapter:p?.personaAdapter,adapterOptions:p?.personaAdapterOptions});return{add:async(e,s=[])=>{const t={user:{type:"UserInput",value:i.validator(e)}},n=o=>{const{users:{add:u={}}}=o;return r.dispatch({user:u,type:d.ADD_ITEM_SUCCESS})},{users:{add:a={}}}=await l(r,"add",m,t,s||["added","address","dob","city","country","gender","imageUrl","latitude","longitude","mailingList","modified","state","tags {id, name, tagId}","thumbUrl","userAccess","userId","username"],{onSuccess:n});return r.dispatch({user:a,type:d.ADD_ITEM_SUCCESS}),a},confirmCode:async(e,s)=>!0,remove:async e=>({}),session:async(e=[])=>({}),itemById:async(e,s=[])=>({}),listByLatest:async(e="",s=0,t=10,n=[])=>[],listByConnection:async(e,s=0,t=10,n=[])=>[],listByReactions:async(e,s,t=0,n=10,a=[])=>[],listByTags:async(e,s,t=0,n=10,a=[])=>[],isLoggedIn:()=>{const e=r.getState("user.session.expires");if(!e)return!1;const s=y.fromMillis(e);return Math.round(s.diff(y.local(),"minutes").toObject().minutes)>0},refreshSession:async(e,s=15)=>(await S(r,e,s))?.refreshSession||{},signIn:async(e,s,t=15)=>{const n={expires:{type:"Int",value:t},password:{type:"String!",value:s},username:{type:"String!",value:e}},a=(o={})=>{const U=o?.users?.signIn||{};return r.dispatch({session:U,type:d.SIGN_IN_SUCCESS})};try{return await l(r,"signIn",m,n,["expires","issued","token","userId","username"],{onSuccess:a}),r.getState("user.session")||{}}catch(o){throw r.dispatch({error:o,type:d.SIGN_IN_ERROR}),o}},signOut:async()=>!0,confirmSignUp:async(e,s)=>!0,forgotPassword:async e=>!0,resetPassword:async(e,s,t,n)=>!0,updatePassword:async(e,s)=>!0,updateUser:async(e,s=[])=>{const t={user:{type:"UserUpdateInput!",value:i.validator(e)}},n=(o={})=>{const{users:{update:u={}}}=o;return r.dispatch({user:u,type:d.UPDATE_ITEM_SUCCESS})},{user:a}=await P(r,"update",m,t,["added","address","birthdate","city","country","gender","imageCount","imageUrl","latitude","longitude","mailingList","modified","state","tags {id, name, tagId}","thumbUrl","userAccess","userId","username",...s],{onSuccess:n});return a},updatePersona:async e=>{const s={persona:{type:"PersonaUpdateInput!",value:c.validator(e)}},t=(a={})=>{const{users:{updatePersona:o={}}}=a;return r.dispatch({persona:o,type:d.UPDATE_PERSONA_SUCCESS})},{persona:n}=await P(r,"updatePersona",m,s,[],{onSuccess:t});return n},signUp:async(e,s=[])=>{const t={user:{type:"UserInput!",value:i.validator(e)}},n=o=>{const{users:{signUp:u={}}}=o;return r.dispatch({user:u,type:d.SIGN_UP_SUCCESS})},{users:{signUp:a={}}}=await l(r,"signUp",m,t,["added","city","country","dob","firstName","gender","imageCount","imageUrl","latitude","lastName","longitude","mailingList","modified","name","state","tags {id, name, tagId}","thumbUrl","userAccess","userId","username",...s],{onSuccess:n});return a},updateUserAdapter:i.updateAdapter,updatePersonaAdapter:c.updateAdapter,updateUserAdapterOptions:i.updateOptions,updatePersonaAdapterOptions:c.updateOptions}};export{Q as createUserActions};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0RhdGVUaW1lfSBmcm9tICdsdXhvbic7XG5cbmltcG9ydCB7dmFsaWRhdGVQZXJzb25hSW5wdXR9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3BlcnNvbmFBZGFwdGVyL3BlcnNvbmFBZGFwdGVyJztcbmltcG9ydCB7dmFsaWRhdGVVc2VySW5wdXR9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3VzZXJBZGFwdGVyL3VzZXJBZGFwdGVyJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uLy4uL3N0b3Jlcy91c2VyU3RvcmUnO1xuaW1wb3J0IHthcHBNdXRhdGlvbiwgcHVibGljTXV0YXRpb24sIHJlZnJlc2hTZXNzaW9ufSBmcm9tICcuLi8uLi91dGlscy9hcGknO1xuaW1wb3J0IHtjcmVhdGVCYXNlQWN0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvYmFzZUFjdGlvbkZhY3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEFjdGlvbiwgRmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHtQZXJzb25hVHlwZX0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvcGVyc29uYUFkYXB0ZXIvcGVyc29uYUFkYXB0ZXInO1xuaW1wb3J0IHR5cGUge1VzZXJ9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3VzZXJBZGFwdGVyL3VzZXJBZGFwdGVyJztcbmltcG9ydCB0eXBlIHtBcGlSZXN1bHRzVHlwZSwgUmVha3RvckRiQ29sbGVjdGlvbiwgU2Vzc2lvblR5cGV9IGZyb20gJy4uLy4uL3V0aWxzL2FwaSc7XG5pbXBvcnQgdHlwZSB7QmFzZUFkYXB0ZXJPcHRpb25zfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JGYWN0b3J5JztcblxuY29uc3QgREFUQV9UWVBFOiBSZWFrdG9yRGJDb2xsZWN0aW9uID0gJ3VzZXJzJztcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyQWRhcHRlck9wdGlvbnMgZXh0ZW5kcyBCYXNlQWRhcHRlck9wdGlvbnMge1xuICAvLyBVc2VyLXNwZWNpZmljIG9wdGlvbnMgY2FuIGJlIGFkZGVkIGhlcmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJzb25hQWRhcHRlck9wdGlvbnMgZXh0ZW5kcyBCYXNlQWRhcHRlck9wdGlvbnMge1xuICAvLyBQZXJzb25hLXNwZWNpZmljIG9wdGlvbnMgY2FuIGJlIGFkZGVkIGhlcmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyQWN0aW9uc09wdGlvbnMge1xuICByZWFkb25seSB1c2VyQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFVzZXJBZGFwdGVyT3B0aW9ucykgPT4gYW55O1xuICByZWFkb25seSBwZXJzb25hQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFBlcnNvbmFBZGFwdGVyT3B0aW9ucykgPT4gYW55O1xuICByZWFkb25seSB1c2VyQWRhcHRlck9wdGlvbnM/OiBVc2VyQWRhcHRlck9wdGlvbnM7XG4gIHJlYWRvbmx5IHBlcnNvbmFBZGFwdGVyT3B0aW9ucz86IFBlcnNvbmFBZGFwdGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyQXBpUmVzdWx0c1R5cGUge1xuICByZWFkb25seSB1c2Vyczoge1xuICAgIHJlYWRvbmx5IGFjdGl2ZUNvdW50PzogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGFkZD86IFBhcnRpYWw8VXNlcj47XG4gICAgcmVhZG9ubHkgY29uZmlybUNvZGU/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGRlYWN0aXZhdGU/OiBQYXJ0aWFsPFVzZXI+O1xuICAgIHJlYWRvbmx5IGZvcmdvdFBhc3N3b3JkPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBpdGVtQnlJZD86IFBhcnRpYWw8VXNlcj47XG4gICAgcmVhZG9ubHkgaXRlbUJ5U2Vzc2lvbj86IFBhcnRpYWw8VXNlcj47XG4gICAgcmVhZG9ubHkgaXRlbUJ5VG9rZW4/OiBQYXJ0aWFsPFVzZXI+O1xuICAgIHJlYWRvbmx5IGl0ZW1CeVVzZXJuYW1lPzogUGFydGlhbDxVc2VyPjtcbiAgICByZWFkb25seSBsaXN0PzogVXNlcltdO1xuICAgIHJlYWRvbmx5IGxpc3RCeUNvbm5lY3Rpb24/OiBVc2VyW107XG4gICAgcmVhZG9ubHkgbGlzdEJ5TGF0ZXN0PzogVXNlcltdO1xuICAgIHJlYWRvbmx5IGxpc3RCeVJlYWN0aW9ucz86IFVzZXJbXTtcbiAgICByZWFkb25seSBsaXN0QnlUYWdzPzogVXNlcltdO1xuICAgIHJlYWRvbmx5IHJlZnJlc2hTZXNzaW9uPzogU2Vzc2lvblR5cGU7XG4gICAgcmVhZG9ubHkgcmVtb3ZlPzogUGFydGlhbDxVc2VyPjtcbiAgICByZWFkb25seSByZXNldFBhc3N3b3JkPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBzZXNzaW9uPzogUGFydGlhbDxVc2VyPjtcbiAgICByZWFkb25seSBzaWduSW4/OiBQYXJ0aWFsPFVzZXI+O1xuICAgIHJlYWRvbmx5IHNpZ25VcD86IFBhcnRpYWw8VXNlcj47XG4gICAgcmVhZG9ubHkgdXBkYXRlPzogUGFydGlhbDxVc2VyPjtcbiAgICByZWFkb25seSB1cGRhdGVQYXNzd29yZD86IFBhcnRpYWw8Ym9vbGVhbj47XG4gICAgcmVhZG9ubHkgdXBkYXRlUGVyc29uYT86IFBhcnRpYWw8UGVyc29uYVR5cGU+O1xuICB9O1xufVxuXG4vLyBEZWZhdWx0IHZhbGlkYXRpb24gZnVuY3Rpb25zXG5jb25zdCBkZWZhdWx0VXNlclZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFVzZXJBZGFwdGVyT3B0aW9ucykgPT4ge1xuICBjb25zdCB2YWxpZGF0ZWQgPSB2YWxpZGF0ZVVzZXJJbnB1dChpbnB1dCk7XG5cbiAgaWYob3B0aW9ucz8uc3RyaWN0ICYmICF2YWxpZGF0ZWQudXNlcm5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzZXJuYW1lIGlzIHJlcXVpcmVkIGluIHN0cmljdCBtb2RlJyk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuY29uc3QgZGVmYXVsdFBlcnNvbmFWYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBQZXJzb25hQWRhcHRlck9wdGlvbnMpID0+IHZhbGlkYXRlUGVyc29uYUlucHV0KGlucHV0KTtcblxuZXhwb3J0IGludGVyZmFjZSB1c2VyQWN0aW9ucyB7XG4gIGFkZDogKHVzZXJJbnB1dDogUGFydGlhbDxVc2VyPiwgdXNlclByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8VXNlcj47XG4gIGNvbmZpcm1Db2RlOiAodHlwZTogJ2VtYWlsJyB8ICdwaG9uZScsIGNvZGU6IG51bWJlcikgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgcmVtb3ZlOiAodXNlcklkOiBzdHJpbmcpID0+IFByb21pc2U8VXNlcj47XG4gIHNlc3Npb246ICh1c2VyUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxVc2VyPjtcbiAgaXRlbUJ5SWQ6ICh1c2VySWQ6IHN0cmluZywgdXNlclByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8VXNlcj47XG4gIGxpc3RCeUxhdGVzdDogKHVzZXJuYW1lPzogc3RyaW5nLCBmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlciwgdXNlclByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8VXNlcltdPjtcbiAgbGlzdEJ5Q29ubmVjdGlvbjogKHVzZXJJZDogc3RyaW5nLCBmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlciwgdXNlclByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8VXNlcltdPjtcbiAgbGlzdEJ5UmVhY3Rpb25zOiAodXNlcm5hbWU6IHN0cmluZywgcmVhY3Rpb25OYW1lczogc3RyaW5nW10sIGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBwcm9maWxlUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxVc2VyW10+O1xuICBsaXN0QnlUYWdzOiAodXNlcm5hbWU6IHN0cmluZywgdGFnTmFtZXM6IHN0cmluZ1tdLCBmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlciwgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8VXNlcltdPjtcbiAgaXNMb2dnZWRJbjogKCkgPT4gYm9vbGVhbjtcbiAgcmVmcmVzaFNlc3Npb246ICh0b2tlbj86IHN0cmluZywgZXhwaXJlcz86IG51bWJlcikgPT4gUHJvbWlzZTxTZXNzaW9uVHlwZT47XG4gIHNpZ25JbjogKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGV4cGlyZXM/OiBudW1iZXIpID0+IFByb21pc2U8U2Vzc2lvblR5cGU+O1xuICBzaWduT3V0OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBjb25maXJtU2lnblVwOiAoY29kZTogc3RyaW5nLCB0eXBlOiAnZW1haWwnIHwgJ3Bob25lJykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgZm9yZ290UGFzc3dvcmQ6ICh1c2VybmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICByZXNldFBhc3N3b3JkOiAodXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY29kZTogc3RyaW5nLCB0eXBlOiAnZW1haWwnIHwgJ3Bob25lJykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgdXBkYXRlUGFzc3dvcmQ6IChwYXNzd29yZDogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICB1cGRhdGVVc2VyOiAodXNlcklucHV0OiBQYXJ0aWFsPFVzZXI+LCB1c2VyUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxVc2VyPjtcbiAgdXBkYXRlUGVyc29uYTogKHBlcnNvbmFJbnB1dDogUGFydGlhbDxQZXJzb25hVHlwZT4pID0+IFByb21pc2U8UGVyc29uYVR5cGU+O1xuICBzaWduVXA6ICh1c2VySW5wdXQ6IFBhcnRpYWw8VXNlcj4sIHVzZXJQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFVzZXI+O1xuICB1cGRhdGVVc2VyQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFVzZXJBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVQZXJzb25hQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFBlcnNvbmFBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVVc2VyQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBVc2VyQWRhcHRlck9wdGlvbnMpID0+IHZvaWQ7XG4gIHVwZGF0ZVBlcnNvbmFBZGFwdGVyT3B0aW9uczogKG9wdGlvbnM6IFBlcnNvbmFBZGFwdGVyT3B0aW9ucykgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSB1c2VyQWN0aW9ucyB3aXRoIGVuaGFuY2VkIGFkYXB0ZXIgaW5qZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIEN1c3RvbSBhZGFwdGVycyBhcmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBiZWhhdmlvciwgYWxsb3dpbmcgcGFydGlhbCBvdmVycmlkZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZGFwdGVyc1xuICogY29uc3QgdXNlckFjdGlvbnMgPSBjcmVhdGVVc2VyQWN0aW9ucyhmbHV4KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9tIGFkYXB0ZXIgdGhhdCBleHRlbmRzIGRlZmF1bHQgYmVoYXZpb3JcbiAqIGNvbnN0IGN1c3RvbVVzZXJBZGFwdGVyID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVXNlckFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gKiAgIC8vIGlucHV0IGlzIGFscmVhZHkgdmFsaWRhdGVkIGJ5IGRlZmF1bHQgYWRhcHRlclxuICogICBpZiAoaW5wdXQuZW1haWwgJiYgIWlucHV0LmVtYWlsLmluY2x1ZGVzKCdAY29tcGFueS5jb20nKSkge1xuICogICAgIHRocm93IG5ldyBFcnJvcignT25seSBjb21wYW55IGVtYWlscyBhbGxvd2VkJyk7XG4gKiAgIH1cbiAqICAgcmV0dXJuIGlucHV0O1xuICogfTtcbiAqXG4gKiBjb25zdCB1c2VyQWN0aW9ucyA9IGNyZWF0ZVVzZXJBY3Rpb25zKGZsdXgsIHtcbiAqICAgdXNlckFkYXB0ZXI6IGN1c3RvbVVzZXJBZGFwdGVyXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29uZmlndXJhdGlvbi1iYXNlZCBhZGFwdGVyc1xuICogY29uc3QgdXNlckFjdGlvbnMgPSBjcmVhdGVVc2VyQWN0aW9ucyhmbHV4LCB7XG4gKiAgIHVzZXJBZGFwdGVyT3B0aW9uczoge1xuICogICAgIHN0cmljdDogdHJ1ZSxcbiAqICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nXG4gKiAgIH1cbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSdW50aW1lIGFkYXB0ZXIgdXBkYXRlc1xuICogdXNlckFjdGlvbnMudXBkYXRlVXNlckFkYXB0ZXIoY3VzdG9tVXNlckFkYXB0ZXIpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb21wbGV4IGFkYXB0ZXIgd2l0aCBidXNpbmVzcyBsb2dpY1xuICogY29uc3QgYnVzaW5lc3NVc2VyQWRhcHRlciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFVzZXJBZGFwdGVyT3B0aW9ucykgPT4ge1xuICogICAvLyBpbnB1dCBpcyBhbHJlYWR5IHZhbGlkYXRlZCBieSBkZWZhdWx0IGFkYXB0ZXJcbiAqICAgY29uc3QgdXNlciA9IGlucHV0IGFzIGFueTtcbiAqXG4gKiAgIC8vIEFkZCBidXNpbmVzcy1zcGVjaWZpYyB2YWxpZGF0aW9uXG4gKiAgIGlmICh1c2VyLnVzZXJBY2Nlc3MgPiA1KSB7XG4gKiAgICAgdGhyb3cgbmV3IEVycm9yKCdVc2VyIGFjY2VzcyBsZXZlbCB0b28gaGlnaCcpO1xuICogICB9XG4gKlxuICogICAvLyBBZGQgY29tcHV0ZWQgZmllbGRzXG4gKiAgIHJldHVybiB7XG4gKiAgICAgLi4udXNlcixcbiAqICAgICBmdWxsTmFtZTogYCR7dXNlci5maXJzdCB8fCAnJ30gJHt1c2VyLmxhc3QgfHwgJyd9YC50cmltKCksXG4gKiAgICAgaXNBZG1pbjogdXNlci51c2VyQWNjZXNzID49IDNcbiAqICAgfTtcbiAqIH07XG4gKlxuICogY29uc3QgdXNlckFjdGlvbnMgPSBjcmVhdGVVc2VyQWN0aW9ucyhmbHV4LCB7XG4gKiAgIHVzZXJBZGFwdGVyOiBidXNpbmVzc1VzZXJBZGFwdGVyLFxuICogICB1c2VyQWRhcHRlck9wdGlvbnM6IHtcbiAqICAgICBzdHJpY3Q6IHRydWUsXG4gKiAgICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJ1xuICogICB9XG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVVzZXJBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogVXNlckFjdGlvbnNPcHRpb25zXG4pOiB1c2VyQWN0aW9ucyA9PiB7XG4gIC8vIENyZWF0ZSBiYXNlIGFjdGlvbnMgZm9yIHVzZXIgdmFsaWRhdGlvblxuICBjb25zdCB1c2VyQmFzZSA9IGNyZWF0ZUJhc2VBY3Rpb25zKGZsdXgsIGRlZmF1bHRVc2VyVmFsaWRhdG9yLCB7XG4gICAgYWRhcHRlcjogb3B0aW9ucz8udXNlckFkYXB0ZXIsXG4gICAgYWRhcHRlck9wdGlvbnM6IG9wdGlvbnM/LnVzZXJBZGFwdGVyT3B0aW9uc1xuICB9KTtcblxuICAvLyBDcmVhdGUgYmFzZSBhY3Rpb25zIGZvciBwZXJzb25hIHZhbGlkYXRpb25cbiAgY29uc3QgcGVyc29uYUJhc2UgPSBjcmVhdGVCYXNlQWN0aW9ucyhmbHV4LCBkZWZhdWx0UGVyc29uYVZhbGlkYXRvciwge1xuICAgIGFkYXB0ZXI6IG9wdGlvbnM/LnBlcnNvbmFBZGFwdGVyLFxuICAgIGFkYXB0ZXJPcHRpb25zOiBvcHRpb25zPy5wZXJzb25hQWRhcHRlck9wdGlvbnNcbiAgfSk7XG5cbiAgLy8gQWN0aW9uIGltcGxlbWVudGF0aW9ucyB1c2luZyB0aGUgYmFzZSB1dGlsaXRpZXNcbiAgY29uc3QgYWRkID0gYXN5bmMgKHVzZXJJbnB1dDogUGFydGlhbDxVc2VyPiwgdXNlclByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIHR5cGU6ICdVc2VySW5wdXQnLFxuICAgICAgICB2YWx1ZTogdXNlckJhc2UudmFsaWRhdG9yKHVzZXJJbnB1dClcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFVzZXJBcGlSZXN1bHRzVHlwZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgY29uc3Qge3VzZXJzOiB7YWRkID0ge319fSA9IGRhdGE7XG4gICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgIHVzZXI6IGFkZCxcbiAgICAgICAgdHlwZTogVVNFUl9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHt1c2Vyczoge2FkZDogdXNlciA9IHt9fX0gPSBhd2FpdCBwdWJsaWNNdXRhdGlvbjxVc2VyQXBpUmVzdWx0c1R5cGU+KFxuICAgICAgZmx1eCxcbiAgICAgICdhZGQnLFxuICAgICAgREFUQV9UWVBFLFxuICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICB1c2VyUHJvcHMgfHwgW1xuICAgICAgICAnYWRkZWQnLFxuICAgICAgICAnYWRkcmVzcycsXG4gICAgICAgICdkb2InLFxuICAgICAgICAnY2l0eScsXG4gICAgICAgICdjb3VudHJ5JyxcbiAgICAgICAgJ2dlbmRlcicsXG4gICAgICAgICdpbWFnZVVybCcsXG4gICAgICAgICdsYXRpdHVkZScsXG4gICAgICAgICdsb25naXR1ZGUnLFxuICAgICAgICAnbWFpbGluZ0xpc3QnLFxuICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAnc3RhdGUnLFxuICAgICAgICAndGFncyB7aWQsIG5hbWUsIHRhZ0lkfScsXG4gICAgICAgICd0aHVtYlVybCcsXG4gICAgICAgICd1c2VyQWNjZXNzJyxcbiAgICAgICAgJ3VzZXJJZCcsXG4gICAgICAgICd1c2VybmFtZSdcbiAgICAgIF0sXG4gICAgICB7b25TdWNjZXNzfVxuICAgICk7XG5cbiAgICBmbHV4LmRpc3BhdGNoKHt1c2VyLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgcmV0dXJuIHVzZXIgYXMgVXNlcjtcbiAgfTtcblxuICBjb25zdCBzaWduVXAgPSBhc3luYyAodXNlcklucHV0OiBQYXJ0aWFsPFVzZXI+LCB1c2VyUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgdHlwZTogJ1VzZXJJbnB1dCEnLFxuICAgICAgICB2YWx1ZTogdXNlckJhc2UudmFsaWRhdG9yKHVzZXJJbnB1dClcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFVzZXJBcGlSZXN1bHRzVHlwZSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgY29uc3Qge3VzZXJzOiB7c2lnblVwID0ge319fSA9IGRhdGE7XG4gICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7XG4gICAgICAgIHVzZXI6IHNpZ25VcCxcbiAgICAgICAgdHlwZTogVVNFUl9DT05TVEFOVFMuU0lHTl9VUF9TVUNDRVNTXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3VzZXJzOiB7c2lnblVwOiB1c2VyID0ge319fSA9IGF3YWl0IHB1YmxpY011dGF0aW9uPFVzZXJBcGlSZXN1bHRzVHlwZT4oXG4gICAgICBmbHV4LFxuICAgICAgJ3NpZ25VcCcsXG4gICAgICBEQVRBX1RZUEUsXG4gICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgIFtcbiAgICAgICAgJ2FkZGVkJyxcbiAgICAgICAgJ2NpdHknLFxuICAgICAgICAnY291bnRyeScsXG4gICAgICAgICdkb2InLFxuICAgICAgICAnZmlyc3ROYW1lJyxcbiAgICAgICAgJ2dlbmRlcicsXG4gICAgICAgICdpbWFnZUNvdW50JyxcbiAgICAgICAgJ2ltYWdlVXJsJyxcbiAgICAgICAgJ2xhdGl0dWRlJyxcbiAgICAgICAgJ2xhc3ROYW1lJyxcbiAgICAgICAgJ2xvbmdpdHVkZScsXG4gICAgICAgICdtYWlsaW5nTGlzdCcsXG4gICAgICAgICdtb2RpZmllZCcsXG4gICAgICAgICduYW1lJyxcbiAgICAgICAgJ3N0YXRlJyxcbiAgICAgICAgJ3RhZ3Mge2lkLCBuYW1lLCB0YWdJZH0nLFxuICAgICAgICAndGh1bWJVcmwnLFxuICAgICAgICAndXNlckFjY2VzcycsXG4gICAgICAgICd1c2VySWQnLFxuICAgICAgICAndXNlcm5hbWUnLFxuICAgICAgICAuLi51c2VyUHJvcHNcbiAgICAgIF0sXG4gICAgICB7b25TdWNjZXNzfVxuICAgICk7XG4gICAgcmV0dXJuIHVzZXIgYXMgVXNlcjtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVVc2VyID0gYXN5bmMgKHVzZXJJbnB1dDogUGFydGlhbDxVc2VyPiwgdXNlclByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIHR5cGU6ICdVc2VyVXBkYXRlSW5wdXQhJyxcbiAgICAgICAgdmFsdWU6IHVzZXJCYXNlLnZhbGlkYXRvcih1c2VySW5wdXQpXG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7dXNlcnM6IHt1cGRhdGUgPSB7fX19ID0gZGF0YSBhcyB1bmtub3duIGFzIFVzZXJBcGlSZXN1bHRzVHlwZTtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgdXNlcjogdXBkYXRlLFxuICAgICAgICB0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfSVRFTV9TVUNDRVNTXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qge3VzZXJ9ID0gYXdhaXQgYXBwTXV0YXRpb24oXG4gICAgICBmbHV4LFxuICAgICAgJ3VwZGF0ZScsXG4gICAgICBEQVRBX1RZUEUsXG4gICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgIFtcbiAgICAgICAgJ2FkZGVkJyxcbiAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgICAnYmlydGhkYXRlJyxcbiAgICAgICAgJ2NpdHknLFxuICAgICAgICAnY291bnRyeScsXG4gICAgICAgICdnZW5kZXInLFxuICAgICAgICAnaW1hZ2VDb3VudCcsXG4gICAgICAgICdpbWFnZVVybCcsXG4gICAgICAgICdsYXRpdHVkZScsXG4gICAgICAgICdsb25naXR1ZGUnLFxuICAgICAgICAnbWFpbGluZ0xpc3QnLFxuICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAnc3RhdGUnLFxuICAgICAgICAndGFncyB7aWQsIG5hbWUsIHRhZ0lkfScsXG4gICAgICAgICd0aHVtYlVybCcsXG4gICAgICAgICd1c2VyQWNjZXNzJyxcbiAgICAgICAgJ3VzZXJJZCcsXG4gICAgICAgICd1c2VybmFtZScsXG4gICAgICAgIC4uLnVzZXJQcm9wc1xuICAgICAgXSxcbiAgICAgIHtvblN1Y2Nlc3N9XG4gICAgKTtcbiAgICByZXR1cm4gdXNlciBhcyBVc2VyO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVBlcnNvbmEgPSBhc3luYyAocGVyc29uYUlucHV0OiBQYXJ0aWFsPFBlcnNvbmFUeXBlPik6IFByb21pc2U8UGVyc29uYVR5cGU+ID0+IHtcbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgIHBlcnNvbmE6IHtcbiAgICAgICAgdHlwZTogJ1BlcnNvbmFVcGRhdGVJbnB1dCEnLFxuICAgICAgICB2YWx1ZTogcGVyc29uYUJhc2UudmFsaWRhdG9yKHBlcnNvbmFJbnB1dClcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgIGNvbnN0IHt1c2Vyczoge3VwZGF0ZVBlcnNvbmEgPSB7fX19ID0gZGF0YSBhcyB1bmtub3duIGFzIFVzZXJBcGlSZXN1bHRzVHlwZTtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtwZXJzb25hOiB1cGRhdGVQZXJzb25hLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfUEVSU09OQV9TVUNDRVNTfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHtwZXJzb25hfSA9IGF3YWl0IGFwcE11dGF0aW9uKGZsdXgsICd1cGRhdGVQZXJzb25hJywgREFUQV9UWVBFLCBxdWVyeVZhcmlhYmxlcywgW10sIHtvblN1Y2Nlc3N9KTtcbiAgICByZXR1cm4gcGVyc29uYSBhcyBQZXJzb25hVHlwZTtcbiAgfTtcblxuICAvLyBQbGFjZWhvbGRlciBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIG1ldGhvZHMgKHlvdSBjYW4gYWRkIHRoZSBmdWxsIGltcGxlbWVudGF0aW9ucylcbiAgY29uc3QgY29uZmlybUNvZGUgPSBhc3luYyAodHlwZTogJ2VtYWlsJyB8ICdwaG9uZScsIGNvZGU6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgICAvLyBJbXBsZW1lbnRhdGlvbiBoZXJlXG4gICAgdHJ1ZVxuICA7XG5cbiAgY29uc3QgcmVtb3ZlID0gYXN5bmMgKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxVc2VyPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICAoe30gYXMgVXNlcilcbiAgO1xuXG4gIGNvbnN0IHNlc3Npb24gPSBhc3luYyAodXNlclByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxVc2VyPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICAoe30gYXMgVXNlcilcbiAgO1xuXG4gIGNvbnN0IGl0ZW1CeUlkID0gYXN5bmMgKHVzZXJJZDogc3RyaW5nLCB1c2VyUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFVzZXI+ID0+XG4gICAgLy8gSW1wbGVtZW50YXRpb24gaGVyZVxuICAgICh7fSBhcyBVc2VyKVxuICA7XG5cbiAgY29uc3QgbGlzdEJ5TGF0ZXN0ID0gYXN5bmMgKFxuICAgIHVzZXJuYW1lOiBzdHJpbmcgPSAnJyxcbiAgICBmcm9tOiBudW1iZXIgPSAwLFxuICAgIHRvOiBudW1iZXIgPSAxMCxcbiAgICB1c2VyUHJvcHM6IHN0cmluZ1tdID0gW11cbiAgKTogUHJvbWlzZTxVc2VyW10+ID0+XG4gICAgLy8gSW1wbGVtZW50YXRpb24gaGVyZVxuICAgIFtdXG4gIDtcblxuICBjb25zdCBsaXN0QnlDb25uZWN0aW9uID0gYXN5bmMgKFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDEwLFxuICAgIHVzZXJQcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPFVzZXJbXT4gPT5cbiAgICAvLyBJbXBsZW1lbnRhdGlvbiBoZXJlXG4gICAgW11cbiAgO1xuXG4gIGNvbnN0IGxpc3RCeVJlYWN0aW9ucyA9IGFzeW5jIChcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHJlYWN0aW9uTmFtZXM6IHN0cmluZ1tdLFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDEwLFxuICAgIHByb2ZpbGVQcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPFVzZXJbXT4gPT5cbiAgICAvLyBJbXBsZW1lbnRhdGlvbiBoZXJlXG4gICAgW11cbiAgO1xuXG4gIGNvbnN0IGxpc3RCeVRhZ3MgPSBhc3luYyAoXG4gICAgdXNlcm5hbWU6IHN0cmluZyxcbiAgICB0YWdOYW1lczogc3RyaW5nW10sXG4gICAgZnJvbTogbnVtYmVyID0gMCxcbiAgICB0bzogbnVtYmVyID0gMTAsXG4gICAgcHJvZmlsZVByb3BzOiBzdHJpbmdbXSA9IFtdXG4gICk6IFByb21pc2U8VXNlcltdPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICBbXVxuICA7XG5cbiAgY29uc3QgaXNMb2dnZWRJbiA9ICgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBleHBpcmVzOiBudW1iZXIgPSBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24uZXhwaXJlcycpIGFzIG51bWJlcjtcblxuICAgIGlmKCFleHBpcmVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZXhwaXJlRGF0ZSA9IERhdGVUaW1lLmZyb21NaWxsaXMoZXhwaXJlcyk7XG4gICAgY29uc3QgZXhwaXJlZERpZmY6IG51bWJlciA9IE1hdGgucm91bmQoZXhwaXJlRGF0ZS5kaWZmKERhdGVUaW1lLmxvY2FsKCksICdtaW51dGVzJykudG9PYmplY3QoKS5taW51dGVzKTtcblxuICAgIHJldHVybiBleHBpcmVkRGlmZiA+IDA7XG4gIH07XG5cbiAgY29uc3QgcmVmcmVzaFNlc3Npb25BY3Rpb24gPSBhc3luYyAodG9rZW4/OiBzdHJpbmcsIGV4cGlyZXM6IG51bWJlciA9IDE1KTogUHJvbWlzZTxTZXNzaW9uVHlwZT4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlZnJlc2hTZXNzaW9uKGZsdXgsIHRva2VuLCBleHBpcmVzKTtcbiAgICByZXR1cm4gKHJlc3VsdD8ucmVmcmVzaFNlc3Npb24gfHwge30pIGFzIFNlc3Npb25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25JbiA9IGFzeW5jICh1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBleHBpcmVzOiBudW1iZXIgPSAxNSk6IFByb21pc2U8U2Vzc2lvblR5cGU+ID0+IHtcbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgIGV4cGlyZXM6IHtcbiAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgIHZhbHVlOiBleHBpcmVzXG4gICAgICB9LFxuICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgdHlwZTogJ1N0cmluZyEnLFxuICAgICAgICB2YWx1ZTogcGFzc3dvcmRcbiAgICAgIH0sXG4gICAgICB1c2VybmFtZToge1xuICAgICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgICAgIHZhbHVlOiB1c2VybmFtZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSk6IFByb21pc2U8Rmx1eEFjdGlvbj4gPT4ge1xuICAgICAgLy8gUm9idXN0bHkgZXh0cmFjdCB1c2VycyBmcm9tIHRoZSByZXNwb25zZVxuICAgICAgY29uc3QgdXNlcnMgPSAoZGF0YSBhcyBhbnkpPy51c2VycztcbiAgICAgIGNvbnN0IHNlc3Npb25EYXRhID0gdXNlcnM/LnNpZ25JbiB8fCB7fTtcbiAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbkRhdGEsXG4gICAgICAgIHR5cGU6IFVTRVJfQ09OU1RBTlRTLlNJR05fSU5fU1VDQ0VTU1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBwdWJsaWNNdXRhdGlvbiByZXR1cm5zIHRoZSByZXN1bHQgb2Ygb25TdWNjZXNzIGNhbGxiYWNrLCB3aGljaCBpcyBhIEZsdXhBY3Rpb25cbiAgICAgIGF3YWl0IHB1YmxpY011dGF0aW9uPFVzZXJBcGlSZXN1bHRzVHlwZT4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdzaWduSW4nLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2V4cGlyZXMnLCAnaXNzdWVkJywgJ3Rva2VuJywgJ3VzZXJJZCcsICd1c2VybmFtZSddLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgLy8gUmV0dXJuIHRoZSBzZXNzaW9uIGRhdGEgZnJvbSB0aGUgZmx1eCBzdGF0ZSBzaW5jZSBvblN1Y2Nlc3MgYWxyZWFkeSBwcm9jZXNzZWQgaXRcbiAgICAgIGNvbnN0IHNlc3Npb25EYXRhID0gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uJykgfHwge307XG4gICAgICByZXR1cm4gc2Vzc2lvbkRhdGEgYXMgU2Vzc2lvblR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFVTRVJfQ09OU1RBTlRTLlNJR05fSU5fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaWduT3V0ID0gYXN5bmMgKCk6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgICAvLyBJbXBsZW1lbnRhdGlvbiBoZXJlXG4gICAgdHJ1ZVxuICA7XG5cbiAgY29uc3QgY29uZmlybVNpZ25VcCA9IGFzeW5jIChjb2RlOiBzdHJpbmcsIHR5cGU6ICdlbWFpbCcgfCAncGhvbmUnKTogUHJvbWlzZTxib29sZWFuPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICB0cnVlXG4gIDtcblxuICBjb25zdCBmb3Jnb3RQYXNzd29yZCA9IGFzeW5jICh1c2VybmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICB0cnVlXG4gIDtcblxuICBjb25zdCByZXNldFBhc3N3b3JkID0gYXN5bmMgKFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICBjb2RlOiBzdHJpbmcsXG4gICAgdHlwZTogJ2VtYWlsJyB8ICdwaG9uZSdcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICB0cnVlXG4gIDtcblxuICBjb25zdCB1cGRhdGVQYXNzd29yZCA9IGFzeW5jIChwYXNzd29yZDogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PlxuICAgIC8vIEltcGxlbWVudGF0aW9uIGhlcmVcbiAgICB0cnVlXG4gIDtcblxuICAvLyBSZXR1cm4gdGhlIGFjdGlvbnMgb2JqZWN0IHdpdGggdXBkYXRlIGZ1bmN0aW9ucyBmcm9tIGJhc2UgYWN0aW9uc1xuICByZXR1cm4ge1xuICAgIGFkZCxcbiAgICBjb25maXJtQ29kZSxcbiAgICByZW1vdmUsXG4gICAgc2Vzc2lvbixcbiAgICBpdGVtQnlJZCxcbiAgICBsaXN0QnlMYXRlc3QsXG4gICAgbGlzdEJ5Q29ubmVjdGlvbixcbiAgICBsaXN0QnlSZWFjdGlvbnMsXG4gICAgbGlzdEJ5VGFncyxcbiAgICBpc0xvZ2dlZEluLFxuICAgIHJlZnJlc2hTZXNzaW9uOiByZWZyZXNoU2Vzc2lvbkFjdGlvbixcbiAgICBzaWduSW4sXG4gICAgc2lnbk91dCxcbiAgICBjb25maXJtU2lnblVwLFxuICAgIGZvcmdvdFBhc3N3b3JkLFxuICAgIHJlc2V0UGFzc3dvcmQsXG4gICAgdXBkYXRlUGFzc3dvcmQsXG4gICAgdXBkYXRlVXNlcixcbiAgICB1cGRhdGVQZXJzb25hLFxuICAgIHNpZ25VcCxcbiAgICB1cGRhdGVVc2VyQWRhcHRlcjogdXNlckJhc2UudXBkYXRlQWRhcHRlcixcbiAgICB1cGRhdGVQZXJzb25hQWRhcHRlcjogcGVyc29uYUJhc2UudXBkYXRlQWRhcHRlcixcbiAgICB1cGRhdGVVc2VyQWRhcHRlck9wdGlvbnM6IHVzZXJCYXNlLnVwZGF0ZU9wdGlvbnMsXG4gICAgdXBkYXRlUGVyc29uYUFkYXB0ZXJPcHRpb25zOiBwZXJzb25hQmFzZS51cGRhdGVPcHRpb25zXG4gIH07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxZQUFBQSxNQUFlLFFBRXZCLE9BQVEsd0JBQUFDLE1BQTJCLCtDQUNuQyxPQUFRLHFCQUFBQyxNQUF3Qix5Q0FDaEMsT0FBUSxrQkFBQUMsTUFBcUIseUJBQzdCLE9BQVEsZUFBQUMsRUFBYSxrQkFBQUMsRUFBZ0Isa0JBQUFDLE1BQXFCLGtCQUMxRCxPQUFRLHFCQUFBQyxNQUF3QixnQ0FRaEMsTUFBTUMsRUFBaUMsUUE4Q2pDQyxFQUF1QixDQUFDQyxFQUFnQkMsSUFBaUMsQ0FDN0UsTUFBTUMsRUFBWVYsRUFBa0JRLENBQUssRUFFekMsR0FBR0MsR0FBUyxRQUFVLENBQUNDLEVBQVUsU0FDL0IsTUFBTSxJQUFJLE1BQU0scUNBQXFDLEVBR3ZELE9BQU9BLENBQ1QsRUFFTUMsRUFBMEIsQ0FBQ0gsRUFBZ0JDLElBQW9DVixFQUFxQlMsQ0FBSyxFQTJGbEdJLEVBQW9CLENBQy9CQyxFQUNBSixJQUNnQixDQUVoQixNQUFNSyxFQUFXVCxFQUFrQlEsRUFBTU4sRUFBc0IsQ0FDN0QsUUFBU0UsR0FBUyxZQUNsQixlQUFnQkEsR0FBUyxrQkFDM0IsQ0FBQyxFQUdLTSxFQUFjVixFQUFrQlEsRUFBTUYsRUFBeUIsQ0FDbkUsUUFBU0YsR0FBUyxlQUNsQixlQUFnQkEsR0FBUyxxQkFDM0IsQ0FBQyxFQWlVRCxNQUFPLENBQ0wsSUEvVFUsTUFBT08sRUFBMEJDLEVBQXNCLENBQUMsSUFBcUIsQ0FDdkYsTUFBTUMsRUFBaUIsQ0FDckIsS0FBTSxDQUNKLEtBQU0sWUFDTixNQUFPSixFQUFTLFVBQVVFLENBQVMsQ0FDckMsQ0FDRixFQUVNRyxFQUFhQyxHQUFrRCxDQUNuRSxLQUFNLENBQUMsTUFBTyxDQUFDLElBQUFDLEVBQU0sQ0FBQyxDQUFDLENBQUMsRUFBSUQsRUFDNUIs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c0IsQ0FBQyxJQUFxQixDQUMxRixNQUFNQyxFQUFpQixDQUNyQixLQUFNLENBQ0osS0FBTSxhQUNOLE1BQU9KLEVBQVMsVUFBVUUsQ0FBUyxDQUNyQyxDQUNGLEVBRU1HLEVBQWFDLEdBQWtELENBQ25FLEtBQU0sQ0FBQyxNQUFPLENBQUMsT0FBQXVCLEVBQVMsQ0FBQyxDQUFDLENBQUMsRUFBSXZCLEVBQy9CLE9BQU9QLEVBQUssU0FBUyxDQUNuQixLQUFNOEIsRUFDTixLQUFNMUMsRUFBZSxlQUN2QixDQUFDLENBQ0gsRUFFTSxDQUFDLE1BQU8sQ0FBQyxPQUFRcUIsRUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFJLE1BQU1uQixFQUN6Q1UsRUFDQSxTQUNBUCxFQUNBWSxFQUNBLENBQ0UsUUFDQSxPQUNBLFVBQ0EsTUFDQSxZQUNBLFNBQ0EsYUFDQSxXQUNBLFdBQ0EsV0FDQSxZQUNBLGNBQ0EsV0FDQSxPQUNBLFFBQ0EseUJBQ0EsV0FDQSxhQUNBLFNBQ0EsV0FDQSxHQUFHRCxDQUNMLEVBQ0EsQ0FBQyxVQUFBRSxDQUFTLENBQ1osRUFDQSxPQUFPRyxDQUNULEVBcVBFLGtCQUFtQlIsRUFBUyxjQUM1QixxQkFBc0JDLEVBQVksY0FDbEMseUJBQTBCRCxFQUFTLGNBQ25DLDRCQUE2QkMsRUFBWSxhQUMzQyxDQUNGIiwKICAibmFtZXMiOiBbIkRhdGVUaW1lIiwgInZhbGlkYXRlUGVyc29uYUlucHV0IiwgInZhbGlkYXRlVXNlcklucHV0IiwgIlVTRVJfQ09OU1RBTlRTIiwgImFwcE11dGF0aW9uIiwgInB1YmxpY011dGF0aW9uIiwgInJlZnJlc2hTZXNzaW9uIiwgImNyZWF0ZUJhc2VBY3Rpb25zIiwgIkRBVEFfVFlQRSIsICJkZWZhdWx0VXNlclZhbGlkYXRvciIsICJpbnB1dCIsICJvcHRpb25zIiwgInZhbGlkYXRlZCIsICJkZWZhdWx0UGVyc29uYVZhbGlkYXRvciIsICJjcmVhdGVVc2VyQWN0aW9ucyIsICJmbHV4IiwgInVzZXJCYXNlIiwgInBlcnNvbmFCYXNlIiwgInVzZXJJbnB1dCIsICJ1c2VyUHJvcHMiLCAicXVlcnlWYXJpYWJsZXMiLCAib25TdWNjZXNzIiwgImRhdGEiLCAiYWRkIiwgInVzZXIiLCAidHlwZSIsICJjb2RlIiwgInVzZXJJZCIsICJ1c2VybmFtZSIsICJmcm9tIiwgInRvIiwgInJlYWN0aW9uTmFtZXMiLCAicHJvZmlsZVByb3BzIiwgInRhZ05hbWVzIiwgImV4cGlyZXMiLCAiZXhwaXJlRGF0ZSIsICJ0b2tlbiIsICJwYXNzd29yZCIsICJzZXNzaW9uRGF0YSIsICJlcnJvciIsICJuZXdQYXNzd29yZCIsICJ1cGRhdGUiLCAicGVyc29uYUlucHV0IiwgInVwZGF0ZVBlcnNvbmEiLCAicGVyc29uYSIsICJzaWduVXAiXQp9Cg==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
import Sockette from 'sockette';
|
|
6
|
+
import type { FluxFramework } from '@nlabs/arkhamjs';
|
|
7
|
+
interface WebSocketMessage {
|
|
8
|
+
type: string;
|
|
9
|
+
payload?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface WebsocketActions {
|
|
12
|
+
wsSend: (message: WebSocketMessage) => void;
|
|
13
|
+
onReceive: (event: any) => void;
|
|
14
|
+
onClose: (event: any) => void;
|
|
15
|
+
onError: (event: any) => void;
|
|
16
|
+
onOpen: (event: any) => void;
|
|
17
|
+
wsInit: (token?: string) => Sockette | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Factory function to create WebsocketActions.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* // Basic usage
|
|
24
|
+
* const websocketActions = createWebsocketActions(flux);
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // Initialize websocket connection
|
|
28
|
+
* const ws = websocketActions.wsInit(token);
|
|
29
|
+
*/
|
|
30
|
+
export declare const createWebsocketActions: (flux: FluxFramework) => WebsocketActions;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import g from"sockette";import{Config as l}from"../../config";import{WEBSOCKET_CONSTANTS as a}from"../../stores/websocketStore";const y=n=>{let o;const k=e=>{o&&o.json(e)},r=e=>{const{data:t,timeStamp:s}=e,c=JSON.parse(t);n.dispatch({data:c,timestamp:s,type:a.MESSAGE})},i=e=>{const{timeStamp:t}=e;n.dispatch({timestamp:t,type:a.CLOSE})},m=e=>{const{timeStamp:t}=e;n.dispatch({timestamp:t,type:a.ERROR})},p=e=>{const{timeStamp:t}=e;n.dispatch({timestamp:t,type:a.OPEN})};return{wsSend:k,onReceive:r,onClose:i,onError:m,onOpen:p,wsInit:e=>{if(o)return o;const t=l.get("app.urls.websocket"),s=e||n.getState("user.session.token");if(s){const c=`${t}?token=${s}`;return o=new g(c,{maxAttempts:5,onclose:i,onerror:m,onmessage:r,onopen:p,timeout:6e4}),o}return null}}};export{y as createWebsocketActions};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvd2Vic29ja2V0QWN0aW9ucy93ZWJzb2NrZXRBY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IFNvY2tldHRlIGZyb20gJ3NvY2tldHRlJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQge1dFQlNPQ0tFVF9DT05TVEFOVFN9IGZyb20gJy4uLy4uL3N0b3Jlcy93ZWJzb2NrZXRTdG9yZSc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuXG5pbnRlcmZhY2UgV2ViU29ja2V0TWVzc2FnZSB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNvY2tldEFjdGlvbnMge1xuICB3c1NlbmQ6IChtZXNzYWdlOiBXZWJTb2NrZXRNZXNzYWdlKSA9PiB2b2lkO1xuICBvblJlY2VpdmU6IChldmVudDogYW55KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgb25FcnJvcjogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIG9uT3BlbjogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIHdzSW5pdDogKHRva2VuPzogc3RyaW5nKSA9PiBTb2NrZXR0ZSB8IG51bGw7XG59XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgV2Vic29ja2V0QWN0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2VcbiAqIGNvbnN0IHdlYnNvY2tldEFjdGlvbnMgPSBjcmVhdGVXZWJzb2NrZXRBY3Rpb25zKGZsdXgpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBJbml0aWFsaXplIHdlYnNvY2tldCBjb25uZWN0aW9uXG4gKiBjb25zdCB3cyA9IHdlYnNvY2tldEFjdGlvbnMud3NJbml0KHRva2VuKTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVdlYnNvY2tldEFjdGlvbnMgPSAoZmx1eDogRmx1eEZyYW1ld29yayk6IFdlYnNvY2tldEFjdGlvbnMgPT4ge1xuICBsZXQgd3M6IFNvY2tldHRlO1xuXG4gIGNvbnN0IHdzU2VuZCA9IChtZXNzYWdlOiBXZWJTb2NrZXRNZXNzYWdlKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ3dlYnNvY2tldHM6Om9uT3Blbjo6bWVzc2FnZScsIHt3cywgbWVzc2FnZX0pO1xuICAgIGlmKHdzKSB7XG4gICAgICB3cy5qc29uKG1lc3NhZ2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvblJlY2VpdmUgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIGNvbnN0IHtkYXRhOiBldmVudERhdGEsIHRpbWVTdGFtcDogdGltZXN0YW1wfSA9IGV2ZW50O1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50RGF0YSk7XG4gICAgY29uc29sZS5sb2coJ3dlYnNvY2tldHM6Om9uUmVjaWV2ZTo6ZGF0YScsIGRhdGEpO1xuICAgIGZsdXguZGlzcGF0Y2goe2RhdGEsIHRpbWVzdGFtcCwgdHlwZTogV0VCU09DS0VUX0NPTlNUQU5UUy5NRVNTQUdFfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZSA9IChldmVudDogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coJ3dlYnNvY2tldHM6Om9uT3Blbjo6bWVzc2FnZScsIGV2ZW50KTtcbiAgICBjb25zdCB7dGltZVN0YW1wOiB0aW1lc3RhbXB9ID0gZXZlbnQ7XG4gICAgZmx1eC5kaXNwYXRjaCh7dGltZXN0YW1wLCB0eXBlOiBXRUJTT0NLRVRfQ09OU1RBTlRTLkNMT1NFfSk7XG4gIH07XG5cbiAgY29uc3Qgb25FcnJvciA9IChldmVudDogYW55KSA9PiB7XG4gICAgY29uc3Qge3RpbWVTdGFtcDogdGltZXN0YW1wfSA9IGV2ZW50O1xuICAgIGZsdXguZGlzcGF0Y2goe3RpbWVzdGFtcCwgdHlwZTogV0VCU09DS0VUX0NPTlNUQU5UUy5FUlJPUn0pO1xuICB9O1xuXG4gIGNvbnN0IG9uT3BlbiA9IChldmVudDogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coJ3dlYnNvY2tldHM6Om9uT3Blbjo6ZXZlbnQnLCBldmVudCk7XG4gICAgY29uc3Qge3RpbWVTdGFtcDogdGltZXN0YW1wfSA9IGV2ZW50O1xuICAgIGZsdXguZGlzcGF0Y2goe3RpbWVzdGFtcCwgdHlwZTogV0VCU09DS0VUX0NPTlNUQU5UUy5PUEVOfSk7XG4gIH07XG5cbiAgY29uc3Qgd3NJbml0ID0gKHRva2VuPzogc3RyaW5nKTogU29ja2V0dGUgfCBudWxsID0+IHtcbiAgICBpZih3cykge1xuICAgICAgcmV0dXJuIHdzO1xuICAgIH1cblxuICAgIGNvbnN0IHdlYnNvY2tldFVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnYXBwLnVybHMud2Vic29ja2V0Jyk7XG4gICAgY29uc3Qgc2Vzc2lvblRva2VuOiBzdHJpbmcgPSB0b2tlbiB8fCBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKTtcblxuICAgIGlmKHNlc3Npb25Ub2tlbikge1xuICAgICAgY29uc3QgdXJsOiBzdHJpbmcgPSBgJHt3ZWJzb2NrZXRVcmx9P3Rva2VuPSR7c2Vzc2lvblRva2VufWA7XG5cbiAgICAgIHdzID0gbmV3IFNvY2tldHRlKHVybCwge1xuICAgICAgICBtYXhBdHRlbXB0czogNSxcbiAgICAgICAgb25jbG9zZTogb25DbG9zZSxcbiAgICAgICAgb25lcnJvcjogb25FcnJvcixcbiAgICAgICAgb25tZXNzYWdlOiBvblJlY2VpdmUsXG4gICAgICAgIG9ub3Blbjogb25PcGVuLFxuICAgICAgICB0aW1lb3V0OiA2MDAwMFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB3cztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIGFjdGlvbnMgb2JqZWN0XG4gIHJldHVybiB7XG4gICAgd3NTZW5kLFxuICAgIG9uUmVjZWl2ZSxcbiAgICBvbkNsb3NlLFxuICAgIG9uRXJyb3IsXG4gICAgb25PcGVuLFxuICAgIHdzSW5pdFxuICB9O1xufTtcblxuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBT0EsTUFBYyxXQUVyQixPQUFRLFVBQUFDLE1BQWEsZUFDckIsT0FBUSx1QkFBQUMsTUFBMEIsOEJBNkIzQixNQUFNQyxFQUEwQkMsR0FBMEMsQ0FDL0UsSUFBSUMsRUFFSixNQUFNQyxFQUFVQyxHQUE4QixDQUV6Q0YsR0FDREEsRUFBRyxLQUFLRSxDQUFPLENBRW5CLEVBRU1DLEVBQWFDLEdBQWUsQ0FDaEMsS0FBTSxDQUFDLEtBQU1DLEVBQVcsVUFBV0MsQ0FBUyxFQUFJRixFQUMxQ0csRUFBTyxLQUFLLE1BQU1GLENBQVMsRUFFakNOLEVBQUssU0FBUyxDQUFDLEtBQUFRLEVBQU0sVUFBQUQsRUFBVyxLQUFNVCxFQUFvQixPQUFPLENBQUMsQ0FDcEUsRUFFTVcsRUFBV0osR0FBZSxDQUU5QixLQUFNLENBQUMsVUFBV0UsQ0FBUyxFQUFJRixFQUMvQkwsRUFBSyxTQUFTLENBQUMsVUFBQU8sRUFBVyxLQUFNVCxFQUFvQixLQUFLLENBQUMsQ0FDNUQsRUFFTVksRUFBV0wsR0FBZSxDQUM5QixLQUFNLENBQUMsVUFBV0UsQ0FBUyxFQUFJRixFQUMvQkwsRUFBSyxTQUFTLENBQUMsVUFBQU8sRUFBVyxLQUFNVCxFQUFvQixLQUFLLENBQUMsQ0FDNUQsRUFFTWEsRUFBVU4sR0FBZSxDQUU3QixLQUFNLENBQUMsVUFBV0UsQ0FBUyxFQUFJRixFQUMvQkwsRUFBSyxTQUFTLENBQUMsVUFBQU8sRUFBVyxLQUFNVCxFQUFvQixJQUFJLENBQUMsQ0FDM0QsRUE2QkEsTUFBTyxDQUNMLE9BQUFJLEVBQ0EsVUFBQUUsRUFDQSxRQUFBSyxFQUNBLFFBQUFDLEVBQ0EsT0FBQUMsRUFDQSxPQWpDY0MsR0FBb0MsQ0FDbEQsR0FBR1gsRUFDRCxPQUFPQSxFQUdULE1BQU1ZLEVBQXVCaEIsRUFBTyxJQUFJLG9CQUFvQixFQUN0RGlCLEVBQXVCRixHQUFTWixFQUFLLFNBQVMsb0JBQW9CLEVBRXhFLEdBQUdjLEVBQWMsQ0FDZixNQUFNQyxFQUFjLEdBQUdGLENBQVksVUFBVUMsQ0FBWSxHQUV6RCxPQUFBYixFQUFLLElBQUlMLEVBQVNtQixFQUFLLENBQ3JCLFlBQWEsRUFDYixRQUFTTixFQUNULFFBQVNDLEVBQ1QsVUFBV04sRUFDWCxPQUFRTyxFQUNSLFFBQVMsR0FDWCxDQUFDLEVBRU1WLENBQ1QsQ0FFQSxPQUFPLElBQ1QsQ0FVQSxDQUNGIiwKICAibmFtZXMiOiBbIlNvY2tldHRlIiwgIkNvbmZpZyIsICJXRUJTT0NLRVRfQ09OU1RBTlRTIiwgImNyZWF0ZVdlYnNvY2tldEFjdGlvbnMiLCAiZmx1eCIsICJ3cyIsICJ3c1NlbmQiLCAibWVzc2FnZSIsICJvblJlY2VpdmUiLCAiZXZlbnQiLCAiZXZlbnREYXRhIiwgInRpbWVzdGFtcCIsICJkYXRhIiwgIm9uQ2xvc2UiLCAib25FcnJvciIsICJvbk9wZW4iLCAidG9rZW4iLCAid2Vic29ja2V0VXJsIiwgInNlc3Npb25Ub2tlbiIsICJ1cmwiXQp9Cg==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface DocumentType {
|
|
2
|
+
_from?: string;
|
|
3
|
+
_id?: string;
|
|
4
|
+
_key?: string;
|
|
5
|
+
_oldRev?: string;
|
|
6
|
+
_rev?: string;
|
|
7
|
+
_to?: string;
|
|
8
|
+
added?: number;
|
|
9
|
+
id?: string;
|
|
10
|
+
modified?: number;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
export declare class ArangoValidationError extends Error {
|
|
14
|
+
field?: string | undefined;
|
|
15
|
+
constructor(message: string, field?: string | undefined);
|
|
16
|
+
}
|
|
17
|
+
export declare const validateDocumentInput: (doc: unknown) => DocumentType;
|
|
18
|
+
export declare const formatDocumentOutput: (doc: DocumentType) => DocumentType;
|
|
19
|
+
export declare const parseDocument: (doc: DocumentType) => DocumentType;
|
|
20
|
+
export declare const removeEmptyKeys: <T extends Record<string, any>>(obj: T) => T;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{parseArangoId as c,parseId as p,parseNum as d}from"@nlabs/utils";import{z as t}from"zod";class i extends Error{constructor(r,o){super(r);this.field=o;this.name="ArangoValidationError"}}const m=t.object({_from:t.string().optional(),_id:t.string().optional(),_key:t.string().optional(),_oldRev:t.string().optional(),_rev:t.string().optional(),_to:t.string().optional(),added:t.number().optional(),id:t.string().optional(),modified:t.number().optional()}).passthrough(),D=n=>{try{return m.parse(n)}catch(e){if(e instanceof t.ZodError){const r=e.issues.map(o=>`${o.path.join(".")}: ${o.message}`).join(", ");throw new i(`Document validation failed: ${r}`)}throw e}},T=n=>n,_=n=>{try{return u(n)}catch(e){throw e instanceof i?e:new i(`Document parsing failed: ${e instanceof Error?e.message:"Unknown error"}`)}},u=n=>{const{_id:e,_key:r,added:o,id:s,modified:a}=n;return f({...n,...(e||s)&&{id:c(e||s||"")},...r&&{_key:p(r||"")},...o!==void 0&&{added:d(o,13)},...a!==void 0&&{modified:d(a,13)}})},f=n=>{const e={};for(const[r,o]of Object.entries(n))o!=null&&o!==""&&(e[r]=o);return e};export{i as ArangoValidationError,T as formatDocumentOutput,_ as parseDocument,f as removeEmptyKeys,D as validateDocumentInput};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2FyYW5nb0FkYXB0ZXIvYXJhbmdvQWRhcHRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZUlkLCBwYXJzZU51bX0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFR5cGUge1xuICBfZnJvbT86IHN0cmluZztcbiAgX2lkPzogc3RyaW5nO1xuICBfa2V5Pzogc3RyaW5nO1xuICBfb2xkUmV2Pzogc3RyaW5nO1xuICBfcmV2Pzogc3RyaW5nO1xuICBfdG8/OiBzdHJpbmc7XG4gIGFkZGVkPzogbnVtYmVyO1xuICBpZD86IHN0cmluZztcbiAgbW9kaWZpZWQ/OiBudW1iZXI7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEFyYW5nb1ZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQXJhbmdvVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuXG5jb25zdCBEb2N1bWVudElucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBfZnJvbTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9yZXY6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3RvOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFkZGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1vZGlmaWVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKClcbn0pLnBhc3N0aHJvdWdoKCk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZURvY3VtZW50SW5wdXQgPSAoZG9jOiB1bmtub3duKTogRG9jdW1lbnRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBEb2N1bWVudElucHV0U2NoZW1hLnBhcnNlKGRvYyk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBEb2N1bWVudFR5cGU7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0gZXJyb3IuaXNzdWVzLm1hcCgoZSkgPT4gYCR7ZS5wYXRoLmpvaW4oJy4nKX06ICR7ZS5tZXNzYWdlfWApLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgQXJhbmdvVmFsaWRhdGlvbkVycm9yKGBEb2N1bWVudCB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXREb2N1bWVudE91dHB1dCA9IChkb2M6IERvY3VtZW50VHlwZSk6IERvY3VtZW50VHlwZSA9PiBkb2M7XG5cbmV4cG9ydCBjb25zdCBwYXJzZURvY3VtZW50ID0gKGRvYzogRG9jdW1lbnRUeXBlKTogRG9jdW1lbnRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtRG9jdW1lbnRUcmFuc2Zvcm1hdGlvbihkb2MpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIEFyYW5nb1ZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBBcmFuZ29WYWxpZGF0aW9uRXJyb3IoYERvY3VtZW50IHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtRG9jdW1lbnRUcmFuc2Zvcm1hdGlvbiA9IChkb2M6IERvY3VtZW50VHlwZSk6IERvY3VtZW50VHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBfaWQsXG4gICAgX2tleSxcbiAgICBhZGRlZCxcbiAgICBpZCxcbiAgICBtb2RpZmllZFxuICB9ID0gZG9jO1xuXG4gIGNvbnN0IHRyYW5zZm9ybWVkID0gcmVtb3ZlRW1wdHlLZXlzKHtcbiAgICAuLi5kb2MsXG4gICAgLi4uKChfaWQgfHwgaWQpICYmIHtpZDogcGFyc2VBcmFuZ29JZChfaWQgfHwgaWQgfHwgJycpfSksXG4gICAgLi4uKF9rZXkgJiYge19rZXk6IHBhcnNlSWQoX2tleSB8fCAnJyl9KSxcbiAgICAuLi4oYWRkZWQgIT09IHVuZGVmaW5lZCAmJiB7YWRkZWQ6IHBhcnNlTnVtKGFkZGVkLCAxMyl9KSxcbiAgICAuLi4obW9kaWZpZWQgIT09IHVuZGVmaW5lZCAmJiB7bW9kaWZpZWQ6IHBhcnNlTnVtKG1vZGlmaWVkLCAxMyl9KVxuICB9KTtcblxuICByZXR1cm4gdHJhbnNmb3JtZWQ7XG59O1xuXG4vLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIHJlbW92ZSBlbXB0eSBrZXlzIGZyb20gb2JqZWN0c1xuZXhwb3J0IGNvbnN0IHJlbW92ZUVtcHR5S2V5cyA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ob2JqOiBUKTogVCA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9IGFzIFQ7XG4gIGZvcihjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICByZXN1bHRba2V5IGFzIGtleW9mIFRdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE9BQVEsaUJBQUFBLEVBQWUsV0FBQUMsRUFBUyxZQUFBQyxNQUFlLGVBQy9DLE9BQVEsS0FBQUMsTUFBUSxNQWVULE1BQU1DLFVBQThCLEtBQU0sQ0FDL0MsWUFBWUMsRUFBd0JDLEVBQWdCLENBQ2xELE1BQU1ELENBQU8sRUFEcUIsV0FBQUMsRUFFbEMsS0FBSyxLQUFPLHVCQUNkLENBQ0YsQ0FFQSxNQUFNQyxFQUFzQkosRUFBRSxPQUFPLENBQ25DLE1BQU9BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDM0IsSUFBS0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUN6QixLQUFNQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzFCLFFBQVNBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDN0IsS0FBTUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUMxQixJQUFLQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQ3pCLE1BQU9BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDM0IsR0FBSUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUN4QixTQUFVQSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQ2hDLENBQUMsRUFBRSxZQUFZLEVBRUZLLEVBQXlCQyxHQUErQixDQUNuRSxHQUFJLENBRUYsT0FEa0JGLEVBQW9CLE1BQU1FLENBQUcsQ0FFakQsT0FBUUMsRUFBTyxDQUNiLEdBQUdBLGFBQWlCUCxFQUFFLFNBQVUsQ0FDOUIsTUFBTVEsRUFBY0QsRUFBTSxPQUFPLElBQUtFLEdBQU0sR0FBR0EsRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUtBLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQzFGLE1BQU0sSUFBSVIsRUFBc0IsK0JBQStCTyxDQUFXLEVBQUUsQ0FDOUUsQ0FDQSxNQUFNRCxDQUNSLENBQ0YsRUFFYUcsRUFBd0JKLEdBQW9DQSxFQUU1REssRUFBaUJMLEdBQW9DLENBQ2hFLEdBQUksQ0FFRixPQURlTSxFQUE4Qk4sQ0FBRyxDQUVsRCxPQUFRQyxFQUFPLENBQ2IsTUFBR0EsYUFBaUJOLEVBQ1pNLEVBRUYsSUFBSU4sRUFBc0IsNEJBQTRCTSxhQUFpQixNQUFRQSxFQUFNLFFBQVUsZUFBZSxFQUFFLENBQ3hILENBQ0YsRUFFTUssRUFBaUNOLEdBQW9DLENBQ3pFLEtBQU0sQ0FDSixJQUFBTyxFQUNBLEtBQUFDLEVBQ0EsTUFBQUMsRUFDQSxHQUFBQyxFQUNBLFNBQUFDLENBQ0YsRUFBSVgsRUFVSixPQVJvQlksRUFBZ0IsQ0FDbEMsR0FBR1osRUFDSCxJQUFLTyxHQUFPRyxJQUFPLENBQUMsR0FBSW5CLEVBQWNnQixHQUFPRyxHQUFNLEVBQUUsQ0FBQyxFQUN0RCxHQUFJRixHQUFRLENBQUMsS0FBTWhCLEVBQVFnQixHQUFRLEVBQUUsQ0FBQyxFQUN0QyxHQUFJQyxJQUFVLFFBQWEsQ0FBQyxNQUFPaEIsRUFBU2dCLEVBQU8sRUFBRSxDQUFDLEVBQ3RELEdBQUlFLElBQWEsUUFBYSxDQUFDLFNBQVVsQixFQUFTa0IsRUFBVSxFQUFFLENBQUMsQ0FDakUsQ0FBQyxDQUdILEVBR2FDLEVBQWtEQyxHQUFjLENBQzNFLE1BQU1DLEVBQVMsQ0FBQyxFQUNoQixTQUFVLENBQUNDLEVBQUtDLENBQUssSUFBSyxPQUFPLFFBQVFILENBQUcsRUFDaEJHLEdBQVUsTUFBUUEsSUFBVSxLQUNwREYsRUFBT0MsQ0FBYyxFQUFJQyxHQUc3QixPQUFPRixDQUNUIiwKICAibmFtZXMiOiBbInBhcnNlQXJhbmdvSWQiLCAicGFyc2VJZCIsICJwYXJzZU51bSIsICJ6IiwgIkFyYW5nb1ZhbGlkYXRpb25FcnJvciIsICJtZXNzYWdlIiwgImZpZWxkIiwgIkRvY3VtZW50SW5wdXRTY2hlbWEiLCAidmFsaWRhdGVEb2N1bWVudElucHV0IiwgImRvYyIsICJlcnJvciIsICJmaWVsZEVycm9ycyIsICJlIiwgImZvcm1hdERvY3VtZW50T3V0cHV0IiwgInBhcnNlRG9jdW1lbnQiLCAicGVyZm9ybURvY3VtZW50VHJhbnNmb3JtYXRpb24iLCAiX2lkIiwgIl9rZXkiLCAiYWRkZWQiLCAiaWQiLCAibW9kaWZpZWQiLCAicmVtb3ZlRW1wdHlLZXlzIiwgIm9iaiIsICJyZXN1bHQiLCAia2V5IiwgInZhbHVlIl0KfQo=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface ContentType {
|
|
2
|
+
_id?: string;
|
|
3
|
+
_key?: string;
|
|
4
|
+
contentId?: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
key: string;
|
|
7
|
+
locale: 'en' | 'es' | 'fr' | 'de' | 'pt' | 'it';
|
|
8
|
+
content: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
category?: string;
|
|
11
|
+
isActive?: boolean;
|
|
12
|
+
userId?: string;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}
|
|
15
|
+
export interface ContentInputType {
|
|
16
|
+
contentId?: string;
|
|
17
|
+
key: string;
|
|
18
|
+
locale?: 'en' | 'es' | 'fr' | 'de' | 'pt' | 'it';
|
|
19
|
+
content: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
category?: string;
|
|
22
|
+
isActive?: boolean;
|
|
23
|
+
[key: string]: any;
|
|
24
|
+
}
|
|
25
|
+
export declare class ContentValidationError extends Error {
|
|
26
|
+
field?: string | undefined;
|
|
27
|
+
constructor(message: string, field?: string | undefined);
|
|
28
|
+
}
|
|
29
|
+
export declare const parseContent: (content: ContentType) => ContentType;
|
|
30
|
+
export declare const parseContentInput: (content: ContentInputType) => ContentInputType;
|
|
31
|
+
export declare const parseContentFromDb: (content: ContentType) => ContentType;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{parseArangoId as f,parseId as l,parseString as r}from"@nlabs/utils";import{z as t}from"zod";import{parseDocument as C,removeEmptyKeys as b}from"../arangoAdapter/arangoAdapter";class m extends Error{constructor(n,s){super(n);this.field=s;this.name="ContentValidationError"}}const I=t.object({contentId:t.string().optional(),key:t.string().min(1,"Key is required").max(200,"Key must be less than 200 characters"),locale:t.enum(["en","es","fr","de","pt","it"],{message:"Locale must be one of: en, es, fr, de, pt, it"}),content:t.string().min(1,"Content is required").max(1e4,"Content must be less than 10000 characters"),description:t.string().max(500,"Description must be less than 500 characters").optional(),category:t.string().max(100,"Category must be less than 100 characters").optional(),isActive:t.boolean().optional(),userId:t.string().optional()}),x=t.object({contentId:t.string().optional(),key:t.string().min(1,"Key is required").max(200,"Key must be less than 200 characters"),locale:t.enum(["en","es","fr","de","pt","it"],{message:"Locale must be one of: en, es, fr, de, pt, it"}).optional(),content:t.string().min(1,"Content is required").max(1e4,"Content must be less than 10000 characters"),description:t.string().max(500,"Description must be less than 500 characters").optional(),category:t.string().max(100,"Category must be less than 100 characters").optional(),isActive:t.boolean().optional()}),A=o=>{try{return I.parse(o)}catch(e){if(e instanceof t.ZodError){const n=e.issues[0]?.path.join("."),s=e.issues[0]?.message||"Validation failed";throw new m(s,n)}throw e}},E=o=>{try{return x.parse(o)}catch(e){if(e instanceof t.ZodError){const n=e.issues[0]?.path.join("."),s=e.issues[0]?.message||"Validation failed";throw new m(s,n)}throw e}},T=o=>{const{_id:e,_key:n,contentId:s,id:i,key:g,locale:y,content:u,description:a,category:c,isActive:p,userId:d}=o,h={...C(o),...(n||s)&&{contentId:l(n||s||"")},...(e||i||n||s)&&{id:f(e||i||`content/${n||s}`)},key:r(g,200),locale:y,content:r(u,1e4),...a&&{description:r(a,500)},...c&&{category:r(c,100)},...p!==void 0&&{isActive:p},...d&&{userId:l(d)}};return b(h)},K=o=>T(o);export{m as ContentValidationError,A as parseContent,K as parseContentFromDb,E as parseContentInput};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbnRlbnRBZGFwdGVyL2NvbnRlbnRBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtwYXJzZURvY3VtZW50LCByZW1vdmVFbXB0eUtleXN9IGZyb20gJy4uL2FyYW5nb0FkYXB0ZXIvYXJhbmdvQWRhcHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudFR5cGUge1xuICBfaWQ/OiBzdHJpbmc7XG4gIF9rZXk/OiBzdHJpbmc7XG4gIGNvbnRlbnRJZD86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuICBsb2NhbGU6ICdlbicgfCAnZXMnIHwgJ2ZyJyB8ICdkZScgfCAncHQnIHwgJ2l0JztcbiAgY29udGVudDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgdXNlcklkPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudElucHV0VHlwZSB7XG4gIGNvbnRlbnRJZD86IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIGxvY2FsZT86ICdlbicgfCAnZXMnIHwgJ2ZyJyB8ICdkZScgfCAncHQnIHwgJ2l0JztcbiAgY29udGVudDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY2F0ZWdvcnk/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgQ29udGVudFZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29udGVudFZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgY29udGVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29udGVudElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleTogei5zdHJpbmcoKS5taW4oMSwgJ0tleSBpcyByZXF1aXJlZCcpLm1heCgyMDAsICdLZXkgbXVzdCBiZSBsZXNzIHRoYW4gMjAwIGNoYXJhY3RlcnMnKSxcbiAgbG9jYWxlOiB6LmVudW0oWydlbicsICdlcycsICdmcicsICdkZScsICdwdCcsICdpdCddLCB7XG4gICAgbWVzc2FnZTogJ0xvY2FsZSBtdXN0IGJlIG9uZSBvZjogZW4sIGVzLCBmciwgZGUsIHB0LCBpdCdcbiAgfSksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkubWluKDEsICdDb250ZW50IGlzIHJlcXVpcmVkJykubWF4KDEwMDAwLCAnQ29udGVudCBtdXN0IGJlIGxlc3MgdGhhbiAxMDAwMCBjaGFyYWN0ZXJzJyksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm1heCg1MDAsICdEZXNjcmlwdGlvbiBtdXN0IGJlIGxlc3MgdGhhbiA1MDAgY2hhcmFjdGVycycpLm9wdGlvbmFsKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm1heCgxMDAsICdDYXRlZ29yeSBtdXN0IGJlIGxlc3MgdGhhbiAxMDAgY2hhcmFjdGVycycpLm9wdGlvbmFsKCksXG4gIGlzQWN0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB1c2VySWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5cbmNvbnN0IGNvbnRlbnRJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29udGVudElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleTogei5zdHJpbmcoKS5taW4oMSwgJ0tleSBpcyByZXF1aXJlZCcpLm1heCgyMDAsICdLZXkgbXVzdCBiZSBsZXNzIHRoYW4gMjAwIGNoYXJhY3RlcnMnKSxcbiAgbG9jYWxlOiB6LmVudW0oWydlbicsICdlcycsICdmcicsICdkZScsICdwdCcsICdpdCddLCB7XG4gICAgbWVzc2FnZTogJ0xvY2FsZSBtdXN0IGJlIG9uZSBvZjogZW4sIGVzLCBmciwgZGUsIHB0LCBpdCdcbiAgfSkub3B0aW9uYWwoKSxcbiAgY29udGVudDogei5zdHJpbmcoKS5taW4oMSwgJ0NvbnRlbnQgaXMgcmVxdWlyZWQnKS5tYXgoMTAwMDAsICdDb250ZW50IG11c3QgYmUgbGVzcyB0aGFuIDEwMDAwIGNoYXJhY3RlcnMnKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkubWF4KDUwMCwgJ0Rlc2NyaXB0aW9uIG11c3QgYmUgbGVzcyB0aGFuIDUwMCBjaGFyYWN0ZXJzJykub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkubWF4KDEwMCwgJ0NhdGVnb3J5IG11c3QgYmUgbGVzcyB0aGFuIDEwMCBjaGFyYWN0ZXJzJykub3B0aW9uYWwoKSxcbiAgaXNBY3RpdmU6IHouYm9vbGVhbigpLm9wdGlvbmFsKClcbn0pO1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb250ZW50ID0gKGNvbnRlbnQ6IENvbnRlbnRUeXBlKTogQ29udGVudFR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IGNvbnRlbnRTY2hlbWEucGFyc2UoY29udGVudCk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBDb250ZW50VHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGQgPSBlcnJvci5pc3N1ZXNbMF0/LnBhdGguam9pbignLicpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLmlzc3Vlc1swXT8ubWVzc2FnZSB8fCAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSwgZmllbGQpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudElucHV0ID0gKGNvbnRlbnQ6IENvbnRlbnRJbnB1dFR5cGUpOiBDb250ZW50SW5wdXRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBjb250ZW50SW5wdXRTY2hlbWEucGFyc2UoY29udGVudCk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBDb250ZW50SW5wdXRUeXBlO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZCA9IGVycm9yLmlzc3Vlc1swXT8ucGF0aC5qb2luKCcuJyk7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IuaXNzdWVzWzBdPy5tZXNzYWdlIHx8ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudFZhbGlkYXRpb25FcnJvcihtZXNzYWdlLCBmaWVsZCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtQ29udGVudFRyYW5zZm9ybWF0aW9uID0gKGNvbnRlbnQ6IENvbnRlbnRUeXBlKTogQ29udGVudFR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgY29udGVudElkLFxuICAgIGlkLFxuICAgIGtleSxcbiAgICBsb2NhbGUsXG4gICAgY29udGVudDogY29udGVudFRleHQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgY2F0ZWdvcnksXG4gICAgaXNBY3RpdmUsXG4gICAgdXNlcklkXG4gIH0gPSBjb250ZW50O1xuXG4gIGNvbnN0IHRyYW5zZm9ybWVkID0ge1xuICAgIC4uLnBhcnNlRG9jdW1lbnQoY29udGVudCksXG4gICAgLi4uKChfa2V5IHx8IGNvbnRlbnRJZCkgJiYge2NvbnRlbnRJZDogcGFyc2VJZChfa2V5IHx8IGNvbnRlbnRJZCB8fCAnJyl9KSxcbiAgICAuLi4oKF9pZCB8fCBpZCB8fCBfa2V5IHx8IGNvbnRlbnRJZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKF9pZCB8fCBpZCB8fCBgY29udGVudC8ke19rZXkgfHwgY29udGVudElkfWApfSksXG4gICAga2V5OiBwYXJzZVN0cmluZyhrZXksIDIwMCksXG4gICAgbG9jYWxlLFxuICAgIGNvbnRlbnQ6IHBhcnNlU3RyaW5nKGNvbnRlbnRUZXh0LCAxMDAwMCksXG4gICAgLi4uKGRlc2NyaXB0aW9uICYmIHtkZXNjcmlwdGlvbjogcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCl9KSxcbiAgICAuLi4oY2F0ZWdvcnkgJiYge2NhdGVnb3J5OiBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKX0pLFxuICAgIC4uLihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkICYmIHtpc0FjdGl2ZX0pLFxuICAgIC4uLih1c2VySWQgJiYge3VzZXJJZDogcGFyc2VJZCh1c2VySWQpfSlcbiAgfTtcblxuICByZXR1cm4gcmVtb3ZlRW1wdHlLZXlzKHRyYW5zZm9ybWVkKSBhcyBDb250ZW50VHlwZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRGcm9tRGIgPSAoY29udGVudDogQ29udGVudFR5cGUpOiBDb250ZW50VHlwZSA9PiBwZXJmb3JtQ29udGVudFRyYW5zZm9ybWF0aW9uKGNvbnRlbnQpOyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsaUJBQUFBLEVBQWUsV0FBQUMsRUFBUyxlQUFBQyxNQUFrQixl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QUFRZ0IsR0FBUUMsR0FBYSxFQUFFLENBQUMsRUFDdkUsSUFBS0YsR0FBT0csR0FBTUYsR0FBUUMsSUFBYyxDQUFDLEdBQUlsQixFQUFjZ0IsR0FBT0csR0FBTSxXQUFXRixHQUFRQyxDQUFTLEVBQUUsQ0FBQyxFQUN2RyxJQUFLaEIsRUFBWWtCLEVBQUssR0FBRyxFQUN6QixPQUFBQyxFQUNBLFFBQVNuQixFQUFZb0IsRUFBYSxHQUFLLEVBQ3ZDLEdBQUlDLEdBQWUsQ0FBQyxZQUFhckIsRUFBWXFCLEVBQWEsR0FBRyxDQUFDLEVBQzlELEdBQUlDLEdBQVksQ0FBQyxTQUFVdEIsRUFBWXNCLEVBQVUsR0FBRyxDQUFDLEVBQ3JELEdBQUlDLElBQWEsUUFBYSxDQUFDLFNBQUFBLENBQVEsRUFDdkMsR0FBSUMsR0FBVSxDQUFDLE9BQVF6QixFQUFReUIsQ0FBTSxDQUFDLENBQ3hDLEVBRUEsT0FBT3JCLEVBQWdCc0IsQ0FBVyxDQUNwQyxFQUVhQyxFQUFzQmhCLEdBQXNDRyxFQUE2QkgsQ0FBTyIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlSWQiLCAicGFyc2VTdHJpbmciLCAieiIsICJwYXJzZURvY3VtZW50IiwgInJlbW92ZUVtcHR5S2V5cyIsICJDb250ZW50VmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiY29udGVudFNjaGVtYSIsICJjb250ZW50SW5wdXRTY2hlbWEiLCAicGFyc2VDb250ZW50IiwgImNvbnRlbnQiLCAiZXJyb3IiLCAicGFyc2VDb250ZW50SW5wdXQiLCAicGVyZm9ybUNvbnRlbnRUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJjb250ZW50SWQiLCAiaWQiLCAia2V5IiwgImxvY2FsZSIsICJjb250ZW50VGV4dCIsICJkZXNjcmlwdGlvbiIsICJjYXRlZ29yeSIsICJpc0FjdGl2ZSIsICJ1c2VySWQiLCAidHJhbnNmb3JtZWQiLCAicGFyc2VDb250ZW50RnJvbURiIl0KfQo=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ConversationType {
|
|
2
|
+
_id?: string;
|
|
3
|
+
_key?: string;
|
|
4
|
+
_rev?: string;
|
|
5
|
+
_oldRev?: string;
|
|
6
|
+
_from?: string;
|
|
7
|
+
_to?: string;
|
|
8
|
+
added?: number;
|
|
9
|
+
conversationId?: string;
|
|
10
|
+
id?: string;
|
|
11
|
+
isDirect?: boolean;
|
|
12
|
+
modified?: number;
|
|
13
|
+
name?: string;
|
|
14
|
+
users?: any[];
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
export declare class ConversationValidationError extends Error {
|
|
18
|
+
field?: string | undefined;
|
|
19
|
+
constructor(message: string, field?: string | undefined);
|
|
20
|
+
}
|
|
21
|
+
export declare const validateConversationInput: (conversation: unknown) => ConversationType;
|
|
22
|
+
export declare const formatConversationOutput: (conversation: ConversationType) => ConversationType;
|
|
23
|
+
export declare const parseConversation: (conversation: ConversationType) => ConversationType;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{parseArangoId as c,parseId as v,parseString as l}from"@nlabs/utils";import{z as o}from"zod";import{parseDocument as g,removeEmptyKeys as f}from"../arangoAdapter/arangoAdapter";import{parseUser as u}from"../userAdapter/userAdapter";class i extends Error{constructor(t,e){super(t);this.field=e;this.name="ConversationValidationError"}}const y=o.object({_id:o.string().optional(),_key:o.string().optional(),_rev:o.string().optional(),_oldRev:o.string().optional(),_from:o.string().optional(),_to:o.string().optional(),added:o.number().optional(),conversationId:o.string().optional(),id:o.string().optional(),isDirect:o.boolean().optional(),modified:o.number().optional(),name:o.string().max(160).optional(),type:o.string(),users:o.array(o.any()).optional()}).passthrough(),I=n=>{try{return y.parse(n)}catch(r){if(r instanceof o.ZodError){const t=r.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join(", ");throw new i(`Conversation validation failed: ${t}`)}throw r}},x=n=>n,E=n=>{try{return C(n)}catch(r){throw r instanceof i?r:new i(`Conversation parsing failed: ${r instanceof Error?r.message:"Unknown error"}`)}},C=n=>{const{_id:r,_key:t,conversationId:e,id:s,isDirect:a,name:p,users:d}=n;return f({...g(n),...(r||s||t||e)&&{id:c(r||s||`conversations/${t||e}`)},...(t||e)&&{conversationId:v(t||e||"")},...a!==void 0&&{isDirect:!!a},...p&&{name:l(p,160)},...d?.length&&{users:d.map(m=>u(m))}})};export{i as ConversationValidationError,x as formatConversationOutput,E as parseConversation,I as validateConversationInput};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbnZlcnNhdGlvbkFkYXB0ZXIvY29udmVyc2F0aW9uQWRhcHRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtwYXJzZURvY3VtZW50LCByZW1vdmVFbXB0eUtleXN9IGZyb20gJy4uL2FyYW5nb0FkYXB0ZXIvYXJhbmdvQWRhcHRlcic7XG5pbXBvcnQge3BhcnNlVXNlcn0gZnJvbSAnLi4vdXNlckFkYXB0ZXIvdXNlckFkYXB0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvblR5cGUge1xuICBfaWQ/OiBzdHJpbmc7XG4gIF9rZXk/OiBzdHJpbmc7XG4gIF9yZXY/OiBzdHJpbmc7XG4gIF9vbGRSZXY/OiBzdHJpbmc7XG4gIF9mcm9tPzogc3RyaW5nO1xuICBfdG8/OiBzdHJpbmc7XG4gIGFkZGVkPzogbnVtYmVyO1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGlzRGlyZWN0PzogYm9vbGVhbjtcbiAgbW9kaWZpZWQ/OiBudW1iZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHVzZXJzPzogYW55W107XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29udmVyc2F0aW9uVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuXG5jb25zdCBDb252ZXJzYXRpb25JbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3Jldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9mcm9tOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF90bzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRlZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb252ZXJzYXRpb25JZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpc0RpcmVjdDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgbW9kaWZpZWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgbmFtZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB0eXBlOiB6LnN0cmluZygpLFxuICB1c2Vyczogei5hcnJheSh6LmFueSgpKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVDb252ZXJzYXRpb25JbnB1dCA9IChjb252ZXJzYXRpb246IHVua25vd24pOiBDb252ZXJzYXRpb25UeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBDb252ZXJzYXRpb25JbnB1dFNjaGVtYS5wYXJzZShjb252ZXJzYXRpb24pO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgQ29udmVyc2F0aW9uVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5pc3N1ZXMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBDb252ZXJzYXRpb25WYWxpZGF0aW9uRXJyb3IoYENvbnZlcnNhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25PdXRwdXQgPSAoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKTogQ29udmVyc2F0aW9uVHlwZSA9PiBjb252ZXJzYXRpb247XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnZlcnNhdGlvbiA9IChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpOiBDb252ZXJzYXRpb25UeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtQ29udmVyc2F0aW9uVHJhbnNmb3JtYXRpb24oY29udmVyc2F0aW9uKTtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBDb252ZXJzYXRpb25WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQ29udmVyc2F0aW9uVmFsaWRhdGlvbkVycm9yKGBDb252ZXJzYXRpb24gcGFyc2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gIH1cbn07XG5cbmNvbnN0IHBlcmZvcm1Db252ZXJzYXRpb25UcmFuc2Zvcm1hdGlvbiA9IChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpOiBDb252ZXJzYXRpb25UeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIF9pZCxcbiAgICBfa2V5LFxuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIGlkLFxuICAgIGlzRGlyZWN0LFxuICAgIG5hbWUsXG4gICAgdXNlcnNcbiAgfSA9IGNvbnZlcnNhdGlvbjtcblxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHJlbW92ZUVtcHR5S2V5cyh7XG4gICAgLi4ucGFyc2VEb2N1bWVudChjb252ZXJzYXRpb24pLFxuICAgIC4uLigoX2lkIHx8IGlkIHx8IF9rZXkgfHwgY29udmVyc2F0aW9uSWQpICYmIHtpZDogcGFyc2VBcmFuZ29JZChfaWQgfHwgaWQgfHwgYGNvbnZlcnNhdGlvbnMvJHtfa2V5IHx8IGNvbnZlcnNhdGlvbklkfWApfSksXG4gICAgLi4uKChfa2V5IHx8IGNvbnZlcnNhdGlvbklkKSAmJiB7Y29udmVyc2F0aW9uSWQ6IHBhcnNlSWQoX2tleSB8fCBjb252ZXJzYXRpb25JZCB8fCAnJyl9KSxcbiAgICAuLi4oaXNEaXJlY3QgIT09IHVuZGVmaW5lZCAmJiB7aXNEaXJlY3Q6ICEhaXNEaXJlY3R9KSxcbiAgICAuLi4obmFtZSAmJiB7bmFtZTogcGFyc2VTdHJpbmcobmFtZSwgMTYwKX0pLFxuICAgIC4uLih1c2Vycz8ubGVuZ3RoICYmIHt1c2VyczogdXNlcnMubWFwKCh1c2VyKSA9PiBwYXJzZVVzZXIodXNlcikpfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxPQUFRLGlCQUFBQSxFQUFlLFdBQUFDLEVBQVMsZUFBQUMsTUFBa0IsZUFDbEQsT0FBUSxLQUFBQyxNQUFRLE1BRWhCLE9BQVEsaUJBQUFDLEVBQWUsbUJBQUFDLE1BQXNCLGlDQUM3QyxPQUFRLGFBQUFDLE1BQWdCLDZCQW1CakIsTUFBTUMsVUFBb0MsS0FBTSxDQUNyRCxZQUFZQyxFQUF3QkMsRUFBZ0IsQ0FDbEQsTUFBTUQsQ0FBTyxFQURxQixXQUFBQyxFQUVsQyxLQUFLLEtBQU8sNkJBQ2QsQ0FDRixDQUVBLE1BQU1DLEVBQTBCUCxFQUFFLE9BQU8sQ0FDdkMsSUFBS0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUN6QixLQUFNQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzFCLEtBQU1BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDMUIsUUFBU0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUM3QixNQUFPQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzNCLElBQUtBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDekIsTUFBT0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUMzQixlQUFnQkEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUNwQyxHQUFJQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQ3hCLFNBQVVBLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFDL0IsU0FBVUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUM5QixLQUFNQSxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRSxTQUFTLEVBQ25DLEtBQU1BLEVBQUUsT0FBTyxFQUNmLE1BQU9BLEVBQUUsTUFBTUEsRUFBRSxJQUFJLENBQUMsRUFBRSxTQUFTLENBQ25DLENBQUMsRUFBRSxZQUFZLEVBRUZRLEVBQTZCQyxHQUE0QyxDQUNwRixHQUFJLENBRUYsT0FEa0JGLEVBQXdCLE1BQU1FLENBQVksQ0FFOUQsT0FBUUMsRUFBTyxDQUNiLEdBQUdBLGFBQWlCVixFQUFFLFNBQVUsQ0FDOUIsTUFBTVcsRUFBY0QsRUFBTSxPQUFPLElBQUssR0FBTSxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQzFGLE1BQU0sSUFBSU4sRUFBNEIsbUNBQW1DTyxDQUFXLEVBQUUsQ0FDeEYsQ0FDQSxNQUFNRCxDQUNSLENBQ0YsRUFFYUUsRUFBNEJILEdBQXFEQSxFQUVqRkksRUFBcUJKLEdBQXFELENBQ3JGLEdBQUksQ0FFRixPQURlSyxFQUFrQ0wsQ0FBWSxDQUUvRCxPQUFRQyxFQUFPLENBQ2IsTUFBR0EsYUFBaUJOLEVBQ1pNLEVBRUYsSUFBSU4sRUFBNEIsZ0NBQWdDTSxhQUFpQixNQUFRQSxFQUFNLFFBQVUsZUFBZSxFQUFFLENBQ2xJLENBQ0YsRUFFTUksRUFBcUNMLEdBQXFELENBQzlGLEtBQU0sQ0FDSixJQUFBTSxFQUNBLEtBQUFDLEVBQ0EsZUFBQUMsRUFDQSxHQUFBQyxFQUNBLFNBQUFDLEVBQ0EsS0FBQUMsRUFDQSxNQUFBQyxDQUNGLEVBQUlaLEVBV0osT0FUb0JQLEVBQWdCLENBQ2xDLEdBQUdELEVBQWNRLENBQVksRUFDN0IsSUFBS00sR0FBT0csR0FBTUYsR0FBUUMsSUFBbUIsQ0FBQyxHQUFJcEIsRUFBY2tCLEdBQU9HLEdBQU0saUJBQWlCRixHQUFRQyxDQUFjLEVBQUUsQ0FBQyxFQUN2SCxJQUFLRCxHQUFRQyxJQUFtQixDQUFDLGVBQWdCbkIsRUFBUWtCLEdBQVFDLEdBQWtCLEVBQUUsQ0FBQyxFQUN0RixHQUFJRSxJQUFhLFFBQWEsQ0FBQyxTQUFVLENBQUMsQ0FBQ0EsQ0FBUSxFQUNuRCxHQUFJQyxHQUFRLENBQUMsS0FBTXJCLEVBQVlxQixFQUFNLEdBQUcsQ0FBQyxFQUN6QyxHQUFJQyxHQUFPLFFBQVUsQ0FBQyxNQUFPQSxFQUFNLElBQUtDLEdBQVNuQixFQUFVbUIsQ0FBSSxDQUFDLENBQUMsQ0FDbkUsQ0FBQyxDQUdIIiwKICAibmFtZXMiOiBbInBhcnNlQXJhbmdvSWQiLCAicGFyc2VJZCIsICJwYXJzZVN0cmluZyIsICJ6IiwgInBhcnNlRG9jdW1lbnQiLCAicmVtb3ZlRW1wdHlLZXlzIiwgInBhcnNlVXNlciIsICJDb252ZXJzYXRpb25WYWxpZGF0aW9uRXJyb3IiLCAibWVzc2FnZSIsICJmaWVsZCIsICJDb252ZXJzYXRpb25JbnB1dFNjaGVtYSIsICJ2YWxpZGF0ZUNvbnZlcnNhdGlvbklucHV0IiwgImNvbnZlcnNhdGlvbiIsICJlcnJvciIsICJmaWVsZEVycm9ycyIsICJmb3JtYXRDb252ZXJzYXRpb25PdXRwdXQiLCAicGFyc2VDb252ZXJzYXRpb24iLCAicGVyZm9ybUNvbnZlcnNhdGlvblRyYW5zZm9ybWF0aW9uIiwgIl9pZCIsICJfa2V5IiwgImNvbnZlcnNhdGlvbklkIiwgImlkIiwgImlzRGlyZWN0IiwgIm5hbWUiLCAidXNlcnMiLCAidXNlciJdCn0K
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface EventType {
|
|
2
|
+
_id?: string;
|
|
3
|
+
_key?: string;
|
|
4
|
+
_rev?: string;
|
|
5
|
+
_oldRev?: string;
|
|
6
|
+
_from?: string;
|
|
7
|
+
_to?: string;
|
|
8
|
+
address?: string;
|
|
9
|
+
cached?: number;
|
|
10
|
+
content?: string;
|
|
11
|
+
endDate?: number;
|
|
12
|
+
eventId?: string;
|
|
13
|
+
groupId?: string;
|
|
14
|
+
id?: string;
|
|
15
|
+
images?: any[];
|
|
16
|
+
isGoing?: boolean;
|
|
17
|
+
latitude?: number;
|
|
18
|
+
location?: string | {
|
|
19
|
+
address: string;
|
|
20
|
+
latitude: number;
|
|
21
|
+
longitude: number;
|
|
22
|
+
};
|
|
23
|
+
longitude?: number;
|
|
24
|
+
mentions?: any[];
|
|
25
|
+
modified?: number;
|
|
26
|
+
name?: string;
|
|
27
|
+
postId?: string;
|
|
28
|
+
reactions?: string[];
|
|
29
|
+
rsvpCount?: number;
|
|
30
|
+
startDate?: number;
|
|
31
|
+
tags?: any[];
|
|
32
|
+
type?: string;
|
|
33
|
+
user?: any;
|
|
34
|
+
viewCount?: number;
|
|
35
|
+
[key: string]: any;
|
|
36
|
+
}
|
|
37
|
+
export declare class EventValidationError extends Error {
|
|
38
|
+
field?: string | undefined;
|
|
39
|
+
constructor(message: string, field?: string | undefined);
|
|
40
|
+
}
|
|
41
|
+
export declare const validateEventInput: (event: unknown) => EventType;
|
|
42
|
+
export declare const formatEventOutput: (event: EventType) => EventType;
|
|
43
|
+
export declare const parseEvent: (event: EventType) => EventType;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{parseArangoId as U,parseId as u,parseNum as o,parseString as g}from"@nlabs/utils";import{z as t}from"zod";import{parseDocument as V,removeEmptyKeys as z}from"../arangoAdapter/arangoAdapter";import{parseImage as A}from"../imageAdapter/imageAdapter";import{parseReaktorContent as K,parseReaktorDate as G,parseReaktorType as N}from"../reaktorAdapter/reaktorAdapter";import{parseTag as O}from"../tagAdapter/tagAdapter";import{parseUser as S}from"../userAdapter/userAdapter";class l extends Error{constructor(r,i){super(r);this.field=i;this.name="EventValidationError"}}const Z=t.object({_id:t.string().optional(),_key:t.string().optional(),_rev:t.string().optional(),_oldRev:t.string().optional(),_from:t.string().optional(),_to:t.string().optional(),address:t.string().optional(),cached:t.number().optional(),content:t.string().optional(),endDate:t.number().optional(),eventId:t.string().optional(),groupId:t.string().optional(),id:t.string().optional(),images:t.array(t.any()).optional(),isGoing:t.boolean().optional(),latitude:t.number().optional(),location:t.union([t.string(),t.object({address:t.string(),latitude:t.number(),longitude:t.number()})]).optional(),longitude:t.number().optional(),mentions:t.array(t.any()).optional(),modified:t.number().optional(),name:t.string().optional(),postId:t.string().optional(),reactions:t.array(t.string()).optional(),rsvpCount:t.number().optional(),startDate:t.number().optional(),tags:t.array(t.any()).optional(),type:t.string().optional(),user:t.any().optional(),viewCount:t.number().optional()}).passthrough(),Q=e=>{try{return Z.parse(e)}catch(n){if(n instanceof t.ZodError){const r=n.issues.map(i=>`${i.path.join(".")}: ${i.message}`).join(", ");throw new l(`Event validation failed: ${r}`)}throw n}},W=e=>e,X=e=>{try{return q(e)}catch(n){throw n instanceof l?n:new l(`Event parsing failed: ${n instanceof Error?n.message:"Unknown error"}`)}},q=e=>{const{_id:n,_key:r,address:i,cached:m,content:c,endDate:v,eventId:d,groupId:y,id:f,images:b,isGoing:E,latitude:h,location:a,longitude:I,mentions:_,name:w,postId:T,reactions:D,rsvpCount:k,startDate:C,tags:x,type:j,user:R,viewCount:$}=e,p=z({...V(e),...i&&{address:g(i,160)},...m!==void 0&&{cached:o(m)},...c&&{content:K(c)},...v!==void 0&&{endDate:G(v)},...(n||f||r||d)&&{id:U(n||f||`events/${r||d}`)},...(r||d)&&{eventId:u(r||d||"")},...y&&{groupId:u(y)},...b?.length&&{images:b.map(s=>A(s))},...E!==void 0&&{isGoing:!!E},...h!==void 0&&{latitude:o(h,15)},...I!==void 0&&{longitude:o(I,15)},..._?.length&&{mentions:_.map(s=>S(s))},...w&&{name:g(w,160)},...T&&{postId:u(T)},...D?.length&&{reactions:D},...k!==void 0&&{rsvpCount:o(k)},...C!==void 0&&{startDate:G(C)},...x?.length&&{tags:x.map(s=>O(s))},...j&&{type:N(j)},...R&&{user:S(R)},...$!==void 0&&{viewCount:o($)}});return a&&typeof a=="object"&&(p.address=g(a.address,160),p.latitude=o(a.latitude,15),p.longitude=o(a.longitude,15)),p};export{l as EventValidationError,W as formatEventOutput,X as parseEvent,Q as validateEventInput};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2V2ZW50QWRhcHRlci9ldmVudEFkYXB0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge3BhcnNlRG9jdW1lbnQsIHJlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vYXJhbmdvQWRhcHRlci9hcmFuZ29BZGFwdGVyJztcbmltcG9ydCB7cGFyc2VJbWFnZX0gZnJvbSAnLi4vaW1hZ2VBZGFwdGVyL2ltYWdlQWRhcHRlcic7XG5pbXBvcnQge3BhcnNlUmVha3RvckNvbnRlbnQsIHBhcnNlUmVha3RvckRhdGUsIHBhcnNlUmVha3RvclR5cGV9IGZyb20gJy4uL3JlYWt0b3JBZGFwdGVyL3JlYWt0b3JBZGFwdGVyJztcbmltcG9ydCB7cGFyc2VUYWd9IGZyb20gJy4uL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlcic7XG5pbXBvcnQge3BhcnNlVXNlcn0gZnJvbSAnLi4vdXNlckFkYXB0ZXIvdXNlckFkYXB0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50VHlwZSB7XG4gIF9pZD86IHN0cmluZztcbiAgX2tleT86IHN0cmluZztcbiAgX3Jldj86IHN0cmluZztcbiAgX29sZFJldj86IHN0cmluZztcbiAgX2Zyb20/OiBzdHJpbmc7XG4gIF90bz86IHN0cmluZztcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgY2FjaGVkPzogbnVtYmVyO1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBlbmREYXRlPzogbnVtYmVyO1xuICBldmVudElkPzogc3RyaW5nO1xuICBncm91cElkPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgaW1hZ2VzPzogYW55W107XG4gIGlzR29pbmc/OiBib29sZWFuO1xuICBsYXRpdHVkZT86IG51bWJlcjtcbiAgbG9jYXRpb24/OiBzdHJpbmcgfCB7YWRkcmVzczogc3RyaW5nOyBsYXRpdHVkZTogbnVtYmVyOyBsb25naXR1ZGU6IG51bWJlcn07XG4gIGxvbmdpdHVkZT86IG51bWJlcjtcbiAgbWVudGlvbnM/OiBhbnlbXTtcbiAgbW9kaWZpZWQ/OiBudW1iZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHBvc3RJZD86IHN0cmluZztcbiAgcmVhY3Rpb25zPzogc3RyaW5nW107XG4gIHJzdnBDb3VudD86IG51bWJlcjtcbiAgc3RhcnREYXRlPzogbnVtYmVyO1xuICB0YWdzPzogYW55W107XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHVzZXI/OiBhbnk7XG4gIHZpZXdDb3VudD86IG51bWJlcjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgRXZlbnRWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0V2ZW50VmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuXG5jb25zdCBFdmVudElucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfcmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9vbGRSZXY6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2Zyb206IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3RvOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFkZHJlc3M6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2FjaGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZW5kRGF0ZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBldmVudElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGdyb3VwSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCksXG4gIGlzR29pbmc6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGxhdGl0dWRlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGxvY2F0aW9uOiB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm9iamVjdCh7XG4gICAgYWRkcmVzczogei5zdHJpbmcoKSxcbiAgICBsYXRpdHVkZTogei5udW1iZXIoKSxcbiAgICBsb25naXR1ZGU6IHoubnVtYmVyKClcbiAgfSldKS5vcHRpb25hbCgpLFxuICBsb25naXR1ZGU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgbWVudGlvbnM6IHouYXJyYXkoei5hbnkoKSkub3B0aW9uYWwoKSxcbiAgbW9kaWZpZWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwb3N0SWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVhY3Rpb25zOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIHJzdnBDb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzdGFydERhdGU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGFnczogei5hcnJheSh6LmFueSgpKS5vcHRpb25hbCgpLFxuICB0eXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZXI6IHouYW55KCkub3B0aW9uYWwoKSxcbiAgdmlld0NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKClcbn0pLnBhc3N0aHJvdWdoKCk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUV2ZW50SW5wdXQgPSAoZXZlbnQ6IHVua25vd24pOiBFdmVudFR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IEV2ZW50SW5wdXRTY2hlbWEucGFyc2UoZXZlbnQpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgRXZlbnRUeXBlO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZEVycm9ycyA9IGVycm9yLmlzc3Vlcy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEV2ZW50VmFsaWRhdGlvbkVycm9yKGBFdmVudCB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRFdmVudE91dHB1dCA9IChldmVudDogRXZlbnRUeXBlKTogRXZlbnRUeXBlID0+IGV2ZW50O1xuXG5leHBvcnQgY29uc3QgcGFyc2VFdmVudCA9IChldmVudDogRXZlbnRUeXBlKTogRXZlbnRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtRXZlbnRUcmFuc2Zvcm1hdGlvbihldmVudCk7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRXZlbnRWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXZlbnRWYWxpZGF0aW9uRXJyb3IoYEV2ZW50IHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtRXZlbnRUcmFuc2Zvcm1hdGlvbiA9IChldmVudDogRXZlbnRUeXBlKTogRXZlbnRUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIF9pZCxcbiAgICBfa2V5LFxuICAgIGFkZHJlc3MsXG4gICAgY2FjaGVkLFxuICAgIGNvbnRlbnQsXG4gICAgZW5kRGF0ZSxcbiAgICBldmVudElkLFxuICAgIGdyb3VwSWQsXG4gICAgaWQsXG4gICAgaW1hZ2VzLFxuICAgIGlzR29pbmcsXG4gICAgbGF0aXR1ZGUsXG4gICAgbG9jYXRpb24sXG4gICAgbG9uZ2l0dWRlLFxuICAgIG1lbnRpb25zLFxuICAgIG5hbWUsXG4gICAgcG9zdElkLFxuICAgIHJlYWN0aW9ucyxcbiAgICByc3ZwQ291bnQsXG4gICAgc3RhcnREYXRlLFxuICAgIHRhZ3MsXG4gICAgdHlwZSxcbiAgICB1c2VyLFxuICAgIHZpZXdDb3VudFxuICB9ID0gZXZlbnQ7XG5cbiAgY29uc3QgdHJhbnNmb3JtZWQgPSByZW1vdmVFbXB0eUtleXMoe1xuICAgIC4uLnBhcnNlRG9jdW1lbnQoZXZlbnQpLFxuICAgIC4uLihhZGRyZXNzICYmIHthZGRyZXNzOiBwYXJzZVN0cmluZyhhZGRyZXNzLCAxNjApfSksXG4gICAgLi4uKGNhY2hlZCAhPT0gdW5kZWZpbmVkICYmIHtjYWNoZWQ6IHBhcnNlTnVtKGNhY2hlZCl9KSxcbiAgICAuLi4oY29udGVudCAmJiB7Y29udGVudDogcGFyc2VSZWFrdG9yQ29udGVudChjb250ZW50KX0pLFxuICAgIC4uLihlbmREYXRlICE9PSB1bmRlZmluZWQgJiYge2VuZERhdGU6IHBhcnNlUmVha3RvckRhdGUoZW5kRGF0ZSl9KSxcbiAgICAuLi4oKF9pZCB8fCBpZCB8fCBfa2V5IHx8IGV2ZW50SWQpICYmIHtpZDogcGFyc2VBcmFuZ29JZChfaWQgfHwgaWQgfHwgYGV2ZW50cy8ke19rZXkgfHwgZXZlbnRJZH1gKX0pLFxuICAgIC4uLigoX2tleSB8fCBldmVudElkKSAmJiB7ZXZlbnRJZDogcGFyc2VJZChfa2V5IHx8IGV2ZW50SWQgfHwgJycpfSksXG4gICAgLi4uKGdyb3VwSWQgJiYge2dyb3VwSWQ6IHBhcnNlSWQoZ3JvdXBJZCl9KSxcbiAgICAuLi4oaW1hZ2VzPy5sZW5ndGggJiYge2ltYWdlczogaW1hZ2VzLm1hcCgoaW1hZ2UpID0+IHBhcnNlSW1hZ2UoaW1hZ2UpKX0pLFxuICAgIC4uLihpc0dvaW5nICE9PSB1bmRlZmluZWQgJiYge2lzR29pbmc6ICEhaXNHb2luZ30pLFxuICAgIC4uLihsYXRpdHVkZSAhPT0gdW5kZWZpbmVkICYmIHtsYXRpdHVkZTogcGFyc2VOdW0obGF0aXR1ZGUsIDE1KX0pLFxuICAgIC4uLihsb25naXR1ZGUgIT09IHVuZGVmaW5lZCAmJiB7bG9uZ2l0dWRlOiBwYXJzZU51bShsb25naXR1ZGUsIDE1KX0pLFxuICAgIC4uLihtZW50aW9ucz8ubGVuZ3RoICYmIHttZW50aW9uczogbWVudGlvbnMubWFwKChtZW50aW9uKSA9PiBwYXJzZVVzZXIobWVudGlvbikpfSksXG4gICAgLi4uKG5hbWUgJiYge25hbWU6IHBhcnNlU3RyaW5nKG5hbWUsIDE2MCl9KSxcbiAgICAuLi4ocG9zdElkICYmIHtwb3N0SWQ6IHBhcnNlSWQocG9zdElkKX0pLFxuICAgIC4uLihyZWFjdGlvbnM/Lmxlbmd0aCAmJiB7cmVhY3Rpb25zfSksXG4gICAgLi4uKHJzdnBDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtyc3ZwQ291bnQ6IHBhcnNlTnVtKHJzdnBDb3VudCl9KSxcbiAgICAuLi4oc3RhcnREYXRlICE9PSB1bmRlZmluZWQgJiYge3N0YXJ0RGF0ZTogcGFyc2VSZWFrdG9yRGF0ZShzdGFydERhdGUpfSksXG4gICAgLi4uKHRhZ3M/Lmxlbmd0aCAmJiB7dGFnczogdGFncy5tYXAoKHRhZykgPT4gcGFyc2VUYWcodGFnKSl9KSxcbiAgICAuLi4odHlwZSAmJiB7dHlwZTogcGFyc2VSZWFrdG9yVHlwZSh0eXBlKX0pLFxuICAgIC4uLih1c2VyICYmIHt1c2VyOiBwYXJzZVVzZXIodXNlcil9KSxcbiAgICAuLi4odmlld0NvdW50ICE9PSB1bmRlZmluZWQgJiYge3ZpZXdDb3VudDogcGFyc2VOdW0odmlld0NvdW50KX0pXG4gIH0pO1xuXG4gIC8vIEhhbmRsZSBsb2NhdGlvbiBvYmplY3RcbiAgaWYobG9jYXRpb24gJiYgdHlwZW9mIGxvY2F0aW9uID09PSAnb2JqZWN0Jykge1xuICAgIHRyYW5zZm9ybWVkLmFkZHJlc3MgPSBwYXJzZVN0cmluZyhsb2NhdGlvbi5hZGRyZXNzLCAxNjApO1xuICAgIHRyYW5zZm9ybWVkLmxhdGl0dWRlID0gcGFyc2VOdW0obG9jYXRpb24ubGF0aXR1ZGUsIDE1KTtcbiAgICB0cmFuc2Zvcm1lZC5sb25naXR1ZGUgPSBwYXJzZU51bShsb2NhdGlvbi5sb25naXR1ZGUsIDE1KTtcbiAgfVxuXG4gIHJldHVybiB0cmFuc2Zvcm1lZDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxpQkFBQUEsRUFBZSxXQUFBQyxFQUFTLFlBQUFDLEVBQVUsZUFBQUMsTUFBa0IsZUFDNUQsT0FBUSxLQUFBQyxNQUFRLE1BRWhCLE9BQVEsaUJBQUFDLEVBQWUsbUJBQUFDLE1BQXNCLGlDQUM3QyxPQUFRLGNBQUFDLE1BQWlCLCtCQUN6QixPQUFRLHVCQUFBQyxFQUFxQixvQkFBQUMsRUFBa0Isb0JBQUFDLE1BQXVCLG1DQUN0RSxPQUFRLFlBQUFDLE1BQWUsMkJBQ3ZCLE9BQVEsYUFBQUMsTUFBZ0IsNkJBbUNqQixNQUFNQyxVQUE2QixLQUFNLENBQzlDLFlBQVlDLEVBQXdCQyxFQUFnQixDQUNsRCxNQUFNRCxDQUFPLEVBRHFCLFdBQUFDLEVBRWxDLEtBQUssS0FBTyxzQkFDZCxDQUNGLENBRUEsTUFBTUMsRUFBbUJaLEVBQUUsT0FBTyxDQUNoQyxJQUFLQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQ3pCLEtBQU1BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDMUIsS0FBTUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUMxQixRQUFTQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzdCLE1BQU9BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDM0IsSUFBS0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUN6QixRQUFTQSxFQUFF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VSxDQUFDLEtBQU1BLEVBQUssSUFBS08sR0FBUXpDLEVBQVN5QyxDQUFHLENBQUMsQ0FBQyxFQUMzRCxHQUFJTixHQUFRLENBQUMsS0FBTXBDLEVBQWlCb0MsQ0FBSSxDQUFDLEVBQ3pDLEdBQUlDLEdBQVEsQ0FBQyxLQUFNbkMsRUFBVW1DLENBQUksQ0FBQyxFQUNsQyxHQUFJQyxJQUFjLFFBQWEsQ0FBQyxVQUFXOUMsRUFBUzhDLENBQVMsQ0FBQyxDQUNoRSxDQUFDLEVBR0QsT0FBR1gsR0FBWSxPQUFPQSxHQUFhLFdBQ2pDWSxFQUFZLFFBQVU5QyxFQUFZa0MsRUFBUyxRQUFTLEdBQUcsRUFDdkRZLEVBQVksU0FBVy9DLEVBQVNtQyxFQUFTLFNBQVUsRUFBRSxFQUNyRFksRUFBWSxVQUFZL0MsRUFBU21DLEVBQVMsVUFBVyxFQUFFLEdBR2xEWSxDQUNUIiwKICAibmFtZXMiOiBbInBhcnNlQXJhbmdvSWQiLCAicGFyc2VJZCIsICJwYXJzZU51bSIsICJwYXJzZVN0cmluZyIsICJ6IiwgInBhcnNlRG9jdW1lbnQiLCAicmVtb3ZlRW1wdHlLZXlzIiwgInBhcnNlSW1hZ2UiLCAicGFyc2VSZWFrdG9yQ29udGVudCIsICJwYXJzZVJlYWt0b3JEYXRlIiwgInBhcnNlUmVha3RvclR5cGUiLCAicGFyc2VUYWciLCAicGFyc2VVc2VyIiwgIkV2ZW50VmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiRXZlbnRJbnB1dFNjaGVtYSIsICJ2YWxpZGF0ZUV2ZW50SW5wdXQiLCAiZXZlbnQiLCAiZXJyb3IiLCAiZmllbGRFcnJvcnMiLCAiZSIsICJmb3JtYXRFdmVudE91dHB1dCIsICJwYXJzZUV2ZW50IiwgInBlcmZvcm1FdmVudFRyYW5zZm9ybWF0aW9uIiwgIl9pZCIsICJfa2V5IiwgImFkZHJlc3MiLCAiY2FjaGVkIiwgImNvbnRlbnQiLCAiZW5kRGF0ZSIsICJldmVudElkIiwgImdyb3VwSWQiLCAiaWQiLCAiaW1hZ2VzIiwgImlzR29pbmciLCAibGF0aXR1ZGUiLCAibG9jYXRpb24iLCAibG9uZ2l0dWRlIiwgIm1lbnRpb25zIiwgIm5hbWUiLCAicG9zdElkIiwgInJlYWN0aW9ucyIsICJyc3ZwQ291bnQiLCAic3RhcnREYXRlIiwgInRhZ3MiLCAidHlwZSIsICJ1c2VyIiwgInZpZXdDb3VudCIsICJ0cmFuc2Zvcm1lZCIsICJpbWFnZSIsICJtZW50aW9uIiwgInRhZyJdCn0K
|