@knapsack/update 4.76.1--canary.4cb4a8f.0 → 4.76.1
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/.turbo/turbo-lint.log +6 -0
- package/CHANGELOG.md +21 -0
- package/dist/updates/4.0.0/index.d.ts +1 -5
- package/dist/updates/4.0.0/index.d.ts.map +1 -1
- package/dist/updates/4.0.0/index.js +1 -5
- package/dist/updates/4.0.0/index.js.map +1 -1
- package/dist/updates/4.0.0/markdown.d.ts +0 -2
- package/dist/updates/4.0.0/markdown.d.ts.map +1 -1
- package/dist/updates/4.0.0/markdown.js +0 -18
- package/dist/updates/4.0.0/markdown.js.map +1 -1
- package/dist/updates/4.0.0/placeholder.d.ts +7 -0
- package/dist/updates/4.0.0/placeholder.d.ts.map +1 -0
- package/dist/updates/4.0.0/placeholder.js +12 -0
- package/dist/updates/4.0.0/placeholder.js.map +1 -0
- package/dist/updates/index.d.ts.map +1 -1
- package/dist/updates/index.js +2 -7
- package/dist/updates/index.js.map +1 -1
- package/package.json +14 -14
- package/src/updates/4.0.0/index.ts +1 -5
- package/src/updates/4.0.0/markdown.ts +3 -21
- package/src/updates/4.0.0/placeholder.ts +14 -0
- package/src/updates/index.ts +2 -14
- package/dist/updates/4.0.0/blocks.d.ts +0 -3
- package/dist/updates/4.0.0/blocks.d.ts.map +0 -1
- package/dist/updates/4.0.0/blocks.js +0 -139
- package/dist/updates/4.0.0/blocks.js.map +0 -1
- package/dist/updates/4.0.0/navs.d.ts +0 -8
- package/dist/updates/4.0.0/navs.d.ts.map +0 -1
- package/dist/updates/4.0.0/navs.js +0 -51
- package/dist/updates/4.0.0/navs.js.map +0 -1
- package/dist/updates/4.0.0/tokens.d.ts +0 -7
- package/dist/updates/4.0.0/tokens.d.ts.map +0 -1
- package/dist/updates/4.0.0/tokens.js +0 -47
- package/dist/updates/4.0.0/tokens.js.map +0 -1
- package/dist/updates/4.0.0/ui-config.d.ts +0 -7
- package/dist/updates/4.0.0/ui-config.d.ts.map +0 -1
- package/dist/updates/4.0.0/ui-config.js +0 -68
- package/dist/updates/4.0.0/ui-config.js.map +0 -1
- package/src/updates/4.0.0/blocks.ts +0 -202
- package/src/updates/4.0.0/navs.ts +0 -62
- package/src/updates/4.0.0/tokens.ts +0 -56
- package/src/updates/4.0.0/ui-config.ts +0 -88
package/.turbo/turbo-lint.log
CHANGED
|
@@ -2,3 +2,9 @@
|
|
|
2
2
|
> @knapsack/update@4.76.0 lint /home/runner/work/app-monorepo/app-monorepo/apps/client/update
|
|
3
3
|
> eslint ./
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
/home/runner/work/app-monorepo/app-monorepo/apps/client/update/src/updates/4.0.0/placeholder.ts
|
|
7
|
+
11:21 warning 'config' is defined but never used. Allowed unused args must match /^_/u unused-imports/no-unused-vars
|
|
8
|
+
|
|
9
|
+
✖ 1 problem (0 errors, 1 warning)
|
|
10
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
# v4.76.1 (Wed Mar 05 2025)
|
|
2
|
+
|
|
3
|
+
#### 🐛 Bug Fix
|
|
4
|
+
|
|
5
|
+
- ksp-6088: remove v3 to v4 migrations [#5668](https://github.com/knapsack-labs/app-monorepo/pull/5668) ([@illepic](https://github.com/illepic))
|
|
6
|
+
- remove v3 to v4 migrations ([@illepic](https://github.com/illepic))
|
|
7
|
+
- Merge branch 'latest' into feature/strictNullChecks-server ([@illepic](https://github.com/illepic))
|
|
8
|
+
- Merge branch 'latest' into feature/strictNullChecks-server ([@freneticpixel](https://github.com/freneticpixel))
|
|
9
|
+
- merge latest, integrate new auth work ([@illepic](https://github.com/illepic))
|
|
10
|
+
|
|
11
|
+
#### 🏠 Internal
|
|
12
|
+
|
|
13
|
+
- KSP-6170: strictNullChecks: apps/api/server [#5393](https://github.com/knapsack-labs/app-monorepo/pull/5393) ([@illepic](https://github.com/illepic) [@freneticpixel](https://github.com/freneticpixel))
|
|
14
|
+
|
|
15
|
+
#### Authors: 2
|
|
16
|
+
|
|
17
|
+
- Christopher Bloom ([@illepic](https://github.com/illepic))
|
|
18
|
+
- Jim Frenette ([@freneticpixel](https://github.com/freneticpixel))
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
1
22
|
# v4.76.0 (Tue Mar 04 2025)
|
|
2
23
|
|
|
3
24
|
#### 🏠 Internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { KnapsackConfig } from '@knapsack/app';
|
|
2
|
-
import { Update } from '../../types.js';
|
|
3
2
|
export declare function migrateMdBlocks({ config }: {
|
|
4
3
|
config: KnapsackConfig;
|
|
5
4
|
}): Promise<void>;
|
|
6
|
-
export declare const update400_markdown: Update;
|
|
7
5
|
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/markdown.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAyBpD,wBAAsB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,iBA6H3E"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { makeShortId } from '@knapsack/utils';
|
|
2
2
|
import { readKsPatternConfigs, writeKsPatternConfigs, readKsPagesConfig, writeKsPagesConfig, } from '@knapsack/ks-file-utils';
|
|
3
|
-
import prompts from 'prompts';
|
|
4
3
|
import { mdToTipTapJson } from './markdown.utils.js';
|
|
5
4
|
import { readDb, writeDb } from '../../utils/oldDb.js';
|
|
6
5
|
/**
|
|
@@ -125,21 +124,4 @@ export async function migrateMdBlocks({ config }) {
|
|
|
125
124
|
}),
|
|
126
125
|
]);
|
|
127
126
|
}
|
|
128
|
-
export const update400_markdown = {
|
|
129
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
130
|
-
title: 'Markdown blocks migration',
|
|
131
|
-
updater: async ({ config }) => {
|
|
132
|
-
const response = await prompts({
|
|
133
|
-
type: 'confirm',
|
|
134
|
-
name: 'shouldConvert',
|
|
135
|
-
message: 'Convert markdown blocks to text-editor blocks?',
|
|
136
|
-
initial: true,
|
|
137
|
-
});
|
|
138
|
-
if (!response.shouldConvert) {
|
|
139
|
-
console.log('Skipping markdown block conversion');
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
await migrateMdBlocks({ config });
|
|
143
|
-
},
|
|
144
|
-
};
|
|
145
127
|
//# sourceMappingURL=markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/markdown.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/placeholder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,eAAO,MAAM,qBAAqB,EAAE,MAMnC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
* Placeholder migration for future reference
|
|
4
|
+
*/
|
|
5
|
+
export const update400_placeholder = {
|
|
6
|
+
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
7
|
+
title: 'Placeholder migration',
|
|
8
|
+
updater: async ({ config }) => {
|
|
9
|
+
console.log('Placeholder migration');
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/placeholder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAW;IAC3C,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;IACtE,KAAK,EAAE,uBAAuB;IAC9B,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/updates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/updates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,eAAO,MAAM,OAAO,UAGA,CAAC"}
|
package/dist/updates/index.js
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { update400_placeholder } from './4.0.0/index.js';
|
|
2
2
|
import { update4_28_DB_to_files } from './4.28.0-db-to-files.js';
|
|
3
3
|
export const updates = [
|
|
4
|
-
|
|
5
|
-
update400_demos,
|
|
6
|
-
update400_blocks,
|
|
7
|
-
update400_navs,
|
|
8
|
-
update400_uiConfig,
|
|
9
|
-
update400_markdown,
|
|
4
|
+
update400_placeholder,
|
|
10
5
|
update4_28_DB_to_files,
|
|
11
6
|
];
|
|
12
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/updates/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/updates/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,qBAAqB;IACrB,sBAAsB;CACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knapsack/update",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "4.76.1
|
|
4
|
+
"version": "4.76.1",
|
|
5
5
|
"bin": {
|
|
6
6
|
"knapsack-update": "./cli.js"
|
|
7
7
|
},
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"test": "ava"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@knapsack/app": "4.76.1
|
|
22
|
-
"@knapsack/creator-utils": "4.76.1
|
|
23
|
-
"@knapsack/design-token-utils": "4.76.1
|
|
24
|
-
"@knapsack/file-utils": "4.76.1
|
|
25
|
-
"@knapsack/ks-file-utils": "4.76.1
|
|
26
|
-
"@knapsack/tiptap-utils": "4.76.1
|
|
27
|
-
"@knapsack/utils": "4.76.1
|
|
21
|
+
"@knapsack/app": "4.76.1",
|
|
22
|
+
"@knapsack/creator-utils": "4.76.1",
|
|
23
|
+
"@knapsack/design-token-utils": "4.76.1",
|
|
24
|
+
"@knapsack/file-utils": "4.76.1",
|
|
25
|
+
"@knapsack/ks-file-utils": "4.76.1",
|
|
26
|
+
"@knapsack/tiptap-utils": "4.76.1",
|
|
27
|
+
"@knapsack/utils": "4.76.1",
|
|
28
28
|
"cheerio": "^1.0.0",
|
|
29
29
|
"isomorphic-dompurify": "^1.13.0",
|
|
30
30
|
"marked": "^6.0.0",
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
"yargs": "^17.7.2"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@knapsack/eslint-config-starter": "4.76.1
|
|
36
|
-
"@knapsack/prettier-config": "4.76.1
|
|
37
|
-
"@knapsack/test-ava": "4.76.1
|
|
38
|
-
"@knapsack/types": "4.76.1
|
|
39
|
-
"@knapsack/typescript-config-starter": "4.76.1
|
|
35
|
+
"@knapsack/eslint-config-starter": "4.76.1",
|
|
36
|
+
"@knapsack/prettier-config": "4.76.1",
|
|
37
|
+
"@knapsack/test-ava": "4.76.1",
|
|
38
|
+
"@knapsack/types": "4.76.1",
|
|
39
|
+
"@knapsack/typescript-config-starter": "4.76.1",
|
|
40
40
|
"@types/node": "^20.17.17",
|
|
41
41
|
"@types/prompts": "^2.4.9",
|
|
42
42
|
"@types/yargs": "^17.0.33",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"directory": "apps/client/update",
|
|
54
54
|
"type": "git"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "ec562f52815b5bcee12104c022b0e80f390bd596"
|
|
57
57
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file
|
|
3
3
|
*
|
|
4
|
-
* Convert markdown blocks to text-editor blocks
|
|
4
|
+
* Convert markdown blocks to text-editor blocks. This module does not export an
|
|
5
|
+
* `Update` object because it is not a migration. It is a one-time conversion
|
|
6
|
+
* triggered manually.
|
|
5
7
|
*/
|
|
6
8
|
import { BlockConfig } from '@knapsack/types';
|
|
7
9
|
import { makeShortId } from '@knapsack/utils';
|
|
@@ -12,9 +14,7 @@ import {
|
|
|
12
14
|
writeKsPagesConfig,
|
|
13
15
|
} from '@knapsack/ks-file-utils';
|
|
14
16
|
import type { KnapsackConfig } from '@knapsack/app';
|
|
15
|
-
import prompts from 'prompts';
|
|
16
17
|
|
|
17
|
-
import { Update } from '../../types.js';
|
|
18
18
|
import { mdToTipTapJson } from './markdown.utils.js';
|
|
19
19
|
import { readDb, writeDb } from '../../utils/oldDb.js';
|
|
20
20
|
|
|
@@ -164,21 +164,3 @@ export async function migrateMdBlocks({ config }: { config: KnapsackConfig }) {
|
|
|
164
164
|
}),
|
|
165
165
|
]);
|
|
166
166
|
}
|
|
167
|
-
|
|
168
|
-
export const update400_markdown: Update = {
|
|
169
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
170
|
-
title: 'Markdown blocks migration',
|
|
171
|
-
updater: async ({ config }) => {
|
|
172
|
-
const response = await prompts({
|
|
173
|
-
type: 'confirm',
|
|
174
|
-
name: 'shouldConvert',
|
|
175
|
-
message: 'Convert markdown blocks to text-editor blocks?',
|
|
176
|
-
initial: true,
|
|
177
|
-
});
|
|
178
|
-
if (!response.shouldConvert) {
|
|
179
|
-
console.log('Skipping markdown block conversion');
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
await migrateMdBlocks({ config });
|
|
183
|
-
},
|
|
184
|
-
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
* Placeholder migration for future reference
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { Update } from '../../types.js';
|
|
7
|
+
|
|
8
|
+
export const update400_placeholder: Update = {
|
|
9
|
+
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
10
|
+
title: 'Placeholder migration',
|
|
11
|
+
updater: async ({ config }) => {
|
|
12
|
+
console.log('Placeholder migration');
|
|
13
|
+
},
|
|
14
|
+
};
|
package/src/updates/index.ts
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
import { Update } from '../types.js';
|
|
2
|
-
import {
|
|
3
|
-
update400_tokens,
|
|
4
|
-
update400_blocks,
|
|
5
|
-
update400_demos,
|
|
6
|
-
update400_navs,
|
|
7
|
-
update400_uiConfig,
|
|
8
|
-
update400_markdown,
|
|
9
|
-
} from './4.0.0/index.js';
|
|
2
|
+
import { update400_placeholder } from './4.0.0/index.js';
|
|
10
3
|
import { update4_28_DB_to_files } from './4.28.0-db-to-files.js';
|
|
11
4
|
|
|
12
5
|
export const updates = [
|
|
13
|
-
|
|
14
|
-
update400_demos,
|
|
15
|
-
update400_blocks,
|
|
16
|
-
update400_navs,
|
|
17
|
-
update400_uiConfig,
|
|
18
|
-
update400_markdown,
|
|
6
|
+
update400_placeholder,
|
|
19
7
|
update4_28_DB_to_files,
|
|
20
8
|
] satisfies Update[];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/blocks.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAyBxC,eAAO,MAAM,gBAAgB,EAAE,MAuJ9B,CAAC"}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { isArray, makeShortId } from '@knapsack/utils';
|
|
2
|
-
import { readKsPatternConfigs, writeKsPatternConfigs, readKsPagesConfig, writeKsPagesConfig, } from '@knapsack/ks-file-utils';
|
|
3
|
-
import { readDb, writeDb } from '../../utils/oldDb.js';
|
|
4
|
-
export const update400_blocks = {
|
|
5
|
-
title: 'Blocks migration',
|
|
6
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
7
|
-
updater: async ({ config }) => {
|
|
8
|
-
const { data: dataDir } = config;
|
|
9
|
-
const [patterns, pages, db] = await Promise.all([
|
|
10
|
-
readKsPatternConfigs({
|
|
11
|
-
dataDir,
|
|
12
|
-
}),
|
|
13
|
-
readKsPagesConfig({
|
|
14
|
-
dataDir,
|
|
15
|
-
}),
|
|
16
|
-
readDb({ dataDir }),
|
|
17
|
-
]);
|
|
18
|
-
db.blocks.byId = db.blocks.byId || {};
|
|
19
|
-
db.demos.byId = db.demos.byId || {};
|
|
20
|
-
// Also, our block IDs have a prefix that we need to remove
|
|
21
|
-
// If it's a duplicated block, make a new ID
|
|
22
|
-
const cleanId = (id) => {
|
|
23
|
-
const newId = id
|
|
24
|
-
// Certain customers ended up with single quotes in their IDs
|
|
25
|
-
.replaceAll("'", '')
|
|
26
|
-
// Remove this standard prefix
|
|
27
|
-
.replace('ks-content-block-', '');
|
|
28
|
-
if (db.blocks.byId[newId]) {
|
|
29
|
-
return makeShortId();
|
|
30
|
-
}
|
|
31
|
-
return newId;
|
|
32
|
-
};
|
|
33
|
-
// Loop through all custom page data, and migrate slices -> blockIds
|
|
34
|
-
pages.forEach((page) => {
|
|
35
|
-
// Ensure blockIds key exists, w/ migrated data if migration has been run already
|
|
36
|
-
page.blockIds = [...(page.blockIds || [])];
|
|
37
|
-
// If `slices` exists: loop, clean id, insert into db.blocks.byId, ensure
|
|
38
|
-
// only IDs exists in page.blockIds array
|
|
39
|
-
isArray(page.slices) &&
|
|
40
|
-
page.slices.forEach((slice) => {
|
|
41
|
-
slice.id = cleanId(slice.id);
|
|
42
|
-
// Migrate blockId to blockType
|
|
43
|
-
// @ts-expect-error this is fine
|
|
44
|
-
slice.blockType = slice.blockId
|
|
45
|
-
// change things like `markdown-slice` to `markdown-block`
|
|
46
|
-
.replace('slice', 'block');
|
|
47
|
-
delete slice.blockId;
|
|
48
|
-
db.blocks.byId[slice.id] = slice;
|
|
49
|
-
page.blockIds.push(slice.id);
|
|
50
|
-
});
|
|
51
|
-
// Bye bye slices, hello blockIds
|
|
52
|
-
delete page.slices;
|
|
53
|
-
});
|
|
54
|
-
// Loop through all patterns, and migrate slices -> blockIds
|
|
55
|
-
patterns.forEach((pattern) => {
|
|
56
|
-
var _a;
|
|
57
|
-
(_a = pattern.subPages) === null || _a === void 0 ? void 0 : _a.forEach((subPage) => {
|
|
58
|
-
subPage.blockIds = [...(subPage.blockIds || [])];
|
|
59
|
-
isArray(subPage.slices) &&
|
|
60
|
-
subPage.slices.forEach((slice) => {
|
|
61
|
-
slice.id = cleanId(slice.id);
|
|
62
|
-
// Migrate blockId to blockType
|
|
63
|
-
// @ts-expect-error this is fine
|
|
64
|
-
slice.blockType = slice.blockId
|
|
65
|
-
// change things like `markdown-slice` to `markdown-block`
|
|
66
|
-
.replace('slice', 'block');
|
|
67
|
-
delete slice.blockId;
|
|
68
|
-
db.blocks.byId[slice.id] = slice;
|
|
69
|
-
subPage.blockIds.push(slice.id);
|
|
70
|
-
});
|
|
71
|
-
delete subPage.slices;
|
|
72
|
-
});
|
|
73
|
-
pattern.templates.forEach((template) => {
|
|
74
|
-
template.blockIds = [...(template.blockIds || [])];
|
|
75
|
-
isArray(template.slices) &&
|
|
76
|
-
template.slices.forEach((slice) => {
|
|
77
|
-
slice.id = cleanId(slice.id);
|
|
78
|
-
// Migrate blockId to blockType
|
|
79
|
-
// @ts-expect-error this is fine
|
|
80
|
-
slice.blockType = slice.blockId
|
|
81
|
-
// change things like `markdown-slice` to `markdown-block`
|
|
82
|
-
.replace('slice', 'block');
|
|
83
|
-
delete slice.blockId;
|
|
84
|
-
db.blocks.byId[slice.id] = slice;
|
|
85
|
-
template.blockIds.push(slice.id);
|
|
86
|
-
});
|
|
87
|
-
delete template.slices;
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
Object.values(db.blocks.byId).forEach((block) => {
|
|
91
|
-
var _a, _b;
|
|
92
|
-
switch (block.blockType) {
|
|
93
|
-
case 'pattern-variations':
|
|
94
|
-
case 'pattern-template-block': {
|
|
95
|
-
// `block.data` has at least this shared shape:
|
|
96
|
-
// `{ patternId: string; templateId: string; demoId: string; }`
|
|
97
|
-
if (((_a = block.data) === null || _a === void 0 ? void 0 : _a.demoId) !== 'main')
|
|
98
|
-
break;
|
|
99
|
-
// If the demoId is 'main', we need to find the first real demoId
|
|
100
|
-
if (block.data.patternId && block.data.templateId) {
|
|
101
|
-
const pattern = patterns.find((p) => p.id === block.data.patternId);
|
|
102
|
-
if (!pattern) {
|
|
103
|
-
console.warn(`Missing patternId: ${block.data.patternId}. The block that references this pattern will be skipped.`);
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
const template = pattern.templates.find((t) => t.id === block.data.templateId);
|
|
107
|
-
if (!template) {
|
|
108
|
-
console.warn(`Missing templateId: ${block.data.templateId}. The block that references this template will be skipped.`);
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
const [firstDemoId] = (_b = template.demoIds) !== null && _b !== void 0 ? _b : [];
|
|
112
|
-
if (!firstDemoId) {
|
|
113
|
-
console.warn(`Template has no demos: ${block.data.templateId} in pattern ${block.data.patternId}`);
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
block.data.demoId = firstDemoId;
|
|
117
|
-
db.blocks.byId[block.id] = block;
|
|
118
|
-
}
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
await Promise.all([
|
|
124
|
-
writeKsPagesConfig({
|
|
125
|
-
dataDir,
|
|
126
|
-
pages,
|
|
127
|
-
}),
|
|
128
|
-
writeKsPatternConfigs({
|
|
129
|
-
dataDir,
|
|
130
|
-
patterns,
|
|
131
|
-
}),
|
|
132
|
-
writeDb({
|
|
133
|
-
dataDir,
|
|
134
|
-
db,
|
|
135
|
-
}),
|
|
136
|
-
]);
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=blocks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navs.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/navs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,eAAO,MAAM,cAAc,EAAE,MAgD5B,CAAC"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
4
|
-
* Merge dangling secondary navs into new, cleaner nav shape
|
|
5
|
-
*/
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { existsSync, readJSON, remove } from '@knapsack/file-utils';
|
|
8
|
-
import { writeKsNavConfig } from '@knapsack/ks-file-utils';
|
|
9
|
-
export const update400_navs = {
|
|
10
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
11
|
-
title: 'Navs migration',
|
|
12
|
-
updater: async ({ config }) => {
|
|
13
|
-
const { data } = config;
|
|
14
|
-
const legacyNavPath = join(data, 'knapsack.navs.json');
|
|
15
|
-
if (!existsSync(legacyNavPath)) {
|
|
16
|
-
console.info('No legacy navs found. Skipping navs migration.');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
// Load up legacy navs system
|
|
20
|
-
const navItemsRaw = await readJSON(legacyNavPath);
|
|
21
|
-
// New navs
|
|
22
|
-
const navsState = {
|
|
23
|
-
byId: {},
|
|
24
|
-
order: [],
|
|
25
|
-
};
|
|
26
|
-
if ('secondary' in navItemsRaw && Array.isArray(navItemsRaw.secondary)) {
|
|
27
|
-
// Merge legacy navs into contemporary navs
|
|
28
|
-
navsState.byId = {
|
|
29
|
-
...navsState.byId,
|
|
30
|
-
...navItemsRaw.secondary.reduce((acc, item) => {
|
|
31
|
-
acc[item.id] = item;
|
|
32
|
-
return acc;
|
|
33
|
-
}, {}),
|
|
34
|
-
};
|
|
35
|
-
navsState.order = [
|
|
36
|
-
...navsState.order,
|
|
37
|
-
...navItemsRaw.secondary.map((item) => item.id),
|
|
38
|
-
];
|
|
39
|
-
}
|
|
40
|
-
await Promise.all([
|
|
41
|
-
// Write to new knapsack.navs.yml
|
|
42
|
-
writeKsNavConfig({
|
|
43
|
-
data: navsState,
|
|
44
|
-
dataDir: config.data,
|
|
45
|
-
}),
|
|
46
|
-
// Nuke old knapsack.navs.json
|
|
47
|
-
remove(legacyNavPath),
|
|
48
|
-
]);
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=navs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navs.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/navs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;IACtE,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAExB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;QAElD,WAAW;QACX,MAAM,SAAS,GAAuB;YACpC,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,IAAI,WAAW,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,2CAA2C;YAC3C,SAAS,CAAC,IAAI,GAAG;gBACf,GAAG,SAAS,CAAC,IAAI;gBACjB,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;oBACpB,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAAqC,CAAC;aAC1C,CAAC;YACF,SAAS,CAAC,KAAK,GAAG;gBAChB,GAAG,SAAS,CAAC,KAAK;gBAClB,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;aAChD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,iCAAiC;YACjC,gBAAgB,CAAC;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,MAAM,CAAC,IAAI;aACrB,CAAC;YAEF,8BAA8B;YAC9B,MAAM,CAAC,aAAa,CAAC;SACtB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,eAAO,MAAM,gBAAgB,EAAE,MAyC9B,CAAC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Script to use the built-in migration method on ksBrain.tokens to update v3
|
|
3
|
-
* tokens to v4 tokens.
|
|
4
|
-
*/
|
|
5
|
-
import { convertStyleDictFormat } from '@knapsack/design-token-utils';
|
|
6
|
-
import { readJSON, writeFormattedFile } from '@knapsack/file-utils';
|
|
7
|
-
import { writeKsDesignTokensConfig, readKsDesignTokensConfig, } from '@knapsack/ks-file-utils';
|
|
8
|
-
export const update400_tokens = {
|
|
9
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
10
|
-
title: 'Tokens migration',
|
|
11
|
-
updater: async ({ config }) => {
|
|
12
|
-
var _a;
|
|
13
|
-
const customTokensPath = (_a = config === null || config === void 0 ? void 0 : config.designTokens) === null || _a === void 0 ? void 0 : _a.srcFilePath;
|
|
14
|
-
const tokensSrcGroup = customTokensPath
|
|
15
|
-
? // Does the workspace have a custom design tokens path (which includes
|
|
16
|
-
// specific file name)? If so, read that file directly as JSON.
|
|
17
|
-
await readJSON(customTokensPath)
|
|
18
|
-
: // Otherwise, just read the default tokens file within the data dir
|
|
19
|
-
await readKsDesignTokensConfig({
|
|
20
|
-
dataDir: config.data,
|
|
21
|
-
});
|
|
22
|
-
// Dirty hack to see if the json includes old, v3 version of "value". If so,
|
|
23
|
-
// do not update.
|
|
24
|
-
if (JSON.stringify(tokensSrcGroup).includes('"$value"')) {
|
|
25
|
-
console.log('Skipping tokens migration. Already v4 tokens.');
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
// Convert v3 to v4 tokens
|
|
29
|
-
const data = convertStyleDictFormat({
|
|
30
|
-
tokensSrcGroup,
|
|
31
|
-
});
|
|
32
|
-
// Write back to disk
|
|
33
|
-
customTokensPath
|
|
34
|
-
? // Again, custom path means writing arbitrary data to specific path
|
|
35
|
-
// (which includes file name)
|
|
36
|
-
await writeFormattedFile({
|
|
37
|
-
contents: data,
|
|
38
|
-
path: customTokensPath,
|
|
39
|
-
})
|
|
40
|
-
: // Otherwise default
|
|
41
|
-
await writeKsDesignTokensConfig({
|
|
42
|
-
data,
|
|
43
|
-
dataDir: config.data,
|
|
44
|
-
});
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=tokens.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;IACtE,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;QAC5B,MAAM,gBAAgB,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,WAAW,CAAC;QAE3D,MAAM,cAAc,GAAG,gBAAgB;YACrC,CAAC,CAAC,sEAAsE;gBACtE,+DAA+D;gBAC/D,MAAM,QAAQ,CAAwB,gBAAgB,CAAC;YACzD,CAAC,CAAC,mEAAmE;gBACnE,MAAM,wBAAwB,CAAC;oBAC7B,OAAO,EAAE,MAAM,CAAC,IAAI;iBACrB,CAAC,CAAC;QAEP,4EAA4E;QAC5E,iBAAiB;QACjB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,MAAM,IAAI,GAAG,sBAAsB,CAAC;YAClC,cAAc;SACf,CAAC,CAAC;QAEH,qBAAqB;QACrB,gBAAgB;YACd,CAAC,CAAC,mEAAmE;gBACnE,6BAA6B;gBAC7B,MAAM,kBAAkB,CAAC;oBACvB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,gBAAgB;iBACvB,CAAC;YACJ,CAAC,CAAC,oBAAoB;gBACpB,MAAM,yBAAyB,CAAC;oBAC9B,IAAI;oBACJ,OAAO,EAAE,MAAM,CAAC,IAAI;iBACrB,CAAC,CAAC;IACT,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../../src/updates/4.0.0/ui-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,eAAO,MAAM,kBAAkB,EAAE,MA0EhC,CAAC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file
|
|
3
|
-
* Migrate Ui Config to new format
|
|
4
|
-
*/
|
|
5
|
-
import { join } from 'node:path';
|
|
6
|
-
import { fetcher } from '@knapsack/utils';
|
|
7
|
-
import { readJSON } from '@knapsack/file-utils';
|
|
8
|
-
import { readDb, writeDb } from '../../utils/oldDb.js';
|
|
9
|
-
export const update400_uiConfig = {
|
|
10
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
11
|
-
title: 'UI config migration',
|
|
12
|
-
updater: async ({ config }) => {
|
|
13
|
-
var _a, _b;
|
|
14
|
-
const { cloud, data } = config;
|
|
15
|
-
const siteId = cloud === null || cloud === void 0 ? void 0 : cloud.siteId;
|
|
16
|
-
if (!siteId) {
|
|
17
|
-
console.log('No site ID found. Skipping UI Config migration.');
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const db = await readDb({ dataDir: data });
|
|
21
|
-
// 1. GraphQL call to site DB to pull down UIConfig
|
|
22
|
-
const query = `
|
|
23
|
-
query GetSiteBasicInfo($siteId: String!) {
|
|
24
|
-
site: sites_by_pk(id: $siteId) {
|
|
25
|
-
title
|
|
26
|
-
logoUrl
|
|
27
|
-
uiConfig
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
`;
|
|
31
|
-
const results = await fetcher({
|
|
32
|
-
url: 'https://db.knapsack.cloud/v1/graphql',
|
|
33
|
-
body: {
|
|
34
|
-
query,
|
|
35
|
-
variables: { siteId },
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
if (!results.data.site.uiConfig) {
|
|
39
|
-
console.error('No UI Config to migrate');
|
|
40
|
-
}
|
|
41
|
-
const legacySettings = await readJSON(join(data, 'knapsack.settings.json'));
|
|
42
|
-
if (typeof legacySettings.title === 'string') {
|
|
43
|
-
db.settings.title = legacySettings.title;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
db.settings.title = siteId;
|
|
47
|
-
}
|
|
48
|
-
db.settings.logoUrl = (_a = results.data.site.logoUrl) !== null && _a !== void 0 ? _a : '';
|
|
49
|
-
if (results.data.site.uiConfig) {
|
|
50
|
-
db.settings.theme = results.data.site.uiConfig;
|
|
51
|
-
}
|
|
52
|
-
db.blocks.settings = {
|
|
53
|
-
tokens: {
|
|
54
|
-
rootFontSize: 'tokens' in legacySettings &&
|
|
55
|
-
typeof legacySettings.tokens === 'object' &&
|
|
56
|
-
'rootFontSize' in legacySettings.tokens &&
|
|
57
|
-
typeof legacySettings.tokens.rootFontSize === 'string'
|
|
58
|
-
? (_b = legacySettings.tokens) === null || _b === void 0 ? void 0 : _b.rootFontSize
|
|
59
|
-
: '16px',
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
await writeDb({
|
|
63
|
-
dataDir: data,
|
|
64
|
-
db,
|
|
65
|
-
});
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=ui-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config.js","sourceRoot":"","sources":["../../../src/updates/4.0.0/ui-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAW;IACxC,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;IACtE,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;QAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC;QAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,mDAAmD;QACnD,MAAM,KAAK,GAAG;;;;;;;;GAQf,CAAC;QAEA,MAAM,OAAO,GAAG,MAAM,OAAO,CAQ1B;YACD,GAAG,EAAE,sCAAsC;YAC3C,IAAI,EAAE;gBACJ,KAAK;gBACL,SAAS,EAAE,EAAE,MAAM,EAAE;aACtB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC;QAE5E,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7C,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;QAC7B,CAAC;QAED,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC;QACtD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjD,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG;YACnB,MAAM,EAAE;gBACN,YAAY,EACV,QAAQ,IAAI,cAAc;oBAC1B,OAAO,cAAc,CAAC,MAAM,KAAK,QAAQ;oBACzC,cAAc,IAAI,cAAc,CAAC,MAAM;oBACvC,OAAO,cAAc,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ;oBACpD,CAAC,CAAC,MAAA,cAAc,CAAC,MAAM,0CAAE,YAAY;oBACrC,CAAC,CAAC,MAAM;aACb;SACF,CAAC;QAEF,MAAM,OAAO,CAAC;YACZ,OAAO,EAAE,IAAI;YACb,EAAE;SACH,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
4
|
-
* Script to migrate v3 slices to v4 blocks wherever slices exist, which is:
|
|
5
|
-
*
|
|
6
|
-
* 1. Custom pages
|
|
7
|
-
* 2. Within Pattern templates
|
|
8
|
-
* 3. Within Pattern subPages
|
|
9
|
-
*
|
|
10
|
-
* This script writes all blocks data to db.yml as well as mutating the original
|
|
11
|
-
* yml and json files within the site data directory.
|
|
12
|
-
*/
|
|
13
|
-
import {
|
|
14
|
-
KnapsackCustomPage,
|
|
15
|
-
KnapsackPattern,
|
|
16
|
-
BlockConfig,
|
|
17
|
-
} from '@knapsack/types';
|
|
18
|
-
import { isArray, makeShortId } from '@knapsack/utils';
|
|
19
|
-
import {
|
|
20
|
-
readKsPatternConfigs,
|
|
21
|
-
writeKsPatternConfigs,
|
|
22
|
-
readKsPagesConfig,
|
|
23
|
-
writeKsPagesConfig,
|
|
24
|
-
} from '@knapsack/ks-file-utils';
|
|
25
|
-
|
|
26
|
-
import { Update } from '../../types.js';
|
|
27
|
-
import { readDb, writeDb } from '../../utils/oldDb.js';
|
|
28
|
-
|
|
29
|
-
// Temporarily mock up the old, v3 version of Custom Page which has slices key
|
|
30
|
-
// plus a blocks key, so we can temporarily have both on the incoming object
|
|
31
|
-
type CustomSliceMigration = BlockConfig & {
|
|
32
|
-
blockId: string;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
type KnapsackCustomPageMigration = KnapsackCustomPage & {
|
|
36
|
-
slices?: CustomSliceMigration[];
|
|
37
|
-
};
|
|
38
|
-
// Temp shape of Pattern data that may have either or both slices and blocks
|
|
39
|
-
type KnapsackPatternMigration = Omit<
|
|
40
|
-
KnapsackPattern,
|
|
41
|
-
'subPages' | 'templates'
|
|
42
|
-
> & {
|
|
43
|
-
templates?: (KnapsackPattern['templates'][0] & {
|
|
44
|
-
slices?: CustomSliceMigration[];
|
|
45
|
-
})[];
|
|
46
|
-
subPages?: (KnapsackPattern['subPages'][0] & {
|
|
47
|
-
slices?: CustomSliceMigration[];
|
|
48
|
-
})[];
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export const update400_blocks: Update = {
|
|
52
|
-
title: 'Blocks migration',
|
|
53
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
54
|
-
updater: async ({ config }) => {
|
|
55
|
-
const { data: dataDir } = config;
|
|
56
|
-
const [patterns, pages, db] = await Promise.all([
|
|
57
|
-
readKsPatternConfigs({
|
|
58
|
-
dataDir,
|
|
59
|
-
}),
|
|
60
|
-
readKsPagesConfig({
|
|
61
|
-
dataDir,
|
|
62
|
-
}),
|
|
63
|
-
readDb({ dataDir }),
|
|
64
|
-
]);
|
|
65
|
-
|
|
66
|
-
db.blocks.byId = db.blocks.byId || {};
|
|
67
|
-
db.demos.byId = db.demos.byId || {};
|
|
68
|
-
|
|
69
|
-
// Also, our block IDs have a prefix that we need to remove
|
|
70
|
-
// If it's a duplicated block, make a new ID
|
|
71
|
-
const cleanId = (id: string) => {
|
|
72
|
-
const newId = id
|
|
73
|
-
// Certain customers ended up with single quotes in their IDs
|
|
74
|
-
.replaceAll("'", '')
|
|
75
|
-
// Remove this standard prefix
|
|
76
|
-
.replace('ks-content-block-', '');
|
|
77
|
-
if (db.blocks.byId[newId]) {
|
|
78
|
-
return makeShortId();
|
|
79
|
-
}
|
|
80
|
-
return newId;
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
// Loop through all custom page data, and migrate slices -> blockIds
|
|
84
|
-
pages.forEach((page: KnapsackCustomPageMigration) => {
|
|
85
|
-
// Ensure blockIds key exists, w/ migrated data if migration has been run already
|
|
86
|
-
page.blockIds = [...(page.blockIds || [])];
|
|
87
|
-
// If `slices` exists: loop, clean id, insert into db.blocks.byId, ensure
|
|
88
|
-
// only IDs exists in page.blockIds array
|
|
89
|
-
isArray(page.slices) &&
|
|
90
|
-
page.slices.forEach((slice) => {
|
|
91
|
-
slice.id = cleanId(slice.id);
|
|
92
|
-
|
|
93
|
-
// Migrate blockId to blockType
|
|
94
|
-
// @ts-expect-error this is fine
|
|
95
|
-
slice.blockType = slice.blockId
|
|
96
|
-
// change things like `markdown-slice` to `markdown-block`
|
|
97
|
-
.replace('slice', 'block');
|
|
98
|
-
delete slice.blockId;
|
|
99
|
-
|
|
100
|
-
db.blocks.byId[slice.id] = slice;
|
|
101
|
-
page.blockIds.push(slice.id);
|
|
102
|
-
});
|
|
103
|
-
// Bye bye slices, hello blockIds
|
|
104
|
-
delete page.slices;
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
// Loop through all patterns, and migrate slices -> blockIds
|
|
108
|
-
patterns.forEach((pattern: KnapsackPatternMigration) => {
|
|
109
|
-
pattern.subPages?.forEach((subPage) => {
|
|
110
|
-
subPage.blockIds = [...(subPage.blockIds || [])];
|
|
111
|
-
isArray(subPage.slices) &&
|
|
112
|
-
subPage.slices.forEach((slice) => {
|
|
113
|
-
slice.id = cleanId(slice.id);
|
|
114
|
-
|
|
115
|
-
// Migrate blockId to blockType
|
|
116
|
-
// @ts-expect-error this is fine
|
|
117
|
-
slice.blockType = slice.blockId
|
|
118
|
-
// change things like `markdown-slice` to `markdown-block`
|
|
119
|
-
.replace('slice', 'block');
|
|
120
|
-
delete slice.blockId;
|
|
121
|
-
|
|
122
|
-
db.blocks.byId[slice.id] = slice;
|
|
123
|
-
subPage.blockIds.push(slice.id);
|
|
124
|
-
});
|
|
125
|
-
delete subPage.slices;
|
|
126
|
-
});
|
|
127
|
-
pattern.templates.forEach((template) => {
|
|
128
|
-
template.blockIds = [...(template.blockIds || [])];
|
|
129
|
-
isArray(template.slices) &&
|
|
130
|
-
template.slices.forEach((slice) => {
|
|
131
|
-
slice.id = cleanId(slice.id);
|
|
132
|
-
|
|
133
|
-
// Migrate blockId to blockType
|
|
134
|
-
// @ts-expect-error this is fine
|
|
135
|
-
slice.blockType = slice.blockId
|
|
136
|
-
// change things like `markdown-slice` to `markdown-block`
|
|
137
|
-
.replace('slice', 'block');
|
|
138
|
-
delete slice.blockId;
|
|
139
|
-
|
|
140
|
-
db.blocks.byId[slice.id] = slice;
|
|
141
|
-
template.blockIds.push(slice.id);
|
|
142
|
-
});
|
|
143
|
-
delete template.slices;
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
Object.values(db.blocks.byId).forEach((block) => {
|
|
148
|
-
switch (block.blockType) {
|
|
149
|
-
case 'pattern-variations':
|
|
150
|
-
case 'pattern-template-block': {
|
|
151
|
-
// `block.data` has at least this shared shape:
|
|
152
|
-
// `{ patternId: string; templateId: string; demoId: string; }`
|
|
153
|
-
if (block.data?.demoId !== 'main') break;
|
|
154
|
-
// If the demoId is 'main', we need to find the first real demoId
|
|
155
|
-
if (block.data.patternId && block.data.templateId) {
|
|
156
|
-
const pattern = patterns.find((p) => p.id === block.data.patternId);
|
|
157
|
-
if (!pattern) {
|
|
158
|
-
console.warn(
|
|
159
|
-
`Missing patternId: ${block.data.patternId}. The block that references this pattern will be skipped.`,
|
|
160
|
-
);
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
const template = pattern.templates.find(
|
|
164
|
-
(t) => t.id === block.data.templateId,
|
|
165
|
-
);
|
|
166
|
-
if (!template) {
|
|
167
|
-
console.warn(
|
|
168
|
-
`Missing templateId: ${block.data.templateId}. The block that references this template will be skipped.`,
|
|
169
|
-
);
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
const [firstDemoId] = template.demoIds ?? [];
|
|
173
|
-
if (!firstDemoId) {
|
|
174
|
-
console.warn(
|
|
175
|
-
`Template has no demos: ${block.data.templateId} in pattern ${block.data.patternId}`,
|
|
176
|
-
);
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
block.data.demoId = firstDemoId;
|
|
180
|
-
db.blocks.byId[block.id] = block;
|
|
181
|
-
}
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
await Promise.all([
|
|
188
|
-
writeKsPagesConfig({
|
|
189
|
-
dataDir,
|
|
190
|
-
pages,
|
|
191
|
-
}),
|
|
192
|
-
writeKsPatternConfigs({
|
|
193
|
-
dataDir,
|
|
194
|
-
patterns,
|
|
195
|
-
}),
|
|
196
|
-
writeDb({
|
|
197
|
-
dataDir,
|
|
198
|
-
db,
|
|
199
|
-
}),
|
|
200
|
-
]);
|
|
201
|
-
},
|
|
202
|
-
};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file
|
|
3
|
-
*
|
|
4
|
-
* Merge dangling secondary navs into new, cleaner nav shape
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { join } from 'node:path';
|
|
8
|
-
import { existsSync, readJSON, remove } from '@knapsack/file-utils';
|
|
9
|
-
import { writeKsNavConfig } from '@knapsack/ks-file-utils';
|
|
10
|
-
import { KnapsackNavItem, KnapsackNavsConfig } from '@knapsack/types';
|
|
11
|
-
|
|
12
|
-
import { Update } from '../../types.js';
|
|
13
|
-
|
|
14
|
-
export const update400_navs: Update = {
|
|
15
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
16
|
-
title: 'Navs migration',
|
|
17
|
-
updater: async ({ config }) => {
|
|
18
|
-
const { data } = config;
|
|
19
|
-
|
|
20
|
-
const legacyNavPath = join(data, 'knapsack.navs.json');
|
|
21
|
-
|
|
22
|
-
if (!existsSync(legacyNavPath)) {
|
|
23
|
-
console.info('No legacy navs found. Skipping navs migration.');
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Load up legacy navs system
|
|
28
|
-
const navItemsRaw = await readJSON(legacyNavPath);
|
|
29
|
-
|
|
30
|
-
// New navs
|
|
31
|
-
const navsState: KnapsackNavsConfig = {
|
|
32
|
-
byId: {},
|
|
33
|
-
order: [],
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
if ('secondary' in navItemsRaw && Array.isArray(navItemsRaw.secondary)) {
|
|
37
|
-
// Merge legacy navs into contemporary navs
|
|
38
|
-
navsState.byId = {
|
|
39
|
-
...navsState.byId,
|
|
40
|
-
...navItemsRaw.secondary.reduce((acc, item) => {
|
|
41
|
-
acc[item.id] = item;
|
|
42
|
-
return acc;
|
|
43
|
-
}, {} as Record<string, KnapsackNavItem>),
|
|
44
|
-
};
|
|
45
|
-
navsState.order = [
|
|
46
|
-
...navsState.order,
|
|
47
|
-
...navItemsRaw.secondary.map((item) => item.id),
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
await Promise.all([
|
|
52
|
-
// Write to new knapsack.navs.yml
|
|
53
|
-
writeKsNavConfig({
|
|
54
|
-
data: navsState,
|
|
55
|
-
dataDir: config.data,
|
|
56
|
-
}),
|
|
57
|
-
|
|
58
|
-
// Nuke old knapsack.navs.json
|
|
59
|
-
remove(legacyNavPath),
|
|
60
|
-
]);
|
|
61
|
-
},
|
|
62
|
-
};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Script to use the built-in migration method on ksBrain.tokens to update v3
|
|
3
|
-
* tokens to v4 tokens.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { convertStyleDictFormat } from '@knapsack/design-token-utils';
|
|
7
|
-
import { KsDesignTokenSrcGroup } from '@knapsack/types';
|
|
8
|
-
import { readJSON, writeFormattedFile } from '@knapsack/file-utils';
|
|
9
|
-
import {
|
|
10
|
-
writeKsDesignTokensConfig,
|
|
11
|
-
readKsDesignTokensConfig,
|
|
12
|
-
} from '@knapsack/ks-file-utils';
|
|
13
|
-
import { Update } from '../../types.js';
|
|
14
|
-
|
|
15
|
-
export const update400_tokens: Update = {
|
|
16
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
17
|
-
title: 'Tokens migration',
|
|
18
|
-
updater: async ({ config }) => {
|
|
19
|
-
const customTokensPath = config?.designTokens?.srcFilePath;
|
|
20
|
-
|
|
21
|
-
const tokensSrcGroup = customTokensPath
|
|
22
|
-
? // Does the workspace have a custom design tokens path (which includes
|
|
23
|
-
// specific file name)? If so, read that file directly as JSON.
|
|
24
|
-
await readJSON<KsDesignTokenSrcGroup>(customTokensPath)
|
|
25
|
-
: // Otherwise, just read the default tokens file within the data dir
|
|
26
|
-
await readKsDesignTokensConfig({
|
|
27
|
-
dataDir: config.data,
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// Dirty hack to see if the json includes old, v3 version of "value". If so,
|
|
31
|
-
// do not update.
|
|
32
|
-
if (JSON.stringify(tokensSrcGroup).includes('"$value"')) {
|
|
33
|
-
console.log('Skipping tokens migration. Already v4 tokens.');
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Convert v3 to v4 tokens
|
|
38
|
-
const data = convertStyleDictFormat({
|
|
39
|
-
tokensSrcGroup,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// Write back to disk
|
|
43
|
-
customTokensPath
|
|
44
|
-
? // Again, custom path means writing arbitrary data to specific path
|
|
45
|
-
// (which includes file name)
|
|
46
|
-
await writeFormattedFile({
|
|
47
|
-
contents: data,
|
|
48
|
-
path: customTokensPath,
|
|
49
|
-
})
|
|
50
|
-
: // Otherwise default
|
|
51
|
-
await writeKsDesignTokensConfig({
|
|
52
|
-
data,
|
|
53
|
-
dataDir: config.data,
|
|
54
|
-
});
|
|
55
|
-
},
|
|
56
|
-
};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file
|
|
3
|
-
* Migrate Ui Config to new format
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { fetcher } from '@knapsack/utils';
|
|
8
|
-
import { readJSON } from '@knapsack/file-utils';
|
|
9
|
-
import type { UiConfig } from '@knapsack/types';
|
|
10
|
-
|
|
11
|
-
import { Update } from '../../types.js';
|
|
12
|
-
import { readDb, writeDb } from '../../utils/oldDb.js';
|
|
13
|
-
|
|
14
|
-
export const update400_uiConfig: Update = {
|
|
15
|
-
shouldRun: ({ installedVersion }) => installedVersion.startsWith('3.'),
|
|
16
|
-
title: 'UI config migration',
|
|
17
|
-
updater: async ({ config }) => {
|
|
18
|
-
const { cloud, data } = config;
|
|
19
|
-
const siteId = cloud?.siteId;
|
|
20
|
-
|
|
21
|
-
if (!siteId) {
|
|
22
|
-
console.log('No site ID found. Skipping UI Config migration.');
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const db = await readDb({ dataDir: data });
|
|
26
|
-
|
|
27
|
-
// 1. GraphQL call to site DB to pull down UIConfig
|
|
28
|
-
const query = `
|
|
29
|
-
query GetSiteBasicInfo($siteId: String!) {
|
|
30
|
-
site: sites_by_pk(id: $siteId) {
|
|
31
|
-
title
|
|
32
|
-
logoUrl
|
|
33
|
-
uiConfig
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
`;
|
|
37
|
-
|
|
38
|
-
const results = await fetcher<{
|
|
39
|
-
data: {
|
|
40
|
-
site: {
|
|
41
|
-
title: string;
|
|
42
|
-
logoUrl: string;
|
|
43
|
-
uiConfig: UiConfig; // trust me, bro
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
}>({
|
|
47
|
-
url: 'https://db.knapsack.cloud/v1/graphql',
|
|
48
|
-
body: {
|
|
49
|
-
query,
|
|
50
|
-
variables: { siteId },
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
if (!results.data.site.uiConfig) {
|
|
55
|
-
console.error('No UI Config to migrate');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const legacySettings = await readJSON(join(data, 'knapsack.settings.json'));
|
|
59
|
-
|
|
60
|
-
if (typeof legacySettings.title === 'string') {
|
|
61
|
-
db.settings.title = legacySettings.title;
|
|
62
|
-
} else {
|
|
63
|
-
db.settings.title = siteId;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
db.settings.logoUrl = results.data.site.logoUrl ?? '';
|
|
67
|
-
if (results.data.site.uiConfig) {
|
|
68
|
-
db.settings.theme = results.data.site.uiConfig;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
db.blocks.settings = {
|
|
72
|
-
tokens: {
|
|
73
|
-
rootFontSize:
|
|
74
|
-
'tokens' in legacySettings &&
|
|
75
|
-
typeof legacySettings.tokens === 'object' &&
|
|
76
|
-
'rootFontSize' in legacySettings.tokens &&
|
|
77
|
-
typeof legacySettings.tokens.rootFontSize === 'string'
|
|
78
|
-
? legacySettings.tokens?.rootFontSize
|
|
79
|
-
: '16px',
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
await writeDb({
|
|
84
|
-
dataDir: data,
|
|
85
|
-
db,
|
|
86
|
-
});
|
|
87
|
-
},
|
|
88
|
-
};
|