@knapsack/renderer-webpack-base 4.69.14--canary.4821.246c5f4.0 → 4.69.15--canary.4433.ca0920f.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +31 -0
- package/dist/client/index.d.mts +1 -1
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/renderer-webpack-client.d.mts +70 -12
- package/dist/client/renderer-webpack-client.d.mts.map +1 -1
- package/dist/client/renderer-webpack-client.mjs +111 -89
- package/dist/client/renderer-webpack-client.mjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/renderer-webpack-base.d.ts +58 -23
- package/dist/renderer-webpack-base.d.ts.map +1 -1
- package/dist/renderer-webpack-base.js +224 -150
- package/dist/renderer-webpack-base.js.map +1 -1
- package/dist/types.d.ts +23 -41
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -11
- package/dist/utils.d.ts +0 -3
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -8
- package/dist/utils.js.map +0 -1
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,34 @@
|
|
1
|
+
# v4.69.14 (Fri Sep 27 2024)
|
2
|
+
|
3
|
+
#### 🏠 Internal
|
4
|
+
|
5
|
+
- spec docs uses collapse instead of accordion [#4862](https://github.com/knapsack-labs/app-monorepo/pull/4862) ([@GormanDesign](https://github.com/GormanDesign))
|
6
|
+
|
7
|
+
#### Authors: 1
|
8
|
+
|
9
|
+
- Matt Gorman ([@GormanDesign](https://github.com/GormanDesign))
|
10
|
+
|
11
|
+
---
|
12
|
+
|
13
|
+
# v4.69.13 (Thu Sep 26 2024)
|
14
|
+
|
15
|
+
#### 🐛 Bug Fix
|
16
|
+
|
17
|
+
- update design src user flow to be async [#4739](https://github.com/knapsack-labs/app-monorepo/pull/4739) ([@mabry1985](https://github.com/mabry1985))
|
18
|
+
- Merge branch 'latest' into feature/ksp-5512-create-add-design-src-file-async-mutation ([@mabry1985](https://github.com/mabry1985))
|
19
|
+
|
20
|
+
#### 🏠 Internal
|
21
|
+
|
22
|
+
- improve Renderer clients [#4770](https://github.com/knapsack-labs/app-monorepo/pull/4770) ([@EvanLovely](https://github.com/EvanLovely))
|
23
|
+
- refactors user flow for updating design src files [#4769](https://github.com/knapsack-labs/app-monorepo/pull/4769) ([@mabry1985](https://github.com/mabry1985))
|
24
|
+
|
25
|
+
#### Authors: 2
|
26
|
+
|
27
|
+
- Evan Lovely ([@EvanLovely](https://github.com/EvanLovely))
|
28
|
+
- Josh Mabry ([@mabry1985](https://github.com/mabry1985))
|
29
|
+
|
30
|
+
---
|
31
|
+
|
1
32
|
# v4.69.12 (Thu Sep 26 2024)
|
2
33
|
|
3
34
|
#### 🐛 Bug Fix
|
package/dist/client/index.d.mts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/client/index.mts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/client/index.mts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
@@ -1,20 +1,78 @@
|
|
1
|
-
import
|
2
|
-
|
1
|
+
import { KsRendererClientMeta } from '@knapsack/types';
|
2
|
+
import { RendererMetaBase } from '../types.js';
|
3
|
+
type ImportedModules<ExportedComponentType> = {
|
4
|
+
[id: string]: () => Promise<EsModuleObject<ExportedComponentType>>;
|
5
|
+
};
|
6
|
+
/** The result of `import`-ing a module */
|
7
|
+
type EsModuleObject<ExportedType = unknown> = {
|
8
|
+
default?: ExportedType;
|
9
|
+
[key: string]: ExportedType;
|
10
|
+
};
|
11
|
+
type GetKsJsImportParam = {
|
12
|
+
type: 'pattern-template';
|
13
|
+
patternId: string;
|
14
|
+
templateId: string;
|
15
|
+
} | {
|
16
|
+
type: 'pattern-template-demo';
|
17
|
+
patternId: string;
|
18
|
+
templateId: string;
|
19
|
+
demoId: string;
|
20
|
+
} | {
|
21
|
+
type: 'extra';
|
22
|
+
name: string;
|
23
|
+
};
|
24
|
+
type GetKsJsImportPatternParam = {
|
25
|
+
patternId: string;
|
26
|
+
templateId: string;
|
27
|
+
demoId?: string;
|
28
|
+
};
|
29
|
+
/**
|
30
|
+
* This is `window.knapsack` inside the renderer client: the iframe container for renderer components
|
31
|
+
*/
|
32
|
+
export interface KsRendererClientGlobal<ExportedComponentType = unknown, RendererMetaType extends RendererMetaBase = RendererMetaBase, RendererMethods extends Record<string, unknown> = Record<string, unknown>> {
|
33
|
+
typeName: 'KsRendererClientGlobal';
|
34
|
+
importedModules: ImportedModules<ExportedComponentType>;
|
35
|
+
rendererMeta: RendererMetaType;
|
36
|
+
rendererMethods: RendererMethods;
|
37
|
+
meta: KsRendererClientMeta;
|
38
|
+
getImport: (opt: GetKsJsImportParam) => Promise<{
|
39
|
+
name: string;
|
40
|
+
/** Most likely a component */
|
41
|
+
value: ExportedComponentType;
|
42
|
+
}>;
|
43
|
+
getImports: (imports: GetKsJsImportParam[]) => Promise<{
|
44
|
+
[importName: string]: ExportedComponentType;
|
45
|
+
}>;
|
46
|
+
getPatternImport: (opt: GetKsJsImportPatternParam) => Promise<{
|
47
|
+
name: string;
|
48
|
+
/** Most likely a component */
|
49
|
+
value: ExportedComponentType;
|
50
|
+
}>;
|
51
|
+
getExtraImport: (opt: {
|
52
|
+
name: string;
|
53
|
+
}) => Promise<{
|
54
|
+
name: string;
|
55
|
+
/** Most likely a component */
|
56
|
+
value: ExportedComponentType;
|
57
|
+
}>;
|
58
|
+
getAllImports: (opt: {
|
59
|
+
patterns: GetKsJsImportPatternParam[];
|
60
|
+
extras?: {
|
61
|
+
name: string;
|
62
|
+
}[];
|
63
|
+
}) => Promise<{
|
64
|
+
[importName: string]: ExportedComponentType;
|
65
|
+
}>;
|
66
|
+
}
|
67
|
+
export declare function getKsRendererClientGlobal<ExportedComponentType, RendererMetaType extends RendererMetaBase,
|
3
68
|
/**
|
4
69
|
* Any extra properties or methods placed on the window.knapsack object by the renderer in a `<script>` tag
|
5
70
|
*/
|
6
|
-
RendererMethods extends Record<string, unknown>>({ rendererMetaScriptTagId
|
71
|
+
RendererMethods extends Record<string, unknown>>({ rendererMetaScriptTagId }: {
|
7
72
|
rendererMetaScriptTagId: string;
|
8
|
-
|
9
|
-
imp: unknown;
|
10
|
-
importInfo: KsJsImportInfo;
|
11
|
-
}) => void;
|
12
|
-
assertExtraImport?: (opt: {
|
13
|
-
imp: unknown;
|
14
|
-
importInfo: KsJsImportInfo;
|
15
|
-
}) => void;
|
16
|
-
}): KsRendererClientUtils<ExportedComponentType, RendererMetaType, RendererMethods>;
|
73
|
+
}): KsRendererClientGlobal<ExportedComponentType, RendererMetaType, RendererMethods>;
|
17
74
|
export declare function showUiToastMsg({ msg }: {
|
18
75
|
msg: string;
|
19
76
|
}): void;
|
77
|
+
export {};
|
20
78
|
//# sourceMappingURL=renderer-webpack-client.d.mts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"renderer-webpack-client.d.mts","sourceRoot":"","sources":["../../src/client/renderer-webpack-client.mts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"renderer-webpack-client.d.mts","sourceRoot":"","sources":["../../src/client/renderer-webpack-client.mts"],"names":[],"mappings":"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"}
|
@@ -4,57 +4,19 @@ const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'u
|
|
4
4
|
if (!isBrowser) {
|
5
5
|
throw new Error('Cannot get KsRendererClientGlobal in a non-browser environment');
|
6
6
|
}
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
allImports[name] = component;
|
18
|
-
};
|
19
|
-
switch (importInfo.type) {
|
20
|
-
case 'named': {
|
21
|
-
const { name } = importInfo;
|
22
|
-
const component = mod[name];
|
23
|
-
if (!component) {
|
24
|
-
throw new Error(`No named export, ${name}, found for "${importInfo.path}"`);
|
25
|
-
}
|
26
|
-
addImport({ component, name });
|
27
|
-
break;
|
28
|
-
}
|
29
|
-
case 'default': {
|
30
|
-
const { name } = importInfo;
|
31
|
-
if (mod.default) {
|
32
|
-
addImport({ component: mod.default, name });
|
33
|
-
}
|
34
|
-
else if (typeof mod === 'function') {
|
35
|
-
addImport({ component: mod, name });
|
36
|
-
}
|
37
|
-
else {
|
38
|
-
throw new Error(`No default export found for "${importInfo.path}"`);
|
39
|
-
}
|
40
|
-
break;
|
41
|
-
}
|
42
|
-
case 'renamed': {
|
43
|
-
const { name, originalName } = importInfo;
|
44
|
-
const item = mod[originalName];
|
45
|
-
if (!item) {
|
46
|
-
throw new Error(`No renamed export, ${originalName}, found for "${importInfo.path}"`);
|
47
|
-
}
|
48
|
-
addImport({ component: item, name });
|
49
|
-
break;
|
50
|
-
}
|
51
|
-
default: {
|
52
|
-
const _exhaustiveCheck = importInfo;
|
53
|
-
throw new Error(`Unknown import type: "${JSON.stringify(importInfo)}"`);
|
54
|
-
}
|
7
|
+
const createErrorName = (opt) => {
|
8
|
+
switch (opt.type) {
|
9
|
+
case 'extra':
|
10
|
+
return `Extra "${opt.name}"`;
|
11
|
+
case 'pattern-template':
|
12
|
+
return `pattern "${opt.patternId}", template "${opt.templateId}"`;
|
13
|
+
case 'pattern-template-demo':
|
14
|
+
return `pattern "${opt.patternId}", template "${opt.templateId}", demo "${opt.demoId}"`;
|
15
|
+
default:
|
16
|
+
return JSON.stringify(opt);
|
55
17
|
}
|
56
|
-
}
|
57
|
-
export function
|
18
|
+
};
|
19
|
+
export function getKsRendererClientGlobal({ rendererMetaScriptTagId }) {
|
58
20
|
if (!isObject(window?.knapsack)) {
|
59
21
|
throw new Error(`Could not find "window.knapsack"`);
|
60
22
|
}
|
@@ -64,58 +26,118 @@ export function getKsRendererClientUtils({ rendererMetaScriptTagId, assertImport
|
|
64
26
|
}
|
65
27
|
const meta = getJsonFromScriptTag(ksRendererClientMetaId);
|
66
28
|
const rendererMeta = getJsonFromScriptTag(rendererMetaScriptTagId);
|
67
|
-
const
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
const getModule = importedModules[path];
|
72
|
-
if (!getModule) {
|
73
|
-
throw new Error(`No "${path}" module found for "${path}"`);
|
29
|
+
const findImport = (opt) => {
|
30
|
+
return rendererMeta.neededImports.find((imp) => {
|
31
|
+
if (imp.type === 'pattern-template' && opt.type === 'pattern-template') {
|
32
|
+
return (opt.patternId === imp.patternId && opt.templateId === imp.templateId);
|
74
33
|
}
|
75
|
-
|
76
|
-
|
77
|
-
|
34
|
+
if (imp.type === 'pattern-template-demo' &&
|
35
|
+
opt.type === 'pattern-template-demo') {
|
36
|
+
return (opt.patternId === imp.patternId &&
|
37
|
+
opt.templateId === imp.templateId &&
|
38
|
+
opt.demoId === imp.demoId);
|
78
39
|
}
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
assertImport,
|
85
|
-
});
|
86
|
-
});
|
87
|
-
}));
|
88
|
-
return neededImports;
|
40
|
+
if (imp.type === 'extra' && opt.type === 'extra') {
|
41
|
+
return opt.name === imp.importInfo.name;
|
42
|
+
}
|
43
|
+
return false;
|
44
|
+
});
|
89
45
|
};
|
90
|
-
const
|
91
|
-
const
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
46
|
+
const getImport = async (opt) => {
|
47
|
+
const theImport = findImport(opt);
|
48
|
+
if (!theImport) {
|
49
|
+
throw new Error(`No import found for ${createErrorName(opt)}`);
|
50
|
+
}
|
51
|
+
const { importInfo } = theImport;
|
52
|
+
const getModule = importedModules[importInfo.path];
|
53
|
+
if (!getModule) {
|
54
|
+
throw new Error(`No "${importInfo.path}" module found for ${JSON.stringify(opt)}`);
|
55
|
+
}
|
56
|
+
const mod = await getModule();
|
57
|
+
if (!mod) {
|
58
|
+
throw new Error(`No module found for ${JSON.stringify(opt)}`);
|
59
|
+
}
|
60
|
+
switch (importInfo.type) {
|
61
|
+
case 'all':
|
62
|
+
return {
|
63
|
+
value: mod,
|
64
|
+
name: importInfo.name,
|
65
|
+
};
|
66
|
+
case 'default': {
|
67
|
+
const item = mod.default;
|
68
|
+
if (!item) {
|
69
|
+
throw new Error(`No default export found for ${JSON.stringify(opt)}`);
|
70
|
+
}
|
71
|
+
return {
|
72
|
+
value: item,
|
73
|
+
name: importInfo.name,
|
74
|
+
};
|
75
|
+
}
|
76
|
+
case 'named': {
|
77
|
+
const { name } = importInfo;
|
78
|
+
const item = mod[name];
|
79
|
+
if (!item) {
|
80
|
+
throw new Error(`No named export, ${name}, found for ${JSON.stringify(opt)}`);
|
81
|
+
}
|
82
|
+
return {
|
83
|
+
value: item,
|
84
|
+
name,
|
85
|
+
};
|
96
86
|
}
|
97
|
-
|
98
|
-
|
99
|
-
throw new Error(`No module found for "${importInfo.path}"`);
|
87
|
+
default: {
|
88
|
+
throw new Error(`Unknown import type`);
|
100
89
|
}
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
90
|
+
}
|
91
|
+
};
|
92
|
+
const getPatternImport = async ({ patternId, templateId, demoId, }) => {
|
93
|
+
if (demoId) {
|
94
|
+
return getImport({
|
95
|
+
type: 'pattern-template-demo',
|
96
|
+
patternId,
|
97
|
+
templateId,
|
98
|
+
demoId,
|
106
99
|
});
|
107
|
-
}
|
108
|
-
return
|
100
|
+
}
|
101
|
+
return getImport({
|
102
|
+
type: 'pattern-template',
|
103
|
+
patternId,
|
104
|
+
templateId,
|
105
|
+
});
|
109
106
|
};
|
107
|
+
const getExtraImport = async ({ name, }) => getImport({ type: 'extra', name });
|
110
108
|
const knapsack = {
|
109
|
+
typeName: 'KsRendererClientGlobal',
|
111
110
|
importedModules,
|
112
111
|
meta,
|
113
112
|
rendererMeta,
|
114
113
|
rendererMethods,
|
115
|
-
|
116
|
-
|
114
|
+
getImport,
|
115
|
+
getPatternImport,
|
116
|
+
getExtraImport,
|
117
|
+
getAllImports: async ({ patterns, extras = [] }) => {
|
118
|
+
const imported = await Promise.all([
|
119
|
+
...patterns.map(getPatternImport),
|
120
|
+
...extras.map(getExtraImport),
|
121
|
+
]);
|
122
|
+
return imported.reduce((cur, { name, value }) => {
|
123
|
+
if (cur[name]) {
|
124
|
+
throw new Error(`Duplicate import name: ${name}`);
|
125
|
+
}
|
126
|
+
cur[name] = value;
|
127
|
+
return cur;
|
128
|
+
}, {});
|
129
|
+
},
|
130
|
+
getImports: async (importsToGet) => {
|
131
|
+
const imported = await Promise.all(importsToGet.map(getImport));
|
132
|
+
return imported.reduce((cur, { name, value }) => {
|
133
|
+
if (cur[name]) {
|
134
|
+
throw new Error(`Duplicate import name: ${name}`);
|
135
|
+
}
|
136
|
+
cur[name] = value;
|
137
|
+
return cur;
|
138
|
+
}, {});
|
139
|
+
},
|
117
140
|
};
|
118
|
-
window.knapsack = knapsack;
|
119
141
|
return knapsack;
|
120
142
|
}
|
121
143
|
export function showUiToastMsg({ msg }) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"renderer-webpack-client.mjs","sourceRoot":"","sources":["../../src/client/renderer-webpack-client.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAER,sBAAsB,GAEvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"renderer-webpack-client.mjs","sourceRoot":"","sources":["../../src/client/renderer-webpack-client.mts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
@@ -16,5 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
__exportStar(require("./renderer-webpack-base"), exports);
|
18
18
|
__exportStar(require("./types"), exports);
|
19
|
-
__exportStar(require("./utils"), exports);
|
20
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,0CAAwB
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,0CAAwB"}
|
@@ -1,28 +1,49 @@
|
|
1
1
|
import { RendererId } from '@knapsack/types';
|
2
|
-
import {
|
2
|
+
import { RendererBase, type Renderable } from '@knapsack/app/renderers';
|
3
3
|
import { Configuration as WebpackConfig } from 'webpack';
|
4
|
-
import {
|
5
|
-
export declare abstract class RendererWebpackBase extends RendererBase
|
4
|
+
import { KsJsImport } from './types';
|
5
|
+
export declare abstract class RendererWebpackBase extends RendererBase {
|
6
6
|
#private;
|
7
7
|
private webpack;
|
8
8
|
private webpackConfig;
|
9
9
|
private webpackCompiler;
|
10
10
|
private extraScripts;
|
11
11
|
private entryFilePath;
|
12
|
-
constructor({ id, language, webpackConfig, extraScripts,
|
12
|
+
constructor({ id, extension, language, webpackConfig, extraScripts, }: {
|
13
13
|
id: RendererId;
|
14
|
+
extension: string;
|
14
15
|
language: string;
|
15
16
|
webpackConfig?: WebpackConfig;
|
16
17
|
extraScripts?: string[];
|
17
|
-
codeSrcs: string[];
|
18
18
|
});
|
19
|
-
|
20
|
-
hydrate(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
19
|
+
init(opt: Parameters<RendererBase['init']>[0]): Promise<void>;
|
20
|
+
hydrate(opt: Parameters<RendererBase['hydrate']>[0]): Promise<void>;
|
21
|
+
/**
|
22
|
+
* @see {getJsImport} for types "pattern-template" and "pattern-template-demo"
|
23
|
+
* @see {getJsImportExtra} for type "extra"
|
24
|
+
*/
|
25
|
+
getJsImports(): KsJsImport[];
|
26
|
+
/**
|
27
|
+
* @see {getJsImports} for all
|
28
|
+
* @see {getJsImportExtra} for type "extra"
|
29
|
+
*/
|
30
|
+
getJsImport({ patternId, templateId, demoId, }: {
|
31
|
+
patternId: string;
|
32
|
+
templateId: string;
|
33
|
+
demoId?: string;
|
34
|
+
}): Exclude<KsJsImport, {
|
35
|
+
type: 'extra';
|
36
|
+
}>;
|
37
|
+
/**
|
38
|
+
* @see {getJsImports} for all
|
39
|
+
* @see {getJsImport} for types "pattern-template" and "pattern-template-demo"
|
40
|
+
*/
|
41
|
+
getJsImportExtra({ name, }: {
|
42
|
+
name: string;
|
43
|
+
}): Extract<KsJsImport, {
|
44
|
+
type: 'extra';
|
45
|
+
}>;
|
46
|
+
private writeKsEntryFile;
|
26
47
|
get webpackVersion(): {
|
27
48
|
majorVersion: number;
|
28
49
|
isWebpack4: boolean;
|
@@ -30,29 +51,43 @@ export declare abstract class RendererWebpackBase extends RendererBase implement
|
|
30
51
|
version: string;
|
31
52
|
};
|
32
53
|
createWebpackConfig(): WebpackConfig;
|
54
|
+
private prepWebpack;
|
33
55
|
/**
|
34
56
|
* Every asset file path needed in `<script>` tags
|
35
57
|
*/
|
36
58
|
getWebpackAssetPaths(): string[];
|
37
|
-
|
59
|
+
createHtmlTagsForAssetPaths({ assets, scriptTagsAreAsync, }: {
|
38
60
|
assets: string[];
|
39
61
|
scriptTagsAreAsync: boolean;
|
40
62
|
}): string;
|
41
|
-
build:
|
63
|
+
build(): Promise<void>;
|
42
64
|
/** Starts a webpack watch, returns an object with a `.close()` method for shutting down */
|
43
65
|
private startWebpackWatch;
|
44
|
-
watch(): Promise<void>;
|
66
|
+
watch(_opt: Parameters<RendererBase['watch']>[0]): Promise<void>;
|
45
67
|
onChange(): void;
|
46
|
-
abstract getUsageAndImports(_opt: Parameters<Renderable['render']>[0]
|
47
|
-
importMap: KsJsImportMap;
|
48
|
-
}): Promise<{
|
68
|
+
abstract getUsageAndImports(_opt: Parameters<Renderable['render']>[0]): Promise<{
|
49
69
|
usage: string;
|
50
|
-
|
70
|
+
imports: KsJsImport[];
|
51
71
|
}>;
|
52
72
|
getUsage: Renderable['getUsage'];
|
53
|
-
|
54
|
-
|
55
|
-
}):
|
73
|
+
makeKsJsImportsUnique({ imports }: {
|
74
|
+
imports: KsJsImport[];
|
75
|
+
}): {
|
76
|
+
imports: KsJsImport[];
|
77
|
+
nameCollisions: string[];
|
78
|
+
/** all declared vars */
|
79
|
+
declaredVars: string[];
|
80
|
+
isDeclaredVarsUnique: boolean;
|
81
|
+
};
|
82
|
+
createJsImportCodeBlock({ imports: nonUniqueImports, }: {
|
83
|
+
imports: KsJsImport[];
|
84
|
+
}): {
|
85
|
+
code: string;
|
86
|
+
/** all declared vars */
|
87
|
+
declaredVars: string[];
|
88
|
+
isDeclaredVarsUnique: boolean;
|
89
|
+
nameCollisions: string[];
|
90
|
+
};
|
56
91
|
}
|
57
|
-
export type Renderer = Renderable & RendererWebpackBase
|
92
|
+
export type Renderer = Renderable & RendererWebpackBase;
|
58
93
|
//# sourceMappingURL=renderer-webpack-base.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"renderer-webpack-base.d.ts","sourceRoot":"","sources":["../src/renderer-webpack-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,
|
1
|
+
{"version":3,"file":"renderer-webpack-base.d.ts","sourceRoot":"","sources":["../src/renderer-webpack-base.ts"],"names":[],"mappings":"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"}
|