@canva/cli 0.0.1-beta.33 → 0.0.1-beta.35

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 (30) hide show
  1. package/README.md +4 -9
  2. package/cli.js +533 -451
  3. package/lib/cjs/index.cjs +4 -4
  4. package/lib/esm/index.mjs +4 -4
  5. package/package.json +3 -3
  6. package/templates/base/backend/routers/oauth.ts +1 -1
  7. package/templates/base/package.json +19 -19
  8. package/templates/base/utils/backend/bearer_middleware/bearer_middleware.ts +1 -1
  9. package/templates/base/utils/backend/jwt_middleware/jwt_middleware.ts +1 -1
  10. package/templates/base/utils/backend/jwt_middleware/tests/jwt_middleware.tests.ts +1 -1
  11. package/templates/base/webpack.config.ts +1 -19
  12. package/templates/common/jest.config.mjs +1 -1
  13. package/templates/common/utils/backend/jwt_middleware/jwt_middleware.ts +1 -1
  14. package/templates/common/utils/backend/jwt_middleware/tests/jwt_middleware.tests.ts +1 -1
  15. package/templates/dam/canva-app.json +16 -0
  16. package/templates/dam/package.json +26 -26
  17. package/templates/dam/utils/backend/jwt_middleware/jwt_middleware.ts +1 -1
  18. package/templates/dam/utils/backend/jwt_middleware/tests/jwt_middleware.tests.ts +1 -1
  19. package/templates/dam/webpack.config.ts +1 -19
  20. package/templates/data_connector/README.md +2 -2
  21. package/templates/data_connector/canva-app.json +21 -0
  22. package/templates/data_connector/package.json +26 -26
  23. package/templates/data_connector/webpack.config.ts +1 -19
  24. package/templates/gen_ai/canva-app.json +20 -0
  25. package/templates/gen_ai/package.json +30 -30
  26. package/templates/gen_ai/utils/backend/bearer_middleware/bearer_middleware.ts +1 -1
  27. package/templates/gen_ai/webpack.config.ts +1 -19
  28. package/templates/hello_world/canva-app.json +16 -0
  29. package/templates/hello_world/package.json +24 -24
  30. package/templates/hello_world/webpack.config.ts +1 -19
@@ -0,0 +1,16 @@
1
+ {
2
+ "manifest_schema_version": 1,
3
+ "runtime": {
4
+ "permissions": [
5
+ {
6
+ "name": "canva:design:content:read",
7
+ "type": "mandatory"
8
+ },
9
+ {
10
+ "name": "canva:design:content:write",
11
+ "type": "mandatory"
12
+ }
13
+ ],
14
+ "supported_devices": ["desktop", "mobile"]
15
+ }
16
+ }
@@ -19,13 +19,13 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@canva/app-components": "^1.3.0",
22
- "@canva/app-i18n-kit": "^1.0.2",
22
+ "@canva/app-i18n-kit": "^1.0.3",
23
23
  "@canva/app-ui-kit": "^4.10.0",
24
- "@canva/asset": "^2.2.0",
25
- "@canva/design": "^2.6.0",
24
+ "@canva/asset": "^2.2.1",
25
+ "@canva/design": "^2.7.0",
26
26
  "@canva/error": "^2.1.0",
27
27
  "@canva/platform": "^2.2.0",
28
- "@canva/user": "^2.1.0",
28
+ "@canva/user": "^2.1.1",
29
29
  "cookie-parser": "1.4.7",
30
30
  "cors": "2.8.5",
31
31
  "react": "18.3.1",
@@ -35,60 +35,60 @@
35
35
  "devDependencies": {
36
36
  "@canva/app-eslint-plugin": "^1.0.0-beta.3",
37
37
  "@canva/cli": ">= 0.0.1-beta.13 < 0.0.2",
38
- "@formatjs/cli": "6.3.15",
39
- "@formatjs/ts-transformer": "3.13.27",
40
- "@ngrok/ngrok": "1.4.1",
41
- "@pmmmwh/react-refresh-webpack-plugin": "0.5.15",
38
+ "@formatjs/cli": "6.7.2",
39
+ "@formatjs/ts-transformer": "3.14.0",
40
+ "@ngrok/ngrok": "1.5.1",
41
+ "@pmmmwh/react-refresh-webpack-plugin": "0.6.1",
42
42
  "@svgr/webpack": "8.1.0",
43
- "@testing-library/react": "16.1.0",
44
- "@types/cors": "2.8.17",
43
+ "@testing-library/react": "16.3.0",
44
+ "@types/cors": "2.8.19",
45
45
  "@types/debug": "4.1.12",
46
46
  "@types/express": "4.17.21",
47
- "@types/express-serve-static-core": "4.19.6",
47
+ "@types/express-serve-static-core": "5.0.6",
48
48
  "@types/jest": "29.5.14",
49
- "@types/jsonwebtoken": "9.0.7",
50
- "@types/node": "20.10.0",
49
+ "@types/jsonwebtoken": "9.0.10",
50
+ "@types/node": "20.19.2",
51
51
  "@types/node-fetch": "2.6.12",
52
52
  "@types/node-forge": "1.3.11",
53
53
  "@types/nodemon": "1.19.6",
54
54
  "@types/prompts": "2.4.9",
55
55
  "@types/react": "18.3.12",
56
56
  "@types/react-dom": "18.3.1",
57
- "@types/webpack-env": "1.18.5",
57
+ "@types/webpack-env": "1.18.8",
58
58
  "chalk": "4.1.2",
59
59
  "cli-table3": "0.6.5",
60
60
  "css-loader": "7.1.2",
61
61
  "css-modules-typescript-loader": "4.0.1",
62
- "cssnano": "7.0.6",
63
- "debug": "4.4.0",
64
- "dotenv": "16.4.7",
65
- "exponential-backoff": "3.1.1",
62
+ "cssnano": "7.0.7",
63
+ "debug": "4.4.1",
64
+ "dotenv": "16.6.0",
65
+ "exponential-backoff": "3.1.2",
66
66
  "express": "4.21.2",
67
67
  "express-basic-auth": "1.2.1",
68
68
  "jest": "29.7.0",
69
69
  "jest-css-modules-transform": "4.4.2",
70
70
  "jest-environment-jsdom": "29.7.0",
71
71
  "jsonwebtoken": "9.0.2",
72
- "jwks-rsa": "3.1.0",
72
+ "jwks-rsa": "3.2.0",
73
73
  "mini-css-extract-plugin": "2.9.2",
74
74
  "node-fetch": "3.3.2",
75
75
  "node-forge": "1.3.1",
76
76
  "nodemon": "3.0.1",
77
77
  "open": "8.4.2",
78
78
  "postcss-loader": "8.1.1",
79
- "prettier": "3.4.2",
79
+ "prettier": "3.6.2",
80
80
  "prompts": "2.4.2",
81
- "react-refresh": "0.16.0",
81
+ "react-refresh": "0.17.0",
82
82
  "style-loader": "4.0.0",
83
- "terser-webpack-plugin": "5.3.11",
83
+ "terser-webpack-plugin": "5.3.14",
84
84
  "tree-kill": "1.2.2",
85
- "ts-jest": "29.2.5",
85
+ "ts-jest": "29.4.0",
86
86
  "ts-loader": "9.5.2",
87
87
  "ts-node": "10.9.2",
88
- "typescript": "5.5.4",
88
+ "typescript": "5.8.2",
89
89
  "url-loader": "4.1.1",
90
- "webpack": "5.97.1",
91
- "webpack-cli": "5.1.4",
90
+ "webpack": "5.99.9",
91
+ "webpack-cli": "6.0.1",
92
92
  "webpack-dev-server": "5.2.2",
93
93
  "yargs": "17.7.2"
94
94
  }
@@ -110,7 +110,7 @@ export function createJwtMiddleware(
110
110
  return sendUnauthorizedResponse(res);
111
111
  }
112
112
 
113
- req.canva = {
113
+ req["canva"] = {
114
114
  appId: payload.aud,
115
115
  brandId: payload.brandId,
116
116
  userId: payload.userId,
@@ -446,7 +446,7 @@ describe("createJwtMiddleware", () => {
446
446
  expect(res.status).not.toHaveBeenCalled();
447
447
  expect(res.json).not.toHaveBeenCalled();
448
448
 
449
- expect(req.canva).toEqual({
449
+ expect(req["canva"]).toEqual({
450
450
  userId: FAKE_USER_ID,
451
451
  brandId: FAKE_BRAND_ID,
452
452
  appId: FAKE_APP_ID,
@@ -24,7 +24,7 @@ export function buildConfig({
24
24
  appEntry = path.join(process.cwd(), "src", "index.tsx"),
25
25
  backendHost = process.env.CANVA_BACKEND_HOST,
26
26
  // For IN_HARNESS, refer to the following docs for more information: https://www.canva.dev/docs/apps/test-harness/
27
- inHarness = process.env.IN_HARNESS === "true",
27
+ inHarness = process.env.IN_HARNESS?.toLowerCase() === "true",
28
28
  }: {
29
29
  devConfig?: DevConfig;
30
30
  appEntry?: string;
@@ -236,24 +236,6 @@ function buildDevConfig(options?: DevConfig): {
236
236
  "Access-Control-Allow-Private-Network": "true",
237
237
  },
238
238
  };
239
- } else if (enableHmr && appId) {
240
- // Deprecated - App ID should not be used to configure HMR in the future and can be safely removed
241
- // after a few months.
242
-
243
- console.warn(
244
- "Enabling Hot Module Replacement (HMR) with an App ID is deprecated, please see the README.md on how to update.",
245
- );
246
-
247
- const appDomain = `app-${appId.toLowerCase().trim()}.canva-apps.com`;
248
- devServer = {
249
- ...devServer,
250
- allowedHosts: [host, appDomain],
251
- headers: {
252
- "Access-Control-Allow-Origin": `https://${appDomain}`,
253
- "Access-Control-Allow-Credentials": "true",
254
- "Access-Control-Allow-Private-Network": "true",
255
- },
256
- };
257
239
  } else {
258
240
  if (enableHmr && !appOrigin) {
259
241
  console.warn(
@@ -60,9 +60,9 @@ To run it and authenticate with the Canva Connect API via OAuth you must first c
60
60
  - On the **Authentication** page, add an OAuth 2.0 provider with the following settings:
61
61
  > Provider: `CanvaConnect`
62
62
  >
63
- > Client ID: `(generated in step 1)
63
+ > Client ID: `(generated in step 1)`
64
64
  >
65
- > Client secret: `(generated in step 1)
65
+ > Client secret: `(generated in step 1)`
66
66
  >
67
67
  > Credential transfer mode: `Headers (default)`
68
68
  >
@@ -0,0 +1,21 @@
1
+ {
2
+ "manifest_schema_version": 1,
3
+ "runtime": {
4
+ "permissions": [
5
+ {
6
+ "name": "canva:design:content:read",
7
+ "type": "mandatory"
8
+ },
9
+ {
10
+ "name": "canva:design:content:write",
11
+ "type": "mandatory"
12
+ }
13
+ ],
14
+ "supported_devices": ["desktop", "mobile"]
15
+ },
16
+ "intent": {
17
+ "data_connector": {
18
+ "enrolled": true
19
+ }
20
+ }
21
+ }
@@ -19,72 +19,72 @@
19
19
  "postinstall": "ts-node ./scripts/copy_env.ts"
20
20
  },
21
21
  "dependencies": {
22
- "@canva/app-i18n-kit": "^1.0.2",
22
+ "@canva/app-i18n-kit": "^1.0.3",
23
23
  "@canva/app-ui-kit": "^4.10.0",
24
- "@canva/asset": "^2.2.0",
25
- "@canva/design": "^2.6.0",
24
+ "@canva/asset": "^2.2.1",
25
+ "@canva/design": "^2.7.0",
26
26
  "@canva/error": "^2.1.0",
27
27
  "@canva/intents": "^2.0.0",
28
28
  "@canva/platform": "^2.2.0",
29
- "@canva/user": "^2.1.0",
29
+ "@canva/user": "^2.1.1",
30
30
  "react": "18.3.1",
31
31
  "react-dom": "18.3.1",
32
- "react-error-boundary": "4.1.2",
32
+ "react-error-boundary": "6.0.0",
33
33
  "react-intl": "6.8.7",
34
- "react-router-dom": "6.28.0"
34
+ "react-router-dom": "7.6.3"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@canva/app-eslint-plugin": "^1.0.0-beta.3",
38
38
  "@canva/cli": ">= 0.0.1-beta.13 < 0.0.2",
39
- "@formatjs/cli": "6.3.15",
40
- "@formatjs/ts-transformer": "3.13.27",
41
- "@ngrok/ngrok": "1.4.1",
42
- "@pmmmwh/react-refresh-webpack-plugin": "0.5.15",
39
+ "@formatjs/cli": "6.7.2",
40
+ "@formatjs/ts-transformer": "3.14.0",
41
+ "@ngrok/ngrok": "1.5.1",
42
+ "@pmmmwh/react-refresh-webpack-plugin": "0.6.1",
43
43
  "@svgr/webpack": "8.1.0",
44
- "@testing-library/react": "16.1.0",
44
+ "@testing-library/react": "16.3.0",
45
45
  "@types/express": "4.17.21",
46
- "@types/express-serve-static-core": "4.19.6",
46
+ "@types/express-serve-static-core": "5.0.6",
47
47
  "@types/jest": "29.5.14",
48
- "@types/jsonwebtoken": "9.0.7",
49
- "@types/node": "20.10.0",
48
+ "@types/jsonwebtoken": "9.0.10",
49
+ "@types/node": "20.19.2",
50
50
  "@types/node-fetch": "2.6.12",
51
51
  "@types/node-forge": "1.3.11",
52
52
  "@types/nodemon": "1.19.6",
53
53
  "@types/react": "18.3.12",
54
54
  "@types/react-dom": "18.3.1",
55
- "@types/webpack-env": "1.18.5",
55
+ "@types/webpack-env": "1.18.8",
56
56
  "chalk": "4.1.2",
57
57
  "cli-table3": "0.6.5",
58
58
  "css-loader": "7.1.2",
59
59
  "css-modules-typescript-loader": "4.0.1",
60
- "cssnano": "7.0.6",
61
- "debug": "4.4.0",
62
- "dotenv": "16.4.7",
60
+ "cssnano": "7.0.7",
61
+ "debug": "4.4.1",
62
+ "dotenv": "16.6.0",
63
63
  "express": "4.21.2",
64
64
  "express-basic-auth": "1.2.1",
65
65
  "jest": "29.7.0",
66
66
  "jest-css-modules-transform": "4.4.2",
67
67
  "jest-environment-jsdom": "29.7.0",
68
68
  "jsonwebtoken": "9.0.2",
69
- "jwks-rsa": "3.1.0",
69
+ "jwks-rsa": "3.2.0",
70
70
  "mini-css-extract-plugin": "2.9.2",
71
71
  "node-fetch": "3.3.2",
72
72
  "node-forge": "1.3.1",
73
73
  "nodemon": "3.0.1",
74
74
  "open": "8.4.2",
75
75
  "postcss-loader": "8.1.1",
76
- "prettier": "3.4.2",
77
- "react-refresh": "0.16.0",
76
+ "prettier": "3.6.2",
77
+ "react-refresh": "0.17.0",
78
78
  "style-loader": "4.0.0",
79
- "terser-webpack-plugin": "5.3.11",
79
+ "terser-webpack-plugin": "5.3.14",
80
80
  "tree-kill": "1.2.2",
81
- "ts-jest": "29.2.5",
81
+ "ts-jest": "29.4.0",
82
82
  "ts-loader": "9.5.2",
83
83
  "ts-node": "10.9.2",
84
- "typescript": "5.5.4",
84
+ "typescript": "5.8.2",
85
85
  "url-loader": "4.1.1",
86
- "webpack": "5.97.1",
87
- "webpack-cli": "5.1.4",
86
+ "webpack": "5.99.9",
87
+ "webpack-cli": "6.0.1",
88
88
  "webpack-dev-server": "5.2.2",
89
89
  "yargs": "17.7.2"
90
90
  }
@@ -24,7 +24,7 @@ export function buildConfig({
24
24
  appEntry = path.join(process.cwd(), "src", "index.tsx"),
25
25
  backendHost = process.env.CANVA_BACKEND_HOST,
26
26
  // For IN_HARNESS, refer to the following docs for more information: https://www.canva.dev/docs/apps/test-harness/
27
- inHarness = process.env.IN_HARNESS === "true",
27
+ inHarness = process.env.IN_HARNESS?.toLowerCase() === "true",
28
28
  }: {
29
29
  devConfig?: DevConfig;
30
30
  appEntry?: string;
@@ -236,24 +236,6 @@ function buildDevConfig(options?: DevConfig): {
236
236
  "Access-Control-Allow-Private-Network": "true",
237
237
  },
238
238
  };
239
- } else if (enableHmr && appId) {
240
- // Deprecated - App ID should not be used to configure HMR in the future and can be safely removed
241
- // after a few months.
242
-
243
- console.warn(
244
- "Enabling Hot Module Replacement (HMR) with an App ID is deprecated, please see the README.md on how to update.",
245
- );
246
-
247
- const appDomain = `app-${appId.toLowerCase().trim()}.canva-apps.com`;
248
- devServer = {
249
- ...devServer,
250
- allowedHosts: [host, appDomain],
251
- headers: {
252
- "Access-Control-Allow-Origin": `https://${appDomain}`,
253
- "Access-Control-Allow-Credentials": "true",
254
- "Access-Control-Allow-Private-Network": "true",
255
- },
256
- };
257
239
  } else {
258
240
  if (enableHmr && !appOrigin) {
259
241
  console.warn(
@@ -0,0 +1,20 @@
1
+ {
2
+ "manifest_schema_version": 1,
3
+ "runtime": {
4
+ "permissions": [
5
+ {
6
+ "name": "canva:asset:private:write",
7
+ "type": "mandatory"
8
+ },
9
+ {
10
+ "name": "canva:design:content:read",
11
+ "type": "mandatory"
12
+ },
13
+ {
14
+ "name": "canva:design:content:write",
15
+ "type": "mandatory"
16
+ }
17
+ ],
18
+ "supported_devices": ["desktop", "mobile"]
19
+ }
20
+ }
@@ -18,38 +18,38 @@
18
18
  "postinstall": "ts-node ./scripts/copy_env.ts"
19
19
  },
20
20
  "dependencies": {
21
- "@canva/app-i18n-kit": "^1.0.2",
21
+ "@canva/app-i18n-kit": "^1.0.3",
22
22
  "@canva/app-ui-kit": "^4.10.0",
23
- "@canva/asset": "^2.2.0",
24
- "@canva/design": "^2.6.0",
23
+ "@canva/asset": "^2.2.1",
24
+ "@canva/design": "^2.7.0",
25
25
  "@canva/error": "^2.1.0",
26
26
  "@canva/platform": "^2.2.0",
27
- "@canva/user": "^2.1.0",
27
+ "@canva/user": "^2.1.1",
28
28
  "cookie-parser": "1.4.7",
29
29
  "cors": "2.8.5",
30
- "html-react-parser": "5.2.2",
31
- "obscenity": "0.4.1",
30
+ "html-react-parser": "5.2.5",
31
+ "obscenity": "0.4.4",
32
32
  "react": "18.3.1",
33
33
  "react-dom": "18.3.1",
34
- "react-error-boundary": "4.1.2",
34
+ "react-error-boundary": "6.0.0",
35
35
  "react-intl": "6.8.7",
36
- "react-router-dom": "6.28.0"
36
+ "react-router-dom": "7.6.3"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@canva/app-eslint-plugin": "^1.0.0-beta.3",
40
40
  "@canva/cli": ">= 0.0.1-beta.13 < 0.0.2",
41
- "@formatjs/cli": "6.3.15",
42
- "@formatjs/ts-transformer": "3.13.27",
43
- "@ngrok/ngrok": "1.4.1",
44
- "@pmmmwh/react-refresh-webpack-plugin": "0.5.15",
41
+ "@formatjs/cli": "6.7.2",
42
+ "@formatjs/ts-transformer": "3.14.0",
43
+ "@ngrok/ngrok": "1.5.1",
44
+ "@pmmmwh/react-refresh-webpack-plugin": "0.6.1",
45
45
  "@svgr/webpack": "8.1.0",
46
- "@testing-library/react": "16.1.0",
46
+ "@testing-library/react": "16.3.0",
47
47
  "@types/debug": "4.1.12",
48
48
  "@types/express": "4.17.21",
49
- "@types/express-serve-static-core": "4.19.6",
49
+ "@types/express-serve-static-core": "5.0.6",
50
50
  "@types/jest": "29.5.14",
51
- "@types/jsonwebtoken": "9.0.7",
52
- "@types/node": "20.10.0",
51
+ "@types/jsonwebtoken": "9.0.10",
52
+ "@types/node": "20.19.2",
53
53
  "@types/node-fetch": "2.6.12",
54
54
  "@types/node-forge": "1.3.11",
55
55
  "@types/nodemon": "1.19.6",
@@ -57,42 +57,42 @@
57
57
  "@types/react": "18.3.12",
58
58
  "@types/react-dom": "18.3.1",
59
59
  "@types/webpack": "5.28.5",
60
- "@types/webpack-dev-server": "4.7.1",
61
- "@types/webpack-env": "1.18.5",
60
+ "@types/webpack-dev-server": "4.7.2",
61
+ "@types/webpack-env": "1.18.8",
62
62
  "chalk": "4.1.2",
63
63
  "cli-table3": "0.6.5",
64
64
  "css-loader": "7.1.2",
65
65
  "css-modules-typescript-loader": "4.0.1",
66
- "cssnano": "7.0.6",
67
- "debug": "4.4.0",
68
- "dotenv": "16.4.7",
69
- "exponential-backoff": "3.1.1",
66
+ "cssnano": "7.0.7",
67
+ "debug": "4.4.1",
68
+ "dotenv": "16.6.0",
69
+ "exponential-backoff": "3.1.2",
70
70
  "express": "4.21.2",
71
71
  "express-basic-auth": "1.2.1",
72
72
  "jest": "29.7.0",
73
73
  "jest-css-modules-transform": "4.4.2",
74
74
  "jest-environment-jsdom": "29.7.0",
75
75
  "jsonwebtoken": "9.0.2",
76
- "jwks-rsa": "3.1.0",
76
+ "jwks-rsa": "3.2.0",
77
77
  "mini-css-extract-plugin": "2.9.2",
78
78
  "node-fetch": "3.3.2",
79
79
  "node-forge": "1.3.1",
80
80
  "nodemon": "3.0.1",
81
81
  "open": "8.4.2",
82
82
  "postcss-loader": "8.1.1",
83
- "prettier": "3.4.2",
83
+ "prettier": "3.6.2",
84
84
  "prompts": "2.4.2",
85
- "react-refresh": "0.16.0",
85
+ "react-refresh": "0.17.0",
86
86
  "style-loader": "4.0.0",
87
- "terser-webpack-plugin": "5.3.11",
87
+ "terser-webpack-plugin": "5.3.14",
88
88
  "tree-kill": "1.2.2",
89
- "ts-jest": "29.2.5",
89
+ "ts-jest": "29.4.0",
90
90
  "ts-loader": "9.5.2",
91
91
  "ts-node": "10.9.2",
92
- "typescript": "5.5.4",
92
+ "typescript": "5.8.2",
93
93
  "url-loader": "4.1.1",
94
- "webpack": "5.97.1",
95
- "webpack-cli": "5.1.4",
94
+ "webpack": "5.99.9",
95
+ "webpack-cli": "6.0.1",
96
96
  "webpack-dev-server": "5.2.2",
97
97
  "yargs": "17.7.2"
98
98
  }
@@ -45,7 +45,7 @@ export function createBearerMiddleware(
45
45
  throw new AuthorizationError("Token is invalid");
46
46
  }
47
47
 
48
- req.user_id = user;
48
+ req["user_id"] = user;
49
49
 
50
50
  next();
51
51
  } catch (e) {
@@ -24,7 +24,7 @@ export function buildConfig({
24
24
  appEntry = path.join(process.cwd(), "src", "index.tsx"),
25
25
  backendHost = process.env.CANVA_BACKEND_HOST,
26
26
  // For IN_HARNESS, refer to the following docs for more information: https://www.canva.dev/docs/apps/test-harness/
27
- inHarness = process.env.IN_HARNESS === "true",
27
+ inHarness = process.env.IN_HARNESS?.toLowerCase() === "true",
28
28
  }: {
29
29
  devConfig?: DevConfig;
30
30
  appEntry?: string;
@@ -236,24 +236,6 @@ function buildDevConfig(options?: DevConfig): {
236
236
  "Access-Control-Allow-Private-Network": "true",
237
237
  },
238
238
  };
239
- } else if (enableHmr && appId) {
240
- // Deprecated - App ID should not be used to configure HMR in the future and can be safely removed
241
- // after a few months.
242
-
243
- console.warn(
244
- "Enabling Hot Module Replacement (HMR) with an App ID is deprecated, please see the README.md on how to update.",
245
- );
246
-
247
- const appDomain = `app-${appId.toLowerCase().trim()}.canva-apps.com`;
248
- devServer = {
249
- ...devServer,
250
- allowedHosts: [host, appDomain],
251
- headers: {
252
- "Access-Control-Allow-Origin": `https://${appDomain}`,
253
- "Access-Control-Allow-Credentials": "true",
254
- "Access-Control-Allow-Private-Network": "true",
255
- },
256
- };
257
239
  } else {
258
240
  if (enableHmr && !appOrigin) {
259
241
  console.warn(
@@ -0,0 +1,16 @@
1
+ {
2
+ "manifest_schema_version": 1,
3
+ "runtime": {
4
+ "permissions": [
5
+ {
6
+ "name": "canva:design:content:read",
7
+ "type": "mandatory"
8
+ },
9
+ {
10
+ "name": "canva:design:content:write",
11
+ "type": "mandatory"
12
+ }
13
+ ],
14
+ "supported_devices": ["desktop", "mobile"]
15
+ }
16
+ }
@@ -19,13 +19,13 @@
19
19
  "postinstall": "ts-node ./scripts/copy_env.ts"
20
20
  },
21
21
  "dependencies": {
22
- "@canva/app-i18n-kit": "^1.0.2",
22
+ "@canva/app-i18n-kit": "^1.0.3",
23
23
  "@canva/app-ui-kit": "^4.10.0",
24
- "@canva/asset": "^2.2.0",
25
- "@canva/design": "^2.6.0",
24
+ "@canva/asset": "^2.2.1",
25
+ "@canva/design": "^2.7.0",
26
26
  "@canva/error": "^2.1.0",
27
27
  "@canva/platform": "^2.2.0",
28
- "@canva/user": "^2.1.0",
28
+ "@canva/user": "^2.1.1",
29
29
  "react": "18.3.1",
30
30
  "react-dom": "18.3.1",
31
31
  "react-intl": "6.8.7"
@@ -33,55 +33,55 @@
33
33
  "devDependencies": {
34
34
  "@canva/app-eslint-plugin": "^1.0.0-beta.3",
35
35
  "@canva/cli": ">= 0.0.1-beta.13 < 0.0.2",
36
- "@formatjs/cli": "6.3.15",
37
- "@formatjs/ts-transformer": "3.13.27",
38
- "@ngrok/ngrok": "1.4.1",
39
- "@pmmmwh/react-refresh-webpack-plugin": "0.5.15",
36
+ "@formatjs/cli": "6.7.2",
37
+ "@formatjs/ts-transformer": "3.14.0",
38
+ "@ngrok/ngrok": "1.5.1",
39
+ "@pmmmwh/react-refresh-webpack-plugin": "0.6.1",
40
40
  "@svgr/webpack": "8.1.0",
41
- "@testing-library/react": "16.1.0",
41
+ "@testing-library/react": "16.3.0",
42
42
  "@types/express": "4.17.21",
43
- "@types/express-serve-static-core": "4.19.6",
43
+ "@types/express-serve-static-core": "5.0.6",
44
44
  "@types/jest": "29.5.14",
45
- "@types/jsonwebtoken": "9.0.7",
46
- "@types/node": "20.10.0",
45
+ "@types/jsonwebtoken": "9.0.10",
46
+ "@types/node": "20.19.2",
47
47
  "@types/node-fetch": "2.6.12",
48
48
  "@types/node-forge": "1.3.11",
49
49
  "@types/nodemon": "1.19.6",
50
50
  "@types/react": "18.3.12",
51
51
  "@types/react-dom": "18.3.1",
52
- "@types/webpack-env": "1.18.5",
52
+ "@types/webpack-env": "1.18.8",
53
53
  "chalk": "4.1.2",
54
54
  "cli-table3": "0.6.5",
55
55
  "css-loader": "7.1.2",
56
56
  "css-modules-typescript-loader": "4.0.1",
57
- "cssnano": "7.0.6",
58
- "debug": "4.4.0",
59
- "dotenv": "16.4.7",
57
+ "cssnano": "7.0.7",
58
+ "debug": "4.4.1",
59
+ "dotenv": "16.6.0",
60
60
  "express": "4.21.2",
61
61
  "express-basic-auth": "1.2.1",
62
62
  "jest": "29.7.0",
63
63
  "jest-css-modules-transform": "4.4.2",
64
64
  "jest-environment-jsdom": "29.7.0",
65
65
  "jsonwebtoken": "9.0.2",
66
- "jwks-rsa": "3.1.0",
66
+ "jwks-rsa": "3.2.0",
67
67
  "mini-css-extract-plugin": "2.9.2",
68
68
  "node-fetch": "3.3.2",
69
69
  "node-forge": "1.3.1",
70
70
  "nodemon": "3.0.1",
71
71
  "open": "8.4.2",
72
72
  "postcss-loader": "8.1.1",
73
- "prettier": "3.4.2",
74
- "react-refresh": "0.16.0",
73
+ "prettier": "3.6.2",
74
+ "react-refresh": "0.17.0",
75
75
  "style-loader": "4.0.0",
76
- "terser-webpack-plugin": "5.3.11",
76
+ "terser-webpack-plugin": "5.3.14",
77
77
  "tree-kill": "1.2.2",
78
- "ts-jest": "29.2.5",
78
+ "ts-jest": "29.4.0",
79
79
  "ts-loader": "9.5.2",
80
80
  "ts-node": "10.9.2",
81
- "typescript": "5.5.4",
81
+ "typescript": "5.8.2",
82
82
  "url-loader": "4.1.1",
83
- "webpack": "5.97.1",
84
- "webpack-cli": "5.1.4",
83
+ "webpack": "5.99.9",
84
+ "webpack-cli": "6.0.1",
85
85
  "webpack-dev-server": "5.2.2",
86
86
  "yargs": "17.7.2"
87
87
  }