@commercetools-frontend/application-config 21.5.0 → 21.8.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 commercetools GmbH
3
+ Copyright (c) commercetools GmbH
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/client.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ type CSSModuleClasses = { readonly [key: string]: string };
2
+
3
+ declare module '*.mod.css' {
4
+ const classes: CSSModuleClasses;
5
+ export default classes;
6
+ }
7
+ declare module '*.module.css' {
8
+ const classes: CSSModuleClasses;
9
+ export default classes;
10
+ }
11
+
12
+ declare module '*.png' {
13
+ const src: string;
14
+ export default src;
15
+ }
16
+ declare module '*.svg' {
17
+ const src: string;
18
+ export default src;
19
+ }
@@ -38,6 +38,8 @@ var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/i
38
38
  var uniq = require('lodash/uniq');
39
39
  var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
40
40
  var formatters = require('./formatters-41584280.cjs.dev.js');
41
+ var createDOMPurify = require('dompurify');
42
+ var jsdom$1 = require('jsdom');
41
43
  require('lodash/upperFirst');
42
44
 
43
45
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
@@ -65,6 +67,7 @@ var _Object$values__default = /*#__PURE__*/_interopDefault(_Object$values);
65
67
  var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
66
68
  var uniq__default = /*#__PURE__*/_interopDefault(uniq);
67
69
  var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
70
+ var createDOMPurify__default = /*#__PURE__*/_interopDefault(createDOMPurify);
68
71
 
69
72
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
70
73
 
@@ -184,7 +187,7 @@ var schemaJson = {
184
187
  oneOf: [
185
188
  {
186
189
  type: "string",
187
- pattern: "^[^\\-_]([0-9a-z]|[\\-_](?![\\-_])){2,64}[^\\-_]$"
190
+ pattern: "^[^\\-_#]([0-9a-z]|[\\-_](?![\\-_])){0,62}[^\\-_#]$"
188
191
  },
189
192
  {
190
193
  $ref: "#/definitions/envVariablePlaceholder"
@@ -732,6 +735,19 @@ var getOrThrow = function getOrThrow(fn, errorMessage) {
732
735
  }
733
736
  };
734
737
 
738
+ var jsdom = new jsdom$1.JSDOM(''); // @ts-expect-error: jsdom returns DOMWindow, which doesn't match Window dompurify expects
739
+
740
+ var DOMPurify = createDOMPurify__default["default"](jsdom.window);
741
+ function sanitizeSvg(data) {
742
+ return DOMPurify.sanitize(data, {
743
+ USE_PROFILES: {
744
+ svg: true
745
+ },
746
+ FORBID_ATTR: [// To avoid injection by using `style="filter:url(\"data:image/svg+xml,<svg`
747
+ 'style']
748
+ });
749
+ }
750
+
735
751
  function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
736
752
 
737
753
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$1(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$1(Object(source))).call(_context4, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
@@ -770,7 +786,7 @@ function transformCustomApplicationConfigToData(appConfig) {
770
786
  name: permissionKeys.manage,
771
787
  oAuthScopes: appConfig.oAuthScopes.manage
772
788
  }],
773
- icon: appConfig.icon,
789
+ icon: sanitizeSvg(appConfig.icon),
774
790
  mainMenuLink: appConfig.mainMenuLink,
775
791
  submenuLinks: _mapInstanceProperty__default["default"](_context2 = appConfig.submenuLinks).call(_context2, function (submenuLink) {
776
792
  return _objectSpread$1(_objectSpread$1({}, submenuLink), {}, {
@@ -38,6 +38,8 @@ var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/i
38
38
  var uniq = require('lodash/uniq');
39
39
  var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
40
40
  var formatters = require('./formatters-40251cfd.cjs.prod.js');
41
+ var createDOMPurify = require('dompurify');
42
+ var jsdom$1 = require('jsdom');
41
43
  require('lodash/upperFirst');
42
44
 
43
45
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
@@ -65,6 +67,7 @@ var _Object$values__default = /*#__PURE__*/_interopDefault(_Object$values);
65
67
  var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
66
68
  var uniq__default = /*#__PURE__*/_interopDefault(uniq);
67
69
  var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
70
+ var createDOMPurify__default = /*#__PURE__*/_interopDefault(createDOMPurify);
68
71
 
69
72
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
70
73
 
@@ -184,7 +187,7 @@ var schemaJson = {
184
187
  oneOf: [
185
188
  {
186
189
  type: "string",
187
- pattern: "^[^\\-_]([0-9a-z]|[\\-_](?![\\-_])){2,64}[^\\-_]$"
190
+ pattern: "^[^\\-_#]([0-9a-z]|[\\-_](?![\\-_])){0,62}[^\\-_#]$"
188
191
  },
189
192
  {
190
193
  $ref: "#/definitions/envVariablePlaceholder"
@@ -732,6 +735,19 @@ var getOrThrow = function getOrThrow(fn, errorMessage) {
732
735
  }
733
736
  };
734
737
 
738
+ var jsdom = new jsdom$1.JSDOM(''); // @ts-expect-error: jsdom returns DOMWindow, which doesn't match Window dompurify expects
739
+
740
+ var DOMPurify = createDOMPurify__default["default"](jsdom.window);
741
+ function sanitizeSvg(data) {
742
+ return DOMPurify.sanitize(data, {
743
+ USE_PROFILES: {
744
+ svg: true
745
+ },
746
+ FORBID_ATTR: [// To avoid injection by using `style="filter:url(\"data:image/svg+xml,<svg`
747
+ 'style']
748
+ });
749
+ }
750
+
735
751
  function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
736
752
 
737
753
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$1(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$1(Object(source))).call(_context4, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
@@ -770,7 +786,7 @@ function transformCustomApplicationConfigToData(appConfig) {
770
786
  name: permissionKeys.manage,
771
787
  oAuthScopes: appConfig.oAuthScopes.manage
772
788
  }],
773
- icon: appConfig.icon,
789
+ icon: sanitizeSvg(appConfig.icon),
774
790
  mainMenuLink: appConfig.mainMenuLink,
775
791
  submenuLinks: _mapInstanceProperty__default["default"](_context2 = appConfig.submenuLinks).call(_context2, function (submenuLink) {
776
792
  return _objectSpread$1(_objectSpread$1({}, submenuLink), {}, {
@@ -34,6 +34,8 @@ import _includesInstanceProperty from '@babel/runtime-corejs3/core-js-stable/ins
34
34
  import uniq from 'lodash/uniq';
35
35
  import _startsWithInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/starts-with';
36
36
  import { e as entryPointUriPathToResourceAccesses } from './formatters-62af6993.esm.js';
37
+ import createDOMPurify from 'dompurify';
38
+ import { JSDOM } from 'jsdom';
37
39
  import 'lodash/upperFirst';
38
40
 
39
41
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -154,7 +156,7 @@ var schemaJson = {
154
156
  oneOf: [
155
157
  {
156
158
  type: "string",
157
- pattern: "^[^\\-_]([0-9a-z]|[\\-_](?![\\-_])){2,64}[^\\-_]$"
159
+ pattern: "^[^\\-_#]([0-9a-z]|[\\-_](?![\\-_])){0,62}[^\\-_#]$"
158
160
  },
159
161
  {
160
162
  $ref: "#/definitions/envVariablePlaceholder"
@@ -702,6 +704,19 @@ var getOrThrow = function getOrThrow(fn, errorMessage) {
702
704
  }
703
705
  };
704
706
 
707
+ var jsdom = new JSDOM(''); // @ts-expect-error: jsdom returns DOMWindow, which doesn't match Window dompurify expects
708
+
709
+ var DOMPurify = createDOMPurify(jsdom.window);
710
+ function sanitizeSvg(data) {
711
+ return DOMPurify.sanitize(data, {
712
+ USE_PROFILES: {
713
+ svg: true
714
+ },
715
+ FORBID_ATTR: [// To avoid injection by using `style="filter:url(\"data:image/svg+xml,<svg`
716
+ 'style']
717
+ });
718
+ }
719
+
705
720
  function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
706
721
 
707
722
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context3 = ownKeys$1(Object(source), !0)).call(_context3, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context4 = ownKeys$1(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -740,7 +755,7 @@ function transformCustomApplicationConfigToData(appConfig) {
740
755
  name: permissionKeys.manage,
741
756
  oAuthScopes: appConfig.oAuthScopes.manage
742
757
  }],
743
- icon: appConfig.icon,
758
+ icon: sanitizeSvg(appConfig.icon),
744
759
  mainMenuLink: appConfig.mainMenuLink,
745
760
  submenuLinks: _mapInstanceProperty(_context2 = appConfig.submenuLinks).call(_context2, function (submenuLink) {
746
761
  return _objectSpread$1(_objectSpread$1({}, submenuLink), {}, {
@@ -0,0 +1 @@
1
+ export default function sanitizeSvg(data: string): string;
@@ -1,3 +1,5 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="webpack-env" />
1
3
  import { CLOUD_IDENTIFIERS } from './constants';
2
4
  declare const mapCloudIdentifierToApiUrl: (key: typeof CLOUD_IDENTIFIERS[keyof typeof CLOUD_IDENTIFIERS]) => string;
3
5
  declare const getUniqueValues: (initialValues?: string[], additionalValues?: string[]) => string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools-frontend/application-config",
3
- "version": "21.5.0",
3
+ "version": "21.8.0",
4
4
  "description": "Configuration utilities for building Custom Applications",
5
5
  "bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
6
6
  "repository": {
@@ -21,9 +21,11 @@
21
21
  },
22
22
  "files": [
23
23
  "dist",
24
- "ssr",
25
24
  "scripts",
25
+ "ssr",
26
+ "client.d.ts",
26
27
  "schema.json",
28
+ "tsconfig-mc-app.json",
27
29
  "package.json",
28
30
  "LICENSE",
29
31
  "README.md"
@@ -35,14 +37,17 @@
35
37
  "@babel/register": "^7.17.7",
36
38
  "@babel/runtime": "^7.17.9",
37
39
  "@babel/runtime-corejs3": "^7.17.9",
38
- "@commercetools-frontend/babel-preset-mc-app": "21.3.4",
40
+ "@commercetools-frontend/babel-preset-mc-app": "21.8.0",
39
41
  "ajv": "8.11.0",
40
42
  "core-js": "^3.21.1",
41
43
  "cosmiconfig": "7.0.1",
44
+ "dompurify": "^2.3.6",
45
+ "jsdom": "^19.0.0",
42
46
  "lodash": "4.17.21",
43
47
  "omit-empty-es": "1.1.3"
44
48
  },
45
49
  "devDependencies": {
50
+ "@types/jsdom": "^16.2.14",
46
51
  "json-schema-to-typescript": "10.1.5",
47
52
  "shelljs": "0.8.5"
48
53
  },
package/schema.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "oneOf": [
31
31
  {
32
32
  "type": "string",
33
- "pattern": "^[^\\-_]([0-9a-z]|[\\-_](?![\\-_])){2,64}[^\\-_]$"
33
+ "pattern": "^[^\\-_#]([0-9a-z]|[\\-_](?![\\-_])){0,62}[^\\-_#]$"
34
34
  },
35
35
  {
36
36
  "$ref": "#/definitions/envVariablePlaceholder"
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "display": "Custom Application",
4
+
5
+ "compilerOptions": {
6
+ "allowJs": false,
7
+ "allowSyntheticDefaultImports": true,
8
+ "esModuleInterop": true,
9
+ "importHelpers": true,
10
+ "isolatedModules": true,
11
+ "jsx": "react-jsx",
12
+ "jsxImportSource": "@emotion/react",
13
+ "lib": ["ESNext", "DOM"],
14
+ "module": "ESNext",
15
+ "moduleResolution": "Node",
16
+ "noFallthroughCasesInSwitch": true,
17
+ "noImplicitAny": true,
18
+ "noImplicitReturns": true,
19
+ "noImplicitThis": true,
20
+ "noUnusedLocals": true,
21
+ "noUnusedParameters": true,
22
+ "preserveSymlinks": true,
23
+ "removeComments": true,
24
+ "resolveJsonModule": true,
25
+ "sourceMap": true,
26
+ "strict": true,
27
+ "strictNullChecks": true,
28
+ "stripInternal": true,
29
+ "target": "ES2022"
30
+ }
31
+ }