@navikt/aksel 3.4.2 → 4.0.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/README.md CHANGED
@@ -22,6 +22,45 @@ To get started:
22
22
  npx @navikt/aksel codemod --help
23
23
  ```
24
24
 
25
+ ### v4
26
+
27
+ In v4, we moved all the components from `@navikt/ds-react-internal` to `@navikt/ds-react`. This means that you will need to update all your imports to the new package. As a part of this, Header was renamed to `InternalHeader` and all the CSS-classes was renamed to use `navds` as a prefix instead of `navdsi`.
28
+
29
+ #### react
30
+
31
+ `npx @navikt/aksel codemod v4-internal-react ...`
32
+
33
+ Rewrites all imports from `@navikt/ds-react-internal` to `@navikt/ds-react`. Remember to remove `@navikt/ds-react-internal` as a dependency after migration.
34
+
35
+ ```diff
36
+ - import { Dropdown, Timeline, Header } from "@navikt/ds-react-internal";
37
+ - import { Button, CopyButton } from "@navikt/ds-react";
38
+ + import { Button, CopyButton, Dropdown, Timeline, InternalHeader as Header } from "@navikt/ds-react";
39
+ ```
40
+
41
+ #### css
42
+
43
+ `npx @navikt/aksel codemod v4-internal-css ...`
44
+
45
+ Rewrites all css with `navdsi`-prefix to `navds`-prefix. Rewrites all `.navdsi-header` classes to `.navds-internalheader`.
46
+
47
+ Remember to remove `@navikt/ds-css-internal` as a dependency after migration + remove it from you lists of imports in the CSS-bundle.
48
+
49
+ ```diff
50
+ - .navdsi-dropdown
51
+ + .navds-dropdown
52
+ - .navdsi-header
53
+ + .navds-internalheader
54
+ - .navdsi-timeline
55
+ + .navds-timeline
56
+ ```
57
+
58
+ Note: This is a "dumb" codemod that uses a simple regex to find and replace. This can lead to unknown sideeffects, so its reccomended to scope the codemod to spesific files.
59
+
60
+ ```bash
61
+ `npx @navikt/aksel codemod v4-internal-css **/*.css`
62
+ ```
63
+
25
64
  ### v3
26
65
 
27
66
  There is no general codemods for migrating from v2 -> v3.
@@ -58,6 +58,25 @@ exports.migrations = {
58
58
  warning: "Remember to clean css-import from '@navikt/ds-css-internal' if no longer needed\nIf non-text was used as children, or different locales were handled, you need to manually fix this",
59
59
  },
60
60
  ],
61
+ "v4.0.0": [
62
+ {
63
+ description: "Replaced deprecated 'internal'-component import to 'core'-imports",
64
+ value: "v4-internal-react",
65
+ path: "v4.0.0/internal-react/internal-react",
66
+ warning: "Remember to also run 'v4-internal-css' if you have overwritten any css-classes!",
67
+ },
68
+ {
69
+ description: "Replaced 'navdsi'-prefixes used to overwrite internal-css to 'navds'-prefixes",
70
+ value: "v4-internal-css",
71
+ path: "v4.0.0/internal-css/internal-css",
72
+ warning: "Remember to remove '@navikt/ds-css-internal' imports if no longer needed! Also run 'v4-internal-react' to convert internal-react imports to core-imports",
73
+ },
74
+ {
75
+ description: "Removes all instances of UNSAFE_ for datepicker/monthpicker.",
76
+ value: "v4-date",
77
+ path: "v4.0.0/date/date",
78
+ },
79
+ ],
61
80
  };
62
81
  function getMigrationPath(str) {
63
82
  var _a;
@@ -26,6 +26,7 @@ function transformer(file, api, options, ...rest) {
26
26
  toImport: "@navikt/ds-react",
27
27
  fromName: "CopyToClipboard",
28
28
  toName,
29
+ ignoreAlias: true,
29
30
  });
30
31
  if (localName === null) {
31
32
  return root.toSource((0, lineterminator_1.getLineTerminator)(file.source));
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * @param {import('jscodeshift').FileInfo} file
5
+ * @param {import('jscodeshift').API} api
6
+ */
7
+ function transformer(file) {
8
+ const names = [
9
+ "UNSAFE_useDatepicker",
10
+ "UNSAFE_DatePicker",
11
+ "UNSAFE_useRangeDatepicker",
12
+ "UNSAFE_MonthPicker",
13
+ "UNSAFE_useMonthpicker",
14
+ ];
15
+ let src = file.source;
16
+ names.forEach((name) => {
17
+ src = src.replaceAll(name, name.replace("UNSAFE_", ""));
18
+ });
19
+ return src;
20
+ }
21
+ exports.default = transformer;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cssConversions = {
4
+ ".navdsi-dropdown": ".navds-dropdown",
5
+ ".navdsi-header": ".navds-internalheader",
6
+ ".navdsi-timeline": ".navds-timeline",
7
+ "--ac-header-bg": "--ac-internalheader-bg",
8
+ "--ac-header-divider": "--ac-internalheader-divider",
9
+ "--ac-header-text": "--ac-internalheader-text",
10
+ "--ac-header-hover-bg": "--ac-internalheader-hover-bg",
11
+ "--ac-header-active-bg": "--ac-internalheader-active-bg",
12
+ };
13
+ /**
14
+ * @param {import('jscodeshift').FileInfo} file
15
+ * @param {import('jscodeshift').API} api
16
+ */
17
+ function transformer(file) {
18
+ let src = file.source;
19
+ Object.entries(cssConversions).forEach(([key, value]) => {
20
+ src = src.replaceAll(key, value);
21
+ });
22
+ return src;
23
+ }
24
+ exports.default = transformer;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lineterminator_1 = require("../../../utils/lineterminator");
7
+ const moveAndRenameImport_1 = __importDefault(require("../../../utils/moveAndRenameImport"));
8
+ /**
9
+ * @param {import('jscodeshift').FileInfo} file
10
+ * @param {import('jscodeshift').API} api
11
+ */
12
+ function transformer(file, api, options, ...rest) {
13
+ const j = api.jscodeshift;
14
+ let root;
15
+ try {
16
+ root = j(file.source);
17
+ }
18
+ catch (_a) {
19
+ return file.source;
20
+ }
21
+ (0, moveAndRenameImport_1.default)(j, root, {
22
+ fromImport: "@navikt/ds-react-internal",
23
+ toImport: "@navikt/ds-react",
24
+ fromName: "Header",
25
+ toName: "InternalHeader",
26
+ });
27
+ (0, moveAndRenameImport_1.default)(j, root, {
28
+ fromImport: "@navikt/ds-react-internal",
29
+ toImport: "@navikt/ds-react",
30
+ fromName: "Dropdown",
31
+ toName: "Dropdown",
32
+ });
33
+ (0, moveAndRenameImport_1.default)(j, root, {
34
+ fromImport: "@navikt/ds-react-internal",
35
+ toImport: "@navikt/ds-react",
36
+ fromName: "Timeline",
37
+ toName: "Timeline",
38
+ });
39
+ return root.toSource((0, lineterminator_1.getLineTerminator)(file.source));
40
+ }
41
+ exports.default = transformer;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- function moveAndRenameImport(j, root, { fromImport, toImport, fromName, toName, }) {
3
+ function moveAndRenameImport(j, root, { fromImport, toImport, fromName, toName, ignoreAlias = false, }) {
4
4
  var _a, _b;
5
+ /* Does package-name exist */
5
6
  const existingFromImport = root.find(j.ImportDeclaration, {
6
7
  source: {
7
8
  value: fromImport,
@@ -23,22 +24,27 @@ function moveAndRenameImport(j, root, { fromImport, toImport, fromName, toName,
23
24
  if ((existingFromImportSpecifier === null || existingFromImportSpecifier === void 0 ? void 0 : existingFromImportSpecifier.length) > 0) {
24
25
  existingFromImportSpecifier.remove();
25
26
  }
27
+ /* Remove import if its now empty */
26
28
  if (!((_a = existingFromImport.get("specifiers").value) === null || _a === void 0 ? void 0 : _a.length) ||
27
29
  ((_b = existingFromImport.get("specifiers").value) === null || _b === void 0 ? void 0 : _b.length) === 0) {
28
30
  existingFromImport.remove();
29
31
  }
32
+ /* Does package exist */
30
33
  const existingImport = root.find(j.ImportDeclaration, {
31
34
  source: {
32
35
  value: toImport,
33
36
  },
34
37
  });
38
+ /* Check if migrated name allready exist */
35
39
  const existingImportSpecifier = existingImport.find(j.ImportSpecifier, {
36
40
  imported: {
37
41
  name: toName,
38
42
  },
39
43
  });
40
44
  if (existingImportSpecifier.length <= 0) {
41
- const newImportSpecifier = j.importSpecifier(j.identifier(toName));
45
+ const newImportSpecifier = ignoreAlias
46
+ ? j.importSpecifier(j.identifier(toName))
47
+ : j.importSpecifier(j.identifier(toName), j.identifier(localname));
42
48
  if (existingImport.length > 0) {
43
49
  existingImport.get("specifiers").push(newImportSpecifier);
44
50
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/aksel",
3
- "version": "3.4.2",
3
+ "version": "4.0.0",
4
4
  "description": "Aksel command line interface. Handles css-imports, codemods and more",
5
5
  "author": "Aksel | NAV designsystem team",
6
6
  "license": "MIT",
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "homepage": "https://aksel.nav.no/grunnleggende/kode/kommandolinje",
31
31
  "dependencies": {
32
- "@navikt/ds-css": "3.4.2",
32
+ "@navikt/ds-css": "4.0.0",
33
33
  "axios": "1.3.6",
34
34
  "chalk": "4.1.0",
35
35
  "clipboardy": "^2.3.0",