dinocollab-core 2.0.0 → 2.0.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/bin/codegen.js +66 -0
- package/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
- package/dist/api-context/drawer-global.js +1 -1
- package/dist/api-context/global-modal.js +1 -1
- package/dist/api-context/popover-global.js +1 -1
- package/dist/api-context/popover.js +1 -1
- package/dist/components/copy-to-clipboard.js +1 -1
- package/dist/components/create.multi-select-dropdown.js +1 -1
- package/dist/components/create.multi-select-dropdown.js.map +1 -1
- package/dist/components/help-tooltip.js +1 -1
- package/dist/data-view/convert-filter-to-graphql.js +1 -1
- package/dist/data-view/convert-filter-to-graphql.js.map +1 -1
- package/dist/data-view/create.active-filters-panel.js +1 -1
- package/dist/data-view/create.active-filters-panel.js.map +1 -1
- package/dist/data-view/create.data-view.js +1 -1
- package/dist/data-view/dino.js +1 -1
- package/dist/data-view/dino.js.map +1 -1
- package/dist/data-view/filter-store.js +1 -1
- package/dist/data-view/filter-store.js.map +1 -1
- package/dist/data-view/index.js +1 -1
- package/dist/data-view/query-param-url.js +1 -1
- package/dist/data-view/query-param-url.js.map +1 -1
- package/dist/data-view/ui.units.js.map +1 -1
- package/dist/data-view/view-mode.content.js +1 -1
- package/dist/form/create.autocomplete.chips.js +1 -1
- package/dist/form/create.date-expired.js +1 -1
- package/dist/form/create.date-expired.js.map +1 -1
- package/dist/form/create.date-picker.js +1 -1
- package/dist/form/create.date-picker.js.map +1 -1
- package/dist/form/create.form-comfirm.js +1 -1
- package/dist/form/create.form-comfirm.js.map +1 -1
- package/dist/form/create.form-grid-layout.js +1 -1
- package/dist/form/create.form-grid-layout.js.map +1 -1
- package/dist/form/create.input-file.csv-local-parser.js +1 -1
- package/dist/form/create.input-file.csv-local-parser.js.map +1 -1
- package/dist/form/create.input.file.js +1 -1
- package/dist/form/create.input.image-file.js +1 -1
- package/dist/form/create.input.js +1 -1
- package/dist/form/create.input.js.map +1 -1
- package/dist/form/create.select-simple.js +1 -1
- package/dist/form/create.select-simple.js.map +1 -1
- package/dist/form/create.select-with-api.js +1 -1
- package/dist/form/create.select-with-api.js.map +1 -1
- package/dist/form/modal-wrapper.js +1 -1
- package/dist/form/modal-wrapper.js.map +1 -1
- package/dist/form/validator.js +1 -1
- package/dist/form/validator.js.map +1 -1
- package/dist/http-service/base/crud-service-base.js +2 -0
- package/dist/http-service/base/crud-service-base.js.map +1 -0
- package/dist/http-service/base/gateway.js +2 -0
- package/dist/http-service/base/gateway.js.map +1 -0
- package/dist/http-service/base/helpers.js +2 -0
- package/dist/http-service/base/helpers.js.map +1 -0
- package/dist/http-service/base/service-base.js +2 -0
- package/dist/http-service/base/service-base.js.map +1 -0
- package/dist/http-service/graphql/app-profile.js +2 -0
- package/dist/http-service/graphql/app-profile.js.map +1 -0
- package/dist/http-service/graphql/graphql-request.js +2 -0
- package/dist/http-service/graphql/graphql-request.js.map +1 -0
- package/dist/http-service/graphql/key-converter.js.map +1 -0
- package/dist/http-service/graphql/request-param.js +2 -0
- package/dist/http-service/graphql/request-param.js.map +1 -0
- package/dist/http-service/graphql/types.js +2 -0
- package/dist/http-service/graphql/types.js.map +1 -0
- package/dist/http-service/index.js +2 -0
- package/dist/http-service/index.js.map +1 -0
- package/dist/mfe-auth/auth-enums.js +2 -0
- package/dist/mfe-auth/auth-enums.js.map +1 -0
- package/dist/mfe-auth/auth-mfe-manager.js +2 -0
- package/dist/mfe-auth/auth-mfe-manager.js.map +1 -0
- package/dist/mfe-auth/auth-mfe-provider.js +2 -0
- package/dist/mfe-auth/auth-mfe-provider.js.map +1 -0
- package/dist/mfe-auth/auth-types.js +2 -0
- package/dist/mfe-auth/auth-types.js.map +1 -0
- package/dist/mfe-auth/index.js +2 -0
- package/dist/mfe-auth/index.js.map +1 -0
- package/dist/mfe-auth/micro-frontend-auth-hooks.js +2 -0
- package/dist/mfe-auth/micro-frontend-auth-hooks.js.map +1 -0
- package/dist/mfe-navigate/index.js +2 -0
- package/dist/mfe-navigate/index.js.map +1 -0
- package/dist/mfe-navigate/mfe-navigate.debug.js +2 -0
- package/dist/mfe-navigate/mfe-navigate.debug.js.map +1 -0
- package/dist/mfe-navigate/mfe-navigate.remote.js +2 -0
- package/dist/mfe-navigate/mfe-navigate.remote.js.map +1 -0
- package/dist/mfe-navigate/nextjs/index.js +2 -0
- package/dist/mfe-navigate/nextjs/index.js.map +1 -0
- package/dist/mfe-navigate/nextjs/provider.js +2 -0
- package/dist/mfe-navigate/nextjs/provider.js.map +1 -0
- package/dist/mfe-navigate/react/index.js +2 -0
- package/dist/mfe-navigate/react/index.js.map +1 -0
- package/dist/mfe-navigate/react/provider.js +2 -0
- package/dist/mfe-navigate/react/provider.js.map +1 -0
- package/dist/redux/create.hoc-lazy.js +1 -1
- package/dist/table/create.action-row.js +1 -1
- package/dist/table/create.action-row.js.map +1 -1
- package/dist/table/create.table.js +1 -1
- package/dist/table/create.table.js.map +1 -1
- package/dist/table/dino.js +1 -1
- package/dist/table/dino.js.map +1 -1
- package/dist/table/helpers.js +1 -1
- package/dist/table/helpers.js.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table/toolbar-pannel.js +1 -1
- package/dist/table/ui.buttons.js +1 -1
- package/dist/table/ui.buttons.js.map +1 -1
- package/dist/table/ui.units.js +1 -1
- package/dist/table/ui.units.js.map +1 -1
- package/dist/table-grid/create.table-grid.js +1 -1
- package/dist/table-grid/create.table-grid.js.map +1 -1
- package/dist/table-grid/filter-bar/create.filter-bar.js +1 -1
- package/dist/table-grid/item-actions.js +1 -1
- package/dist/table-grid/item-actions.js.map +1 -1
- package/dist/table-grid/toolbar-pannel.js +1 -1
- package/dist/table-grid/toolbar-pannel.js.map +1 -1
- package/dist/table-grid/url-query-param.js +1 -1
- package/dist/table-grid/url-query-param.js.map +1 -1
- package/dist/types/data-view/convert-filter-to-graphql.d.ts +3 -3
- package/dist/types/data-view/dino.d.ts +1 -1
- package/dist/types/data-view/index.d.ts +0 -1
- package/dist/types/http-service/base/crud-service-base.d.ts +68 -0
- package/dist/types/http-service/base/gateway.d.ts +3 -0
- package/dist/types/http-service/base/helpers.d.ts +31 -0
- package/dist/types/http-service/base/index.d.ts +5 -0
- package/dist/types/http-service/base/service-base.d.ts +132 -0
- package/dist/types/http-service/base/type.api-alert.d.ts +17 -0
- package/dist/types/http-service/base/types.d.ts +45 -0
- package/dist/types/http-service/graphql/app-profile.d.ts +17 -0
- package/dist/types/http-service/graphql/graphql-request.d.ts +83 -0
- package/dist/types/http-service/graphql/index.d.ts +5 -0
- package/dist/types/{data-view → http-service/graphql}/key-converter.d.ts +2 -1
- package/dist/types/http-service/graphql/request-param.d.ts +65 -0
- package/dist/types/http-service/graphql/types.d.ts +62 -0
- package/dist/types/http-service/index.d.ts +2 -0
- package/dist/types/mfe-auth/auth-enums.d.ts +40 -0
- package/dist/types/mfe-auth/auth-mfe-manager.d.ts +68 -0
- package/dist/types/mfe-auth/auth-mfe-provider.d.ts +19 -0
- package/dist/types/mfe-auth/auth-types.d.ts +33 -0
- package/dist/types/mfe-auth/index.d.ts +6 -0
- package/dist/types/mfe-auth/micro-frontend-auth-hooks.d.ts +164 -0
- package/dist/types/mfe-navigate/index.d.ts +2 -0
- package/dist/types/mfe-navigate/mfe-navigate.debug.d.ts +4 -0
- package/dist/types/mfe-navigate/mfe-navigate.remote.d.ts +11 -0
- package/dist/types/mfe-navigate/nextjs/index.d.ts +1 -0
- package/dist/types/mfe-navigate/nextjs/provider.d.ts +2 -0
- package/dist/types/mfe-navigate/react/index.d.ts +1 -0
- package/dist/types/mfe-navigate/react/provider.d.ts +3 -0
- package/dist/types/mfe-navigate/types.d.ts +13 -0
- package/dist/types/utils/index.d.ts +0 -1
- package/dist/utils/helpers.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/query-param.js +1 -1
- package/dist/utils/query-param.js.map +1 -1
- package/package.json +87 -47
- package/dist/data-view/key-converter.js.map +0 -1
- package/dist/types/utils/mfe-events.d.ts +0 -12
- package/dist/utils/mfe-events.js +0 -2
- package/dist/utils/mfe-events.js.map +0 -1
- /package/dist/{data-view → http-service/graphql}/key-converter.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.select-simple.js","sources":["../../src/form/create.select-simple.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Collapse, FormControl, FormHelperText, InputLabel, MenuItem, Select, SelectProps } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\n\r\nexport interface ISelectSimpleOption<T extends string = string> {\r\n name: string\r\n value: T\r\n}\r\n\r\nexport interface ISelectSimpleSlots {\r\n selectProps?: Omit<SelectProps, 'variant'>\r\n}\r\n\r\nexport interface ISelectSimpleProps<T> extends Partial<IFormInputBase<T>> {\r\n options?: ISelectSimpleOption[]\r\n onChange?: (value: ISelectSimpleOption) => void\r\n slots?: ISelectSimpleSlots\r\n fullWidth?: boolean\r\n}\r\n\r\nexport interface ISelectSimpleState {\r\n value?: string\r\n}\r\n\r\nexport interface ISelectSimpleParams extends ISelectSimpleSlots {\r\n options?: ISelectSimpleOption[]\r\n}\r\n\r\nfunction CreateSelectSimple<T>(args?: ISelectSimpleParams): ComponentType<ISelectSimpleProps<T>> {\r\n class SelectSimple extends Component<ISelectSimpleProps<T>, ISelectSimpleState> {\r\n constructor(props: ISelectSimpleProps<T>) {\r\n super(props)\r\n this.state = { value: this.getDefaultValue()?.toString() }\r\n }\r\n mapProps = (): SelectProps => {\r\n const label = this.getLabel()\r\n const tfp: SelectProps = {\r\n id: this.props.name?.toString(),\r\n labelId: this.props.name?.toString() + label,\r\n name: this.props.name?.toString(),\r\n label: label,\r\n defaultValue: this.getDefaultValue(),\r\n value: this.state.value,\r\n onChange: (event) => {\r\n const value: string = event.target.value + ''\r\n this.setState({ value }, () => {\r\n if (!!this.props.name) {\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n const options = this.getOptions()\r\n const temp = options.find((x) => x.value?.toString() === value)\r\n if (!temp) return\r\n this.props.onChange && this.props.onChange(temp)\r\n })\r\n },\r\n disabled: this.props.disabled,\r\n fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true\r\n }\r\n const selectProps = this.props.slots?.selectProps ?? args?.selectProps\r\n return mergeObjects({}, tfp, selectProps)\r\n }\r\n render() {\r\n const data = this.getOptions()\r\n const label = this.getLabel()\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <React.Fragment>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.getDefaultValue()} />}\r\n <FormControl fullWidth disabled={this.props.disabled} error={errorMessage.error}>\r\n <InputLabel id={this.props.name?.toString() + label}>{label}</InputLabel>\r\n <Select {...this.mapProps()}>\r\n {data.map((item) => (\r\n <MenuItem key={item.value} value={item.value}>\r\n {item.name}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <Collapse in={errorMessage.error}>\r\n <FormHelperText>{errorMessage.message}</FormHelperText>\r\n </Collapse>\r\n </FormControl>\r\n </React.Fragment>\r\n )\r\n }\r\n getLabel = () => {\r\n if (!!this.props.label && typeof this.props.label === 'string') return this.props.label\r\n return this.props.name?.toString() ?? ''\r\n }\r\n getDefaultValue = () => {\r\n const { data, name } = this.props\r\n const options = this.getOptions()\r\n return this.props.defaultValue?.toString() ?? (!!data && !!name ? data[name] : undefined) ?? options[0]?.value\r\n }\r\n getOptions = (): ISelectSimpleOption[] => {\r\n return args?.options ?? this.props.options ?? []\r\n }\r\n }\r\n return SelectSimple\r\n}\r\nexport default CreateSelectSimple\r\n"],"names":["CreateSelectSimple","args","SelectSimple","props","_this$getDefaultValue","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$props$name2","_this$props$name3","_this$props$slots$sel","_this$props$slots","label","getLabel","tfp","id","name","toString","labelId","defaultValue","getDefaultValue","value","state","onChange","event","target","setState","onBlur","temp","getOptions","find","x","_x$value","disabled","fullWidth","undefined","selectProps","slots","mergeObjects","_this$props$name$toSt","_this$props$name4","_ref","_this$props$defaultVa","_this$props$defaultVa2","_options$","_this$props","data","options","_ref2","_args$options","_inherits","Component","_createClass","key","_this$props$name5","_this$props$name6","this","errorMessage","getErrorMessage","messageErrors","_jsxs","React","Fragment","children","_jsx","hidden","FormControl","error","InputLabel","Select","_objectSpread","mapProps","map","item","MenuItem","Collapse","in","FormHelperText","message"],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.select-simple.js","sources":["../../src/form/create.select-simple.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Collapse, FormControl, FormHelperText, InputLabel, MenuItem, Select, SelectProps } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\n\r\nexport interface ISelectSimpleOption<T extends string = string> {\r\n name: string\r\n value: T\r\n}\r\n\r\nexport interface ISelectSimpleSlots {\r\n selectProps?: Omit<SelectProps, 'variant'>\r\n}\r\n\r\nexport interface ISelectSimpleProps<T> extends Partial<IFormInputBase<T>> {\r\n options?: ISelectSimpleOption[]\r\n onChange?: (value: ISelectSimpleOption) => void\r\n slots?: ISelectSimpleSlots\r\n fullWidth?: boolean\r\n}\r\n\r\nexport interface ISelectSimpleState {\r\n value?: string\r\n}\r\n\r\nexport interface ISelectSimpleParams extends ISelectSimpleSlots {\r\n options?: ISelectSimpleOption[]\r\n}\r\n\r\nfunction CreateSelectSimple<T>(args?: ISelectSimpleParams): ComponentType<ISelectSimpleProps<T>> {\r\n class SelectSimple extends Component<ISelectSimpleProps<T>, ISelectSimpleState> {\r\n constructor(props: ISelectSimpleProps<T>) {\r\n super(props)\r\n this.state = { value: this.getDefaultValue()?.toString() }\r\n }\r\n mapProps = (): SelectProps => {\r\n const label = this.getLabel()\r\n const tfp: SelectProps = {\r\n id: this.props.name?.toString(),\r\n labelId: this.props.name?.toString() + label,\r\n name: this.props.name?.toString(),\r\n label: label,\r\n defaultValue: this.getDefaultValue(),\r\n value: this.state.value,\r\n onChange: (event) => {\r\n const value: string = event.target.value + ''\r\n this.setState({ value }, () => {\r\n if (!!this.props.name) {\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n const options = this.getOptions()\r\n const temp = options.find((x) => x.value?.toString() === value)\r\n if (!temp) return\r\n this.props.onChange && this.props.onChange(temp)\r\n })\r\n },\r\n disabled: this.props.disabled,\r\n fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true\r\n }\r\n const selectProps = this.props.slots?.selectProps ?? args?.selectProps\r\n return mergeObjects({}, tfp, selectProps)\r\n }\r\n render() {\r\n const data = this.getOptions()\r\n const label = this.getLabel()\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <React.Fragment>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.getDefaultValue()} />}\r\n <FormControl fullWidth disabled={this.props.disabled} error={errorMessage.error}>\r\n <InputLabel id={this.props.name?.toString() + label}>{label}</InputLabel>\r\n <Select {...this.mapProps()}>\r\n {data.map((item) => (\r\n <MenuItem key={item.value} value={item.value}>\r\n {item.name}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <Collapse in={errorMessage.error}>\r\n <FormHelperText>{errorMessage.message}</FormHelperText>\r\n </Collapse>\r\n </FormControl>\r\n </React.Fragment>\r\n )\r\n }\r\n getLabel = () => {\r\n if (!!this.props.label && typeof this.props.label === 'string') return this.props.label\r\n return this.props.name?.toString() ?? ''\r\n }\r\n getDefaultValue = () => {\r\n const { data, name } = this.props\r\n const options = this.getOptions()\r\n return this.props.defaultValue?.toString() ?? (!!data && !!name ? data[name] : undefined) ?? options[0]?.value\r\n }\r\n getOptions = (): ISelectSimpleOption[] => {\r\n return args?.options ?? this.props.options ?? []\r\n }\r\n }\r\n return SelectSimple\r\n}\r\nexport default CreateSelectSimple\r\n"],"names":["CreateSelectSimple","args","SelectSimple","props","_this$getDefaultValue","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$props$name2","_this$props$name3","_this$props$slots$sel","_this$props$slots","label","getLabel","tfp","id","name","toString","labelId","defaultValue","getDefaultValue","value","state","onChange","event","target","setState","onBlur","temp","getOptions","find","x","_x$value","disabled","fullWidth","undefined","selectProps","slots","mergeObjects","_this$props$name$toSt","_this$props$name4","_ref","_this$props$defaultVa","_this$props$defaultVa2","_options$","_this$props","data","options","_ref2","_args$options","_inherits","Component","_createClass","key","_this$props$name5","_this$props$name6","this","errorMessage","getErrorMessage","messageErrors","_jsxs","React","Fragment","children","_jsx","hidden","FormControl","error","InputLabel","Select","_objectSpread","mapProps","map","item","MenuItem","Collapse","in","FormHelperText","message"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as t,createClass as e,
|
|
1
|
+
import{inherits as t,createClass as e,objectSpread2 as n,classCallCheck as r,callSuper as o,defineProperty as i,asyncToGenerator as a,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,Fragment as u,jsx as d}from"react/jsx-runtime";import{Component as p}from"react";import{Autocomplete as c,TextField as f}from"@mui/material";import{getErrorMessage as v}from"./helpers.js";import{ApiAlertContext as h}from"../api-context/alert-global.js";var m=function(m){var g=function(){function g(t){var e,n,s;return r(this,g),n=o(this,g,[t]),i(n,"abortController",{signalController:new AbortController}),i(n,"refInput",null),i(n,"existedIds",[]),i(n,"getFetchDataFunc",(function(){var t,e;return null!==(t=null!==(e=n.props.fetchData)&&void 0!==e?e:null==m?void 0:m.fetchData)&&void 0!==t?t:function(){return Promise.resolve([])}})),i(n,"timer",{_timer:0,_second:500,callback:(s=a(l().m((function t(e){var r,o,i;return l().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,n.abortController.signalController=new AbortController,t.n=1,n.getFetchDataFunc()(e,n.abortController.signalController.signal);case 1:r=t.v,o=n.getOptionsFilter(r,n.existedIds),n.setState({options:o}),t.n=3;break;case 2:t.p=2,t.v,null===(i=h.ApiAlert)||void 0===i||i.PushError("Error from server!");case 3:return t.p=3,n.setState({statusText:"no items"}),t.f(3);case 4:return t.a(2)}}),t,null,[[0,2,3,4]])}))),function(t){return s.apply(this,arguments)}),start:function(t){n.timer.clear(),n.timer._timer=window.setTimeout((function(){return n.timer.callback(t)}),n.timer._second)},clear:function(){n.abortController.signalController.abort(),clearTimeout(n.timer._timer)}}),i(n,"fetchData",a(l().m((function t(){var e,r,o,i,a,s;return l().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,r=n.getDefaultValue(),t.n=1,n.getFetchDataFunc()(r,n.abortController.signalController.signal);case 1:if(o=t.v,Array.isArray(o)){t.n=2;break}return t.a(2);case 2:return i=n.getOptionsFilter(o,n.existedIds),a=null!==(e=i.find((function(t){return t.Id===r})))&&void 0!==e?e:null,n.setState({options:i,optionSelected:a,loading:!1}),t.a(2);case 3:t.p=3,t.v,null===(s=h.ApiAlert)||void 0===s||s.PushError("Error from server!");case 4:return t.p=4,n.setState({statusText:"no items",loading:!1}),t.f(4);case 5:return t.a(2)}}),t,null,[[0,3,4,5]])})))),i(n,"handleChange",(function(t,e){var r;n.setState({optionSelected:e}),n.refInput&&(n.refInput.value=null!==(r=null==e?void 0:e.Id)&&void 0!==r?r:""),n.props.onChange&&n.props.onChange(e)})),i(n,"handleInputChange",(function(t,e){var r,o={inputValue:e};if(e!==(null===(r=n.state.optionSelected)||void 0===r?void 0:r.Name)){var i=e.trim().toLowerCase(),a=n.state.options.findIndex((function(t){var e;return null===(e=t.Name)||void 0===e?void 0:e.trim().toLowerCase().includes(i)}));(a<0||""===i)&&(o.statusText="loading..."),n.setState(o,(function(){(a<0||""===i)&&n.timer.start(i)}))}else n.setState(o)})),i(n,"fillterOptions",(function(t,e){return t.filter((function(t){var n,r=e.inputValue.toLowerCase();return t.Id.toLowerCase().includes(r)||(null===(n=t.Name)||void 0===n?void 0:n.toLowerCase().includes(r))}))})),i(n,"getLabel",(function(){var t,e;return null!==(t=n.props.label)&&void 0!==t?t:null===(e=n.props.name)||void 0===e?void 0:e.toString()})),i(n,"getDefaultValue",(function(){var t,e,r;if(n.props.name)return null===(t=null!==(e=n.props.defaultValue)&&void 0!==e?e:null===(r=n.props.data)||void 0===r?void 0:r[n.props.name])||void 0===t?void 0:t.toString()})),n.state={options:[],statusText:"no items",optionSelected:null,inputValue:"",loading:!0},n.existedIds=null!==(e=t.existedIds)&&void 0!==e?e:[],n}return t(g,p),e(g,[{key:"render",value:function(){var t,e,r,o,i=this,a=this.getDefaultValue(),l=v(this.props.messageErrors,this.props.name);return s(u,{children:[d(c,{disabled:this.state.loading||this.props.disabled,fullWidth:!0,noOptionsText:this.state.statusText,options:this.state.options,getOptionLabel:function(t){var e;return null!==(e=t.Name)&&void 0!==e?e:t.Id},getOptionKey:function(t){return JSON.stringify(t)},isOptionEqualToValue:function(t,e){return t.Id.toString()===e.Id.toString()&&t.Name===e.Name},filterOptions:this.fillterOptions,value:this.state.optionSelected,onChange:this.handleChange,inputValue:this.state.inputValue,onInputChange:this.handleInputChange,renderInput:function(t){var e;return d(f,n(n({},t),{},{label:i.getLabel(),error:l.error,helperText:l.message,onBlur:function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name)}},null===(e=i.props.slots)||void 0===e?void 0:e.textFieldProps))}}),d("input",{ref:function(t){return i.refInput=t},hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:a}),(null===(e=this.state.optionSelected)||void 0===e?void 0:e.Other)&&d("input",{hidden:!0,name:"".concat(null===(r=this.props.name)||void 0===r?void 0:r.toString(),"Other"),defaultValue:JSON.stringify(this.state.optionSelected.Other)},null!==(o=this.state.optionSelected.Id)&&void 0!==o?o:"key")]})}},{key:"componentDidMount",value:function(){this.fetchData()}},{key:"componentWillUnmount",value:function(){this.timer.clear()}},{key:"componentDidUpdate",value:function(t){var e;JSON.stringify(t.existedIds)!==JSON.stringify(this.props.existedIds)&&(this.existedIds=null!==(e=this.props.existedIds)&&void 0!==e?e:[])}},{key:"getOptionsFilter",value:function(t){var e=new Set(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]);return t.reduce((function(t,n){return e.has(n.Id)||(t.push(n),e.add(n.Id)),t}),[])}}])}();return g};export{m as default};
|
|
2
2
|
//# sourceMappingURL=create.select-with-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.select-with-api.js","sources":["../../src/form/create.select-with-api.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, FilterOptionsState, TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ApiAlertContext } from '../api-context'\r\n\r\nexport interface ISelectWithApiOption<TOther = any> {\r\n Id: string\r\n Name?: string\r\n Other?: TOther\r\n}\r\n\r\nexport interface ISelectWithApiPropsSlots {\r\n textFieldProps: TextFieldProps\r\n}\r\n\r\nexport type ISelectWithApiFetchData<O extends ISelectWithApiOption> = (value?: string, signal?: AbortSignal) => Promise<O[]>\r\n\r\nexport interface ISelectWithApiProps<T, O extends ISelectWithApiOption> extends IFormInputBase<T>, ISelectWithApiParams<O> {\r\n onChange?: (value: O | null) => void\r\n existedIds?: string[]\r\n slots?: ISelectWithApiPropsSlots\r\n}\r\n\r\nexport interface ISelectWithApiState<O extends ISelectWithApiOption> {\r\n options: O[]\r\n statusText?: string\r\n optionSelected: O | null\r\n inputValue: string\r\n loading?: boolean\r\n}\r\n\r\nexport interface ISelectWithApiParams<O extends ISelectWithApiOption> {\r\n fetchData?: ISelectWithApiFetchData<O>\r\n}\r\n\r\nconst CreateSelectWithApi = function <T, O extends ISelectWithApiOption = ISelectWithApiOption>(\r\n params?: ISelectWithApiParams<O>\r\n): ComponentType<ISelectWithApiProps<T, O>> {\r\n class SelectWithApi extends Component<ISelectWithApiProps<T, O>, ISelectWithApiState<O>> {\r\n abortController = { signalController: new AbortController() }\r\n refInput: HTMLInputElement | null = null\r\n existedIds: string[] = []\r\n constructor(props: ISelectWithApiProps<T, O>) {\r\n super(props)\r\n this.state = {\r\n options: [],\r\n statusText: 'no items',\r\n optionSelected: null,\r\n inputValue: '',\r\n loading: true\r\n }\r\n this.existedIds = props.existedIds ?? []\r\n }\r\n\r\n render() {\r\n const defaultValue = this.getDefaultValue()\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <>\r\n <Autocomplete\r\n disabled={this.state.loading || this.props.disabled}\r\n fullWidth\r\n noOptionsText={this.state.statusText}\r\n options={this.state.options}\r\n getOptionLabel={(x) => x.Name ?? x.Id}\r\n getOptionKey={(x) => JSON.stringify(x)}\r\n isOptionEqualToValue={(o, v) => o.Id.toString() === v.Id.toString() && o.Name === v.Name}\r\n filterOptions={this.fillterOptions}\r\n // select\r\n value={this.state.optionSelected}\r\n onChange={this.handleChange}\r\n // input\r\n inputValue={this.state.inputValue}\r\n onInputChange={this.handleInputChange}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={this.getLabel()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n onBlur={() => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }}\r\n {...this.props.slots?.textFieldProps}\r\n />\r\n )}\r\n />\r\n <input ref={(ref) => (this.refInput = ref)} hidden name={this.props.name?.toString()} defaultValue={defaultValue} />\r\n {this.state.optionSelected?.Other && (\r\n <input\r\n hidden\r\n name={`${this.props.name?.toString()}Other`}\r\n key={this.state.optionSelected.Id ?? 'key'}\r\n defaultValue={JSON.stringify(this.state.optionSelected.Other)}\r\n />\r\n )}\r\n </>\r\n )\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData()\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.timer.clear()\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ISelectWithApiProps<T, O>>): void {\r\n if (JSON.stringify(prevProps.existedIds) !== JSON.stringify(this.props.existedIds)) {\r\n this.existedIds = this.props.existedIds ?? []\r\n }\r\n }\r\n\r\n getFetchDataFunc = (): ISelectWithApiFetchData<O> => {\r\n return this.props.fetchData ?? params?.fetchData ?? (() => Promise.resolve([]))\r\n }\r\n\r\n timer = {\r\n _timer: 0,\r\n _second: 500,\r\n callback: async (value: string) => {\r\n try {\r\n this.abortController.signalController = new AbortController()\r\n const res = await this.getFetchDataFunc()(value, this.abortController.signalController.signal)\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n this.setState({ options })\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items' })\r\n }\r\n },\r\n start: (text: string) => {\r\n this.timer.clear()\r\n this.timer._timer = window.setTimeout(() => this.timer.callback(text), this.timer._second)\r\n },\r\n clear: () => {\r\n this.abortController.signalController.abort()\r\n clearTimeout(this.timer._timer)\r\n }\r\n }\r\n\r\n fetchData = async () => {\r\n try {\r\n const defaultValue = this.getDefaultValue()\r\n const res = await this.getFetchDataFunc()(defaultValue, this.abortController.signalController.signal)\r\n if (!Array.isArray(res)) return\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n const optionSelected = options.find((x) => x.Id === defaultValue) ?? null\r\n this.setState({ options, optionSelected, loading: false })\r\n return\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items', loading: false })\r\n }\r\n }\r\n\r\n handleChange = (_: React.SyntheticEvent, value: O | null) => {\r\n this.setState({ optionSelected: value })\r\n if (this.refInput) this.refInput.value = value?.Id ?? ''\r\n this.props.onChange && this.props.onChange(value)\r\n }\r\n\r\n handleInputChange = (_: React.SyntheticEvent, value: string) => {\r\n const state: Pick<ISelectWithApiState<O>, 'inputValue' | 'statusText' | 'loading'> = { inputValue: value }\r\n if (value === this.state.optionSelected?.Name) {\r\n this.setState(state)\r\n return\r\n }\r\n const valueFormated = value.trim().toLowerCase()\r\n const selectedIndex = this.state.options.findIndex((x) => {\r\n return x.Name?.trim().toLowerCase().includes(valueFormated)\r\n })\r\n if (selectedIndex < 0 || valueFormated === '') state.statusText = 'loading...'\r\n this.setState(state, () => {\r\n if (selectedIndex < 0 || valueFormated === '') this.timer.start(valueFormated)\r\n })\r\n }\r\n\r\n fillterOptions = (options: O[], state: FilterOptionsState<O>) => {\r\n return options.filter((x) => {\r\n const value = state.inputValue.toLowerCase()\r\n return x.Id.toLowerCase().includes(value) || x.Name?.toLowerCase().includes(value)\r\n })\r\n }\r\n\r\n getLabel = () => {\r\n return this.props.label ?? this.props.name?.toString()\r\n }\r\n\r\n getDefaultValue = () => {\r\n if (!this.props.name) return\r\n return (this.props.defaultValue ?? this.props.data?.[this.props.name])?.toString()\r\n }\r\n\r\n getOptionsFilter<O extends ISelectWithApiOption = ISelectWithApiOption>(options: O[], existedId: string[] = []): O[] {\r\n const ids = new Set<string | number>(existedId)\r\n return options.reduce<O[]>((a, b) => {\r\n if (!ids.has(b.Id)) {\r\n a.push(b)\r\n ids.add(b.Id)\r\n }\r\n return a\r\n }, [])\r\n }\r\n }\r\n return SelectWithApi\r\n}\r\nexport default CreateSelectWithApi\r\n"],"names":["CreateSelectWithApi","params","SelectWithApi","props","_props$existedIds","_this","_callback","_classCallCheck","_callSuper","_defineProperty","signalController","AbortController","_ref","_this$props$fetchData","fetchData","Promise","resolve","_timer","_second","callback","_asyncToGenerator","_regenerator","m","_callee","value","res","options","_ApiAlertContext$ApiA","w","_context","n","p","abortController","getFetchDataFunc","signal","v","getOptionsFilter","existedIds","setState","ApiAlertContext","ApiAlert","PushError","statusText","f","a","_x","apply","this","arguments","start","text","timer","clear","window","setTimeout","abort","clearTimeout","_callee2","_options$find","defaultValue","optionSelected","_ApiAlertContext$ApiA2","_context2","getDefaultValue","Array","isArray","find","x","Id","loading","_","_value$Id","refInput","onChange","_this$state$optionSel","state","inputValue","Name","valueFormated","trim","toLowerCase","selectedIndex","findIndex","_x$Name","includes","filter","_x$Name2","_this$props$label","_this$props$name","label","name","toString","_ref3","_this$props$defaultVa","_this$props$data","data","_inherits","Component","_createClass","key","_this$props$name2","_this$state$optionSel2","_this$props$name3","_this$state$optionSel3","_this2","eMessage","getErrorMessage","messageErrors","_jsxs","_jsx","Autocomplete","disabled","fullWidth","noOptionsText","getOptionLabel","_x$Name3","getOptionKey","JSON","stringify","isOptionEqualToValue","o","filterOptions","fillterOptions","handleChange","onInputChange","handleInputChange","renderInput","_this2$props$slots","TextField","_objectSpread","getLabel","error","helperText","message","onBlur","slots","textFieldProps","ref","hidden","Other","concat","prevProps","_this$props$existedId","ids","Set","length","undefined","reduce","b","has","push","add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.select-with-api.js","sources":["../../src/form/create.select-with-api.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Autocomplete, FilterOptionsState, TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ApiAlertContext } from '../api-context'\r\n\r\nexport interface ISelectWithApiOption<TOther = any> {\r\n Id: string\r\n Name?: string\r\n Other?: TOther\r\n}\r\n\r\nexport interface ISelectWithApiPropsSlots {\r\n textFieldProps: TextFieldProps\r\n}\r\n\r\nexport type ISelectWithApiFetchData<O extends ISelectWithApiOption> = (value?: string, signal?: AbortSignal) => Promise<O[]>\r\n\r\nexport interface ISelectWithApiProps<T, O extends ISelectWithApiOption> extends IFormInputBase<T>, ISelectWithApiParams<O> {\r\n onChange?: (value: O | null) => void\r\n existedIds?: string[]\r\n slots?: ISelectWithApiPropsSlots\r\n}\r\n\r\nexport interface ISelectWithApiState<O extends ISelectWithApiOption> {\r\n options: O[]\r\n statusText?: string\r\n optionSelected: O | null\r\n inputValue: string\r\n loading?: boolean\r\n}\r\n\r\nexport interface ISelectWithApiParams<O extends ISelectWithApiOption> {\r\n fetchData?: ISelectWithApiFetchData<O>\r\n}\r\n\r\nconst CreateSelectWithApi = function <T, O extends ISelectWithApiOption = ISelectWithApiOption>(\r\n params?: ISelectWithApiParams<O>\r\n): ComponentType<ISelectWithApiProps<T, O>> {\r\n class SelectWithApi extends Component<ISelectWithApiProps<T, O>, ISelectWithApiState<O>> {\r\n abortController = { signalController: new AbortController() }\r\n refInput: HTMLInputElement | null = null\r\n existedIds: string[] = []\r\n constructor(props: ISelectWithApiProps<T, O>) {\r\n super(props)\r\n this.state = {\r\n options: [],\r\n statusText: 'no items',\r\n optionSelected: null,\r\n inputValue: '',\r\n loading: true\r\n }\r\n this.existedIds = props.existedIds ?? []\r\n }\r\n\r\n render() {\r\n const defaultValue = this.getDefaultValue()\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <>\r\n <Autocomplete\r\n disabled={this.state.loading || this.props.disabled}\r\n fullWidth\r\n noOptionsText={this.state.statusText}\r\n options={this.state.options}\r\n getOptionLabel={(x) => x.Name ?? x.Id}\r\n getOptionKey={(x) => JSON.stringify(x)}\r\n isOptionEqualToValue={(o, v) => o.Id.toString() === v.Id.toString() && o.Name === v.Name}\r\n filterOptions={this.fillterOptions}\r\n // select\r\n value={this.state.optionSelected}\r\n onChange={this.handleChange}\r\n // input\r\n inputValue={this.state.inputValue}\r\n onInputChange={this.handleInputChange}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={this.getLabel()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n onBlur={() => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }}\r\n {...this.props.slots?.textFieldProps}\r\n />\r\n )}\r\n />\r\n <input ref={(ref) => (this.refInput = ref)} hidden name={this.props.name?.toString()} defaultValue={defaultValue} />\r\n {this.state.optionSelected?.Other && (\r\n <input\r\n hidden\r\n name={`${this.props.name?.toString()}Other`}\r\n key={this.state.optionSelected.Id ?? 'key'}\r\n defaultValue={JSON.stringify(this.state.optionSelected.Other)}\r\n />\r\n )}\r\n </>\r\n )\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData()\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.timer.clear()\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ISelectWithApiProps<T, O>>): void {\r\n if (JSON.stringify(prevProps.existedIds) !== JSON.stringify(this.props.existedIds)) {\r\n this.existedIds = this.props.existedIds ?? []\r\n }\r\n }\r\n\r\n getFetchDataFunc = (): ISelectWithApiFetchData<O> => {\r\n return this.props.fetchData ?? params?.fetchData ?? (() => Promise.resolve([]))\r\n }\r\n\r\n timer = {\r\n _timer: 0,\r\n _second: 500,\r\n callback: async (value: string) => {\r\n try {\r\n this.abortController.signalController = new AbortController()\r\n const res = await this.getFetchDataFunc()(value, this.abortController.signalController.signal)\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n this.setState({ options })\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items' })\r\n }\r\n },\r\n start: (text: string) => {\r\n this.timer.clear()\r\n this.timer._timer = window.setTimeout(() => this.timer.callback(text), this.timer._second)\r\n },\r\n clear: () => {\r\n this.abortController.signalController.abort()\r\n clearTimeout(this.timer._timer)\r\n }\r\n }\r\n\r\n fetchData = async () => {\r\n try {\r\n const defaultValue = this.getDefaultValue()\r\n const res = await this.getFetchDataFunc()(defaultValue, this.abortController.signalController.signal)\r\n if (!Array.isArray(res)) return\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n const optionSelected = options.find((x) => x.Id === defaultValue) ?? null\r\n this.setState({ options, optionSelected, loading: false })\r\n return\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items', loading: false })\r\n }\r\n }\r\n\r\n handleChange = (_: React.SyntheticEvent, value: O | null) => {\r\n this.setState({ optionSelected: value })\r\n if (this.refInput) this.refInput.value = value?.Id ?? ''\r\n this.props.onChange && this.props.onChange(value)\r\n }\r\n\r\n handleInputChange = (_: React.SyntheticEvent, value: string) => {\r\n const state: Pick<ISelectWithApiState<O>, 'inputValue' | 'statusText' | 'loading'> = { inputValue: value }\r\n if (value === this.state.optionSelected?.Name) {\r\n this.setState(state)\r\n return\r\n }\r\n const valueFormated = value.trim().toLowerCase()\r\n const selectedIndex = this.state.options.findIndex((x) => {\r\n return x.Name?.trim().toLowerCase().includes(valueFormated)\r\n })\r\n if (selectedIndex < 0 || valueFormated === '') state.statusText = 'loading...'\r\n this.setState(state, () => {\r\n if (selectedIndex < 0 || valueFormated === '') this.timer.start(valueFormated)\r\n })\r\n }\r\n\r\n fillterOptions = (options: O[], state: FilterOptionsState<O>) => {\r\n return options.filter((x) => {\r\n const value = state.inputValue.toLowerCase()\r\n return x.Id.toLowerCase().includes(value) || x.Name?.toLowerCase().includes(value)\r\n })\r\n }\r\n\r\n getLabel = () => {\r\n return this.props.label ?? this.props.name?.toString()\r\n }\r\n\r\n getDefaultValue = () => {\r\n if (!this.props.name) return\r\n return (this.props.defaultValue ?? this.props.data?.[this.props.name])?.toString()\r\n }\r\n\r\n getOptionsFilter<O extends ISelectWithApiOption = ISelectWithApiOption>(options: O[], existedId: string[] = []): O[] {\r\n const ids = new Set<string | number>(existedId)\r\n return options.reduce<O[]>((a, b) => {\r\n if (!ids.has(b.Id)) {\r\n a.push(b)\r\n ids.add(b.Id)\r\n }\r\n return a\r\n }, [])\r\n }\r\n }\r\n return SelectWithApi\r\n}\r\nexport default CreateSelectWithApi\r\n"],"names":["CreateSelectWithApi","params","SelectWithApi","props","_props$existedIds","_this","_callback","_classCallCheck","_callSuper","_defineProperty","signalController","AbortController","_ref","_this$props$fetchData","fetchData","Promise","resolve","_timer","_second","callback","_asyncToGenerator","_regenerator","m","_callee","value","res","options","_ApiAlertContext$ApiA","w","_context","n","p","abortController","getFetchDataFunc","signal","v","getOptionsFilter","existedIds","setState","ApiAlertContext","ApiAlert","PushError","statusText","f","a","_x","apply","this","arguments","start","text","timer","clear","window","setTimeout","abort","clearTimeout","_callee2","_options$find","defaultValue","optionSelected","_ApiAlertContext$ApiA2","_context2","getDefaultValue","Array","isArray","find","x","Id","loading","_","_value$Id","refInput","onChange","_this$state$optionSel","state","inputValue","Name","valueFormated","trim","toLowerCase","selectedIndex","findIndex","_x$Name","includes","filter","_x$Name2","_this$props$label","_this$props$name","label","name","toString","_ref3","_this$props$defaultVa","_this$props$data","data","_inherits","Component","_createClass","key","_this$props$name2","_this$state$optionSel2","_this$props$name3","_this$state$optionSel3","_this2","eMessage","getErrorMessage","messageErrors","_jsxs","_jsx","Autocomplete","disabled","fullWidth","noOptionsText","getOptionLabel","_x$Name3","getOptionKey","JSON","stringify","isOptionEqualToValue","o","filterOptions","fillterOptions","handleChange","onInputChange","handleInputChange","renderInput","_this2$props$slots","TextField","_objectSpread","getLabel","error","helperText","message","onBlur","slots","textFieldProps","ref","hidden","Other","concat","prevProps","_this$props$existedId","ids","Set","length","undefined","reduce","b","has","push","add"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as e,jsx as i,Fragment as o}from"react/jsx-runtime";import{styled as t,Paper as r,IconButton as
|
|
1
|
+
import{defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as e,jsx as i,Fragment as o}from"react/jsx-runtime";import{styled as t,Paper as r,IconButton as n,Box as a,Typography as s}from"@mui/material";import p from"@mui/icons-material/Close";import{mapGlobalModalContext as c}from"../api-context/global-modal.js";var x=function(l){return c((function(t){var r,n;return e(f,{size:l.size,className:l.fullHeight?"full-height":void 0,children:[e(m,{sx:null===(r=l.slots)||void 0===r?void 0:r.sxTopbarProps,children:[(null===(n=l.slots)||void 0===n?void 0:n.beforeTitle)&&e(o,{children:[l.slots.beforeTitle,i(a,{flex:1})]}),i(s,{component:"h3",variant:"subtitle1",sx:{mt:"2px",ml:"8px",fontWeight:700},children:l.title}),i(a,{flex:1}),i(h,{onClick:function(){l.onCloseClick&&l.onCloseClick(),t.close()},children:i(p,{})})]}),l.children]})}))},f=t(r)((function(e){var i=e.theme,o=e.size;return l(l({maxHeight:"calc(100vh - 24px)",overflow:"hidden",display:"flex",flexDirection:"column",position:"relative",maxWidth:"calc(100vw - 24px)",width:i.breakpoints.values[null!=o?o:"lg"]},i.breakpoints.down("sm"),{width:"calc(100vw - 24px)"}),"&.full-height",{height:"calc(100vh - 24px)"})})),h=t(n)({flex:"0 0 auto",color:"#3c3c3c","& svg":{transition:"all 0.2s"},"&:hover svg":{color:"#ff200c"}}),m=t(a)({display:"flex",alignItems:"center",padding:"0 8px 0 8px",gap:"6px",flex:"0 0 auto",boxShadow:"rgba(145, 158, 171, 0.1) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 0px 24px -4px",height:"48px"});export{x as default};
|
|
2
2
|
//# sourceMappingURL=modal-wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal-wrapper.js","sources":["../../src/form/modal-wrapper.tsx"],"sourcesContent":["import React, { FC, PropsWithChildren } from 'react'\r\nimport { Box, Breakpoint, IconButton, Paper, styled, SxProps, Theme, Typography } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport { mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormModalWrapperProps extends PropsWithChildren {\r\n title: string\r\n size?: Breakpoint\r\n fullHeight?: boolean\r\n onCloseClick?: () => void\r\n slots?: {\r\n sxTopbarProps?: SxProps<Theme>\r\n beforeTitle?: JSX.Element\r\n }\r\n}\r\n\r\nconst FormModalWrapper: FC<IFormModalWrapperProps> = (props) => {\r\n return mapGlobalModalContext((context) => (\r\n <Wrap size={props.size} className={props.fullHeight ? 'full-height' : undefined}>\r\n <TopBar sx={props.slots?.sxTopbarProps}>\r\n {props.slots?.beforeTitle && (\r\n <>\r\n {props.slots.beforeTitle}\r\n <Box flex={1} />\r\n </>\r\n )}\r\n <Typography component='h3' variant='subtitle1' sx={{ mt: '2px', ml: '8px', fontWeight: 700 }}>\r\n {props.title}\r\n </Typography>\r\n <Box flex={1} />\r\n <BtnClose\r\n onClick={() => {\r\n props.onCloseClick && props.onCloseClick()\r\n context.close()\r\n }}\r\n >\r\n <CloseIcon />\r\n </BtnClose>\r\n </TopBar>\r\n {props.children}\r\n </Wrap>\r\n ))\r\n}\r\nexport default FormModalWrapper\r\n\r\nconst Wrap = styled(Paper)<{ size?: Breakpoint }>(({ theme, size }) => ({\r\n maxHeight: 'calc(100vh - 24px)',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n maxWidth: 'calc(100vw - 24px)',\r\n width: theme.breakpoints.values[size ?? 'lg'],\r\n [theme.breakpoints.down('sm')]: { width: 'calc(100vw - 24px)' },\r\n '&.full-height': {\r\n height: 'calc(100vh - 24px)'\r\n }\r\n}))\r\n\r\nconst BtnClose = styled(IconButton)({\r\n flex: '0 0 auto',\r\n color: '#3c3c3c',\r\n '& svg': { transition: 'all 0.2s' },\r\n '&:hover svg': { color: '#ff200c' }\r\n})\r\n\r\nconst TopBar = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 8px 0 8px',\r\n gap: '6px',\r\n flex: '0 0 auto',\r\n boxShadow: 'rgba(145, 158, 171, 0.1) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 0px 24px -4px',\r\n height: '48px'\r\n})\r\n"],"names":["FormModalWrapper","props","mapGlobalModalContext","context","_props$slots","_props$slots2","_jsxs","Wrap","size","className","fullHeight","undefined","children","TopBar","sx","slots","sxTopbarProps","beforeTitle","_Fragment","_jsx","Box","flex","Typography","component","variant","mt","ml","fontWeight","title","BtnClose","onClick","onCloseClick","close","CloseIcon","styled","Paper","_ref","theme","_defineProperty","maxHeight","overflow","display","flexDirection","position","maxWidth","width","breakpoints","values","down","height","IconButton","color","transition","alignItems","padding","gap","boxShadow"],"mappings":"
|
|
1
|
+
{"version":3,"file":"modal-wrapper.js","sources":["../../src/form/modal-wrapper.tsx"],"sourcesContent":["import React, { FC, PropsWithChildren } from 'react'\r\nimport { Box, Breakpoint, IconButton, Paper, styled, SxProps, Theme, Typography } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport { mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormModalWrapperProps extends PropsWithChildren {\r\n title: string\r\n size?: Breakpoint\r\n fullHeight?: boolean\r\n onCloseClick?: () => void\r\n slots?: {\r\n sxTopbarProps?: SxProps<Theme>\r\n beforeTitle?: JSX.Element\r\n }\r\n}\r\n\r\nconst FormModalWrapper: FC<IFormModalWrapperProps> = (props) => {\r\n return mapGlobalModalContext((context) => (\r\n <Wrap size={props.size} className={props.fullHeight ? 'full-height' : undefined}>\r\n <TopBar sx={props.slots?.sxTopbarProps}>\r\n {props.slots?.beforeTitle && (\r\n <>\r\n {props.slots.beforeTitle}\r\n <Box flex={1} />\r\n </>\r\n )}\r\n <Typography component='h3' variant='subtitle1' sx={{ mt: '2px', ml: '8px', fontWeight: 700 }}>\r\n {props.title}\r\n </Typography>\r\n <Box flex={1} />\r\n <BtnClose\r\n onClick={() => {\r\n props.onCloseClick && props.onCloseClick()\r\n context.close()\r\n }}\r\n >\r\n <CloseIcon />\r\n </BtnClose>\r\n </TopBar>\r\n {props.children}\r\n </Wrap>\r\n ))\r\n}\r\nexport default FormModalWrapper\r\n\r\nconst Wrap = styled(Paper)<{ size?: Breakpoint }>(({ theme, size }) => ({\r\n maxHeight: 'calc(100vh - 24px)',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n maxWidth: 'calc(100vw - 24px)',\r\n width: theme.breakpoints.values[size ?? 'lg'],\r\n [theme.breakpoints.down('sm')]: { width: 'calc(100vw - 24px)' },\r\n '&.full-height': {\r\n height: 'calc(100vh - 24px)'\r\n }\r\n}))\r\n\r\nconst BtnClose = styled(IconButton)({\r\n flex: '0 0 auto',\r\n color: '#3c3c3c',\r\n '& svg': { transition: 'all 0.2s' },\r\n '&:hover svg': { color: '#ff200c' }\r\n})\r\n\r\nconst TopBar = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 8px 0 8px',\r\n gap: '6px',\r\n flex: '0 0 auto',\r\n boxShadow: 'rgba(145, 158, 171, 0.1) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 0px 24px -4px',\r\n height: '48px'\r\n})\r\n"],"names":["FormModalWrapper","props","mapGlobalModalContext","context","_props$slots","_props$slots2","_jsxs","Wrap","size","className","fullHeight","undefined","children","TopBar","sx","slots","sxTopbarProps","beforeTitle","_Fragment","_jsx","Box","flex","Typography","component","variant","mt","ml","fontWeight","title","BtnClose","onClick","onCloseClick","close","CloseIcon","styled","Paper","_ref","theme","_defineProperty","maxHeight","overflow","display","flexDirection","position","maxWidth","width","breakpoints","values","down","height","IconButton","color","transition","alignItems","padding","gap","boxShadow"],"mappings":"qVAgBA,IAAMA,EAA+C,SAACC,GACpD,OAAOC,GAAsB,SAACC,GAAO,IAAAC,EAAAC,EAAA,OACnCC,EAACC,EAAK,CAAAC,KAAMP,EAAMO,KAAMC,UAAWR,EAAMS,WAAa,mBAAgBC,EACpEC,SAAA,CAAAN,EAACO,EAAM,CAACC,GAAe,QAAbV,EAAEH,EAAMc,aAAK,IAAAX,OAAA,EAAXA,EAAaY,yBACX,QAAXX,EAAAJ,EAAMc,aAAK,IAAAV,OAAA,EAAXA,EAAaY,cACZX,EAAAY,EAAA,CAAAN,SAAA,CACGX,EAAMc,MAAME,YACbE,EAACC,EAAG,CAACC,KAAM,OAGfF,EAACG,EAAW,CAAAC,UAAU,KAAKC,QAAQ,YAAYV,GAAI,CAAEW,GAAI,MAAOC,GAAI,MAAOC,WAAY,cACpF1B,EAAM2B,QAETT,EAACC,EAAI,CAAAC,KAAM,IACXF,EAACU,EACC,CAAAC,QAAS,WACP7B,EAAM8B,cAAgB9B,EAAM8B,eAC5B5B,EAAQ6B,OACT,EAEDpB,SAAAO,EAACc,EAAS,CAAA,QAGbhC,EAAMW,WACF,GAEX,EAGML,EAAO2B,EAAOC,EAAPD,EAAqC,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAO7B,EAAI4B,EAAJ5B,KAAI,OAAA8B,EAAAA,EAAA,CAC9DC,UAAW,qBACXC,SAAU,SACVC,QAAS,OACTC,cAAe,SACfC,SAAU,WACVC,SAAU,qBACVC,MAAOR,EAAMS,YAAYC,OAAOvC,QAAAA,EAAQ,OACvC6B,EAAMS,YAAYE,KAAK,MAAQ,CAAEH,MAAO,uBACzC,gBAAiB,CACfI,OAAQ,sBACT,IAGGpB,EAAWK,EAAOgB,EAAPhB,CAAmB,CAClCb,KAAM,WACN8B,MAAO,UACP,QAAS,CAAEC,WAAY,YACvB,cAAe,CAAED,MAAO,aAGpBtC,EAASqB,EAAOd,EAAPc,CAAY,CACzBO,QAAS,OACTY,WAAY,SACZC,QAAS,cACTC,IAAK,MACLlC,KAAM,WACNmC,UAAW,uFACXP,OAAQ"}
|
package/dist/form/validator.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e,createClass as r,classCallCheck as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{formatFileSize as
|
|
1
|
+
import{defineProperty as e,createClass as r,classCallCheck as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{formatFileSize as u}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";var t,n;!function(e){e.Required="Required",e.Regex="Regex",e.RequiredValue="RequiredValue",e.Array="Array",e.Number="Number",e.Email="Email",e.PhoneNumber="PhoneNumber",e.Url="Url",e.File="File",e.FileRequired="FileRequired",e.Custom="Custom"}(n||(n={}));var s={Required:"The {0} is required",Regex:"The {0} is not match {1}",RequiredValue:"the {0} is not equal {1}",Array:"The {0} is not valid",Number:"{0} must be a number",Email:"The {0} is not valid",PhoneNumber:"The {0} is not valid",Url:"The {0} is not valid",File:"File size must be less than {1}",FileRequired:"The {0} is required",Custom:"Error Custom"},a=function(e,r){return r},l=r((function r(t){var l=this;i(this,r),e(this,"AddRules",(function(e){var r,i=l.configs[e];i||(i={Rules:[]},l.configs[e]=i);for(var u=arguments.length,t=new Array(u>1?u-1:0),n=1;n<u;n++)t[n-1]=arguments[n];return(r=i.Rules).push.apply(r,t),l})),e(this,"Required",(function(e,r){return null==r||""===r})),e(this,"Regex",(function(e,r,i){return!!r&&!e.Value.test(r)})),e(this,"RequiredValue",(function(e,r){return!!r&&r!==e.Value})),e(this,"Custom",(function(e,r,i){return"function"!=typeof e.Value||e.Value(r,i)})),e(this,"Array",(function(e,r){return!!r&&("number"!=typeof e.Value||(!Array.isArray(r)||r.length<=e.Value))})),e(this,"Number",(function(e,r){return!!r&&isNaN(Number(r))})),e(this,"Email",(function(e,r){if(!r)return!1;return!/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(r)})),e(this,"PhoneNumber",(function(e,r){if(!r)return!1;return!/^(\+?\d{1,4}[\s-]?)?((\(\d{1,4}\))|\d{1,4})[\s-]?\d{1,4}[\s-]?\d{1,9}$/.test((null!=r?r:"").trim())})),e(this,"Url",(function(e,r){if(!r)return!1;try{return new URL(r),!1}catch(e){return!0}})),e(this,"File",(function(e,r){if(!r)return!1;var i=a(0,e.options),u=Array.isArray(r)?r:[r];return!!i&&(!0===i.all?u.reduce((function(e,r){return e+=r.size}),0)>i.maxSize:u.some((function(e){return e.size>i.maxSize})))})),e(this,"FileRequired",(function(e,r){return!!(Array.isArray(r)?r:[r]).filter((function(e){return!!e})).some((function(e){return e.size<=0}))})),e(this,"RenderMessage",(function(e,r,i){if(!e.message)switch(e.message=s[e.rule].replace("{0}",null!=i?i:r),e.rule){case n.Regex:e.message=e.message.replace("{1}",e.Value.source);break;case n.RequiredValue:var t,l;e.message=e.message.replace("{1}",null!==(t=null===(l=e.Value)||void 0===l?void 0:l.toString())&&void 0!==t?t:"");break;case n.File:var o,c,f=a(0,e.options);if(!0===(null==f?void 0:f.all))e.message="Total file size must be less than ".concat(u((null!==(o=null==f?void 0:f.maxSize)&&void 0!==o?o:0)/1024));else e.message=e.message.replace("{1}",u((null!==(c=null==f?void 0:f.maxSize)&&void 0!==c?c:0)/1024))}return e.message=e.message.replace("{0}",r),e})),e(this,"run",(function(e){var r=Object.keys(l.configs),i={};return r.forEach((function(r){var u=l.configs[r];if(u){var t=l.Executed(u,e[r],e);t.length<1||(i[r]=t.map((function(e){return l.RenderMessage(e,r,u.label)})))}})),i})),e(this,"Executed",(function(e,r,i){return e.Rules.filter((function(e){var u=l[e.rule.toString()];return u&&u(e,r,i)}))})),this.configs=t}));t=l,e(l,"initial",(function(e){return new t(e)}));var o=function(){return new l({})};export{n as SingleRuleValidate,o as createFormValidator,l as default,a as mapRuleOptions};
|
|
2
2
|
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sources":["../../src/form/validator.ts"],"sourcesContent":["import { formatFileSize } from '../utils'\r\n\r\nexport type IModelBase = { [key: string]: any }\r\n\r\nexport enum SingleRuleValidate {\r\n Required = 'Required',\r\n Regex = 'Regex',\r\n RequiredValue = 'RequiredValue',\r\n Array = 'Array',\r\n Number = 'Number',\r\n Email = 'Email',\r\n PhoneNumber = 'PhoneNumber',\r\n Url = 'Url',\r\n File = 'File',\r\n FileRequired = 'FileRequired',\r\n Custom = 'Custom'\r\n}\r\n\r\nconst MessageDefault = {\r\n Required: 'The {0} is required',\r\n Regex: 'The {0} is not match {1}',\r\n RequiredValue: 'the {0} is not equal {1}',\r\n Array: 'The {0} is not valid',\r\n Number: '{0} must be a number',\r\n Email: 'The {0} is not valid',\r\n PhoneNumber: 'The {0} is not valid',\r\n Url: 'The {0} is not valid',\r\n File: 'File size must be less than {1}',\r\n FileRequired: 'The {0} is required',\r\n Custom: 'Error Custom'\r\n}\r\n\r\nexport interface IRuleOptions {\r\n File: {\r\n maxSize: number\r\n // toal size of files\r\n all?: boolean\r\n }\r\n}\r\n\r\nexport const mapRuleOptions = <TK extends keyof IRuleOptions>(key: TK, options?: IRuleOptions[TK]) => options\r\n\r\nexport interface IRuleOption<TModel = any> {\r\n rule: SingleRuleValidate\r\n message?: string\r\n Value?: RegExp | ((value: any, model: TModel) => boolean) | number | Array<any> | boolean\r\n options?: any\r\n}\r\n\r\nexport interface IConfigValue<TModel = any> {\r\n Rules: IRuleOption<TModel>[]\r\n label?: string\r\n}\r\n\r\nexport interface IModelError {\r\n message: string\r\n error: boolean\r\n}\r\n\r\nexport type IFormValidatorConfig<TModel> = {\r\n [key in keyof Extract<TModel, IModelBase>]?: IConfigValue<TModel>\r\n}\r\n\r\nexport type IPartialError<TModel> = {\r\n [key in keyof TModel]?: IRuleOption<TModel>[]\r\n}\r\n\r\nexport default class FormValidator<TModel> {\r\n configs: IFormValidatorConfig<TModel>\r\n constructor(configs: IFormValidatorConfig<TModel>) {\r\n this.configs = configs\r\n }\r\n\r\n static initial = <T>(configs: IFormValidatorConfig<T>) => new FormValidator(configs)\r\n\r\n AddRules = (key: keyof TModel, ...rule: IRuleOption<TModel>[]) => {\r\n let fieldConfig = this.configs[key]\r\n if (!fieldConfig) {\r\n fieldConfig = { Rules: [] }\r\n this.configs[key] = fieldConfig\r\n }\r\n fieldConfig.Rules.push(...rule)\r\n return this\r\n }\r\n\r\n Required = (RuleOption: IRuleOption, value: any) => {\r\n return value === null || value === undefined || value === ''\r\n }\r\n Regex = (RuleOption: IRuleOption, value: string, Regex: RegExp) => {\r\n if (!value) return false\r\n return !(RuleOption.Value as RegExp).test(value)\r\n }\r\n RequiredValue = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n return value !== RuleOption.Value\r\n }\r\n Custom = (RuleOption: IRuleOption, value: any, model: any) => {\r\n if (typeof RuleOption.Value === 'function') {\r\n return RuleOption.Value(value, model)\r\n }\r\n return true\r\n }\r\n Array = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n if (typeof RuleOption.Value === 'number') {\r\n return Array.isArray(value) ? value.length <= RuleOption.Value : true\r\n }\r\n return true\r\n }\r\n Number = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n return isNaN(Number(value))\r\n }\r\n Email = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n return !regex.test(value)\r\n }\r\n PhoneNumber = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n const phoneRegex = /^(\\+?\\d{1,4}[\\s-]?)?((\\(\\d{1,4}\\))|\\d{1,4})[\\s-]?\\d{1,4}[\\s-]?\\d{1,9}$/\r\n return !phoneRegex.test((value ?? '').trim())\r\n }\r\n Url = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n try {\r\n new URL(value)\r\n return false\r\n } catch (err) {\r\n return true\r\n }\r\n }\r\n File = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n const options = mapRuleOptions('File', RuleOption.options)\r\n const files: File[] = Array.isArray(value) ? value : [value]\r\n if (!options) return false\r\n if (options.all === true) {\r\n const size = files.reduce((a, b) => {\r\n a += b.size\r\n return a\r\n }, 0)\r\n return size > options.maxSize\r\n } else {\r\n return files.some((x) => x.size > options.maxSize)\r\n }\r\n }\r\n FileRequired = (RuleOption: IRuleOption, value: any) => {\r\n const files: File[] = Array.isArray(value) ? value : [value]\r\n return !!files.filter((x) => !!x).some((x) => x.size <= 0)\r\n }\r\n RenderMessage = (RuleOption: IRuleOption, key: string, label?: string) => {\r\n if (!RuleOption.message) {\r\n RuleOption.message = MessageDefault[RuleOption.rule].replace('{0}', label ?? key)\r\n switch (RuleOption.rule) {\r\n case SingleRuleValidate.Regex: {\r\n RuleOption.message = RuleOption.message.replace('{1}', (RuleOption.Value as RegExp).source)\r\n break\r\n }\r\n case SingleRuleValidate.RequiredValue: {\r\n RuleOption.message = RuleOption.message.replace('{1}', RuleOption.Value?.toString() ?? '')\r\n break\r\n }\r\n case SingleRuleValidate.File: {\r\n const options = mapRuleOptions('File', RuleOption.options)\r\n if (options?.all === true) {\r\n RuleOption.message = `Total file size must be less than ${formatFileSize((options?.maxSize ?? 0) / 1024)}`\r\n } else {\r\n RuleOption.message = RuleOption.message.replace('{1}', formatFileSize((options?.maxSize ?? 0) / 1024))\r\n }\r\n break\r\n }\r\n default:\r\n break\r\n }\r\n }\r\n RuleOption.message = RuleOption.message.replace('{0}', key)\r\n return RuleOption\r\n }\r\n run = (model: TModel) => {\r\n const keys = Object.keys(this.configs)\r\n const data: IPartialError<TModel> = {}\r\n keys.forEach((key) => {\r\n const config = this.configs[key]\r\n if (!config) return\r\n const tmp = this.Executed(config, (model as any)[key], model)\r\n if (tmp.length < 1) return\r\n ;(data as any)[key] = tmp.map((x) => this.RenderMessage(x, key, config.label))\r\n })\r\n return data\r\n }\r\n Executed = (Config: IConfigValue, valueField: any, model: any) => {\r\n return Config.Rules.filter((Value) => {\r\n const action = (this as any)[Value.rule.toString()]\r\n return action && action(Value, valueField, model)\r\n })\r\n }\r\n}\r\n\r\nexport const createFormValidator = <TModel>() => {\r\n return new FormValidator<Partial<TModel>>({})\r\n}\r\n"],"names":["SingleRuleValidate","MessageDefault","Required","Regex","RequiredValue","Array","Number","Email","PhoneNumber","Url","File","FileRequired","Custom","mapRuleOptions","key","options","FormValidator","_createClass","configs","_this","this","_classCallCheck","_defineProperty","_fieldConfig$Rules","fieldConfig","Rules","_len","arguments","length","rule","_key","push","apply","RuleOption","value","Value","test","model","isArray","isNaN","trim","URL","err","files","all","reduce","a","b","size","maxSize","some","x","filter","label","message","replace","source","_RuleOption$Value$toS","_RuleOption$Value","toString","_options$maxSize","_options$maxSize2","concat","formatFileSize","keys","Object","data","forEach","config","tmp","Executed","map","RenderMessage","Config","valueField","action","_FormValidator","createFormValidator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator.js","sources":["../../src/form/validator.ts"],"sourcesContent":["import { formatFileSize } from '../utils'\r\n\r\nexport type IModelBase = { [key: string]: any }\r\n\r\nexport enum SingleRuleValidate {\r\n Required = 'Required',\r\n Regex = 'Regex',\r\n RequiredValue = 'RequiredValue',\r\n Array = 'Array',\r\n Number = 'Number',\r\n Email = 'Email',\r\n PhoneNumber = 'PhoneNumber',\r\n Url = 'Url',\r\n File = 'File',\r\n FileRequired = 'FileRequired',\r\n Custom = 'Custom'\r\n}\r\n\r\nconst MessageDefault = {\r\n Required: 'The {0} is required',\r\n Regex: 'The {0} is not match {1}',\r\n RequiredValue: 'the {0} is not equal {1}',\r\n Array: 'The {0} is not valid',\r\n Number: '{0} must be a number',\r\n Email: 'The {0} is not valid',\r\n PhoneNumber: 'The {0} is not valid',\r\n Url: 'The {0} is not valid',\r\n File: 'File size must be less than {1}',\r\n FileRequired: 'The {0} is required',\r\n Custom: 'Error Custom'\r\n}\r\n\r\nexport interface IRuleOptions {\r\n File: {\r\n maxSize: number\r\n // toal size of files\r\n all?: boolean\r\n }\r\n}\r\n\r\nexport const mapRuleOptions = <TK extends keyof IRuleOptions>(key: TK, options?: IRuleOptions[TK]) => options\r\n\r\nexport interface IRuleOption<TModel = any> {\r\n rule: SingleRuleValidate\r\n message?: string\r\n Value?: RegExp | ((value: any, model: TModel) => boolean) | number | Array<any> | boolean\r\n options?: any\r\n}\r\n\r\nexport interface IConfigValue<TModel = any> {\r\n Rules: IRuleOption<TModel>[]\r\n label?: string\r\n}\r\n\r\nexport interface IModelError {\r\n message: string\r\n error: boolean\r\n}\r\n\r\nexport type IFormValidatorConfig<TModel> = {\r\n [key in keyof Extract<TModel, IModelBase>]?: IConfigValue<TModel>\r\n}\r\n\r\nexport type IPartialError<TModel> = {\r\n [key in keyof TModel]?: IRuleOption<TModel>[]\r\n}\r\n\r\nexport default class FormValidator<TModel> {\r\n configs: IFormValidatorConfig<TModel>\r\n constructor(configs: IFormValidatorConfig<TModel>) {\r\n this.configs = configs\r\n }\r\n\r\n static initial = <T>(configs: IFormValidatorConfig<T>) => new FormValidator(configs)\r\n\r\n AddRules = (key: keyof TModel, ...rule: IRuleOption<TModel>[]) => {\r\n let fieldConfig = this.configs[key]\r\n if (!fieldConfig) {\r\n fieldConfig = { Rules: [] }\r\n this.configs[key] = fieldConfig\r\n }\r\n fieldConfig.Rules.push(...rule)\r\n return this\r\n }\r\n\r\n Required = (RuleOption: IRuleOption, value: any) => {\r\n return value === null || value === undefined || value === ''\r\n }\r\n Regex = (RuleOption: IRuleOption, value: string, Regex: RegExp) => {\r\n if (!value) return false\r\n return !(RuleOption.Value as RegExp).test(value)\r\n }\r\n RequiredValue = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n return value !== RuleOption.Value\r\n }\r\n Custom = (RuleOption: IRuleOption, value: any, model: any) => {\r\n if (typeof RuleOption.Value === 'function') {\r\n return RuleOption.Value(value, model)\r\n }\r\n return true\r\n }\r\n Array = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n if (typeof RuleOption.Value === 'number') {\r\n return Array.isArray(value) ? value.length <= RuleOption.Value : true\r\n }\r\n return true\r\n }\r\n Number = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n return isNaN(Number(value))\r\n }\r\n Email = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n return !regex.test(value)\r\n }\r\n PhoneNumber = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n const phoneRegex = /^(\\+?\\d{1,4}[\\s-]?)?((\\(\\d{1,4}\\))|\\d{1,4})[\\s-]?\\d{1,4}[\\s-]?\\d{1,9}$/\r\n return !phoneRegex.test((value ?? '').trim())\r\n }\r\n Url = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n try {\r\n new URL(value)\r\n return false\r\n } catch (err) {\r\n return true\r\n }\r\n }\r\n File = (RuleOption: IRuleOption, value: any) => {\r\n if (!value) return false\r\n const options = mapRuleOptions('File', RuleOption.options)\r\n const files: File[] = Array.isArray(value) ? value : [value]\r\n if (!options) return false\r\n if (options.all === true) {\r\n const size = files.reduce((a, b) => {\r\n a += b.size\r\n return a\r\n }, 0)\r\n return size > options.maxSize\r\n } else {\r\n return files.some((x) => x.size > options.maxSize)\r\n }\r\n }\r\n FileRequired = (RuleOption: IRuleOption, value: any) => {\r\n const files: File[] = Array.isArray(value) ? value : [value]\r\n return !!files.filter((x) => !!x).some((x) => x.size <= 0)\r\n }\r\n RenderMessage = (RuleOption: IRuleOption, key: string, label?: string) => {\r\n if (!RuleOption.message) {\r\n RuleOption.message = MessageDefault[RuleOption.rule].replace('{0}', label ?? key)\r\n switch (RuleOption.rule) {\r\n case SingleRuleValidate.Regex: {\r\n RuleOption.message = RuleOption.message.replace('{1}', (RuleOption.Value as RegExp).source)\r\n break\r\n }\r\n case SingleRuleValidate.RequiredValue: {\r\n RuleOption.message = RuleOption.message.replace('{1}', RuleOption.Value?.toString() ?? '')\r\n break\r\n }\r\n case SingleRuleValidate.File: {\r\n const options = mapRuleOptions('File', RuleOption.options)\r\n if (options?.all === true) {\r\n RuleOption.message = `Total file size must be less than ${formatFileSize((options?.maxSize ?? 0) / 1024)}`\r\n } else {\r\n RuleOption.message = RuleOption.message.replace('{1}', formatFileSize((options?.maxSize ?? 0) / 1024))\r\n }\r\n break\r\n }\r\n default:\r\n break\r\n }\r\n }\r\n RuleOption.message = RuleOption.message.replace('{0}', key)\r\n return RuleOption\r\n }\r\n run = (model: TModel) => {\r\n const keys = Object.keys(this.configs)\r\n const data: IPartialError<TModel> = {}\r\n keys.forEach((key) => {\r\n const config = this.configs[key]\r\n if (!config) return\r\n const tmp = this.Executed(config, (model as any)[key], model)\r\n if (tmp.length < 1) return\r\n ;(data as any)[key] = tmp.map((x) => this.RenderMessage(x, key, config.label))\r\n })\r\n return data\r\n }\r\n Executed = (Config: IConfigValue, valueField: any, model: any) => {\r\n return Config.Rules.filter((Value) => {\r\n const action = (this as any)[Value.rule.toString()]\r\n return action && action(Value, valueField, model)\r\n })\r\n }\r\n}\r\n\r\nexport const createFormValidator = <TModel>() => {\r\n return new FormValidator<Partial<TModel>>({})\r\n}\r\n"],"names":["SingleRuleValidate","MessageDefault","Required","Regex","RequiredValue","Array","Number","Email","PhoneNumber","Url","File","FileRequired","Custom","mapRuleOptions","key","options","FormValidator","_createClass","configs","_this","this","_classCallCheck","_defineProperty","_fieldConfig$Rules","fieldConfig","Rules","_len","arguments","length","rule","_key","push","apply","RuleOption","value","Value","test","model","isArray","isNaN","trim","URL","err","files","all","reduce","a","b","size","maxSize","some","x","filter","label","message","replace","source","_RuleOption$Value$toS","_RuleOption$Value","toString","_options$maxSize","_options$maxSize2","concat","formatFileSize","keys","Object","data","forEach","config","tmp","Executed","map","RenderMessage","Config","valueField","action","_FormValidator","createFormValidator"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as r,createClass as n,classCallCheck as t,callSuper as e,defineProperty as a,asyncToGenerator as s,regenerator as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{fetchDelay as i}from"./helpers.js";import{createHttpService as u}from"./gateway.js";import c from"./service-base.js";var l=function(){function l(r){var n;return t(this,l),n=e(this,l,[u("".concat(process.env.REACT_APP_ADMIN_API||window.location.origin).concat(r))]),a(n,"all",(function(r,t,e){var a;return i(s(o().m((function e(){var a;return o().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,n.tryPushNotify(n.post,"All",r,{headers:{"Content-Type":"application/json"},signal:t});case 1:return a=e.v,e.a(2,a)}}),e)}))),null!==(a=null==e?void 0:e.delay)&&void 0!==a?a:500)})),a(n,"single",(function(r,t){return i(s(o().m((function e(){var a;return o().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,n.tryGet("Get",{params:{Id:r},signal:t});case 1:return a=e.v,e.a(2,a)}}),e)}))),500)})),a(n,"create",(function(r,t,e){var a;return i(s(o().m((function e(){var a;return o().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,n.pushNotify(n.post,"Create",r,{signal:t});case 1:return a=e.v,e.a(2,a)}}),e)}))),null!==(a=null==e?void 0:e.delay)&&void 0!==a?a:500)})),a(n,"update",(function(r,t,e){return i(s(o().m((function a(){var s;return o().w((function(a){for(;;)switch(a.n){case 0:return a.n=1,n.pushNotify(n.put,"Update",t,{signal:e,params:{Id:r}});case 1:return s=a.v,a.a(2,s)}}),a)}))),500)})),a(n,"remove",(function(r,t){return i(s(o().m((function e(){var a;return o().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,n.pushNotify(n.delete,"Delete",{params:{Id:r},signal:t});case 1:return a=e.v,e.a(2,a)}}),e)}))),500)})),n}return r(l,c),n(l)}();export{l as default};
|
|
2
|
+
//# sourceMappingURL=crud-service-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud-service-base.js","sources":["../../../src/http-service/base/crud-service-base.ts"],"sourcesContent":["import { fetchDelay } from './helpers'\r\nimport { createHttpService } from './gateway'\r\nimport type { IFilterModelSwagger, IReponseAll } from './types'\r\nimport ServiceBase from './service-base'\r\n\r\n/**\r\n * Base class for HTTP CRUD services.\r\n *\r\n * @template T - Entity type.\r\n * @template K - Entity ID type.\r\n *\r\n * Provides common methods:\r\n * - all: Get list with filter and pagination\r\n * - single: Get detail by ID\r\n * - create: Add new entity\r\n * - update: Update entity by ID\r\n * - remove: Delete entity by ID\r\n *\r\n * Supports request cancellation and artificial delay.\r\n */\r\nclass CRUDServiceBase<T, K> extends ServiceBase {\r\n constructor(baseUri: string) {\r\n super(createHttpService(`${process.env.REACT_APP_ADMIN_API || window.location.origin}${baseUri}`))\r\n }\r\n /**\r\n * Fetches a list of entities with optional filters and pagination.\r\n *\r\n * @param filters - Filters and pagination options.\r\n * @param signal - Optional AbortSignal for request cancellation.\r\n * @param options - Optional delay configuration.\r\n * @returns A promise resolving to the response containing the list of entities.\r\n */\r\n all = (filters: Partial<IFilterModelSwagger<T>>, signal?: AbortSignal, options?: { delay?: number }) => {\r\n return fetchDelay(async () => {\r\n const data = await this.tryPushNotify(this.post<IReponseAll<T>>, 'All', filters, {\r\n headers: { 'Content-Type': 'application/json' },\r\n signal\r\n })\r\n return data\r\n }, options?.delay ?? 500)\r\n }\r\n /**\r\n * Fetches a single entity by its ID.\r\n *\r\n * @param id - The ID of the entity to fetch.\r\n * @param signal - Optional AbortSignal for request cancellation.\r\n * @returns A promise resolving to the entity data.\r\n */\r\n single = (id: K, signal?: AbortSignal) => {\r\n return fetchDelay(async () => {\r\n const data = await this.tryGet<T>('Get', { params: { Id: id }, signal })\r\n return data\r\n }, 500)\r\n }\r\n /**\r\n * Creates a new entity.\r\n *\r\n * @param model - The entity data to create.\r\n * @param signal - Optional AbortSignal for request cancellation.\r\n * @param options - Optional delay configuration.\r\n * @returns A promise resolving to the created entity data.\r\n */\r\n create = (model: Partial<T>, signal?: AbortSignal, options?: { delay?: number }) => {\r\n return fetchDelay(async () => {\r\n const data = await this.pushNotify(this.post<T>, 'Create', model, { signal })\r\n return data\r\n }, options?.delay ?? 500)\r\n }\r\n /**\r\n * Updates an existing entity by its ID.\r\n *\r\n * @param id - The ID of the entity to update.\r\n * @param model - The partial entity data to update.\r\n * @param signal - Optional AbortSignal for request cancellation.\r\n * @returns A promise resolving to the updated entity data.\r\n */\r\n update = (id: K, model: Partial<T>, signal?: AbortSignal) => {\r\n return fetchDelay(async () => {\r\n const data = await this.pushNotify(this.put<T>, 'Update', model, { signal, params: { Id: id } })\r\n return data\r\n }, 500)\r\n }\r\n /**\r\n * Deletes an entity by its ID.\r\n *\r\n * @param id - The ID of the entity to delete.\r\n * @param signal - Optional AbortSignal for request cancellation.\r\n * @returns A promise resolving to the deletion response.\r\n */\r\n remove = (id: K, signal?: AbortSignal) => {\r\n return fetchDelay(async () => {\r\n const data = await this.pushNotify(this.delete<T>, 'Delete', { params: { Id: id }, signal })\r\n return data\r\n }, 500)\r\n }\r\n}\r\n\r\nexport default CRUDServiceBase\r\n"],"names":["CRUDServiceBase","baseUri","_this","_classCallCheck","_callSuper","this","createHttpService","concat","process","env","REACT_APP_ADMIN_API","window","location","origin","_defineProperty","filters","signal","options","_options$delay","fetchDelay","_asyncToGenerator","_regenerator","m","_callee","data","w","_context","n","tryPushNotify","post","headers","v","a","delay","id","_callee2","_context2","tryGet","params","Id","model","_options$delay2","_callee3","_context3","pushNotify","_callee4","_context4","put","_callee5","_context5","_inherits","ServiceBase","_createClass"],"mappings":"kTAoBMA,IAAAA,aACJ,SAAAA,EAAYC,GAAe,IAAAC,EAyE1B,OAzE0BC,OAAAH,GACzBE,EAAAE,EAAAC,KAAAL,EAAA,CAAMM,EAAiBC,GAAAA,OAAIC,QAAQC,IAAIC,qBAAuBC,OAAOC,SAASC,QAAMN,OAAGN,MAEzFa,EAAAZ,EAQM,OAAA,SAACa,EAA0CC,EAAsBC,GAAgC,IAAAC,EACrG,OAAOC,EAAUC,EAAAC,IAAAC,GAAC,SAAAC,IAAA,IAAAC,EAAA,OAAAH,IAAAI,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,OAAAD,EAAAC,EAAA,EACGzB,EAAK0B,cAAc1B,EAAK2B,KAAsB,MAAOd,EAAS,CAC/Ee,QAAS,CAAE,eAAgB,oBAC3Bd,OAAAA,IACA,KAAA,EAHQ,OAAJQ,EAAIE,EAAAK,EAAAL,EAAAM,EAAA,EAIHR,GAAI,GAAAD,EAAA,aACZL,EAAED,aAAAA,EAAAA,EAASgB,aAAK,IAAAf,EAAAA,EAAI,QAEvBJ,EAAAZ,EAAA,UAOS,SAACgC,EAAOlB,GACf,OAAOG,EAAUC,EAAAC,IAAAC,GAAC,SAAAa,IAAA,IAAAX,EAAA,OAAAH,IAAAI,GAAA,SAAAW,GAAA,cAAAA,EAAAT,GAAA,KAAA,EAAA,OAAAS,EAAAT,EAAA,EACGzB,EAAKmC,OAAU,MAAO,CAAEC,OAAQ,CAAEC,GAAIL,GAAMlB,OAAAA,IAAS,KAAA,EAA9D,OAAJQ,EAAIY,EAAAL,EAAAK,EAAAJ,EAAA,EACHR,GAAI,GAAAW,OACV,QAELrB,EAAAZ,EAQS,UAAA,SAACsC,EAAmBxB,EAAsBC,GAAgC,IAAAwB,EACjF,OAAOtB,EAAUC,EAAAC,IAAAC,GAAC,SAAAoB,IAAA,IAAAlB,EAAA,OAAAH,IAAAI,GAAA,SAAAkB,GAAA,cAAAA,EAAAhB,GAAA,KAAA,EAAA,OAAAgB,EAAAhB,EAAA,EACGzB,EAAK0C,WAAW1C,EAAK2B,KAAS,SAAUW,EAAO,CAAExB,OAAAA,IAAS,KAAA,EAAnE,OAAJQ,EAAImB,EAAAZ,EAAAY,EAAAX,EAAA,EACHR,GAAI,GAAAkB,EAAA,aACZD,EAAExB,aAAAA,EAAAA,EAASgB,aAAK,IAAAQ,EAAAA,EAAI,QAEvB3B,EAAAZ,EAQS,UAAA,SAACgC,EAAOM,EAAmBxB,GAClC,OAAOG,EAAUC,EAAAC,IAAAC,GAAC,SAAAuB,IAAA,IAAArB,EAAA,OAAAH,IAAAI,GAAA,SAAAqB,GAAA,cAAAA,EAAAnB,GAAA,KAAA,EAAA,OAAAmB,EAAAnB,EAAA,EACGzB,EAAK0C,WAAW1C,EAAK6C,IAAQ,SAAUP,EAAO,CAAExB,OAAAA,EAAQsB,OAAQ,CAAEC,GAAIL,KAAO,KAAA,EAAtF,OAAJV,EAAIsB,EAAAf,EAAAe,EAAAd,EAAA,EACHR,GAAI,GAAAqB,OACV,QAEL/B,EAAAZ,EAAA,UAOS,SAACgC,EAAOlB,GACf,OAAOG,EAAUC,EAAAC,IAAAC,GAAC,SAAA0B,IAAA,IAAAxB,EAAA,OAAAH,IAAAI,GAAA,SAAAwB,GAAA,cAAAA,EAAAtB,GAAA,KAAA,EAAA,OAAAsB,EAAAtB,EAAA,EACGzB,EAAK0C,WAAW1C,EAAc,OAAE,SAAU,CAAEoC,OAAQ,CAAEC,GAAIL,GAAMlB,OAAAA,IAAS,KAAA,EAAlF,OAAJQ,EAAIyB,EAAAlB,EAAAkB,EAAAjB,EAAA,EACHR,GAAI,GAAAwB,OACV,QACJ9C,CAvED,CAAC,OAAAgD,EAAAlD,EAHiCmD,GAGjCC,EAAApD,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sources":["../../../src/http-service/base/gateway.ts"],"sourcesContent":["import Axios from 'axios'\r\nimport type { AxiosRequestHeaders } from 'axios'\r\n\r\nexport const HttpService = Axios.create({ baseURL: '' })\r\n\r\nexport const createHttpService = (baseURL: string, headers?: AxiosRequestHeaders) => {\r\n return Axios.create({ baseURL, headers })\r\n}\r\n"],"names":["HttpService","Axios","create","baseURL","createHttpService","headers"],"mappings":"yBAGaA,EAAcC,EAAMC,OAAO,CAAEC,QAAS,KAEtCC,EAAoB,SAACD,EAAiBE,GACjD,OAAOJ,EAAMC,OAAO,CAAEC,QAAAA,EAASE,QAAAA,GACjC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{asyncToGenerator as r,regenerator as e,slicedToArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{authService as o,ApplicationPaths as t}from"partner-oidc-auth";var u=globalThis.ApiAlertContext;"development"===process.env.NODE_ENV&&(globalThis.authService=o);var i=function(r){return new Promise((function(e){return setTimeout(e,r)}))},s=function(){var o=r(e().m((function r(o,t){var u,s,a;return e().w((function(r){for(;;)switch(r.n){case 0:return r.n=1,Promise.all([o(),i(t)]);case 1:return u=r.v,s=n(u,1),a=s[0],r.a(2,a)}}),r)})));return function(r,e){return o.apply(this,arguments)}}(),a=function(r){var e,n,o,t=Object.values(null!==(e=null===(n=r.response)||void 0===n?void 0:n.data)&&void 0!==e?e:{}).filter((function(r){return r.length>0})).map((function(r){return r[0]}));t.length<1||null==u||null===(o=u.ApiAlert)||void 0===o||o.PushError(t.join("\n"))},l=function(){var n=r(e().m((function r(n){var i,s,a,l,c,d,v,p,f,h;return e().w((function(r){for(;;)switch(r.n){case 0:if(403!==(null===(i=n.response)||void 0===i?void 0:i.status)){r.n=7;break}d=n.response.data,h=d.Code,r.n=3===h?1:1===h?3:5;break;case 1:return r.n=2,o.signOut({returnUrl:o.getReturnUrl()});case 2:return r.a(3,6);case 3:return r.n=4,null===(v=o.userManager)||void 0===v?void 0:v.revokeTokens(["access_token"]);case 4:return window.location.replace(t.Origin("")),r.a(3,6);case 5:return window.location.replace(t.Origin(t.IdentityAccessDenied)),r.a(3,6);case 6:r.n=8;break;case 7:401===(null===(s=n.response)||void 0===s?void 0:s.status)||"ERR_CANCELED"===n.code||((null!==(a=null===(l=n.response)||void 0===l?void 0:l.status)&&void 0!==a?a:500)>=500?"ERR_CANCELED"!==n.code&&(null==u||null===(p=u.ApiAlert)||void 0===p||p.PushError("An error has occurred!")):404===(null===(c=n.response)||void 0===c?void 0:c.status)&&(null==u||null===(f=u.ApiAlert)||void 0===f||f.PushError("Resource not found!")));case 8:return r.a(2,Promise.reject(n))}}),r)})));return function(r){return n.apply(this,arguments)}}();export{u as ApiAlertContext,s as fetchDelay,l as handleResponseError,a as processError,i as sleep};
|
|
2
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../src/http-service/base/helpers.ts"],"sourcesContent":["import { AxiosError } from 'axios'\r\nimport { ApplicationPaths, authService } from 'partner-oidc-auth'\r\nimport type { IApiContext } from './type.api-alert'\r\n\r\nexport const ApiAlertContext = (globalThis as any).ApiAlertContext as IApiContext | undefined\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n ;(globalThis as any).authService = authService\r\n}\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\ninterface ErrorModel {\r\n [key: string]: string[]\r\n}\r\n\r\n/**\r\n * Processes axios errors and displays error messages to the user\r\n * @param err - The axios error containing response data\r\n */\r\nexport const processError = (err: AxiosError<ErrorModel>) => {\r\n const errorMessages = Object.values(err.response?.data ?? {})\r\n .filter((x) => x.length > 0)\r\n .map((x) => x[0])\r\n if (errorMessages.length < 1) return\r\n ApiAlertContext?.ApiAlert?.PushError(errorMessages.join('\\n'))\r\n}\r\n\r\n/**\r\n * Checks if the current user's token is expired.\r\n * @returns {Promise<boolean>} True if token is expired or user not logged in, false otherwise.\r\n */\r\nexport const checkTokenExpiry = async () => {\r\n try {\r\n const user = await authService.getUser()\r\n if (!user) {\r\n console.log('No user is currently logged in.')\r\n return true\r\n }\r\n\r\n const now = Math.floor(Date.now() / 1000) // Current time in seconds since epoch\r\n const expiresIn = user.exp - now\r\n\r\n if (expiresIn <= 0) {\r\n console.log('The token has expired.')\r\n return true\r\n } else {\r\n console.log(`The token will expire in ${expiresIn} seconds.`)\r\n return false\r\n }\r\n } catch (error) {\r\n console.error('Error checking token expiry:', error)\r\n return true\r\n }\r\n}\r\n/**\r\n * Refreshes the token once if at least 4 seconds have passed since the last refresh.\r\n * Uses localStorage key 'ltt' to track last refresh time.\r\n */\r\nexport const refreshTokenOnce = async () => {\r\n const timeStamp = new Date().getTime() - parseInt(localStorage.getItem('ltt') ?? '0')\r\n localStorage.setItem('ltt', new Date().getTime().toString())\r\n if (timeStamp >= 4000) {\r\n try {\r\n await authService.ensureUserManagerInitialized()\r\n await authService.signIn({})\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n}\r\n/**\r\n * Handles errors from Axios HTTP responses.\r\n * Redirects or signs out user based on error code and status.\r\n * @param {AxiosError} err - The error object from Axios.\r\n * @returns {Promise<never>} Always rejects with the error.\r\n */\r\nexport const handleResponseError = async (err: AxiosError) => {\r\n if (err.response?.status === 403) {\r\n const dataError: { Code: number; Message: string } = err.response.data as any\r\n switch (dataError.Code) {\r\n case 3: {\r\n await authService.signOut({ returnUrl: authService.getReturnUrl() })\r\n break\r\n }\r\n case 1: {\r\n await authService.userManager?.revokeTokens(['access_token'])\r\n window.location.replace(ApplicationPaths.Origin(''))\r\n break\r\n }\r\n default: {\r\n window.location.replace(ApplicationPaths.Origin(ApplicationPaths.IdentityAccessDenied))\r\n break\r\n }\r\n }\r\n } else if (err.response?.status === 401) {\r\n } else if (err.code === 'ERR_CANCELED') {\r\n } else if ((err.response?.status ?? 500) >= 500) {\r\n if (err.code !== 'ERR_CANCELED') {\r\n ApiAlertContext?.ApiAlert?.PushError('An error has occurred!')\r\n }\r\n } else if (err.response?.status === 404) {\r\n ApiAlertContext?.ApiAlert?.PushError('Resource not found!')\r\n }\r\n return Promise.reject(err)\r\n}\r\n"],"names":["ApiAlertContext","globalThis","process","env","NODE_ENV","authService","sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regenerator","m","_callee","action","_yield$Promise$all","_yield$Promise$all2","w","_context","n","all","v","_slicedToArray","a","_x","_x2","apply","this","arguments","processError","err","_err$response$data","_err$response","_ApiAlertContext$ApiA","errorMessages","Object","values","response","data","filter","x","length","map","ApiAlert","PushError","join","handleResponseError","_ref4","_callee4","_err$response2","_err$response3","_err$response$status","_err$response4","_err$response5","dataError","_authService$userMana","_ApiAlertContext$ApiA2","_ApiAlertContext$ApiA3","_t3","_context4","status","Code","signOut","returnUrl","getReturnUrl","userManager","revokeTokens","window","location","replace","ApplicationPaths","Origin","IdentityAccessDenied","code","reject","_x3"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createClass as t,asyncToGenerator as r,inherits as n,wrapNativeSuper as e,regenerator as a,classCallCheck as u,defineProperty as s,callSuper as i,superPropGet as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{authService as c}from"partner-oidc-auth";import h from"axios";import{HttpService as f}from"./gateway.js";import{ApiAlertContext as p,handleResponseError as l}from"./helpers.js";var v=function(){return t((function t(n){var e=this;u(this,t),s(this,"mapResponse",(function(){e._http.interceptors.response.use((function(t){return t}),(function(t){return e.tryFetchToken(t,l)})),e._http.interceptors.request.use((function(t){return e.interuptHeader(t)}))})),s(this,"tryFetchToken",function(){var t=r(a().m((function t(r,n){var u,s;return a().w((function(t){for(;;)switch(t.n){case 0:if(s=r.config,401!==(null==r||null===(u=r.response)||void 0===u?void 0:u.status)||!s){t.n=3;break}return t.n=1,c.signIn({});case 1:return t.n=2,e.interuptHeader(s);case 2:return t.a(2,h(s));case 3:return t.a(2,n(r))}}),t)})));return function(r,n){return t.apply(this,arguments)}}()),s(this,"getToken",r(a().m((function t(){var r;return a().w((function(t){for(;;)switch(t.n){case 0:if(void 0!==e._token){t.n=2;break}return t.n=1,c.getAccessToken();case 1:r=t.v,t.n=3;break;case 2:r=e._token;case 3:return t.a(2,r)}}),t)})))),s(this,"addtoken",function(){var t=r(a().m((function t(r){var n;return a().w((function(t){for(;;)switch(t.n){case 0:return t.n=1,e.getToken();case 1:return(n=t.v)&&null!=r&&r.headers&&(r.headers.Authorization="Bearer "+n),t.a(2,r)}}),t)})));return function(r){return t.apply(this,arguments)}}()),this._http=n||f,this.mapResponse()}),[{key:"setToken",value:function(t){this._token=t}},{key:"addCustomHeader",value:(_=r(a().m((function t(r){return a().w((function(t){for(;;)if(0===t.n)return r||(r={headers:{}}),r.headers||(r.headers={}),t.a(2,r)}),t)}))),function(t){return _.apply(this,arguments)})},{key:"interuptHeader",value:(g=r(a().m((function t(r){return a().w((function(t){for(;;)switch(t.n){case 0:return t.n=1,this.addtoken(r);case 1:return t.a(2,r)}}),t,this)}))),function(t){return g.apply(this,arguments)})},{key:"get",value:(k=r(a().m((function t(r,n){var e,u,s,i;return a().w((function(t){for(;;)switch(t.n){case 0:return u=this._http,s=r,t.n=1,this.addCustomHeader(n);case 1:return i=t.v,t.n=2,u.get.call(u,s,i);case 2:return e=t.v,t.a(2,e.data)}}),t,this)}))),function(t,r){return k.apply(this,arguments)})},{key:"tryGet",value:(m=r(a().m((function t(r,n){return a().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,t.a(2,this.get(r,n));case 1:return t.p=1,t.v,t.a(2,null)}}),t,this,[[0,1]])}))),function(t,r){return m.apply(this,arguments)})},{key:"post",value:(w=r(a().m((function t(r,n,e){var u,s,i,o,c;return a().w((function(t){for(;;)switch(t.n){case 0:return s=this._http,i=r,o=n,t.n=1,this.addCustomHeader(e);case 1:return c=t.v,t.n=2,s.post.call(s,i,o,c);case 2:return u=t.v,t.a(2,u.data)}}),t,this)}))),function(t,r,n){return w.apply(this,arguments)})},{key:"put",value:(y=r(a().m((function t(r,n,e){var u,s,i,o,c;return a().w((function(t){for(;;)switch(t.n){case 0:return s=this._http,i=r,o=n,t.n=1,this.addCustomHeader(e);case 1:return c=t.v,t.n=2,s.put.call(s,i,o,c);case 2:return u=t.v,t.a(2,u.data)}}),t,this)}))),function(t,r,n){return y.apply(this,arguments)})},{key:"tryPut",value:(d=r(a().m((function t(r,n,e){return a().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,this.addCustomHeader(e);case 1:return t.n=2,this.put(r,n,e);case 2:return t.a(2,t.v);case 3:return t.p=3,t.v,t.a(2,null)}}),t,this,[[0,3]])}))),function(t,r,n){return d.apply(this,arguments)})},{key:"tryPost",value:(v=r(a().m((function t(r,n,e){return a().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,this.post(r,n,e);case 1:return t.a(2,t.v);case 2:return t.p=2,t.v,t.a(2,null)}}),t,this,[[0,2]])}))),function(t,r,n){return v.apply(this,arguments)})},{key:"delete",value:(o=r(a().m((function t(r,n){var e,u,s,i;return a().w((function(t){for(;;)switch(t.n){case 0:return u=this._http,s=r,t.n=1,this.addCustomHeader(n);case 1:return i=t.v,t.n=2,u.delete.call(u,s,i);case 2:return e=t.v,t.a(2,e.data)}}),t,this)}))),function(t,r){return o.apply(this,arguments)})},{key:"tryDelete",value:(i=r(a().m((function t(r,n){var e,u,s;return a().w((function(t){for(;;)switch(t.n){case 0:return t.p=0,e=this,u=r,t.n=1,this.addCustomHeader(n);case 1:return s=t.v,t.n=2,e.delete.call(e,u,s);case 2:return t.a(2,t.v);case 3:return t.p=3,t.v,t.a(2,null)}}),t,this,[[0,3]])}))),function(t,r){return i.apply(this,arguments)})},{key:"tryPushNotify",value:(e=r(a().m((function t(r){var n,e,u,s=arguments;return a().w((function(t){for(;;)switch(t.n){case 0:for(t.p=0,n=s.length,e=new Array(n>1?n-1:0),u=1;u<n;u++)e[u-1]=s[u];return t.n=1,this.pushNotify.apply(this,[r].concat(e));case 1:return t.a(2,t.v);case 2:t.p=2,t.v;case 3:return t.a(2)}}),t,this,[[0,2]])}))),function(t){return e.apply(this,arguments)})},{key:"pushNotify",value:(n=r(a().m((function t(r){var n,e,u,s,i,o,c,h=arguments;return a().w((function(t){for(;;)switch(t.n){case 0:for(t.p=0,n=h.length,e=new Array(n>1?n-1:0),u=1;u<n;u++)e[u-1]=h[u];return t.n=1,r.bind(this).apply(void 0,e);case 1:return t.a(2,t.v);case 2:throw t.p=2,c=t.v,(o=null===(s=(i=c).response)||void 0===s?void 0:s.data)&&Object.keys(o).forEach((function(t){var r=o[t];Array.isArray(r)&&r.forEach((function(t){var r;null==p||null===(r=p.ApiAlert)||void 0===r||r.PushError(t)}))})),i;case 3:return t.a(2)}}),t,this,[[0,2]])}))),function(t){return n.apply(this,arguments)})}]);var n,e,i,o,v,d,y,w,m,k,g,_}(),d=function(r){function e(){var t;u(this,e);for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];return t=i(this,e,[].concat(n)),s(t,"cancel",(function(){t.trigger&&t.trigger(),o(e,"abort",t)([])})),t}return n(e,r),t(e)}(e(AbortController));export{d as CancelAction,v as default};
|
|
2
|
+
//# sourceMappingURL=service-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-base.js","sources":["../../../src/http-service/base/service-base.ts"],"sourcesContent":["import { authService } from 'partner-oidc-auth'\r\nimport type { AxiosError, AxiosInstance, AxiosRequestConfig, InternalAxiosRequestConfig } from 'axios'\r\nimport axios from 'axios'\r\nimport { HttpService } from './gateway'\r\nimport { handleResponseError, ApiAlertContext } from './helpers'\r\n\r\n/**\r\n * Base service class for HTTP operations with authentication and error handling\r\n * Provides common CRUD operations with automatic token management and retry logic\r\n */\r\nexport default class ServiceBase {\r\n private _http: AxiosInstance\r\n constructor(http?: AxiosInstance) {\r\n if (http) {\r\n this._http = http\r\n } else {\r\n this._http = HttpService\r\n }\r\n this.mapResponse()\r\n }\r\n /**\r\n * Maps response and request interceptors for handling authentication and errors\r\n * Automatically adds authorization headers and retries requests on 401 errors\r\n */\r\n mapResponse = () => {\r\n this._http.interceptors.response.use(\r\n (res) => res,\r\n (err) => this.tryFetchToken(err, handleResponseError)\r\n )\r\n this._http.interceptors.request.use((req) => {\r\n return this.interuptHeader(req)\r\n })\r\n }\r\n /**\r\n * Tries to fetch a new token if the current one is expired\r\n * @param error - The axios error containing response data\r\n * @param next - The next middleware function to call\r\n * @returns A promise resolving to the response data or an error\r\n */\r\n tryFetchToken = async (error: AxiosError, next: (error: AxiosError) => Promise<any>): Promise<any> => {\r\n const originalRequest = error.config\r\n if (error?.response?.status === 401 && originalRequest) {\r\n await authService.signIn({})\r\n await this.interuptHeader(originalRequest)\r\n return axios(originalRequest)\r\n }\r\n return next(error)\r\n }\r\n private _token?: string\r\n /**\r\n * Sets the token to be used for authentication\r\n * @param token - The token string to set\r\n */\r\n setToken(token?: string) {\r\n this._token = token\r\n }\r\n /**\r\n * Gets the current token, fetching a new one if not set\r\n * @returns A promise resolving to the token string\r\n */\r\n getToken = async () => {\r\n return this._token === undefined ? await authService.getAccessToken() : this._token\r\n }\r\n /**\r\n * Adds custom headers to the request configuration\r\n * @param config - The Axios request configuration object\r\n * @returns A promise resolving to the updated configuration object\r\n */\r\n async addCustomHeader(config?: AxiosRequestConfig) {\r\n if (!config) {\r\n config = { headers: {} }\r\n }\r\n if (!config.headers) {\r\n config.headers = {}\r\n }\r\n return config\r\n }\r\n /**\r\n * Intercepts the request to add the authorization token\r\n * @param config - The Axios request configuration object\r\n * @returns The updated configuration object with the token added\r\n */\r\n private async interuptHeader(config: InternalAxiosRequestConfig) {\r\n await this.addtoken(config)\r\n return config\r\n }\r\n /**\r\n * Adds the authorization token to the request headers\r\n * @param config - The Axios request configuration object\r\n * @returns The updated configuration object with the token added\r\n */\r\n private addtoken = async (config?: AxiosRequestConfig) => {\r\n const _token = await this.getToken()\r\n if (_token && config?.headers) {\r\n config.headers.Authorization = 'Bearer ' + _token\r\n }\r\n return config\r\n }\r\n /**\r\n * HTTP GET request with automatic authentication\r\n * @param url - The request URL\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data\r\n */\r\n async get<TModel>(url: string, config?: AxiosRequestConfig | undefined) {\r\n const response = await this._http.get<TModel>(url, await this.addCustomHeader(config))\r\n return response.data\r\n }\r\n /**\r\n * HTTP GET request with error handling\r\n * @param url - The request URL\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data or null if an error occurs\r\n */\r\n async tryGet<TModel>(url: string, config?: AxiosRequestConfig | undefined) {\r\n try {\r\n return this.get<TModel>(url, config)\r\n } catch {\r\n return null\r\n }\r\n }\r\n /**\r\n * HTTP POST request with automatic authentication\r\n * @param url - The request URL\r\n * @param data - Optional data to send in the request body\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data\r\n */\r\n async post<TModel>(url: string, data?: any, config?: AxiosRequestConfig | undefined) {\r\n const response = await this._http.post<TModel>(url, data, await this.addCustomHeader(config))\r\n return response.data\r\n }\r\n /**\r\n * HTTP PUT request with automatic authentication\r\n * @param url - The request URL\r\n * @param data - Optional data to send in the request body\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data\r\n */\r\n async put<TModel>(url: string, data?: any, config?: AxiosRequestConfig | undefined) {\r\n const response = await this._http.put<TModel>(url, data, await this.addCustomHeader(config))\r\n return response.data\r\n }\r\n /**\r\n * HTTP PUT request with error handling\r\n * @param url - The request URL\r\n * @param data - Optional data to send in the request body\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data or null if an error occurs\r\n */\r\n async tryPut<TModel>(url: string, data?: any, config?: AxiosRequestConfig | undefined) {\r\n try {\r\n await this.addCustomHeader(config)\r\n return await this.put<TModel>(url, data, config)\r\n } catch (error) {\r\n // processError(error as any)\r\n return null\r\n }\r\n }\r\n /**\r\n * HTTP POST request with error handling\r\n * @param url - The request URL\r\n * @param data - Optional data to send in the request body\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data or null if an error occurs\r\n */\r\n async tryPost<TModel>(url: string, data?: any, config?: AxiosRequestConfig | undefined) {\r\n try {\r\n return await this.post<TModel>(url, data, config)\r\n } catch (error) {\r\n // processError(error as any)\r\n return null\r\n }\r\n }\r\n /**\r\n * HTTP DELETE request with automatic authentication\r\n * @param url - The request URL\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data\r\n */\r\n async delete<TModel>(url: string, config?: AxiosRequestConfig | undefined) {\r\n const response = await this._http.delete<TModel>(url, await this.addCustomHeader(config))\r\n return response.data\r\n }\r\n /**\r\n * HTTP DELETE request with error handling\r\n * @param url - The request URL\r\n * @param config - Optional axios configuration\r\n * @returns Promise with the response data or null if an error occurs\r\n */\r\n async tryDelete<TModel>(url: string, config?: AxiosRequestConfig | undefined) {\r\n try {\r\n return await this.delete<TModel>(url, await this.addCustomHeader(config))\r\n } catch (error) {\r\n // processError(error as any)\r\n return null\r\n }\r\n }\r\n /**\r\n * Push notification with error handling\r\n * @param action - The function to execute\r\n * @param p - Parameters to pass to the function\r\n * @returns Promise with the result of the function execution\r\n */\r\n async tryPushNotify<TFunc extends (...param: any[]) => any>(action: TFunc, ...p: Parameters<TFunc>) {\r\n try {\r\n return await this.pushNotify(action, ...p)\r\n } catch (err) {}\r\n }\r\n /**\r\n * Push notification with error handling\r\n * @param action - The function to execute\r\n * @param p - Parameters to pass to the function\r\n * @returns Promise with the result of the function execution\r\n */\r\n async pushNotify<TFunc extends (...param: any[]) => any>(action: TFunc, ...p: Parameters<TFunc>): Promise<ReturnType<TFunc>> {\r\n try {\r\n return await action.bind(this)(...p)\r\n } catch (err) {\r\n const error = err as AxiosError\r\n const data = error.response?.data as any\r\n if (data) {\r\n const keys = Object.keys(data)\r\n keys.forEach((key) => {\r\n const errors = data[key] as string[]\r\n if (Array.isArray(errors)) {\r\n errors.forEach((message) => {\r\n ApiAlertContext?.ApiAlert?.PushError(message)\r\n })\r\n }\r\n })\r\n }\r\n throw error\r\n }\r\n }\r\n}\r\n/**\r\n * CancelAction class extends AbortController to provide a cancel method\r\n * This class can be used to cancel ongoing HTTP requests\r\n */\r\nexport class CancelAction extends AbortController {\r\n cancel = () => {\r\n this.trigger && this.trigger()\r\n super.abort()\r\n }\r\n trigger?: () => void\r\n}\r\n"],"names":["ServiceBase","_createClass","http","_this","this","_classCallCheck","_defineProperty","_http","interceptors","response","use","res","err","tryFetchToken","handleResponseError","request","req","interuptHeader","_ref","_asyncToGenerator","_regenerator","m","_callee","error","next","_error$response","originalRequest","w","_context","n","config","status","authService","signIn","a","axios","_x","_x2","apply","arguments","_callee2","_t","_context2","undefined","_token","getAccessToken","v","_ref3","_callee3","_context3","getToken","headers","Authorization","_x3","HttpService","mapResponse","key","value","token","_addCustomHeader","_callee4","_context4","_x4","_interuptHeader","_callee5","_context5","addtoken","_x5","_get","_callee6","url","_t2","_t3","_t4","_context6","addCustomHeader","get","call","data","_x6","_x7","_tryGet","_callee7","_context7","p","_x8","_x9","_post","_callee8","_t6","_t7","_t8","_t9","_context8","post","_x0","_x1","_x10","_put","_callee9","_t0","_t1","_t10","_t11","_context9","put","_x11","_x12","_x13","_tryPut","_callee0","_context0","_x14","_x15","_x16","_tryPost","_callee1","_context1","_x17","_x18","_x19","_delete2","_callee10","_t14","_t15","_t16","_context10","_x20","_x21","_tryDelete","_callee11","_t17","_t18","_t19","_context11","_x22","_x23","_tryPushNotify","_callee12","action","_len","_key","_args12","_context12","length","Array","pushNotify","concat","_x24","_pushNotify","_callee13","_len2","_key2","_error$response2","_t22","_args13","_context13","bind","Object","keys","forEach","errors","isArray","message","_ApiAlertContext$ApiA","ApiAlertContext","ApiAlert","PushError","_x25","CancelAction","_AbortController","_this2","_len3","args","_key3","_callSuper","trigger","_superPropGet","_inherits","_wrapNativeSuper","AbortController"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createClass as e,classCallCheck as n,defineProperty as r,asyncToGenerator as t,regenerator as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{authService as i}from"partner-oidc-auth";import{EAppName as s}from"./types.js";var o;!function(e){e.Admin="Admin",e.User="User",e.Manage="Manage"}(o||(o={}));var u=new(e((function e(){var u=this;n(this,e),r(this,"getAppName",(function(){return u.window.env.REACT_APP_NAME})),r(this,"isAdmin",(function(e){return(null!=e?e:[]).some((function(e){return e===o.Admin}))&&u.getAppName()===s.ClientAdmin})),r(this,"getGraphqlSite",t(a().m((function e(){var n,r,t;return a().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,i.getRoles();case 1:n=e.v,r=u.getAppName(),t=r,e.n=t===s.ClientAdmin?2:(s.ClientApp,3);break;case 2:return e.a(2,u.isAdmin(n)?o.Admin:o.Manage);case 3:return e.a(2,o.User);case 4:return e.a(2)}}),e)})))),this.window=global.window})));export{u as AppProfile};
|
|
2
|
+
//# sourceMappingURL=app-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-profile.js","sources":["../../../src/http-service/graphql/app-profile.ts"],"sourcesContent":["import { authService } from 'partner-oidc-auth'\r\nimport { EAppName } from './types'\r\n\r\nenum RoleKeyInternalSite {\r\n Admin = 'Admin',\r\n User = 'User',\r\n Manage = 'Manage'\r\n}\r\n\r\nclass AppProfileBase {\r\n window: Window & { [key: string]: any }\r\n constructor() {\r\n this.window = global.window\r\n }\r\n\r\n getAppName = () => this.window.env.REACT_APP_NAME as EAppName\r\n\r\n isAdmin = (roles?: string[]) => {\r\n return (roles ?? []).some((e) => e === RoleKeyInternalSite.Admin) && this.getAppName() === EAppName.ClientAdmin\r\n }\r\n\r\n getGraphqlSite = async () => {\r\n const roles = await authService.getRoles()\r\n const appName = this.getAppName()\r\n switch (appName) {\r\n case EAppName.ClientAdmin:\r\n return this.isAdmin(roles) ? RoleKeyInternalSite.Admin : RoleKeyInternalSite.Manage\r\n case EAppName.ClientApp:\r\n default:\r\n return RoleKeyInternalSite.User\r\n }\r\n }\r\n}\r\n\r\nexport const AppProfile = new AppProfileBase()\r\n"],"names":["RoleKeyInternalSite","AppProfile","_createClass","AppProfileBase","_this","this","_classCallCheck","_defineProperty","window","env","REACT_APP_NAME","roles","some","e","Admin","getAppName","EAppName","ClientAdmin","_asyncToGenerator","_regenerator","m","_callee","appName","_t","w","_context","n","authService","getRoles","v","ClientApp","a","isAdmin","Manage","User","global"],"mappings":"+OAGA,IAAKA,GAAL,SAAKA,GACHA,EAAA,MAAA,QACAA,EAAA,KAAA,OACAA,EAAA,OAAA,QACD,CAJD,CAAKA,IAAAA,EAIJ,CAAA,IAAA,IA2BYC,EAAa,IAzBNC,GAElB,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,EAIaF,KAAA,cAAA,WAAA,OAAMD,EAAKI,OAAOC,IAAIC,cAA0B,IAAAH,EAAAF,KAAA,WAEnD,SAACM,GACT,OAAQA,QAAAA,EAAS,IAAIC,MAAK,SAACC,GAAC,OAAKA,IAAMb,EAAoBc,KAAM,KAAIV,EAAKW,eAAiBC,EAASC,eACrGV,EAAAF,KAAA,iBAAAa,EAAAC,IAAAC,GAEgB,SAAAC,IAAA,IAAAV,EAAAW,EAAAC,EAAA,OAAAJ,IAAAK,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,OAAAD,EAAAC,EAAA,EACKC,EAAYC,WAAU,KAAA,EAApCjB,EAAKc,EAAAI,EACLP,EAAUlB,EAAKW,aAAYQ,EACzBD,EAAOG,EAAAC,EAAAH,IACRP,EAASC,YAAWM,GAEpBP,EAASc,UAAS,GAAA,MAAA,KAAA,EAAA,OAAAL,EAAAM,EADd3B,EAAAA,EAAK4B,QAAQrB,GAASX,EAAoBc,MAAQd,EAAoBiC,QAAM,KAAA,EAAA,OAAAR,EAAAM,EAG5E/B,EAAAA,EAAoBkC,MAAI,KAAA,EAAA,OAAAT,EAAAM,EAAA,GAAA,GAAAV,EAEpC,MAnBChB,KAAKG,OAAS2B,OAAO3B,MACvB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inherits as e,createClass as t,asyncToGenerator as r,objectSpread2 as n,classCallCheck as i,callSuper as a,defineProperty as s,regenerator as o,typeof as u,superPropGet as l,toConsumableArray as c}from"../../_virtual/_rollupPluginBabelHelpers.js";import{AppProfile as f}from"./app-profile.js";import{fetchDelay as p,ApiAlertContext as h}from"../base/helpers.js";import{createHttpService as v}from"../base/gateway.js";import d from"../base/service-base.js";var w=function(){function w(e){var t,n,l,c;(i(this,w),l=a(this,w,[v(e.baseUrl)]),s(l,"setSite",(function(e){l.site=e})),s(l,"setGraphQLExecutor",function(){var e=r(o().m((function e(t,r,n,i){var a,s;return o().w((function(e){for(;;)switch(e.n){case 0:return a={signal:n},e.n=1,l.addCustomHeader(a,i);case 1:return s=e.v,e.a(2,l.post("",{query:t,variables:r},s))}}),e)})));return function(t,r,n,i){return e.apply(this,arguments)}}()),s(l,"_getSite",r(o().m((function e(){var t;return o().w((function(e){for(;;)switch(e.n){case 0:if(t=global.window,"object"!==u(t.wwfd)&&(t.wwfd={}),t.wwfd.GraphqlSite){e.n=2;break}return e.n=1,f.getGraphqlSite();case 1:t.wwfd.GraphqlSite=e.v;case 2:return e.a(2,t.wwfd.GraphqlSite)}}),e)})))),s(l,"autoDetectSite",r(o().m((function e(){var t;return o().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,l.getSite();case 1:t=e.v,l.setSite(t);case 2:return e.a(2)}}),e)})))),s(l,"getParamExecutor",(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t[0],i=t[1],a=t[2],s=t[3];if("string"!=typeof n||0===n.length)throw new Error("Request must be a non-empty string");if("object"!==u(i))throw new Error("Variables must be an object");if(a&&!(a instanceof AbortSignal))throw new Error("Signal must be an instance of AbortSignal");return[n,i,a,s]})),l._options=null!==(t=e.options)&&void 0!==t?t:{},l._execute=e.execute,l.getSite=l._getSite,null!==(n=e.options)&&void 0!==n&&n.site&&"function"==typeof e.options.site)?l.getSite=e.options.site:l.site=null===(c=e.options)||void 0===c?void 0:c.site;return l}return e(w,d),t(w,[{key:"addSite",value:function(e,t){return this.site&&null!=e&&e.headers&&!t&&(e.headers["graphql-site"]=this.site),null!=e?e:{}}},{key:"addCustomHeader",value:(m=r(o().m((function e(t,r){var n;return o().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,l(w,"addCustomHeader",this)([t]);case 1:return n=e.v,e.a(2,this.addSite(n,r))}}),e,this)}))),function(e,t){return m.apply(this,arguments)})},{key:"query",value:(y=r(o().m((function e(t,r){var i,a,s,u,l=this;return o().w((function(e){for(;;)switch(e.n){case 0:if(i=this._options.autoDetectSite,a=this._options.ignoreSite,void 0!==(null==r?void 0:r.autoDetectSite)&&(i=r.autoDetectSite),void 0!==(null==r?void 0:r.ignoreSite)&&(a=r.ignoreSite),a||!1===i){e.n=2;break}return e.n=1,this.autoDetectSite();case 1:e.n=3;break;case 2:!a&&null!=r&&r.site&&this.setSite(null!==(s=r.site)&&void 0!==s?s:this._options.site);case 3:return e.n=4,this._execute(t,n({executor:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(null==r?void 0:r.signal)&&n.push(null==r?void 0:r.signal),n.push(a),p((function(){return l.setGraphQLExecutor.apply(l,c(l.getParamExecutor.apply(l,n)))}),null!==(e=null==r?void 0:r.delay)&&void 0!==e?e:500)}},r||{}));case 4:return u=e.v,e.a(2,u)}}),e,this)}))),function(e,t){return y.apply(this,arguments)})},{key:"queryPushNotify",value:(g=r(o().m((function e(t,r){var n,i,a,s;return o().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,this.query(t,r);case 1:return e.a(2,e.v);case 2:throw e.p=2,s=e.v,(a=null===(n=(i=s).response)||void 0===n?void 0:n.data)&&Object.keys(a).forEach((function(e){var t=a[e];if(Array.isArray(t))t.forEach((function(e){var t;null==h||null===(t=h.ApiAlert)||void 0===t||t.PushError(e)}));else if("string"==typeof t.message){var r;null==h||null===(r=h.ApiAlert)||void 0===r||r.PushError(t.message)}})),i;case 3:return e.a(2)}}),e,this,[[0,2]])}))),function(e,t){return g.apply(this,arguments)})}]);var g,y,m}(),g=function(e){return new w(n({},e))};export{g as createGraphqlRequest,w as default};
|
|
2
|
+
//# sourceMappingURL=graphql-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-request.js","sources":["../../../src/http-service/graphql/graphql-request.ts"],"sourcesContent":["import { AxiosError, AxiosRequestConfig } from 'axios'\r\nimport type { Fetcher } from 'graphql-ts-client-api'\r\nimport { AppProfile } from './app-profile'\r\nimport { fetchDelay } from '../base/helpers'\r\nimport { ApiAlertContext } from '../base/helpers'\r\nimport { createHttpService } from '../base/gateway'\r\nimport type { IGraphqlQueryOptions, IGraphqlRequestOptions } from './types'\r\nimport ServiceBase from '../base/service-base'\r\n\r\nexport interface IGraphqlRequestParams {\r\n baseUrl: string\r\n execute: (...p: any[]) => Promise<any>\r\n options?: IGraphqlRequestOptions\r\n}\r\n\r\nclass GraphqlRequest extends ServiceBase {\r\n private _execute: (...p: any[]) => Promise<any>\r\n private _options: IGraphqlRequestOptions\r\n /**\r\n * Constructor for GraphqlRequest.\r\n * @param url The GraphQL endpoint URL.\r\n * @param executor Custom executor function for GraphQL requests.\r\n * @param options Additional options for the request.\r\n */\r\n constructor(params: IGraphqlRequestParams) {\r\n super(createHttpService(params.baseUrl))\r\n // const { autoDetectSite, site } = options ?? {}\r\n this._options = params.options ?? {}\r\n\r\n this._execute = params.execute\r\n\r\n // Initialize autoDetectSite and site getter\r\n this.getSite = this._getSite\r\n if (params.options?.site && typeof params.options.site === 'function') {\r\n this.getSite = params.options.site\r\n } else {\r\n this.site = params.options?.site as string | undefined\r\n }\r\n }\r\n private site?: string\r\n /**\r\n * Adds the site to the request configuration headers.\r\n * @param config Optional AxiosRequestConfig to modify.\r\n * @param ignoreSite If true, skips adding the site header.\r\n * @returns Modified AxiosRequestConfig with the site header.\r\n */\r\n addSite(config?: AxiosRequestConfig, ignoreSite?: boolean) {\r\n if (this.site && config?.headers && !ignoreSite) {\r\n config.headers['graphql-site'] = this.site\r\n }\r\n return config ?? {}\r\n }\r\n /**\r\n * Sets the current site for GraphQL requests.\r\n * @param site The site string to set.\r\n */\r\n setSite = (site: string) => {\r\n this.site = site\r\n }\r\n /**\r\n * Default executor for GraphQL requests using POST.\r\n * @param request GraphQL query string.\r\n * @param variables Variables for the query.\r\n * @param signal Optional AbortSignal for cancellation.\r\n * @param ignoreSite If true, skips adding the site header.\r\n * @returns Promise with the server response.\r\n */\r\n private setGraphQLExecutor = async (request: string, variables: object, signal?: AbortSignal, ignoreSite?: boolean) => {\r\n const config = { signal }\r\n const finalConfig = await this.addCustomHeader(config, ignoreSite)\r\n return this.post('', { query: request, variables }, finalConfig)\r\n }\r\n /**\r\n * Default implementation to get the current site.\r\n * Stores the site in global.window.wwfd.GraphqlSite for reuse.\r\n * @returns Promise resolving to the current site string.\r\n */\r\n getSite: () => Promise<string>\r\n private _getSite = async () => {\r\n const windowTemp = global.window as any\r\n if (typeof windowTemp['wwfd'] !== 'object') {\r\n windowTemp['wwfd'] = {}\r\n }\r\n if (!windowTemp['wwfd'].GraphqlSite) {\r\n windowTemp['wwfd'].GraphqlSite = await AppProfile.getGraphqlSite()\r\n }\r\n return windowTemp['wwfd'].GraphqlSite\r\n }\r\n /**\r\n * Automatically detects the site by calling getSite.\r\n * Sets the detected site using setSite.\r\n */\r\n private autoDetectSite = async () => {\r\n const site = await this.getSite()\r\n this.setSite(site)\r\n }\r\n /**\r\n * Adds a custom header to the request configuration.\r\n * @param config Optional AxiosRequestConfig to modify.\r\n * @param ignoreSite If true, skips adding the site header.\r\n * @returns Modified AxiosRequestConfig with the custom header.\r\n */\r\n async addCustomHeader(config?: AxiosRequestConfig, ignoreSite?: boolean) {\r\n const cfg = await super.addCustomHeader(config)\r\n return this.addSite(cfg, ignoreSite)\r\n }\r\n /**\r\n * Gets the current site for GraphQL requests.\r\n * @returns The current site string.\r\n */\r\n private getParamExecutor = (...p: any[]): Parameters<typeof this.setGraphQLExecutor> => {\r\n const [request, variables, signal, ignoreSite] = p\r\n if (typeof request !== 'string' || request.length === 0) {\r\n throw new Error('Request must be a non-empty string')\r\n }\r\n if (typeof variables !== 'object') {\r\n throw new Error('Variables must be an object')\r\n }\r\n if (signal && !(signal instanceof AbortSignal)) {\r\n throw new Error('Signal must be an instance of AbortSignal')\r\n }\r\n return [request, variables, signal, ignoreSite]\r\n }\r\n\r\n /**\r\n * Executes a GraphQL query or mutation with the provided fetcher.\r\n * Automatically detects the site if autoDetectSite is true.\r\n * @param fetcher The fetcher function for the query or mutation.\r\n * @param options Optional IGraphqlQueryOptions for the request.\r\n * @returns Promise with the result of the query or mutation.\r\n */\r\n async query<TData extends object, TVariables extends object>(\r\n fetcher: Fetcher<'Query' | 'Mutation', TData, TVariables>,\r\n options?: IGraphqlQueryOptions\r\n ): Promise<TData> {\r\n let autoDetectSite = this._options.autoDetectSite\r\n let ignoreSite = this._options.ignoreSite\r\n\r\n if (options?.autoDetectSite !== undefined) {\r\n autoDetectSite = options.autoDetectSite\r\n }\r\n if (options?.ignoreSite !== undefined) {\r\n ignoreSite = options.ignoreSite\r\n }\r\n\r\n if (!ignoreSite && autoDetectSite !== false) {\r\n await this.autoDetectSite()\r\n } else if (!ignoreSite && options?.site) {\r\n this.setSite(options.site ?? (this._options.site as string))\r\n }\r\n\r\n const res = await this._execute(fetcher, {\r\n executor: (...params: any[]) => {\r\n options?.signal && params.push(options?.signal)\r\n params.push(ignoreSite) // Thêm ignoreSite parameter\r\n return fetchDelay(() => this.setGraphQLExecutor(...this.getParamExecutor(...params)), options?.delay ?? 500)\r\n },\r\n ...(options ? options : {})\r\n })\r\n return res\r\n }\r\n /**\r\n * Executes a GraphQL query or mutation and handles errors by pushing them to ApiAlertContext.\r\n * @param fetcher The fetcher function for the query or mutation.\r\n * @param options Optional IGraphqlQueryOptions for the request.\r\n * @returns Promise with the result of the query or mutation.\r\n */\r\n async queryPushNotify<TData extends object, TVariables extends object>(\r\n fetcher: Fetcher<'Query' | 'Mutation', TData, TVariables>,\r\n options?: IGraphqlQueryOptions\r\n ) {\r\n try {\r\n return await this.query(fetcher, options)\r\n } catch (err) {\r\n const error = err as AxiosError\r\n const data = error.response?.data as any\r\n if (data) {\r\n const keys = Object.keys(data)\r\n keys.forEach((key) => {\r\n const errors = data[key] as any\r\n if (Array.isArray(errors)) {\r\n errors.forEach((message) => {\r\n ApiAlertContext?.ApiAlert?.PushError(message)\r\n })\r\n } else if (typeof errors.message === 'string') {\r\n ApiAlertContext?.ApiAlert?.PushError(errors.message)\r\n }\r\n })\r\n }\r\n throw error\r\n }\r\n }\r\n}\r\nexport default GraphqlRequest\r\n/*\r\n * Factory function to create a new GraphqlRequest instance.\r\n * @param args Arguments to pass to the GraphqlRequest constructor.\r\n * @returns A new instance of GraphqlRequest.\r\n */\r\nexport const createGraphqlRequest = (params: IGraphqlRequestParams) => {\r\n return new GraphqlRequest({ ...params })\r\n}\r\n"],"names":["GraphqlRequest","params","_params$options","_params$options2","_this","_params$options3","_classCallCheck","_callSuper","this","createHttpService","baseUrl","_defineProperty","site","_ref","_asyncToGenerator","_regenerator","m","_callee","request","variables","signal","ignoreSite","config","finalConfig","w","_context","n","addCustomHeader","v","a","post","query","_x","_x2","_x3","_x4","apply","arguments","_callee2","windowTemp","_context2","global","window","_typeof","GraphqlSite","AppProfile","getGraphqlSite","_callee3","_context3","getSite","setSite","_len","length","p","Array","_key","Error","AbortSignal","_options","options","_execute","execute","_getSite","_inherits","ServiceBase","_createClass","key","value","headers","_addCustomHeader","_callee4","cfg","_context4","_superPropGet","addSite","_x5","_x6","_query","_callee5","fetcher","autoDetectSite","_options$site","res","_this2","_context5","undefined","_objectSpread","executor","_options$delay","_len2","_key2","push","fetchDelay","setGraphQLExecutor","_toConsumableArray","getParamExecutor","delay","_x7","_x8","_queryPushNotify","_callee6","_error$response","error","data","_t","_context6","response","Object","keys","forEach","errors","isArray","message","_ApiAlertContext$ApiA","ApiAlertContext","ApiAlert","PushError","_ApiAlertContext$ApiA2","_x9","_x0","createGraphqlRequest"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-converter.js","sources":["../../../src/http-service/graphql/key-converter.ts"],"sourcesContent":["type SingleOrArray<T> = T | T[]\r\n\r\nexport interface IKeyConverterDef<Q> {\r\n field?: keyof Q\r\n deep?: string\r\n prefix?: string\r\n suffix?: string\r\n custom?: (value: string) => string\r\n}\r\n\r\nexport type IKeyConverterModel<T, Q> = { [key in keyof T]?: SingleOrArray<IKeyConverterDef<Q>> }\r\n\r\nexport const createKeyConverter = <T, Q>(params: IKeyConverterModel<T, Q>): IKeyConverterModel<T, Q> => params\r\n\r\nexport const getKeyConverter = <T, Q>(key: keyof T, converter: IKeyConverterModel<T, Q>): IKeyConverterDef<Q>[] => {\r\n const temp = converter[key]\r\n return temp ? (Array.isArray(temp) ? temp : [temp]) : []\r\n}\r\n"],"names":["createKeyConverter","params","getKeyConverter","key","converter","temp","Array","isArray"],"mappings":"IAYaA,EAAqB,SAAOC,GAAgC,OAA+BA,CAAM,EAEjGC,EAAkB,SAAOC,EAAcC,GAClD,IAAMC,EAAOD,EAAUD,GACvB,OAAOE,EAAQC,MAAMC,QAAQF,GAAQA,EAAO,CAACA,GAAS,EACxD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as e,defineProperty as i,objectSpread2 as n}from"../../_virtual/_rollupPluginBabelHelpers.js";var r=t((function t(r){var o=this;e(this,t),i(this,"mergeOptions",(function(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return e.reduce((function(t,e){return Object.assign(t,null!=e?e:{})}),{})})),i(this,"ignoreEmpty",(function(t,e){var i=o.mergeOptions(o._option,e);return!t&&!0===(null==i?void 0:i.ignoreEmpty)})),i(this,"_filter",[]),i(this,"_filterBase",(function(t,e,i,n){var r=o._filter.length?" "+("And"===(null==n?void 0:n.logic)?"&&":"||")+" ":"";return o._filter.push("".concat(r).concat(t).concat(e).concat(i)),o})),i(this,"filter",(function(t,e,i){return"string"==typeof e&&o.ignoreEmpty(e,i)?o:o._filterBase(t,"==","string"==typeof e?'"'.concat(e,'"'):e.toString(),i)})),i(this,"filterNotEquals",(function(t,e,i){return"string"==typeof e&&o.ignoreEmpty(e,i)?o:o._filterBase(t,"!=","string"==typeof e?'"'.concat(e,'"'):e.toString(),i)})),i(this,"filterEnum",(function(t,e,i){return"string"==typeof e&&o.ignoreEmpty(e,i)?o:o._filterBase(t,"==","string"==typeof e?e:e.toString(),i)})),i(this,"filterStartsWith",(function(t,e,i){return o.ignoreEmpty(e,i)?o:o._filterBase(t,'.startsWith("'+e+'")',"",i)})),i(this,"filterContains",(function(t,e,i){return o.ignoreEmpty(e,i)?o:o._filterBase(t,'.Contains("'+e+'")',"",i)})),i(this,"filterLast",(function(t,e,i){return o.ignoreEmpty(e,i)?o:o._filterBase(t,'.endsWith("'+e+'")',"",i)})),i(this,"filterNumber",(function(t,e,i,n){return o.ignoreEmpty(i,n)?o:o._filterBase(t," ".concat(e," ")+i,"",n)})),i(this,"filterGreater",(function(t,e,i){return o.ignoreEmpty(e,i)?o:o._filterBase(t," > '"+e+"'","",i)})),i(this,"filterLess",(function(t,e,i){return o.ignoreEmpty(e,i)?o:o._filterBase(t," < '"+e+"'","",i)})),i(this,"filterCustom",(function(t,e){var i=o._filter.length?" "+("And"===(null==e?void 0:e.logic)?"&&":"||")+" ":"";return o._filter.push("".concat(i).concat(t)),o})),i(this,"scope",(function(e,i){var n=e(new t(o._option));if(n.buildFilter()){var r=o._filter.length?" "+("And"===(null==i?void 0:i.logic)?"&&":"||")+" ":"";o._filter.push("".concat(r,"(").concat(n.buildFilter(),")"))}return o})),i(this,"seed",(function(t,e){return o.seedStore={field:t,key:e},o})),i(this,"skip",(function(t){return o._skip=t,o})),i(this,"take",(function(t){return o._take=t,o})),i(this,"sortStore",[]),i(this,"sortBase",(function(t,e,i){var n={};return n[t]=e,o.sortStore.some((function(t){return Object.keys(t)[0]===Object.keys(n)[0]}))||o.sortStore.push(n),o})),i(this,"sort",(function(t,e){return o.sortBase(t,null!=e&&e.direction?e.direction:"ASC"),o})),i(this,"noTotal",(function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return o._noTotal=t,o})),i(this,"buildFilter",(function(){return o._filter.join("")})),i(this,"buildPage",(function(){var t={};return o._skip&&(t.skip=o._skip),o._take&&(t.take=o._take),t})),i(this,"buildRandomWithSeedKey",(function(){var t,e,i,n,r,s;return null===(t=o.seedStore)||void 0===t||!t.field||null!==(e=o.seedStore)&&void 0!==e&&e.key||console.warn("RandomWithSeedKey missing seedKey."),null===(i=o.seedStore)||void 0===i||!i.key||null!==(n=o.seedStore)&&void 0!==n&&n.field||console.warn("RandomWithSeedKey missing seedField."),null!==(r=o.seedStore)&&void 0!==r&&r.key||null!==(s=o.seedStore)&&void 0!==s&&s.field?o.seedStore:{}})),i(this,"build",(function(){var t=n({},o.buildPage());o.sortStore.length>0&&(t.sort=o.sortStore);var e=o.buildFilter();e&&(t.filter=e),o._noTotal&&(t.noTotal=o._noTotal);var i=o.buildRandomWithSeedKey();return i.key&&i.field&&(t.seedField=i.field.toString(),t.seedKey=i.key),t})),this._option=r})),o=function(t){return new r(t)};export{r as RequestParam,o as createRequestBuilder};
|
|
2
|
+
//# sourceMappingURL=request-param.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-param.js","sources":["../../../src/http-service/graphql/request-param.ts"],"sourcesContent":["export type IVariable<T extends object> = keyof T\r\n\r\nexport type ILogic = 'Or' | 'And'\r\n\r\nexport type ISortDirection = 'ASC' | 'DESC'\r\n\r\nexport interface ISeedModel<T> {\r\n key: string\r\n field: keyof T\r\n}\r\n\r\nexport interface IFilterOption {\r\n logic: ILogic\r\n ignoreEmpty: boolean\r\n}\r\n\r\nexport interface IRequestParamOption {\r\n ignoreEmpty: boolean\r\n}\r\n\r\nexport interface ISortOption {\r\n direction: ISortDirection\r\n}\r\n\r\nexport type ISortStore<T extends object> = { [key in keyof T]?: ISortDirection }\r\n\r\nexport type IAllOptions = IFilterOption & IRequestParamOption & ISortOption\r\n\r\nexport type IRequestParamResult<T extends object> = {\r\n sort?: ISortStore<T>[]\r\n skip: number\r\n take: number\r\n filter?: string\r\n noTotal?: boolean\r\n seedKey?: string\r\n seedField?: string\r\n}\r\n\r\nexport class RequestParam<T extends object = any> {\r\n private readonly _option?: Partial<IRequestParamOption>\r\n constructor(option?: Partial<IRequestParamOption>) {\r\n this._option = option\r\n }\r\n\r\n private mergeOptions = (...p: any[]): Partial<IAllOptions> => {\r\n return p.reduce((a, b) => {\r\n return Object.assign(a, b ?? {})\r\n }, {})\r\n }\r\n\r\n private ignoreEmpty = (field2: string, option?: Partial<IFilterOption>) => {\r\n const mOption = this.mergeOptions(this._option, option)\r\n return !field2 && mOption?.ignoreEmpty === true\r\n }\r\n\r\n private _filter: string[] = []\r\n private _filterBase = (field1: IVariable<T>, operation: string, field2: string, option?: Partial<IFilterOption>) => {\r\n const logicStr = this._filter.length ? ' ' + (option?.logic === 'And' ? '&&' : '||') + ' ' : ''\r\n this._filter.push(`${logicStr}${field1 as string}${operation}${field2 as string}`)\r\n return this\r\n }\r\n filter = (field1: IVariable<T>, field2: string | number, option?: Partial<IFilterOption>) => {\r\n if (typeof field2 === 'string' && this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, '==', typeof field2 === 'string' ? `\"${field2}\"` : field2.toString(), option)\r\n }\r\n filterNotEquals = (field1: IVariable<T>, field2: string | number, option?: Partial<IFilterOption>) => {\r\n if (typeof field2 === 'string' && this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, '!=', typeof field2 === 'string' ? `\"${field2}\"` : field2.toString(), option)\r\n }\r\n filterEnum = (field1: IVariable<T>, field2: string | number, option?: Partial<IFilterOption>) => {\r\n if (typeof field2 === 'string' && this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, '==', typeof field2 === 'string' ? field2 : field2.toString(), option)\r\n }\r\n filterStartsWith = (field1: IVariable<T>, field2: string, option?: Partial<IFilterOption>) => {\r\n if (this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, '.startsWith(\"' + (field2 as string) + '\")', '', option)\r\n }\r\n filterContains = (field1: IVariable<T>, field2: string, option?: Partial<IFilterOption>) => {\r\n if (this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, '.Contains(\"' + (field2 as string) + '\")', '', option)\r\n }\r\n filterLast = (field1: IVariable<T>, field2: string, option?: Partial<IFilterOption>) => {\r\n if (this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, '.endsWith(\"' + (field2 as string) + '\")', '', option)\r\n }\r\n filterNumber = (field1: IVariable<T>, operator: string, field2: string, option?: Partial<IFilterOption>) => {\r\n if (this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, ` ${operator} ` + (field2 as string), '', option)\r\n }\r\n filterGreater = (field1: IVariable<T>, field2: string, option?: Partial<IFilterOption>) => {\r\n if (this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, \" > '\" + (field2 as string) + \"'\", '', option)\r\n }\r\n filterLess = (field1: IVariable<T>, field2: string, option?: Partial<IFilterOption>) => {\r\n if (this.ignoreEmpty(field2, option)) return this\r\n return this._filterBase(field1, \" < '\" + (field2 as string) + \"'\", '', option)\r\n }\r\n filterCustom = (field1: string, option?: Partial<IFilterOption>) => {\r\n const logicStr = this._filter.length ? ' ' + (option?.logic === 'And' ? '&&' : '||') + ' ' : ''\r\n this._filter.push(`${logicStr}${field1 as string}`)\r\n return this\r\n }\r\n\r\n scope = (action: (crd: RequestParam<T>) => RequestParam<T>, option?: Partial<IFilterOption>) => {\r\n const crd = action(new RequestParam(this._option))\r\n const temp = crd.buildFilter()\r\n if (temp) {\r\n const logicStr = this._filter.length ? ' ' + (option?.logic === 'And' ? '&&' : '||') + ' ' : ''\r\n this._filter.push(`${logicStr}(${crd.buildFilter()})`)\r\n }\r\n return this\r\n }\r\n\r\n private seedStore?: ISeedModel<T>\r\n seed = (field: keyof T, key: string) => {\r\n this.seedStore = { field, key }\r\n return this\r\n }\r\n\r\n private _skip?: number\r\n skip = (skip: number) => {\r\n this._skip = skip\r\n return this\r\n }\r\n\r\n private _take?: number\r\n take = (take: number) => {\r\n this._take = take\r\n return this\r\n }\r\n\r\n private sortStore: ISortStore<T>[] = []\r\n private sortBase = (field1: IVariable<T>, direction: ISortDirection, option?: Partial<ISortOption>) => {\r\n const temp = {} as ISortStore<T>\r\n temp[field1] = direction\r\n if (!this.sortStore.some((item) => Object.keys(item)[0] === Object.keys(temp)[0])) {\r\n this.sortStore.push(temp)\r\n }\r\n return this\r\n }\r\n sort = (field1: IVariable<T>, option?: Partial<ISortOption>) => {\r\n this.sortBase(field1, option?.direction ? option.direction : 'ASC')\r\n return this\r\n }\r\n\r\n private _noTotal?: boolean\r\n noTotal = (value: boolean = true) => {\r\n this._noTotal = value\r\n return this\r\n }\r\n\r\n private buildFilter = () => {\r\n return this._filter.join('')\r\n }\r\n\r\n private buildPage = () => {\r\n const temp = {} as any\r\n if (this._skip) {\r\n temp.skip = this._skip\r\n }\r\n if (this._take) {\r\n temp.take = this._take\r\n }\r\n return temp as { skip: number; take: number }\r\n }\r\n\r\n private buildRandomWithSeedKey = (): Partial<ISeedModel<T>> => {\r\n if (this.seedStore?.field && !this.seedStore?.key) {\r\n console.warn('RandomWithSeedKey missing seedKey.')\r\n }\r\n if (this.seedStore?.key && !this.seedStore?.field) {\r\n console.warn('RandomWithSeedKey missing seedField.')\r\n }\r\n if (!this.seedStore?.key && !this.seedStore?.field) {\r\n return {}\r\n }\r\n return this.seedStore\r\n }\r\n\r\n build = (): IRequestParamResult<T> => {\r\n const obj: IRequestParamResult<T> = { ...this.buildPage() }\r\n if (this.sortStore.length > 0) obj.sort = this.sortStore\r\n const filter = this.buildFilter()\r\n if (filter) obj.filter = filter\r\n if (this._noTotal) obj.noTotal = this._noTotal\r\n const seedInfo = this.buildRandomWithSeedKey()\r\n if (!!seedInfo.key && !!seedInfo.field) {\r\n obj.seedField = seedInfo.field.toString()\r\n obj.seedKey = seedInfo.key\r\n }\r\n return obj\r\n }\r\n}\r\n\r\nexport const createRequestBuilder = <T extends object>(option?: Partial<IRequestParamOption>) => {\r\n return new RequestParam<T>(option)\r\n}\r\n"],"names":["RequestParam","_createClass","option","_this","this","_classCallCheck","_defineProperty","_len","arguments","length","p","Array","_key","reduce","a","b","Object","assign","field2","mOption","mergeOptions","_option","ignoreEmpty","field1","operation","logicStr","_filter","logic","push","concat","_filterBase","toString","operator","action","crd","buildFilter","field","key","seedStore","skip","_skip","take","_take","direction","temp","sortStore","some","item","keys","sortBase","value","undefined","_noTotal","join","_this$seedStore","_this$seedStore2","_this$seedStore3","_this$seedStore4","_this$seedStore5","_this$seedStore6","console","warn","obj","_objectSpread","buildPage","sort","filter","noTotal","seedInfo","buildRandomWithSeedKey","seedField","seedKey","createRequestBuilder"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../src/http-service/graphql/types.ts"],"sourcesContent":["/** Options for initializing a GraphQL request instance. */\r\nexport interface IGraphqlRequestOptions {\r\n /** If true, the site property will be ignored and the site will be auto-detected. */\r\n autoDetectSite?: boolean\r\n /**\r\n * The site identifier, can be a string or a function returning a Promise<string>.\r\n * If autoDetectSite is true, this field is not used.\r\n */\r\n site?: string | (() => Promise<string>)\r\n /**\r\n * If true, the site will be ignored in the request headers.\r\n */\r\n ignoreSite?: boolean\r\n}\r\n\r\n/** Enum for application names using the system. */\r\nexport enum EAppName {\r\n ClientApp = 'ClientApp',\r\n ClientAdmin = 'ClientAdmin'\r\n}\r\n\r\n/**\r\n * Standard result type for GraphQL list queries.\r\n * @template T The type of items in the result.\r\n */\r\nexport type IGraphqlResult<T> = {\r\n /** The array of items returned by the query. */\r\n items?: T[]\r\n /** Indicates if there is a next page of results. */\r\n hasNextPage?: boolean\r\n /** Indicates if there is a previous page of results. */\r\n hasPreviousPage?: boolean\r\n /** The total number of items available. */\r\n totalItems?: number\r\n}\r\n\r\n/**\r\n * Type definition for a GraphQL executor function.\r\n * @param request The GraphQL query string.\r\n * @param variables The variables for the query.\r\n * @returns Promise resolving to any data.\r\n */\r\nexport type IGraphqlExecutor = (request: string, variables: object) => Promise<any>\r\n\r\n/**\r\n * Options for executing a GraphQL query or mutation.\r\n * @template TSite The type of the site property (default is string).\r\n */\r\nexport interface IGraphqlQueryOptions<TSite extends string = string> {\r\n /** The operation name of the GraphQL query. */\r\n readonly operationName?: string\r\n /** Variables for the query. */\r\n readonly variables?: object\r\n /** Custom executor function for the query. */\r\n readonly executor?: IGraphqlExecutor\r\n /** AbortSignal to cancel the request. */\r\n readonly signal?: AbortSignal\r\n /** Delay before executing the request, in milliseconds. */\r\n readonly delay?: number\r\n /** Whether to auto-detect the site for this query. */\r\n readonly autoDetectSite?: boolean\r\n /** The site value or name for this query. */\r\n readonly site?: TSite\r\n /** If true, the site will be ignored in the request headers. */\r\n readonly ignoreSite?: boolean\r\n}\r\n"],"names":["EAppName"],"mappings":"IAgBYA,GAAZ,SAAYA,GACVA,EAAA,UAAA,YACAA,EAAA,YAAA,aACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
|