@poveste/shared 0.1.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 +22 -0
- package/dist/codegen/const.d.ts +2 -0
- package/dist/codegen/const.d.ts.map +1 -0
- package/dist/codegen/const.js +17 -0
- package/dist/codegen/index.d.ts +4 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +3 -0
- package/dist/codegen/serialize-js.d.ts +2 -0
- package/dist/codegen/serialize-js.d.ts.map +1 -0
- package/dist/codegen/serialize-js.js +126 -0
- package/dist/codegen/util.d.ts +11 -0
- package/dist/codegen/util.d.ts.map +1 -0
- package/dist/codegen/util.js +69 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/state.d.ts +4 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +40 -0
- package/dist/story.d.ts +2 -0
- package/dist/story.d.ts.map +1 -0
- package/dist/story.js +10 -0
- package/dist/type-utils.d.ts +2 -0
- package/dist/type-utils.d.ts.map +1 -0
- package/dist/type-utils.js +1 -0
- package/dist/types/command.d.ts +36 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +1 -0
- package/dist/types/config.d.ts +242 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/plugin.d.ts +117 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +1 -0
- package/dist/types/prompt.d.ts +20 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +1 -0
- package/dist/types/story.d.ts +189 -0
- package/dist/types/story.d.ts.map +1 -0
- package/dist/types/story.js +1 -0
- package/package.json +46 -0
- package/src/codegen/const.ts +17 -0
- package/src/codegen/index.ts +3 -0
- package/src/codegen/serialize-js.ts +143 -0
- package/src/codegen/util.ts +77 -0
- package/src/index.ts +5 -0
- package/src/state.ts +42 -0
- package/src/story.ts +10 -0
- package/src/type-utils.ts +1 -0
- package/src/types/command.ts +38 -0
- package/src/types/config.ts +252 -0
- package/src/types/index.ts +5 -0
- package/src/types/plugin.ts +135 -0
- package/src/types/prompt.ts +22 -0
- package/src/types/story.ts +204 -0
- package/tsconfig.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type chokidar from 'chokidar';
|
|
2
|
+
import type fs from 'fs-extra';
|
|
3
|
+
import type path from 'pathe';
|
|
4
|
+
import type pc from 'picocolors';
|
|
5
|
+
import type { InlineConfig as ViteInlineConfig, Plugin as VitePlugin } from 'vite';
|
|
6
|
+
import type { Awaitable } from '../type-utils.js';
|
|
7
|
+
import type { PluginCommand } from './command.js';
|
|
8
|
+
import type { ConfigMode, PovesteConfig } from './config.js';
|
|
9
|
+
import type { ServerStory, ServerStoryFile, ServerVariant } from './story.js';
|
|
10
|
+
export interface SupportPlugin {
|
|
11
|
+
id: string;
|
|
12
|
+
moduleName: string;
|
|
13
|
+
setupFn: string | string[];
|
|
14
|
+
importStoriesPrepend?: string;
|
|
15
|
+
importStoryComponent: (file: ServerStoryFile, index: number) => string;
|
|
16
|
+
}
|
|
17
|
+
export interface FinalSupportPlugin extends SupportPlugin {
|
|
18
|
+
}
|
|
19
|
+
export interface ModuleLoader {
|
|
20
|
+
clearCache: () => void;
|
|
21
|
+
loadModule: (file: string) => Promise<any>;
|
|
22
|
+
destroy: () => void;
|
|
23
|
+
}
|
|
24
|
+
export interface PluginApiBase {
|
|
25
|
+
colors: typeof pc;
|
|
26
|
+
path: typeof path;
|
|
27
|
+
fs: typeof fs;
|
|
28
|
+
moduleLoader: ModuleLoader;
|
|
29
|
+
readonly pluginTempDir: string;
|
|
30
|
+
log: (...msg: any[]) => void;
|
|
31
|
+
warn: (...msg: any[]) => void;
|
|
32
|
+
error: (...msg: any[]) => void;
|
|
33
|
+
getStories: () => ServerStory[];
|
|
34
|
+
addStoryFile: (file: string) => void;
|
|
35
|
+
getConfig: () => PovesteConfig;
|
|
36
|
+
}
|
|
37
|
+
export interface PluginApiDev extends PluginApiBase {
|
|
38
|
+
watcher: typeof chokidar;
|
|
39
|
+
}
|
|
40
|
+
export type ChangeViteConfigCallback = (config: ViteInlineConfig) => Awaitable<void>;
|
|
41
|
+
export type BuildEndCallback = () => Awaitable<void>;
|
|
42
|
+
export type PreviewStoryCallback = (payload: {
|
|
43
|
+
file: string;
|
|
44
|
+
story: ServerStory;
|
|
45
|
+
variant: ServerVariant;
|
|
46
|
+
url: string;
|
|
47
|
+
}) => Awaitable<void>;
|
|
48
|
+
export interface PluginApiBuild extends PluginApiBase {
|
|
49
|
+
changeViteConfigCallbacks: ChangeViteConfigCallback[];
|
|
50
|
+
buildEndCallbacks: BuildEndCallback[];
|
|
51
|
+
previewStoryCallbacks: PreviewStoryCallback[];
|
|
52
|
+
changeViteConfig: (cb: ChangeViteConfigCallback) => void;
|
|
53
|
+
onBuildEnd: (cb: BuildEndCallback) => void;
|
|
54
|
+
onPreviewStory: (cb: PreviewStoryCallback) => void;
|
|
55
|
+
}
|
|
56
|
+
export interface PluginApiDevEvent extends PluginApiBase {
|
|
57
|
+
event: string;
|
|
58
|
+
payload: any;
|
|
59
|
+
}
|
|
60
|
+
export interface Plugin {
|
|
61
|
+
/**
|
|
62
|
+
* Name of the plugin
|
|
63
|
+
*/
|
|
64
|
+
name: string;
|
|
65
|
+
/**
|
|
66
|
+
* Modify histoire default config. The hook can either mutate the passed config or
|
|
67
|
+
* return a partial config object that will be deeply merged into the existing
|
|
68
|
+
* config. User config will have higher priority than default config.
|
|
69
|
+
*
|
|
70
|
+
* Note: User plugins are resolved before running this hook so injecting other
|
|
71
|
+
* plugins inside the `config` hook will have no effect.
|
|
72
|
+
*/
|
|
73
|
+
defaultConfig?: (defaultConfig: PovesteConfig, mode: ConfigMode) => Partial<PovesteConfig> | null | void | Promise<Partial<PovesteConfig> | null | void>;
|
|
74
|
+
/**
|
|
75
|
+
* Modify histoire config. The hook can either mutate the passed config or
|
|
76
|
+
* return a partial config object that will be deeply merged into the existing
|
|
77
|
+
* config.
|
|
78
|
+
*
|
|
79
|
+
* Note: User plugins are resolved before running this hook so injecting other
|
|
80
|
+
* plugins inside the `config` hook will have no effect.
|
|
81
|
+
*/
|
|
82
|
+
config?: (config: PovesteConfig, mode: ConfigMode) => Partial<PovesteConfig> | null | void | Promise<Partial<PovesteConfig> | null | void>;
|
|
83
|
+
/**
|
|
84
|
+
* Use this hook to read and store the final resolved histoire config.
|
|
85
|
+
*/
|
|
86
|
+
configResolved?: (config: PovesteConfig) => Awaitable<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Use this hook to do processing during development. The `onCleanup` hook
|
|
89
|
+
* should handle cleanup tasks when development server is closed.
|
|
90
|
+
*/
|
|
91
|
+
onDev?: (api: PluginApiDev, onCleanup: (cb: () => Awaitable<void>) => void) => Awaitable<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Use this hook to do processing during production build.
|
|
94
|
+
*/
|
|
95
|
+
onBuild?: (api: PluginApiBuild) => Awaitable<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Use this hook to do processing when preview is started.
|
|
98
|
+
*/
|
|
99
|
+
onPreview?: () => Awaitable<void>;
|
|
100
|
+
/**
|
|
101
|
+
* This plugin exposes a support plugin (example: Vue, Svelte, etc.)
|
|
102
|
+
*/
|
|
103
|
+
supportPlugin?: SupportPlugin;
|
|
104
|
+
/**
|
|
105
|
+
* This plugin exposes commands that can be executed from the search bar in development mode.
|
|
106
|
+
*/
|
|
107
|
+
commands?: PluginCommand[];
|
|
108
|
+
/**
|
|
109
|
+
* Handle a custom event from the client in development mode.
|
|
110
|
+
*/
|
|
111
|
+
onDevEvent?: (api: PluginApiDevEvent) => Awaitable<any>;
|
|
112
|
+
/**
|
|
113
|
+
* Use this hook to manipulate Vite plugins before they are passed to Vite.
|
|
114
|
+
*/
|
|
115
|
+
vitePlugins?: (plugins: VitePlugin[]) => Awaitable<void>;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Awaitable } from '../type-utils.js';
|
|
2
|
+
export interface PromptBase<TValue> {
|
|
3
|
+
field: string;
|
|
4
|
+
label: string;
|
|
5
|
+
required?: boolean;
|
|
6
|
+
defaultValue?: TValue | ((answers: Record<string, any>) => TValue);
|
|
7
|
+
}
|
|
8
|
+
export interface TextPrompt extends PromptBase<string> {
|
|
9
|
+
type: 'text';
|
|
10
|
+
}
|
|
11
|
+
export type SelectPromptOption = string | {
|
|
12
|
+
value: string;
|
|
13
|
+
label: string;
|
|
14
|
+
};
|
|
15
|
+
export interface SelectPrompt extends PromptBase<string> {
|
|
16
|
+
type: 'select';
|
|
17
|
+
options: SelectPromptOption[] | ((search: string, answers: Record<string, any>) => Awaitable<SelectPromptOption[]>);
|
|
18
|
+
}
|
|
19
|
+
export type Prompt<TValue = any> = TextPrompt | SelectPrompt;
|
|
20
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/types/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,UAAU,CAAC,MAAM;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,YAAa,SAAQ,UAAU,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;CACpH;AAED,MAAM,MAAM,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,UAAU,GACzC,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
export interface StoryFile {
|
|
2
|
+
id: string;
|
|
3
|
+
supportPluginId: string;
|
|
4
|
+
component: any;
|
|
5
|
+
story: Story;
|
|
6
|
+
path: string[];
|
|
7
|
+
filePath: string;
|
|
8
|
+
docsFilePath?: string;
|
|
9
|
+
source: () => Promise<{
|
|
10
|
+
default: string;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
export type StoryLayout = {
|
|
14
|
+
type: 'single';
|
|
15
|
+
iframe?: boolean;
|
|
16
|
+
} | {
|
|
17
|
+
type: 'grid';
|
|
18
|
+
width?: number | string;
|
|
19
|
+
};
|
|
20
|
+
export interface CommonProps {
|
|
21
|
+
id?: string;
|
|
22
|
+
title?: string;
|
|
23
|
+
icon?: string;
|
|
24
|
+
iconColor?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface InheritedProps {
|
|
27
|
+
setupApp?: (payload: any) => unknown;
|
|
28
|
+
source?: string;
|
|
29
|
+
responsiveDisabled?: boolean;
|
|
30
|
+
autoPropsDisabled?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface VariantProps extends CommonProps, InheritedProps {
|
|
33
|
+
}
|
|
34
|
+
export interface StoryProps extends CommonProps, InheritedProps {
|
|
35
|
+
group?: string;
|
|
36
|
+
layout?: StoryLayout;
|
|
37
|
+
docsOnly?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface CommonMeta {
|
|
40
|
+
}
|
|
41
|
+
export interface StoryMeta extends CommonMeta {
|
|
42
|
+
}
|
|
43
|
+
export interface Story {
|
|
44
|
+
id: string;
|
|
45
|
+
title: string;
|
|
46
|
+
group?: string;
|
|
47
|
+
variants: Variant[];
|
|
48
|
+
layout?: StoryLayout;
|
|
49
|
+
icon?: string;
|
|
50
|
+
iconColor?: string;
|
|
51
|
+
docsOnly?: boolean;
|
|
52
|
+
file?: StoryFile;
|
|
53
|
+
lastSelectedVariant?: Variant;
|
|
54
|
+
slots?: () => any;
|
|
55
|
+
meta?: StoryMeta;
|
|
56
|
+
}
|
|
57
|
+
export interface VariantMeta extends CommonMeta {
|
|
58
|
+
}
|
|
59
|
+
export interface Variant {
|
|
60
|
+
id: string;
|
|
61
|
+
title: string;
|
|
62
|
+
icon?: string;
|
|
63
|
+
iconColor?: string;
|
|
64
|
+
setupApp?: (payload: any) => unknown;
|
|
65
|
+
slots?: () => {
|
|
66
|
+
default: any;
|
|
67
|
+
controls: any;
|
|
68
|
+
source: any;
|
|
69
|
+
};
|
|
70
|
+
state: any;
|
|
71
|
+
source?: string;
|
|
72
|
+
responsiveDisabled?: boolean;
|
|
73
|
+
autoPropsDisabled?: boolean;
|
|
74
|
+
configReady?: boolean;
|
|
75
|
+
previewReady?: boolean;
|
|
76
|
+
meta?: VariantMeta;
|
|
77
|
+
}
|
|
78
|
+
export interface PropDefinition {
|
|
79
|
+
name: string;
|
|
80
|
+
types?: string[];
|
|
81
|
+
required?: boolean;
|
|
82
|
+
default?: any;
|
|
83
|
+
}
|
|
84
|
+
export interface AutoPropComponentDefinition {
|
|
85
|
+
name: string;
|
|
86
|
+
index: number;
|
|
87
|
+
props: PropDefinition[];
|
|
88
|
+
}
|
|
89
|
+
export interface ServerStoryFile {
|
|
90
|
+
id: string;
|
|
91
|
+
/**
|
|
92
|
+
* Absolute path
|
|
93
|
+
*/
|
|
94
|
+
path: string;
|
|
95
|
+
/**
|
|
96
|
+
* Relative path
|
|
97
|
+
*/
|
|
98
|
+
relativePath: string;
|
|
99
|
+
/**
|
|
100
|
+
* File name without extension
|
|
101
|
+
*/
|
|
102
|
+
fileName: string;
|
|
103
|
+
/**
|
|
104
|
+
* Support plugin (Vue, Svelte, etc.)
|
|
105
|
+
*/
|
|
106
|
+
supportPluginId: string;
|
|
107
|
+
/**
|
|
108
|
+
* Generated path for tree UI
|
|
109
|
+
*/
|
|
110
|
+
treePath?: string[];
|
|
111
|
+
/**
|
|
112
|
+
* Use the module id in imports to allow HMR
|
|
113
|
+
*/
|
|
114
|
+
moduleId: string;
|
|
115
|
+
/**
|
|
116
|
+
* Resolved story data from story file execution
|
|
117
|
+
*/
|
|
118
|
+
story?: ServerStory;
|
|
119
|
+
/**
|
|
120
|
+
* Data sent to user tree config functions
|
|
121
|
+
*/
|
|
122
|
+
treeFile?: ServerTreeFile;
|
|
123
|
+
/**
|
|
124
|
+
* Is virtual module
|
|
125
|
+
*/
|
|
126
|
+
virtual?: boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Virtual module code
|
|
129
|
+
*/
|
|
130
|
+
moduleCode?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Related markdown docs
|
|
133
|
+
*/
|
|
134
|
+
markdownFile?: ServerMarkdownFile;
|
|
135
|
+
}
|
|
136
|
+
export interface ServerMarkdownFile {
|
|
137
|
+
id: string;
|
|
138
|
+
relativePath: string;
|
|
139
|
+
absolutePath: string;
|
|
140
|
+
isRelatedToStory: boolean;
|
|
141
|
+
frontmatter?: any;
|
|
142
|
+
html?: string;
|
|
143
|
+
content?: string;
|
|
144
|
+
storyFile?: ServerStoryFile;
|
|
145
|
+
}
|
|
146
|
+
export interface ServerStory {
|
|
147
|
+
id: string;
|
|
148
|
+
title: string;
|
|
149
|
+
group?: string;
|
|
150
|
+
variants: ServerVariant[];
|
|
151
|
+
layout?: StoryLayout;
|
|
152
|
+
icon?: string;
|
|
153
|
+
iconColor?: string;
|
|
154
|
+
docsOnly?: boolean;
|
|
155
|
+
docsText?: string;
|
|
156
|
+
meta?: StoryMeta;
|
|
157
|
+
}
|
|
158
|
+
export interface ServerVariant {
|
|
159
|
+
id: string;
|
|
160
|
+
title: string;
|
|
161
|
+
icon?: string;
|
|
162
|
+
iconColor?: string;
|
|
163
|
+
meta?: VariantMeta;
|
|
164
|
+
}
|
|
165
|
+
export interface ServerTreeFile {
|
|
166
|
+
title: string;
|
|
167
|
+
path: string;
|
|
168
|
+
}
|
|
169
|
+
export interface ServerTreeLeaf {
|
|
170
|
+
title: string;
|
|
171
|
+
index: number;
|
|
172
|
+
}
|
|
173
|
+
export interface ServerTreeFolder {
|
|
174
|
+
title: string;
|
|
175
|
+
children: (ServerTreeFolder | ServerTreeLeaf)[];
|
|
176
|
+
}
|
|
177
|
+
export interface ServerTreeGroup {
|
|
178
|
+
group: true;
|
|
179
|
+
id: string;
|
|
180
|
+
title: string;
|
|
181
|
+
children: (ServerTreeFolder | ServerTreeLeaf)[];
|
|
182
|
+
}
|
|
183
|
+
export type ServerTree = (ServerTreeGroup | ServerTreeFolder | ServerTreeLeaf)[];
|
|
184
|
+
export interface ServerRunPayload {
|
|
185
|
+
file: ServerStoryFile;
|
|
186
|
+
storyData: ServerStory[];
|
|
187
|
+
el: HTMLElement;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=story.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/types/story.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@poveste/shared",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "Shared utilities for Poveste",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Sorin Gitlan"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"repository": {
|
|
11
|
+
"url": "https://github.com/poveste-dev/poveste.git",
|
|
12
|
+
"type": "git",
|
|
13
|
+
"directory": "packages/poveste-shared"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"sideEffects": false,
|
|
19
|
+
"exports": {
|
|
20
|
+
".": "./dist/index.js",
|
|
21
|
+
"./*": "./*",
|
|
22
|
+
"./client-node": "./dist/client/server/run.js"
|
|
23
|
+
},
|
|
24
|
+
"main": "./dist/index.js",
|
|
25
|
+
"module": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"vite": "^7.0.0 || ^8.0.0"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@types/fs-extra": "^11.0.4",
|
|
32
|
+
"@types/markdown-it": "^14.1.2",
|
|
33
|
+
"chokidar": "^4.0.1",
|
|
34
|
+
"pathe": "^1.1.2",
|
|
35
|
+
"picocolors": "^1.1.1",
|
|
36
|
+
"@poveste/vendors": "^0.1.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"typescript": "5.6.3",
|
|
40
|
+
"vite": "^7.3.0"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "rimraf dist && tsc",
|
|
44
|
+
"watch": "tsc -w --sourceMap"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
const KEY_ESCAPE_REG = /[\s\-.:|#@$£*%]/
|
|
2
|
+
const MAX_SINGLE_LINE_ARRAY_LENGTH = 3
|
|
3
|
+
|
|
4
|
+
interface Line {
|
|
5
|
+
spaces: number
|
|
6
|
+
line: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function serializeJs(value: any): string {
|
|
10
|
+
const seen = new Set()
|
|
11
|
+
|
|
12
|
+
if (value === undefined) {
|
|
13
|
+
return 'undefined'
|
|
14
|
+
}
|
|
15
|
+
if (value === null) {
|
|
16
|
+
return 'null'
|
|
17
|
+
}
|
|
18
|
+
if (typeof value === 'string') {
|
|
19
|
+
return `'${value}'`
|
|
20
|
+
}
|
|
21
|
+
if (typeof value === 'boolean') {
|
|
22
|
+
return value ? 'true' : 'false'
|
|
23
|
+
}
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return printLines(arrayToSourceLines(value, seen))
|
|
26
|
+
}
|
|
27
|
+
if (typeof value === 'object') {
|
|
28
|
+
return printLines(objectToSourceLines(value, seen))
|
|
29
|
+
}
|
|
30
|
+
if (value?.__autoBuildingObject) {
|
|
31
|
+
return value
|
|
32
|
+
}
|
|
33
|
+
if (typeof value === 'function' && value.name) {
|
|
34
|
+
return value.name
|
|
35
|
+
}
|
|
36
|
+
return value.toString()
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function printLines(lines: Line[]) {
|
|
40
|
+
return lines.map(line => ' '.repeat(line.spaces) + line.line).join('\n')
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function objectToSourceLines(object, seen: Set<unknown>, indentCount = 0) {
|
|
44
|
+
if (seen.has(object)) {
|
|
45
|
+
object = {}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
seen.add(object)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return createLines(indentCount, (lines) => {
|
|
52
|
+
lines.push('{')
|
|
53
|
+
lines.push(...createLines(1, (lines) => {
|
|
54
|
+
for (const key in object) {
|
|
55
|
+
const value = object[key]
|
|
56
|
+
|
|
57
|
+
let printedKey = key
|
|
58
|
+
if (KEY_ESCAPE_REG.test(key)) {
|
|
59
|
+
printedKey = `'${printedKey}'`
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
addLinesFromValue(lines, value, `${printedKey}: `, ',', seen)
|
|
63
|
+
}
|
|
64
|
+
}))
|
|
65
|
+
lines.push('}')
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function arrayToSourceLines(array: any[], seen: Set<unknown>, indentCount = 0): Array<Line> {
|
|
70
|
+
if (seen.has(array)) {
|
|
71
|
+
array = []
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
seen.add(array)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return createLines(indentCount, (lines) => {
|
|
78
|
+
const contentLines = createLines(1, (lines) => {
|
|
79
|
+
for (const value of array) {
|
|
80
|
+
addLinesFromValue(lines, value, '', ',', seen)
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
if (contentLines.length === 0) {
|
|
84
|
+
lines.push('[]')
|
|
85
|
+
}
|
|
86
|
+
else if (contentLines.length <= MAX_SINGLE_LINE_ARRAY_LENGTH && !contentLines.some(line => line.spaces > 1)) {
|
|
87
|
+
const [first] = contentLines
|
|
88
|
+
first.line = contentLines.map(({ line }) => line.substring(0, line.length - 1)).join(', ')
|
|
89
|
+
first.line = `[${first.line}]`
|
|
90
|
+
first.spaces--
|
|
91
|
+
lines.push(first)
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
lines.push('[', ...contentLines, ']')
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function createLines(indentCount: number, handler: (lines: any[]) => unknown): Array<Line> {
|
|
100
|
+
const lines: any[] = []
|
|
101
|
+
handler(lines)
|
|
102
|
+
return lines.map((line) => {
|
|
103
|
+
if (line.spaces != null) {
|
|
104
|
+
line.spaces += indentCount
|
|
105
|
+
return line
|
|
106
|
+
}
|
|
107
|
+
return { spaces: indentCount, line }
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function addLinesFromValue(lines: Line[], value, before, after, seen) {
|
|
112
|
+
let result
|
|
113
|
+
if (Array.isArray(value)) {
|
|
114
|
+
lines.push(...wrap(arrayToSourceLines(value, seen), before, after))
|
|
115
|
+
return
|
|
116
|
+
}
|
|
117
|
+
else if (value && typeof value === 'object') {
|
|
118
|
+
lines.push(...wrap(objectToSourceLines(value, seen), before, after))
|
|
119
|
+
return
|
|
120
|
+
}
|
|
121
|
+
else if (typeof value === 'string') {
|
|
122
|
+
result = value.includes('\'') ? `\`${value}\`` : `'${value}'`
|
|
123
|
+
}
|
|
124
|
+
else if (typeof value === 'undefined') {
|
|
125
|
+
result = 'undefined'
|
|
126
|
+
}
|
|
127
|
+
else if (value === null) {
|
|
128
|
+
result = 'null'
|
|
129
|
+
}
|
|
130
|
+
else if (typeof value === 'boolean') {
|
|
131
|
+
result = value ? 'true' : 'false'
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
result = value
|
|
135
|
+
}
|
|
136
|
+
lines.push(before + result + after)
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function wrap(lines: Line[], before: string, after: string) {
|
|
140
|
+
lines[0].line = before + lines[0].line
|
|
141
|
+
lines[lines.length - 1].line += after
|
|
142
|
+
return lines
|
|
143
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export function indent(lines: string[], count = 1) {
|
|
2
|
+
return lines.map(line => `${' '.repeat(count)}${line}`)
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export function unindent(code: string) {
|
|
6
|
+
const lines = code.split('\n')
|
|
7
|
+
let indentLevel = -1
|
|
8
|
+
let indentText: string
|
|
9
|
+
const linesToAnalyze = lines.filter(line => line.trim().length > 0)
|
|
10
|
+
for (const line of linesToAnalyze) {
|
|
11
|
+
const match = /^\s*/.exec(line)
|
|
12
|
+
if (match && (indentLevel === -1 || indentLevel > match[0].length)) {
|
|
13
|
+
indentLevel = match[0].length
|
|
14
|
+
indentText = match[0]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const result: string[] = []
|
|
18
|
+
for (const line of lines) {
|
|
19
|
+
result.push(line.replace(indentText, ''))
|
|
20
|
+
}
|
|
21
|
+
return result.join('\n').trim()
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface AutoBuildingOject {
|
|
25
|
+
key: string
|
|
26
|
+
cache: Record<string | symbol, AutoBuildingOject>
|
|
27
|
+
target: any
|
|
28
|
+
proxy: any
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function createAutoBuildingObject(format?: (key: string) => string, specialKeysHandler?: (target: any, p: string | symbol) => (() => unknown) | null, key = '', depth = 0): AutoBuildingOject {
|
|
32
|
+
const cache: Record<string | symbol, AutoBuildingOject> = {}
|
|
33
|
+
if (depth > 32) return { key, cache, target: {}, proxy: () => key }
|
|
34
|
+
const target: any = () => {
|
|
35
|
+
const k = `${key}()`
|
|
36
|
+
return format ? format(k) : k
|
|
37
|
+
}
|
|
38
|
+
const proxy = new Proxy(target, {
|
|
39
|
+
get(_, p) {
|
|
40
|
+
if (p === '__autoBuildingObject') {
|
|
41
|
+
return true
|
|
42
|
+
}
|
|
43
|
+
if (p === '__autoBuildingObjectGetKey') {
|
|
44
|
+
return key
|
|
45
|
+
}
|
|
46
|
+
if (specialKeysHandler) {
|
|
47
|
+
const fn = specialKeysHandler(target, p)
|
|
48
|
+
if (fn) {
|
|
49
|
+
return fn()
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (p === 'toString') {
|
|
53
|
+
const k = `${key}.toString()`
|
|
54
|
+
return () => format ? format(k) : k
|
|
55
|
+
}
|
|
56
|
+
if (p === Symbol.toPrimitive) {
|
|
57
|
+
return () => format ? format(key) : key
|
|
58
|
+
}
|
|
59
|
+
if (!cache[p]) {
|
|
60
|
+
const childKey = key ? `${key}.${p.toString()}` : p.toString()
|
|
61
|
+
const child = createAutoBuildingObject(format, specialKeysHandler, childKey, depth + 1)
|
|
62
|
+
cache[p] = { key: childKey, ...child }
|
|
63
|
+
}
|
|
64
|
+
return cache[p].proxy
|
|
65
|
+
},
|
|
66
|
+
apply(_, thisArg, args) {
|
|
67
|
+
const k = `${key}(${args.join(', ')})`
|
|
68
|
+
return format ? format(k) : k
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
return {
|
|
72
|
+
key,
|
|
73
|
+
cache,
|
|
74
|
+
target,
|
|
75
|
+
proxy,
|
|
76
|
+
}
|
|
77
|
+
}
|