@webiny/app-record-locking 5.40.0-beta.5 → 6.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/HeadlessCmsActionsAcoCell.js +3 -2
- package/components/HeadlessCmsActionsAcoCell.js.map +1 -1
- package/components/decorators/UseRecordsDecorator.d.ts +9 -0
- package/components/decorators/UseRecordsDecorator.js +30 -0
- package/components/decorators/UseRecordsDecorator.js.map +1 -0
- package/package.json +15 -14
|
@@ -13,6 +13,7 @@ var _Tooltip = require("@webiny/ui/Tooltip");
|
|
|
13
13
|
var _hooks = require("../hooks");
|
|
14
14
|
var _UseContentEntriesListHookDecorator = require("./decorators/UseContentEntriesListHookDecorator");
|
|
15
15
|
var _UseSaveEntryDecorator = require("./decorators/UseSaveEntryDecorator");
|
|
16
|
+
var _UseRecordsDecorator = require("./decorators/UseRecordsDecorator");
|
|
16
17
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
17
18
|
var CenterAlignment = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV === "production" ? {
|
|
18
19
|
target: "e1qmlafx0"
|
|
@@ -25,7 +26,7 @@ var CenterAlignment = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_EN
|
|
|
25
26
|
} : {
|
|
26
27
|
name: "dmikdp",
|
|
27
28
|
styles: "display:block;margin:0 auto;width:28px;svg{fill:var(--mdc-theme-text-secondary-on-background);}",
|
|
28
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
29
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRsZXNzQ21zQWN0aW9uc0Fjb0NlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVrQyIsImZpbGUiOiJIZWFkbGVzc0Ntc0FjdGlvbnNBY29DZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbnRlbnRFbnRyeUxpc3RDb25maWcsIHVzZU1vZGVsIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWhlYWRsZXNzLWNtc1wiO1xuaW1wb3J0IHsgUmVhY3RDb21wb25lbnQgYXMgTG9ja2VkSWNvbiB9IGZyb20gXCJAbWF0ZXJpYWwtZGVzaWduLWljb25zL3N2Zy9yb3VuZC9sb2NrLnN2Z1wiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAd2ViaW55L3VpL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHVzZVJlY29yZExvY2tpbmcgfSBmcm9tIFwifi9ob29rc1wiO1xuaW1wb3J0IHsgVXNlQ29udGVudEVudHJpZXNMaXN0SG9va0RlY29yYXRvciB9IGZyb20gXCIuL2RlY29yYXRvcnMvVXNlQ29udGVudEVudHJpZXNMaXN0SG9va0RlY29yYXRvclwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBVc2VTYXZlRW50cnlEZWNvcmF0b3IgfSBmcm9tIFwifi9jb21wb25lbnRzL2RlY29yYXRvcnMvVXNlU2F2ZUVudHJ5RGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBVc2VSZWNvcmRzRGVjb3JhdG9yIH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9Vc2VSZWNvcmRzRGVjb3JhdG9yXCI7XG5cbmNvbnN0IENlbnRlckFsaWdubWVudCA9IHN0eWxlZC5kaXZgXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgc3ZnIHtcbiAgICAgICAgZmlsbDogdmFyKC0tbWRjLXRoZW1lLXRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQpO1xuICAgIH1cbmA7XG5cbmNvbnN0IHsgQnJvd3NlciB9ID0gQ29udGVudEVudHJ5TGlzdENvbmZpZztcblxuaW50ZXJmYWNlIEFjdGlvbnNDZWxsUHJvcHMge1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IEFjdGlvbnNDZWxsID0gKHsgY2hpbGRyZW4gfTogQWN0aW9uc0NlbGxQcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwgfSA9IHVzZU1vZGVsKCk7XG4gICAgY29uc3QgeyBnZXRMb2NrUmVjb3JkRW50cnksIGlzUmVjb3JkTG9ja2VkIH0gPSB1c2VSZWNvcmRMb2NraW5nKCk7XG5cbiAgICBjb25zdCB7IHVzZVRhYmxlUm93LCBpc0ZvbGRlclJvdyB9ID0gQnJvd3Nlci5UYWJsZS5Db2x1bW47XG4gICAgY29uc3QgeyByb3cgfSA9IHVzZVRhYmxlUm93KCk7XG5cbiAgICBpZiAoaXNGb2xkZXJSb3cocm93KSkge1xuICAgICAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5ID0gZ2V0TG9ja1JlY29yZEVudHJ5KHJvdy5pZCk7XG5cbiAgICBpZiAoIWlzUmVjb3JkTG9ja2VkKGVudHJ5KSB8fCAhZW50cnk/LiRsb2NrZWQpIHtcbiAgICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgICAgPENlbnRlckFsaWdubWVudD5cbiAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PXtcImxlZnRcIn1cbiAgICAgICAgICAgICAgICBjb250ZW50PXtgVGhpcyAke21vZGVsLm5hbWV9IGlzIGN1cnJlbnRseSBsb2NrZWQgYnkgJHtlbnRyeS4kbG9ja2VkLmxvY2tlZEJ5LmRpc3BsYXlOYW1lfS5gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMb2NrZWRJY29uIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIDwvQ2VudGVyQWxpZ25tZW50PlxuICAgICk7XG59O1xuXG5jb25zdCBSZWNvcmRMb2NraW5nQ2VsbEFjdGlvbnMgPSBCcm93c2VyLlRhYmxlLkNvbHVtbi5jcmVhdGVEZWNvcmF0b3IoT3JpZ2luYWwgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBSZWNvcmRMb2NraW5nQ2VsbEFjdGlvbnMocHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLm5hbWUgPT09IFwiYWN0aW9uc1wiICYmIHByb3BzLmNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiA8T3JpZ2luYWwgey4uLnByb3BzfSBjZWxsPXs8QWN0aW9uc0NlbGw+e3Byb3BzLmNlbGx9PC9BY3Rpb25zQ2VsbD59IC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxPcmlnaW5hbCB7Li4ucHJvcHN9IC8+O1xuICAgIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IEhlYWRsZXNzQ21zQWN0aW9uc0Fjb0NlbGwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIDxVc2VDb250ZW50RW50cmllc0xpc3RIb29rRGVjb3JhdG9yIC8+XG4gICAgICAgICAgICA8VXNlU2F2ZUVudHJ5RGVjb3JhdG9yIC8+XG4gICAgICAgICAgICA8UmVjb3JkTG9ja2luZ0NlbGxBY3Rpb25zIC8+XG4gICAgICAgICAgICA8VXNlUmVjb3Jkc0RlY29yYXRvciAvPlxuICAgICAgICA8Lz5cbiAgICApO1xufTtcbiJdfQ== */",
|
|
29
30
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
30
31
|
});
|
|
31
32
|
var Browser = _appHeadlessCms.ContentEntryListConfig.Browser;
|
|
@@ -64,7 +65,7 @@ var RecordLockingCellActions = Browser.Table.Column.createDecorator(function (Or
|
|
|
64
65
|
};
|
|
65
66
|
});
|
|
66
67
|
var HeadlessCmsActionsAcoCell = exports.HeadlessCmsActionsAcoCell = function HeadlessCmsActionsAcoCell() {
|
|
67
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_UseContentEntriesListHookDecorator.UseContentEntriesListHookDecorator, null), /*#__PURE__*/_react.default.createElement(_UseSaveEntryDecorator.UseSaveEntryDecorator, null), /*#__PURE__*/_react.default.createElement(RecordLockingCellActions, null));
|
|
68
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_UseContentEntriesListHookDecorator.UseContentEntriesListHookDecorator, null), /*#__PURE__*/_react.default.createElement(_UseSaveEntryDecorator.UseSaveEntryDecorator, null), /*#__PURE__*/_react.default.createElement(RecordLockingCellActions, null), /*#__PURE__*/_react.default.createElement(_UseRecordsDecorator.UseRecordsDecorator, null));
|
|
68
69
|
};
|
|
69
70
|
|
|
70
71
|
//# sourceMappingURL=HeadlessCmsActionsAcoCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_appHeadlessCms","_lock","_Tooltip","_hooks","_UseContentEntriesListHookDecorator","_UseSaveEntryDecorator","_EMOTION_STRINGIFIED_CSS_ERROR__","CenterAlignment","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Browser","ContentEntryListConfig","ActionsCell","_ref","children","_useModel","useModel","model","_useRecordLocking","useRecordLocking","getLockRecordEntry","isRecordLocked","_Browser$Table$Column","Table","Column","useTableRow","isFolderRow","_useTableRow","row","createElement","Fragment","entry","id","$locked","Tooltip","placement","content","concat","lockedBy","displayName","ReactComponent","RecordLockingCellActions","createDecorator","Original","props","cell","Object","assign","HeadlessCmsActionsAcoCell","exports","UseContentEntriesListHookDecorator","UseSaveEntryDecorator"],"sources":["HeadlessCmsActionsAcoCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig, useModel } from \"@webiny/app-headless-cms\";\nimport { ReactComponent as LockedIcon } from \"@material-design-icons/svg/round/lock.svg\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { useRecordLocking } from \"~/hooks\";\nimport { UseContentEntriesListHookDecorator } from \"./decorators/UseContentEntriesListHookDecorator\";\nimport styled from \"@emotion/styled\";\nimport { UseSaveEntryDecorator } from \"~/components/decorators/UseSaveEntryDecorator\";\n\nconst CenterAlignment = styled.div`\n display: block;\n margin: 0 auto;\n width: 28px;\n svg {\n fill: var(--mdc-theme-text-secondary-on-background);\n }\n`;\n\nconst { Browser } = ContentEntryListConfig;\n\ninterface ActionsCellProps {\n children: React.ReactNode;\n}\n\nconst ActionsCell = ({ children }: ActionsCellProps) => {\n const { model } = useModel();\n const { getLockRecordEntry, isRecordLocked } = useRecordLocking();\n\n const { useTableRow, isFolderRow } = Browser.Table.Column;\n const { row } = useTableRow();\n\n if (isFolderRow(row)) {\n return <>{children}</>;\n }\n\n const entry = getLockRecordEntry(row.id);\n\n if (!isRecordLocked(entry) || !entry?.$locked) {\n return <>{children}</>;\n }\n return (\n <CenterAlignment>\n <Tooltip\n placement={\"left\"}\n content={`This ${model.name} is currently locked by ${entry.$locked.lockedBy.displayName}.`}\n >\n <LockedIcon />\n </Tooltip>\n </CenterAlignment>\n );\n};\n\nconst RecordLockingCellActions = Browser.Table.Column.createDecorator(Original => {\n return function RecordLockingCellActions(props) {\n if (props.name === \"actions\" && props.cell) {\n return <Original {...props} cell={<ActionsCell>{props.cell}</ActionsCell>} />;\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const HeadlessCmsActionsAcoCell = () => {\n return (\n <>\n <UseContentEntriesListHookDecorator />\n <UseSaveEntryDecorator />\n <RecordLockingCellActions />\n </>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,mCAAA,GAAAL,OAAA;AAEA,IAAAM,sBAAA,GAAAN,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_appHeadlessCms","_lock","_Tooltip","_hooks","_UseContentEntriesListHookDecorator","_UseSaveEntryDecorator","_UseRecordsDecorator","_EMOTION_STRINGIFIED_CSS_ERROR__","CenterAlignment","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","Browser","ContentEntryListConfig","ActionsCell","_ref","children","_useModel","useModel","model","_useRecordLocking","useRecordLocking","getLockRecordEntry","isRecordLocked","_Browser$Table$Column","Table","Column","useTableRow","isFolderRow","_useTableRow","row","createElement","Fragment","entry","id","$locked","Tooltip","placement","content","concat","lockedBy","displayName","ReactComponent","RecordLockingCellActions","createDecorator","Original","props","cell","Object","assign","HeadlessCmsActionsAcoCell","exports","UseContentEntriesListHookDecorator","UseSaveEntryDecorator","UseRecordsDecorator"],"sources":["HeadlessCmsActionsAcoCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig, useModel } from \"@webiny/app-headless-cms\";\nimport { ReactComponent as LockedIcon } from \"@material-design-icons/svg/round/lock.svg\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { useRecordLocking } from \"~/hooks\";\nimport { UseContentEntriesListHookDecorator } from \"./decorators/UseContentEntriesListHookDecorator\";\nimport styled from \"@emotion/styled\";\nimport { UseSaveEntryDecorator } from \"~/components/decorators/UseSaveEntryDecorator\";\nimport { UseRecordsDecorator } from \"./decorators/UseRecordsDecorator\";\n\nconst CenterAlignment = styled.div`\n display: block;\n margin: 0 auto;\n width: 28px;\n svg {\n fill: var(--mdc-theme-text-secondary-on-background);\n }\n`;\n\nconst { Browser } = ContentEntryListConfig;\n\ninterface ActionsCellProps {\n children: React.ReactNode;\n}\n\nconst ActionsCell = ({ children }: ActionsCellProps) => {\n const { model } = useModel();\n const { getLockRecordEntry, isRecordLocked } = useRecordLocking();\n\n const { useTableRow, isFolderRow } = Browser.Table.Column;\n const { row } = useTableRow();\n\n if (isFolderRow(row)) {\n return <>{children}</>;\n }\n\n const entry = getLockRecordEntry(row.id);\n\n if (!isRecordLocked(entry) || !entry?.$locked) {\n return <>{children}</>;\n }\n return (\n <CenterAlignment>\n <Tooltip\n placement={\"left\"}\n content={`This ${model.name} is currently locked by ${entry.$locked.lockedBy.displayName}.`}\n >\n <LockedIcon />\n </Tooltip>\n </CenterAlignment>\n );\n};\n\nconst RecordLockingCellActions = Browser.Table.Column.createDecorator(Original => {\n return function RecordLockingCellActions(props) {\n if (props.name === \"actions\" && props.cell) {\n return <Original {...props} cell={<ActionsCell>{props.cell}</ActionsCell>} />;\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const HeadlessCmsActionsAcoCell = () => {\n return (\n <>\n <UseContentEntriesListHookDecorator />\n <UseSaveEntryDecorator />\n <RecordLockingCellActions />\n <UseRecordsDecorator />\n </>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* When record locking mechanism is checking for records equality, it compares record `id` and `savedOn`.
|
|
4
|
+
* When you're updating ACO cache, you're just passing the new content entry value(s), and sometimes you might
|
|
5
|
+
* be doing it without the `savedOn`, and that causes record locking to keep its old state.
|
|
6
|
+
*
|
|
7
|
+
* This decorator ensures that calls to `updateRecordInCache` always include a `savedOn` timestamp.
|
|
8
|
+
*/
|
|
9
|
+
export declare const UseRecordsDecorator: () => import("react").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.UseRecordsDecorator = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _appAco = require("@webiny/app-aco");
|
|
10
|
+
/**
|
|
11
|
+
* When record locking mechanism is checking for records equality, it compares record `id` and `savedOn`.
|
|
12
|
+
* When you're updating ACO cache, you're just passing the new content entry value(s), and sometimes you might
|
|
13
|
+
* be doing it without the `savedOn`, and that causes record locking to keep its old state.
|
|
14
|
+
*
|
|
15
|
+
* This decorator ensures that calls to `updateRecordInCache` always include a `savedOn` timestamp.
|
|
16
|
+
*/
|
|
17
|
+
var UseRecordsDecorator = exports.UseRecordsDecorator = _appAco.useRecords.createDecorator(function (baseHook) {
|
|
18
|
+
return function (folderId) {
|
|
19
|
+
var hook = baseHook(folderId);
|
|
20
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, hook), {}, {
|
|
21
|
+
updateRecordInCache: function updateRecordInCache(record) {
|
|
22
|
+
hook.updateRecordInCache((0, _objectSpread2.default)((0, _objectSpread2.default)({}, record), {}, {
|
|
23
|
+
savedOn: new Date().toISOString()
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=UseRecordsDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_appAco","require","UseRecordsDecorator","exports","useRecords","createDecorator","baseHook","folderId","hook","_objectSpread2","default","updateRecordInCache","record","savedOn","Date","toISOString"],"sources":["UseRecordsDecorator.tsx"],"sourcesContent":["import { useRecords } from \"@webiny/app-aco\";\n\n/**\n * When record locking mechanism is checking for records equality, it compares record `id` and `savedOn`.\n * When you're updating ACO cache, you're just passing the new content entry value(s), and sometimes you might\n * be doing it without the `savedOn`, and that causes record locking to keep its old state.\n *\n * This decorator ensures that calls to `updateRecordInCache` always include a `savedOn` timestamp.\n */\nexport const UseRecordsDecorator = useRecords.createDecorator(baseHook => {\n return (folderId?: string) => {\n const hook = baseHook(folderId);\n\n return {\n ...hook,\n updateRecordInCache(record: any) {\n hook.updateRecordInCache({\n ...record,\n savedOn: new Date().toISOString()\n });\n }\n };\n };\n});\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAGE,kBAAU,CAACC,eAAe,CAAC,UAAAC,QAAQ,EAAI;EACtE,OAAO,UAACC,QAAiB,EAAK;IAC1B,IAAMC,IAAI,GAAGF,QAAQ,CAACC,QAAQ,CAAC;IAE/B,WAAAE,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOF,IAAI;MACPG,mBAAmB,WAAAA,oBAACC,MAAW,EAAE;QAC7BJ,IAAI,CAACG,mBAAmB,KAAAF,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACjBE,MAAM;UACTC,OAAO,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;QAAC,EACpC,CAAC;MACN;IAAC;EAET,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-record-locking",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-beta.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,16 +16,17 @@
|
|
|
16
16
|
"@apollo/react-hooks": "3.1.5",
|
|
17
17
|
"@emotion/styled": "11.10.6",
|
|
18
18
|
"@material-design-icons/svg": "0.14.13",
|
|
19
|
-
"@webiny/app": "
|
|
20
|
-
"@webiny/app-
|
|
21
|
-
"@webiny/app-
|
|
22
|
-
"@webiny/app-
|
|
23
|
-
"@webiny/app-
|
|
24
|
-
"@webiny/app-
|
|
25
|
-
"@webiny/
|
|
26
|
-
"@webiny/
|
|
27
|
-
"@webiny/
|
|
28
|
-
"@webiny/
|
|
19
|
+
"@webiny/app": "6.0.0-beta.0",
|
|
20
|
+
"@webiny/app-aco": "6.0.0-beta.0",
|
|
21
|
+
"@webiny/app-admin": "6.0.0-beta.0",
|
|
22
|
+
"@webiny/app-headless-cms": "6.0.0-beta.0",
|
|
23
|
+
"@webiny/app-security": "6.0.0-beta.0",
|
|
24
|
+
"@webiny/app-wcp": "6.0.0-beta.0",
|
|
25
|
+
"@webiny/app-websockets": "6.0.0-beta.0",
|
|
26
|
+
"@webiny/error": "6.0.0-beta.0",
|
|
27
|
+
"@webiny/react-router": "6.0.0-beta.0",
|
|
28
|
+
"@webiny/ui": "6.0.0-beta.0",
|
|
29
|
+
"@webiny/utils": "6.0.0-beta.0",
|
|
29
30
|
"apollo-client": "2.6.10",
|
|
30
31
|
"apollo-link": "1.2.14",
|
|
31
32
|
"crypto-hash": "3.0.0",
|
|
@@ -40,8 +41,8 @@
|
|
|
40
41
|
"@babel/preset-env": "7.24.3",
|
|
41
42
|
"@babel/preset-react": "7.24.1",
|
|
42
43
|
"@babel/preset-typescript": "7.24.1",
|
|
43
|
-
"@webiny/cli": "
|
|
44
|
-
"@webiny/project-utils": "
|
|
44
|
+
"@webiny/cli": "6.0.0-beta.0",
|
|
45
|
+
"@webiny/project-utils": "6.0.0-beta.0",
|
|
45
46
|
"rimraf": "5.0.5",
|
|
46
47
|
"ttypescript": "1.5.15",
|
|
47
48
|
"typescript": "4.7.4"
|
|
@@ -54,5 +55,5 @@
|
|
|
54
55
|
"build": "yarn webiny run build",
|
|
55
56
|
"watch": "yarn webiny run watch"
|
|
56
57
|
},
|
|
57
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "aa8dbfbbd5ad13ec271adba6f2431e02991a300f"
|
|
58
59
|
}
|