@pihanga2/core 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/card.d.ts +22 -0
  2. package/dist/card.d.ts.map +1 -0
  3. package/dist/card.js +493 -0
  4. package/dist/card.js.map +1 -0
  5. package/dist/index.d.ts +50 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +88 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/logger.d.ts +5 -0
  10. package/dist/logger.d.ts.map +1 -0
  11. package/dist/logger.js +12 -0
  12. package/dist/logger.js.map +1 -0
  13. package/dist/reducer.d.ts +5 -0
  14. package/dist/reducer.d.ts.map +1 -0
  15. package/dist/reducer.js +77 -0
  16. package/dist/reducer.js.map +1 -0
  17. package/dist/redux.d.ts +31 -0
  18. package/dist/redux.d.ts.map +1 -0
  19. package/dist/redux.js +50 -0
  20. package/dist/redux.js.map +1 -0
  21. package/dist/rest/delete.d.ts +4 -0
  22. package/dist/rest/delete.d.ts.map +1 -0
  23. package/dist/rest/delete.js +23 -0
  24. package/dist/rest/delete.js.map +1 -0
  25. package/dist/rest/enums.d.ts +6 -0
  26. package/dist/rest/enums.d.ts.map +1 -0
  27. package/dist/rest/enums.js +9 -0
  28. package/dist/rest/enums.js.map +1 -0
  29. package/dist/rest/get.d.ts +10 -0
  30. package/dist/rest/get.d.ts.map +1 -0
  31. package/dist/rest/get.js +31 -0
  32. package/dist/rest/get.js.map +1 -0
  33. package/dist/rest/index.d.ts +6 -0
  34. package/dist/rest/index.d.ts.map +1 -0
  35. package/dist/rest/index.js +6 -0
  36. package/dist/rest/index.js.map +1 -0
  37. package/dist/rest/postPutPatch.d.ts +6 -0
  38. package/dist/rest/postPutPatch.d.ts.map +1 -0
  39. package/dist/rest/postPutPatch.js +72 -0
  40. package/dist/rest/postPutPatch.js.map +1 -0
  41. package/dist/rest/types.d.ts +93 -0
  42. package/dist/rest/types.d.ts.map +1 -0
  43. package/dist/rest/types.js +38 -0
  44. package/dist/rest/types.js.map +1 -0
  45. package/dist/rest/utils.d.ts +8 -0
  46. package/dist/rest/utils.d.ts.map +1 -0
  47. package/dist/rest/utils.js +212 -0
  48. package/dist/rest/utils.js.map +1 -0
  49. package/dist/router.d.ts +25 -0
  50. package/dist/router.d.ts.map +1 -0
  51. package/dist/router.js +136 -0
  52. package/dist/router.js.map +1 -0
  53. package/dist/store.d.ts +1 -0
  54. package/dist/store.d.ts.map +1 -0
  55. package/dist/store.js +18 -0
  56. package/dist/store.js.map +1 -0
  57. package/dist/types.d.ts +94 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +2 -0
  60. package/dist/types.js.map +1 -0
  61. package/package.json +71 -0
  62. package/src/card.tsx +628 -0
  63. package/src/index.tsx +193 -0
  64. package/src/logger.ts +13 -0
  65. package/src/reducer.ts +127 -0
  66. package/src/redux.ts +64 -0
  67. package/src/rest/delete.ts +41 -0
  68. package/src/rest/enums.ts +8 -0
  69. package/src/rest/get.ts +50 -0
  70. package/src/rest/index.ts +7 -0
  71. package/src/rest/postPutPatch.ts +118 -0
  72. package/src/rest/types.ts +135 -0
  73. package/src/rest/utils.ts +265 -0
  74. package/src/router.ts +171 -0
  75. package/src/store.ts +19 -0
  76. package/src/types.ts +146 -0
package/dist/index.js ADDED
@@ -0,0 +1,88 @@
1
+ import React from "react";
2
+ import ReactDOM from "react-dom/client";
3
+ import { Provider } from "react-redux";
4
+ import { Card, registerCard, registerCardComponent, registerMetacard } from "./card";
5
+ import { createReducer } from "./reducer";
6
+ import { ON_INIT_ACTION, currentRoute, init as routerInit } from "./router";
7
+ import { configureStore } from "@reduxjs/toolkit";
8
+ //import monitorReducerEnhancer from "./monitor_enhancer"
9
+ import { getLogger } from "./logger";
10
+ import { registerDELETE, registerGET, registerPATCH, registerPOST, registerPUT, } from "./rest";
11
+ const logger = getLogger("root");
12
+ export { registerActions, actionTypesToEvents, createOnAction } from "./redux";
13
+ export { Card, memo, createCardDeclaration, isCardRef } from "./card";
14
+ export { getLogger } from "./logger";
15
+ export { RestContentType } from "./rest";
16
+ export { showPage, onInit, onShowPage, createShowPageAction, onNavigateToPage } from "./router";
17
+ export const DEFAULT_REDUX_STATE = {
18
+ route: { path: [], query: {}, url: "", fromBrowser: false },
19
+ pihanga: {},
20
+ };
21
+ export function start(initialState, inits = [], props = {}) {
22
+ const state = {
23
+ ...DEFAULT_REDUX_STATE,
24
+ ...initialState,
25
+ ...{ route: currentRoute() }, // override route with current one
26
+ };
27
+ let dispatchF = null;
28
+ const dispatcherW = (a) => {
29
+ if (dispatchF) {
30
+ dispatchF(a);
31
+ }
32
+ else {
33
+ logger.error("dispatch function is not properly set");
34
+ }
35
+ };
36
+ const [reducer, piReducer] = createReducer(state, dispatcherW);
37
+ const route = routerInit(piReducer);
38
+ const ignoredActions = [].concat(props.ignoredActions || []);
39
+ const ignoredActionPaths = [
40
+ "apiURL", // from IVCAP
41
+ "mapper",
42
+ "content", // from REST
43
+ "request",
44
+ "headers",
45
+ "cause",
46
+ "data",
47
+ ].concat(props.ignoredActionPaths || []);
48
+ const ignoredPaths = ["cause.content"].concat(props.ignoredStatePaths || []);
49
+ const store = configureStore({
50
+ reducer,
51
+ preloadedState: state, // keep type checking happy
52
+ // enhancers: [monitorReducerEnhancer as unknown as StoreEnhancer],
53
+ middleware: (getDefaultMiddleware) => getDefaultMiddleware({
54
+ serializableCheck: {
55
+ ignoredActions,
56
+ ignoredActionPaths,
57
+ ignoredPaths,
58
+ ignoreState: props.disableSerializableStateCheck,
59
+ ignoreAction: props.disableSerializableActionCheck,
60
+ }
61
+ })
62
+ });
63
+ dispatchF = store.dispatch;
64
+ const card = registerCard(piReducer.register, dispatchF);
65
+ const register = {
66
+ card,
67
+ cardComponent: registerCardComponent,
68
+ metaCard: registerMetacard(card),
69
+ reducer: piReducer,
70
+ GET: registerGET(piReducer),
71
+ PUT: registerPUT(piReducer),
72
+ POST: registerPOST(piReducer),
73
+ PATCH: registerPATCH(piReducer),
74
+ DELETE: registerDELETE(piReducer),
75
+ };
76
+ inits.forEach((f) => f(register));
77
+ piReducer.dispatch({ type: ON_INIT_ACTION });
78
+ const rootComp = RootComponent(store);
79
+ const root = ReactDOM.createRoot(document.getElementById("root"));
80
+ root.render(rootComp);
81
+ return register;
82
+ }
83
+ function RootComponent(store) {
84
+ return (React.createElement(React.StrictMode, null,
85
+ React.createElement(Provider, { store: store },
86
+ React.createElement(Card, { cardName: "page", parentCard: "" }))));
87
+ }
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Logger } from "tslog";
2
+ export declare const core: Logger<unknown>;
3
+ export declare const pihanga: Logger<unknown>;
4
+ export declare function getLogger(name: string): Logger<unknown>;
5
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,eAAO,MAAM,IAAI,iBAIf,CAAC;AACH,eAAO,MAAM,OAAO,iBAAyC,CAAC;AAE9D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAEvD"}
package/dist/logger.js ADDED
@@ -0,0 +1,12 @@
1
+ /* eslint-disable prettier/prettier */
2
+ import { Logger } from "tslog";
3
+ export const core = new Logger({
4
+ type: "pretty",
5
+ name: "",
6
+ prettyLogTemplate: "{{hh}}:{{MM}}:{{ss}}:{{ms}} {{logLevelName}} {{name}} "
7
+ });
8
+ export const pihanga = core.getSubLogger({ name: "pihanga" });
9
+ export function getLogger(name) {
10
+ return core.getSubLogger({ name });
11
+ }
12
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;IAC7B,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,EAAE;IACR,iBAAiB,EAAE,wDAAwD;CAC5E,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAE9D,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Action, Reducer } from "@reduxjs/toolkit";
2
+ import { PiReducer, ReduxState } from "./types";
3
+ import { Dispatch } from "react";
4
+ export declare function createReducer(initialState: ReduxState, dispatcher: Dispatch<any>): [Reducer<ReduxState, Action>, PiReducer];
5
+ //# sourceMappingURL=reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAEL,SAAS,EAMT,UAAU,EACX,MAAM,SAAS,CAAA;AAKhB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAWhC,wBAAgB,aAAa,CAC3B,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,GACxB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAiG1C"}
@@ -0,0 +1,77 @@
1
+ import { produce } from "immer";
2
+ import { RegisterCardState, UPDATE_STATE_ACTION } from "./card";
3
+ import StackTrace from "stacktrace-js";
4
+ import { getLogger } from "./logger";
5
+ const logger = getLogger("reducer");
6
+ export function createReducer(initialState, dispatcher) {
7
+ const mappings = {};
8
+ mappings[UPDATE_STATE_ACTION] = [{ mapperMany: RegisterCardState.reducer }];
9
+ const delayedDispatcher = (a) => {
10
+ setTimeout(() => dispatcher(a), 0);
11
+ };
12
+ const reducer = (state, action) => {
13
+ const s = state || initialState;
14
+ const ra = mappings[action.type];
15
+ if (!ra || ra.length === 0) {
16
+ return s;
17
+ }
18
+ const nextState = produce(s, (draft) => {
19
+ const rout = [];
20
+ const outDraft = ra.reduce((d, m) => {
21
+ try {
22
+ if (m.mapperMany) {
23
+ const s = m.mapperMany(d, action, delayedDispatcher);
24
+ rout.push(m);
25
+ return s;
26
+ }
27
+ else if (m.mapperOnce) {
28
+ const [s, flag] = m.mapperOnce(d, action, delayedDispatcher);
29
+ if (!flag) {
30
+ rout.push(m);
31
+ }
32
+ return s;
33
+ }
34
+ else {
35
+ return d;
36
+ }
37
+ }
38
+ catch (err) {
39
+ logger.error(err.message, m.definedIn);
40
+ return d;
41
+ }
42
+ }, draft);
43
+ mappings[action.type] = rout;
44
+ return outDraft;
45
+ });
46
+ return nextState;
47
+ };
48
+ const registerReducer = (eventType, mapper, priority = 0) => {
49
+ addReducer(eventType, { mapperMany: mapper, priority });
50
+ };
51
+ const registerOneShot = (eventType, mapper, priority = 0) => {
52
+ addReducer(eventType, { mapperOnce: mapper, priority });
53
+ };
54
+ function addReducer(eventType, reducerDef) {
55
+ const m = mappings[eventType] || [];
56
+ m.push(reducerDef); // keep typing happy
57
+ m.sort((a, b) => (b.priority || 0) - (a.priority || 0));
58
+ mappings[eventType] = m;
59
+ const callback = (frames) => {
60
+ // const stack = frames.map((sf) => `${sf.fileName}:${sf.lineNumber}`)
61
+ // console.log(stack)
62
+ reducerDef.definedIn = frames[2];
63
+ };
64
+ const errback = (err) => {
65
+ logger.warn(err.message);
66
+ };
67
+ StackTrace.get().then(callback).catch(errback);
68
+ }
69
+ const piReducer = {
70
+ register: registerReducer,
71
+ registerOneShot,
72
+ dispatch: dispatcher,
73
+ dispatchFromReducer: delayedDispatcher,
74
+ };
75
+ return [reducer, piReducer];
76
+ }
77
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.js","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAC/D,OAAO,UAAU,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AASnC,MAAM,UAAU,aAAa,CAC3B,YAAwB,EACxB,UAAyB;IAEzB,MAAM,QAAQ,GAAsD,EAAE,CAAA;IACtE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAA;IAE3E,MAAM,iBAAiB,GAAG,CAAC,CAAM,EAAQ,EAAE;QACzC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,CACd,KAA6B,EAC7B,MAAc,EACF,EAAE;QACd,MAAM,CAAC,GAAG,KAAK,IAAI,YAAY,CAAA;QAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7D,MAAM,IAAI,GAA0C,EAAE,CAAA;YACtD,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,CAAC;oBACH,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;wBACjB,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAA;wBACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;wBACZ,OAAO,CAAC,CAAA;oBACV,CAAC;yBAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;wBACxB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAA;wBAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;wBACd,CAAC;wBACD,OAAO,CAAC,CAAA;oBACV,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAA;oBACtC,OAAO,CAAC,CAAA;gBACV,CAAC;YACH,CAAC,EAAE,KAAK,CAAC,CAAA;YACT,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YAC5B,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,MAAM,eAAe,GAAuB,CAI1C,SAAiB,EACjB,MAAqB,EACrB,WAAmB,CAAC,EACd,EAAE;QACR,UAAU,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,MAAM,eAAe,GAA8B,CAIjD,SAAiB,EACjB,MAAkE,EAClE,WAAmB,CAAC,EACd,EAAE;QACR,UAAU,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,SAAS,UAAU,CACjB,SAAiB,EACjB,UAA4B;QAG5B,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QACnC,CAAC,CAAC,IAAI,CAAC,UAAwD,CAAC,CAAA,CAAC,oBAAoB;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QACvD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAEvB,MAAM,QAAQ,GAAG,CAAC,MAA+B,EAAE,EAAE;YACnD,sEAAsE;YACtE,qBAAqB;YACrB,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC,CAAA;QACD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,SAAS,GAAc;QAC3B,QAAQ,EAAE,eAAe;QACzB,eAAe;QACf,QAAQ,EAAE,UAAU;QACpB,mBAAmB,EAAE,iBAAiB;KACvC,CAAA;IAED,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { PiRegister } from ".";
2
+ import { CardAction, ReduceF, ReduxState } from "./types";
3
+ /**
4
+ * Register a set of actions for a particular namespace.
5
+ *
6
+ * The 'actions' parameter is an array of local action
7
+ * names which will be converted into a hash where the local name
8
+ * is the key and the value is of the pattern 'namespace:name'.
9
+ *
10
+ * The function returns the hash registered under this namespace.
11
+ *
12
+ * @param {string} namespace
13
+ * @param {hash||array} actions
14
+ */
15
+ export declare function registerActions<T extends string>(namespace: string, actions: readonly T[]): {
16
+ [S in Uppercase<T>]: string;
17
+ };
18
+ export declare function actionTypesToEvents(actionTypes: {
19
+ [k: string]: string;
20
+ }): {
21
+ [k: string]: string;
22
+ };
23
+ /**
24
+ * Return a function to more conventiently register a
25
+ * reducer function for 'actionType'.
26
+ *
27
+ * @param {string} actionType
28
+ * @returns a function to register a reducer for 'actionType'
29
+ */
30
+ export declare function createOnAction<E>(actionType: string): <S extends ReduxState>(register: PiRegister, f: ReduceF<S, CardAction & E>) => void;
31
+ //# sourceMappingURL=redux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redux.d.ts","sourceRoot":"","sources":["../src/redux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIzD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,EAAE,GACpB;KAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM;CAAE,CAWjC;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG;IACzE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACpB,CAUA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,UAAU,EAC1E,QAAQ,EAAE,UAAU,EAEpB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,KAC1B,IAAI,CAIR"}
package/dist/redux.js ADDED
@@ -0,0 +1,50 @@
1
+ import { pihanga as logger } from "./logger";
2
+ const ns2Actions = {};
3
+ /**
4
+ * Register a set of actions for a particular namespace.
5
+ *
6
+ * The 'actions' parameter is an array of local action
7
+ * names which will be converted into a hash where the local name
8
+ * is the key and the value is of the pattern 'namespace:name'.
9
+ *
10
+ * The function returns the hash registered under this namespace.
11
+ *
12
+ * @param {string} namespace
13
+ * @param {hash||array} actions
14
+ */
15
+ export function registerActions(namespace, actions) {
16
+ if (ns2Actions[namespace]) {
17
+ logger.warn(`Overwriting action namespace "${namespace}"`);
18
+ }
19
+ const ah = {};
20
+ actions.forEach((a) => {
21
+ ah[a.toUpperCase()] = `${namespace}/${a}`;
22
+ });
23
+ logger.info(`Register action ns "${namespace}"`);
24
+ ns2Actions[namespace] = true;
25
+ return ah;
26
+ }
27
+ export function actionTypesToEvents(actionTypes) {
28
+ return Object.entries(actionTypes).reduce((p, el) => {
29
+ const [k, v] = el;
30
+ const n = k
31
+ .split("_")
32
+ .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())
33
+ .join("");
34
+ p[`on${n}`] = v;
35
+ return p;
36
+ }, {});
37
+ }
38
+ /**
39
+ * Return a function to more conventiently register a
40
+ * reducer function for 'actionType'.
41
+ *
42
+ * @param {string} actionType
43
+ * @returns a function to register a reducer for 'actionType'
44
+ */
45
+ export function createOnAction(actionType) {
46
+ return (register, f) => {
47
+ register.reducer.register(actionType, f);
48
+ };
49
+ }
50
+ //# sourceMappingURL=redux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redux.js","sourceRoot":"","sources":["../src/redux.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAG5C,MAAM,UAAU,GAA6B,EAAE,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,OAAqB;IAErB,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kCAAkC,SAAS,GAAG,CAAC,CAAA;IAC7D,CAAC;IACD,MAAM,EAAE,GAAQ,EAAE,CAAA;IAClB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,SAAS,IAAI,CAAC,EAAE,CAAA;IAC3C,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,IAAI,CAAC,uBAAuB,SAAS,GAAG,CAAC,CAAA;IAChD,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAqC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAoC;IAGtE,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAClD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QACjB,MAAM,CAAC,GAAG,CAAC;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAChE,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QACf,OAAO,CAAC,CAAA;IACV,CAAC,EAAE,EAA6B,CAAC,CAAA;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAI,UAAkB;IAKlD,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;QACrB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { PiReducer, ReduxAction, ReduxState } from "../types";
2
+ import { PiRegisterDeleteProps } from "./types";
3
+ export declare function registerDELETE<S extends ReduxState, A extends ReduxAction, R, C = any>(reducer: PiReducer): (props: PiRegisterDeleteProps<S, A, R, C>) => void;
4
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/rest/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE7D,OAAO,EAA0B,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEvE,wBAAgB,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EACpF,OAAO,EAAE,SAAS,GACjB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAIpD"}
@@ -0,0 +1,23 @@
1
+ import { registerCommon } from "./utils";
2
+ import { ACTION_TYPES } from "./types";
3
+ export function registerDELETE(reducer) {
4
+ return function (props) {
5
+ _registerDELETE(props, reducer);
6
+ };
7
+ }
8
+ function _registerDELETE(props, reducer) {
9
+ const { name, request } = props;
10
+ const submitType = `${ACTION_TYPES.DELETE_SUBMITTED}:${name}`;
11
+ const resultType = `${ACTION_TYPES.DELETE_RESULT}:${name}`;
12
+ const errorType = `${ACTION_TYPES.DELETE_ERROR}:${name}`;
13
+ const intErrorType = `${ACTION_TYPES.DELETE_INTERNAL_ERROR}:${name}`;
14
+ function requestF(state, action) {
15
+ const bindings = request ? request(action, state) : {};
16
+ const reqInit = {
17
+ method: "DELETE",
18
+ };
19
+ return [reqInit, bindings];
20
+ }
21
+ registerCommon(reducer, props, requestF, submitType, resultType, errorType, intErrorType);
22
+ }
23
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/rest/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAY,YAAY,EAAyB,MAAM,SAAS,CAAA;AAEvE,MAAM,UAAU,cAAc,CAC5B,OAAkB;IAElB,OAAO,UAAU,KAAqC;QACpD,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CACtB,KAAwC,EACxC,OAAkB;IAElB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAE/B,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAA;IAC7D,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,aAAa,IAAI,IAAI,EAAE,CAAA;IAC1D,MAAM,SAAS,GAAG,GAAG,YAAY,CAAC,YAAY,IAAI,IAAI,EAAE,CAAA;IACxD,MAAM,YAAY,GAAG,GAAG,YAAY,CAAC,qBAAqB,IAAI,IAAI,EAAE,CAAA;IAEpE,SAAS,QAAQ,CAAC,KAAQ,EAAE,MAAS;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtD,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,QAAQ;SACjB,CAAA;QACD,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAED,cAAc,CACZ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,CACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare enum RestContentType {
2
+ Blob = "blob",
3
+ Text = "text",
4
+ Object = "object"
5
+ }
6
+ //# sourceMappingURL=enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/rest/enums.ts"],"names":[],"mappings":"AAGA,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;CAClB"}
@@ -0,0 +1,9 @@
1
+ // Enums are not types, but we kind of use them like types, so we have
2
+ // to work around imports and type checking
3
+ export var RestContentType;
4
+ (function (RestContentType) {
5
+ RestContentType["Blob"] = "blob";
6
+ RestContentType["Text"] = "text";
7
+ RestContentType["Object"] = "object";
8
+ })(RestContentType || (RestContentType = {}));
9
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/rest/enums.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,2CAA2C;AAE3C,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,oCAAiB,CAAA;AACnB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B"}
@@ -0,0 +1,10 @@
1
+ import { PiReducer, ReduxAction, ReduxState } from "../types";
2
+ import { PiRegisterGetProps } from "./types";
3
+ export declare const ACTION_TYPES: {
4
+ ERROR: string;
5
+ SUBMITTED: string;
6
+ RESULT: string;
7
+ INTERNAL_ERROR: string;
8
+ };
9
+ export declare function registerGET<S extends ReduxState, A extends ReduxAction, R, C = any>(reducer: PiReducer): (props: PiRegisterGetProps<S, A, R, C>) => void;
10
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/rest/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE7D,OAAO,EAAoB,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAG9D,eAAO,MAAM,YAAY;;;;;CAMvB,CAAA;AAEF,wBAAgB,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EACjF,OAAO,EAAE,SAAS,GACjB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAIjD"}
@@ -0,0 +1,31 @@
1
+ import { registerCommon } from "./utils";
2
+ import { Domain } from "./types";
3
+ import { registerActions } from "../redux";
4
+ export const ACTION_TYPES = registerActions(`${Domain}/get`, [
5
+ "submitted",
6
+ "result",
7
+ "error",
8
+ "internal_error",
9
+ // "PERIODIC_TICK",
10
+ ]);
11
+ export function registerGET(reducer) {
12
+ return function (props) {
13
+ _registerGET(props, reducer);
14
+ };
15
+ }
16
+ function _registerGET(props, reducer) {
17
+ const { name, request } = props;
18
+ const submitType = `${ACTION_TYPES.SUBMITTED}/${name}`;
19
+ const resultType = `${ACTION_TYPES.RESULT}/${name}`;
20
+ const errorType = `${ACTION_TYPES.ERROR}/${name}`;
21
+ const intErrorType = `${ACTION_TYPES.INTERNAL_ERROR}/${name}`;
22
+ function requestF(state, action) {
23
+ const bindings = request ? request(action, state) : {};
24
+ const reqInit = {
25
+ method: "GET",
26
+ };
27
+ return [reqInit, bindings];
28
+ }
29
+ registerCommon(reducer, props, requestF, submitType, resultType, errorType, intErrorType);
30
+ }
31
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/rest/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAY,MAAM,EAAsB,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,MAAM,MAAM,EAAE;IAC3D,WAAW;IACX,QAAQ;IACR,OAAO;IACP,gBAAgB;IAChB,mBAAmB;CACpB,CAAC,CAAA;AAEF,MAAM,UAAU,WAAW,CACzB,OAAkB;IAElB,OAAO,UAAU,KAAqC;QACpD,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CACnB,KAAqC,EACrC,OAAkB;IAElB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAE/B,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,SAAS,IAAI,IAAI,EAAE,CAAA;IACtD,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,MAAM,IAAI,IAAI,EAAE,CAAA;IACnD,MAAM,SAAS,GAAG,GAAG,YAAY,CAAC,KAAK,IAAI,IAAI,EAAE,CAAA;IACjD,MAAM,YAAY,GAAG,GAAG,YAAY,CAAC,cAAc,IAAI,IAAI,EAAE,CAAA;IAE7D,SAAS,QAAQ,CAAC,KAAQ,EAAE,MAAS;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtD,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,KAAK;SACd,CAAA;QACD,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAED,cAAc,CACZ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,CACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { registerGET } from "./get";
2
+ export { registerPOST, registerPUT, registerPATCH } from "./postPutPatch";
3
+ export { registerDELETE } from "./delete";
4
+ export type * from "./types";
5
+ export * from "./enums";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,mBAAmB,SAAS,CAAA;AAC5B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { registerGET } from "./get";
2
+ //export { registerPeriodicGET } from './get-periodic';
3
+ export { registerPOST, registerPUT, registerPATCH } from "./postPutPatch";
4
+ export { registerDELETE } from "./delete";
5
+ export * from "./enums";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACnC,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAGzC,cAAc,SAAS,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { PiReducer, ReduxAction, ReduxState } from "../types";
2
+ import { PiRegisterPoPuPaProps } from "./types";
3
+ export declare function registerPOST<S extends ReduxState, A extends ReduxAction, R, C = any>(reducer: PiReducer): (props: PiRegisterPoPuPaProps<S, A, R>) => void;
4
+ export declare function registerPUT<S extends ReduxState, A extends ReduxAction, R, C = any>(reducer: PiReducer): (props: PiRegisterPoPuPaProps<S, A, R>) => void;
5
+ export declare function registerPATCH<S extends ReduxState, A extends ReduxAction, R, C = any>(reducer: PiReducer): (props: PiRegisterPoPuPaProps<S, A, R, C>) => void;
6
+ //# sourceMappingURL=postPutPatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postPutPatch.d.ts","sourceRoot":"","sources":["../../src/rest/postPutPatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC7D,OAAO,EAGL,qBAAqB,EAEtB,MAAM,SAAS,CAAA;AAGhB,wBAAgB,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAClF,OAAO,EAAE,SAAS,GACjB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAmBjD;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EACjF,OAAO,EAAE,SAAS,GACjB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAmBjD;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EACnF,OAAO,EAAE,SAAS,GACjB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAmBpD"}
@@ -0,0 +1,72 @@
1
+ import { ACTION_TYPES, } from "./types";
2
+ import { registerCommon } from "./utils";
3
+ export function registerPOST(reducer) {
4
+ return function (props) {
5
+ const { name, request } = props;
6
+ const submitType = `${ACTION_TYPES.POST_SUBMITTED}:${name}`;
7
+ const resultType = `${ACTION_TYPES.POST_RESULT}:${name}`;
8
+ const errorType = `${ACTION_TYPES.POST_ERROR}:${name}`;
9
+ const intErrorType = `${ACTION_TYPES.POST_INTERNAL_ERROR}:${name}`;
10
+ registerCommon(reducer, props, requestF("POST", request), submitType, resultType, errorType, intErrorType);
11
+ };
12
+ }
13
+ export function registerPUT(reducer) {
14
+ return function (props) {
15
+ const { name, request } = props;
16
+ const submitType = `${ACTION_TYPES.PUT_SUBMITTED}:${name}`;
17
+ const resultType = `${ACTION_TYPES.PUT_RESULT}:${name}`;
18
+ const errorType = `${ACTION_TYPES.PUT_ERROR}:${name}`;
19
+ const intErrorType = `${ACTION_TYPES.PUT_INTERNAL_ERROR}:${name}`;
20
+ registerCommon(reducer, props, requestF("PUT", request), submitType, resultType, errorType, intErrorType);
21
+ };
22
+ }
23
+ export function registerPATCH(reducer) {
24
+ return function (props) {
25
+ const { name, request } = props;
26
+ const submitType = `${ACTION_TYPES.PATCH_SUBMITTED}:${name}`;
27
+ const resultType = `${ACTION_TYPES.PATCH_RESULT}:${name}`;
28
+ const errorType = `${ACTION_TYPES.PATCH_ERROR}:${name}`;
29
+ const intErrorType = `${ACTION_TYPES.PATCH_INTERNAL_ERROR}:${name}`;
30
+ registerCommon(reducer, props, requestF("PATCH", request), submitType, resultType, errorType, intErrorType);
31
+ };
32
+ }
33
+ function requestF(method, request) {
34
+ return (state, action) => {
35
+ const r = request(action, state);
36
+ let ct = r.contentType;
37
+ const headers = {};
38
+ let body = r.body;
39
+ if (body) {
40
+ if (!ct) {
41
+ if (typeof body === "object") {
42
+ ct = "application/json";
43
+ }
44
+ else if (typeof body === "string") {
45
+ ct = "text";
46
+ }
47
+ else {
48
+ throw Error("Cannot determin 'contentType'");
49
+ }
50
+ }
51
+ headers["Content-Type"] = ct;
52
+ if (ct === "application/json") {
53
+ body = JSON.stringify(body);
54
+ }
55
+ }
56
+ if (!ct) {
57
+ if (typeof body === "string") {
58
+ ct = "text";
59
+ }
60
+ else {
61
+ throw Error("Cannot determin 'contentType'");
62
+ }
63
+ }
64
+ const reqInit = {
65
+ method,
66
+ body,
67
+ headers,
68
+ };
69
+ return [reqInit, r.bindings || {}];
70
+ };
71
+ }
72
+ //# sourceMappingURL=postPutPatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postPutPatch.js","sourceRoot":"","sources":["../../src/rest/postPutPatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { RestContentType } from "..";
2
+ import { DispatchF, ReduxAction, ReduxState } from "../types";
3
+ export declare const Domain = "pi/rest";
4
+ export declare const ACTION_TYPES: {
5
+ POST_SUBMITTED: string;
6
+ POST_RESULT: string;
7
+ POST_ERROR: string;
8
+ POST_INTERNAL_ERROR: string;
9
+ PUT_SUBMITTED: string;
10
+ PUT_RESULT: string;
11
+ PUT_ERROR: string;
12
+ PUT_INTERNAL_ERROR: string;
13
+ PATCH_SUBMITTED: string;
14
+ PATCH_RESULT: string;
15
+ PATCH_ERROR: string;
16
+ PATCH_INTERNAL_ERROR: string;
17
+ DELETE_SUBMITTED: string;
18
+ DELETE_RESULT: string;
19
+ DELETE_ERROR: string;
20
+ DELETE_INTERNAL_ERROR: string;
21
+ UNAUTHORISED_ERROR: string;
22
+ PERMISSION_DENIED_ERROR: string;
23
+ NOT_FOUND_ERROR: string;
24
+ ERROR: string;
25
+ CONTEXT_ERROR: string;
26
+ };
27
+ export type Bindings = {
28
+ [key: string]: string | number;
29
+ };
30
+ export type PoPuPaRequest = {
31
+ body: any;
32
+ contentType?: string;
33
+ bindings?: Bindings;
34
+ };
35
+ export type RegisterGenericProps<S extends ReduxState, A extends ReduxAction, R, C = any> = {
36
+ name: string;
37
+ origin?: string | ((action: A, state: S, context: C) => string | URL);
38
+ url: string;
39
+ trigger: string;
40
+ context?: (action: A, state: S) => Promise<C> | null;
41
+ guard?: (action: A, state: S, dispatcher: DispatchF, context: C) => boolean;
42
+ headers?: (action: A, state: S, context: C) => {
43
+ [key: string]: string;
44
+ };
45
+ reply: (state: S, reply: R, dispatcher: DispatchF, result: ResultAction<A>) => S;
46
+ error?: (state: S, error: ErrorAction<A>, requestAction: A, dispatch: DispatchF) => S;
47
+ };
48
+ export type PiRegisterGetProps<S extends ReduxState, A extends ReduxAction, R, C = any> = RegisterGenericProps<S, A, R, C> & {
49
+ request?: (action: A, state: S) => Bindings;
50
+ };
51
+ export type PiRegisterPoPuPaProps<S extends ReduxState, A extends ReduxAction, R, C = any> = RegisterGenericProps<S, A, R, C> & {
52
+ request: (action: A, state: S) => PoPuPaRequest;
53
+ };
54
+ export type PiRegisterDeleteProps<S extends ReduxState, A extends ReduxAction, R, C = any> = RegisterGenericProps<S, A, R, C> & {
55
+ request?: (action: A, state: S) => Bindings;
56
+ };
57
+ export type HttpResponse = {
58
+ statusCode: number;
59
+ headers: {
60
+ [k: string]: any;
61
+ };
62
+ content: any;
63
+ contentType: RestContentType;
64
+ mimeType: string;
65
+ size: number;
66
+ };
67
+ export type SubmitAction = ReduxAction & {
68
+ requestID: string;
69
+ url: string;
70
+ bindings: Bindings;
71
+ };
72
+ export declare enum ErrorKind {
73
+ Unauthorised = "Unauthorised",
74
+ PermissionDenied = "PermissionDenied",
75
+ NotFound = "NotFound",
76
+ Other = "Other"
77
+ }
78
+ export type ResultAction<R> = ReduxAction & {
79
+ queryID: string;
80
+ url: string;
81
+ request: R;
82
+ } & HttpResponse;
83
+ export type ErrorAction<R> = ReduxAction & {
84
+ requestID: string;
85
+ error: ErrorKind;
86
+ url: string;
87
+ request: R;
88
+ } & HttpResponse;
89
+ export type ContextErrorAction = ReduxAction & {
90
+ error: string;
91
+ pendingAction: ReduxAction;
92
+ };
93
+ //# sourceMappingURL=types.d.ts.map