@ms-cloudpack/storybook-builder 0.1.8 → 0.1.10

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.
@@ -2,7 +2,7 @@ import type { Options } from '@storybook/types';
2
2
  import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
3
3
  import type { Session } from '@ms-cloudpack/api-server';
4
4
  export type PreviewHtml = string | undefined;
5
- export declare function generateIframeHtml(options: Options, appPath: string, context: {
5
+ export declare function generateIframeHtml(options: Options, context: {
6
6
  packages: PackageDefinitionsCache;
7
7
  session: Session;
8
8
  }): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"generateIFrameHtml.d.ts","sourceRoot":"","sources":["../src/generateIFrameHtml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
1
+ {"version":3,"file":"generateIFrameHtml.d.ts","sourceRoot":"","sources":["../src/generateIFrameHtml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
@@ -6,7 +6,7 @@ import path from 'path';
6
6
  import { generateModernIframeScriptCode } from './generateModernIframeScriptCode.js';
7
7
  import { generateIframeScriptCode } from './generateIframeScriptCode.js';
8
8
  let generatedIframeHtml = undefined;
9
- export async function generateIframeHtml(options, appPath, context) {
9
+ export async function generateIframeHtml(options, context) {
10
10
  const iFramePath = path.join(path.dirname(fileURLToPath(import.meta.url)), '../static/iframeTemplate.html');
11
11
  const iframeHtmlTemplate = await readFile(iFramePath, { encoding: 'utf-8' });
12
12
  const { configType, features, presets, serverChannelUrl, configDir } = options;
@@ -19,7 +19,7 @@ export async function generateIframeHtml(options, appPath, context) {
19
19
  const coreOptions = await presets.apply('core');
20
20
  const stories = normalizeStories(await presets.apply('stories', [], options), {
21
21
  configDir,
22
- workingDir: appPath,
22
+ workingDir: context.session.appPath,
23
23
  }).map((specifier) => ({
24
24
  ...specifier,
25
25
  importPathMatcher: specifier.importPathMatcher.source,
@@ -42,8 +42,8 @@ export async function generateIframeHtml(options, appPath, context) {
42
42
  .replace('<!-- [HEAD HTML SNIPPET HERE] -->', headHtmlSnippet || '')
43
43
  .replace('<!-- [BODY HTML SNIPPET HERE] -->', bodyHtmlSnippet || '')
44
44
  .replace(`('[APP MODULE SRC HERE]');`, options.features?.storyStoreV7
45
- ? await generateModernIframeScriptCode(options, appPath, context)
46
- : await generateIframeScriptCode(options, appPath, context));
45
+ ? await generateModernIframeScriptCode(options, context)
46
+ : await generateIframeScriptCode(options, context));
47
47
  return generatedIframeHtml;
48
48
  }
49
49
  //# sourceMappingURL=generateIFrameHtml.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateIFrameHtml.js","sourceRoot":"","sources":["../src/generateIFrameHtml.ts"],"names":[],"mappings":"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","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/transform-iframe-html.ts\n\nimport { normalizeStories } from '@storybook/core-common';\nimport type { CoreConfig, DocsOptions, Options } from '@storybook/types';\nimport { readFile } from 'fs/promises';\nimport { fileURLToPath } from 'url';\nimport path from 'path';\nimport { generateModernIframeScriptCode } from './generateModernIframeScriptCode.js';\nimport { generateIframeScriptCode } from './generateIframeScriptCode.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Session } from '@ms-cloudpack/api-server';\n\nlet generatedIframeHtml: string | undefined = undefined;\n\nexport type PreviewHtml = string | undefined;\n\nexport async function generateIframeHtml(\n options: Options,\n appPath: string,\n context: { packages: PackageDefinitionsCache; session: Session },\n): Promise<string> {\n const iFramePath = path.join(path.dirname(fileURLToPath(import.meta.url)), '../static/iframeTemplate.html');\n const iframeHtmlTemplate = await readFile(iFramePath, { encoding: 'utf-8' });\n const { configType, features, presets, serverChannelUrl, configDir } = options;\n const build = await presets.apply('build');\n const frameworkOptions = await presets.apply<Record<string, unknown> | null>('frameworkOptions');\n const headHtmlSnippet = await presets.apply<PreviewHtml>('previewHead');\n const bodyHtmlSnippet = await presets.apply<PreviewHtml>('previewBody');\n const logLevel = await presets.apply('logLevel', undefined);\n const docsOptions = await presets.apply<DocsOptions>('docs');\n\n const coreOptions = await presets.apply<CoreConfig>('core');\n const stories = normalizeStories(await presets.apply('stories', [], options), {\n configDir,\n workingDir: appPath,\n }).map((specifier) => ({\n ...specifier,\n importPathMatcher: specifier.importPathMatcher.source,\n }));\n\n const otherGlobals = {\n ...(build?.test?.disableBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {}),\n };\n\n generatedIframeHtml = iframeHtmlTemplate\n .replace('[CONFIG_TYPE HERE]', configType || '')\n .replace('[LOGLEVEL HERE]', logLevel || '')\n .replace(`'[FRAMEWORK_OPTIONS HERE]'`, JSON.stringify(frameworkOptions))\n .replace(\n `('OTHER_GLOBLALS HERE');`,\n Object.entries(otherGlobals)\n .map(([k, v]) => `window[\"${k}\"] = ${JSON.stringify(v)};`)\n .join(''),\n )\n .replace(\n `'[CHANNEL_OPTIONS HERE]'`,\n JSON.stringify(coreOptions && coreOptions.channelOptions ? coreOptions.channelOptions : {}),\n )\n .replace(`'[FEATURES HERE]'`, JSON.stringify(features || {}))\n .replace(`'[STORIES HERE]'`, JSON.stringify(stories || {}))\n .replace(`'[DOCS_OPTIONS HERE]'`, JSON.stringify(docsOptions || {}))\n .replace(`'[SERVER_CHANNEL_URL HERE]'`, JSON.stringify(serverChannelUrl))\n .replace('<!-- [HEAD HTML SNIPPET HERE] -->', headHtmlSnippet || '')\n .replace('<!-- [BODY HTML SNIPPET HERE] -->', bodyHtmlSnippet || '')\n .replace(\n `('[APP MODULE SRC HERE]');`,\n options.features?.storyStoreV7\n ? await generateModernIframeScriptCode(options, appPath, context)\n : await generateIframeScriptCode(options, appPath, context),\n );\n\n return generatedIframeHtml;\n}\n"]}
1
+ {"version":3,"file":"generateIFrameHtml.js","sourceRoot":"","sources":["../src/generateIFrameHtml.ts"],"names":[],"mappings":"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","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/transform-iframe-html.ts\n\nimport { normalizeStories } from '@storybook/core-common';\nimport type { CoreConfig, DocsOptions, Options } from '@storybook/types';\nimport { readFile } from 'fs/promises';\nimport { fileURLToPath } from 'url';\nimport path from 'path';\nimport { generateModernIframeScriptCode } from './generateModernIframeScriptCode.js';\nimport { generateIframeScriptCode } from './generateIframeScriptCode.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Session } from '@ms-cloudpack/api-server';\n\nlet generatedIframeHtml: string | undefined = undefined;\n\nexport type PreviewHtml = string | undefined;\n\nexport async function generateIframeHtml(\n options: Options,\n context: { packages: PackageDefinitionsCache; session: Session },\n): Promise<string> {\n const iFramePath = path.join(path.dirname(fileURLToPath(import.meta.url)), '../static/iframeTemplate.html');\n const iframeHtmlTemplate = await readFile(iFramePath, { encoding: 'utf-8' });\n const { configType, features, presets, serverChannelUrl, configDir } = options;\n const build = await presets.apply('build');\n const frameworkOptions = await presets.apply<Record<string, unknown> | null>('frameworkOptions');\n const headHtmlSnippet = await presets.apply<PreviewHtml>('previewHead');\n const bodyHtmlSnippet = await presets.apply<PreviewHtml>('previewBody');\n const logLevel = await presets.apply('logLevel', undefined);\n const docsOptions = await presets.apply<DocsOptions>('docs');\n\n const coreOptions = await presets.apply<CoreConfig>('core');\n const stories = normalizeStories(await presets.apply('stories', [], options), {\n configDir,\n workingDir: context.session.appPath,\n }).map((specifier) => ({\n ...specifier,\n importPathMatcher: specifier.importPathMatcher.source,\n }));\n\n const otherGlobals = {\n ...(build?.test?.disableBlocks ? { __STORYBOOK_BLOCKS_EMPTY_MODULE__: {} } : {}),\n };\n\n generatedIframeHtml = iframeHtmlTemplate\n .replace('[CONFIG_TYPE HERE]', configType || '')\n .replace('[LOGLEVEL HERE]', logLevel || '')\n .replace(`'[FRAMEWORK_OPTIONS HERE]'`, JSON.stringify(frameworkOptions))\n .replace(\n `('OTHER_GLOBLALS HERE');`,\n Object.entries(otherGlobals)\n .map(([k, v]) => `window[\"${k}\"] = ${JSON.stringify(v)};`)\n .join(''),\n )\n .replace(\n `'[CHANNEL_OPTIONS HERE]'`,\n JSON.stringify(coreOptions && coreOptions.channelOptions ? coreOptions.channelOptions : {}),\n )\n .replace(`'[FEATURES HERE]'`, JSON.stringify(features || {}))\n .replace(`'[STORIES HERE]'`, JSON.stringify(stories || {}))\n .replace(`'[DOCS_OPTIONS HERE]'`, JSON.stringify(docsOptions || {}))\n .replace(`'[SERVER_CHANNEL_URL HERE]'`, JSON.stringify(serverChannelUrl))\n .replace('<!-- [HEAD HTML SNIPPET HERE] -->', headHtmlSnippet || '')\n .replace('<!-- [BODY HTML SNIPPET HERE] -->', bodyHtmlSnippet || '')\n .replace(\n `('[APP MODULE SRC HERE]');`,\n options.features?.storyStoreV7\n ? await generateModernIframeScriptCode(options, context)\n : await generateIframeScriptCode(options, context),\n );\n\n return generatedIframeHtml;\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import type { Options } from '@storybook/types';
2
2
  import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
3
- export declare function generateIframeScriptCode(options: Options, appPath: string, context: {
3
+ import type { Session } from '@ms-cloudpack/api-server';
4
+ export declare function generateIframeScriptCode(options: Options, context: {
4
5
  packages: PackageDefinitionsCache;
6
+ session: Session;
5
7
  }): Promise<string>;
6
8
  //# sourceMappingURL=generateIframeScriptCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateIframeScriptCode.d.ts","sourceRoot":"","sources":["../src/generateIframeScriptCode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAInE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAG3E,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAA;CAAE,mBAwG/C"}
1
+ {"version":3,"file":"generateIframeScriptCode.d.ts","sourceRoot":"","sources":["../src/generateIframeScriptCode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAInE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,mBAwGjE"}
@@ -4,11 +4,11 @@ import { processPreviewAnnotation } from './utils/processPreviewAnnotation.js';
4
4
  import { generatePreviewEntryCode } from './generatePreviewEntryCode.js';
5
5
  import { generateVirtualStoryEntryCode } from './generateVirtualStoryEntryCode.js';
6
6
  // TODO: Work in progress, not needed right now as it is not part of storyStoreV7.
7
- export async function generateIframeScriptCode(options, appPath, context) {
7
+ export async function generateIframeScriptCode(options, context) {
8
8
  const { presets } = options;
9
9
  const rendererName = await getRendererName(options);
10
10
  const previewAnnotations = await presets.apply('previewAnnotations', [], options);
11
- const configEntries = await Promise.all([...previewAnnotations].filter(Boolean).map((path) => processPreviewAnnotation(path, appPath, context)));
11
+ const configEntries = await Promise.all([...previewAnnotations].filter(Boolean).map((path) => processPreviewAnnotation(path, context)));
12
12
  const filesToImport = (files, name) => files.map((el, i) => `import ${name ? `* as ${name}_${i} from ` : ''}'${el}'`).join('\n');
13
13
  const importArray = (name, length) => new Array(length).fill(0).map((_, i) => `${name}_${i}`);
14
14
  // noinspection UnnecessaryLocalVariableJS
@@ -24,7 +24,7 @@ export async function generateIframeScriptCode(options, appPath, context) {
24
24
  ${filesToImport(configEntries, 'config')}
25
25
 
26
26
  ${generatePreviewEntryCode(options)};
27
- ${await generateVirtualStoryEntryCode(options, appPath)};
27
+ ${await generateVirtualStoryEntryCode(options, context)};
28
28
 
29
29
  const {
30
30
  addDecorator,
@@ -1 +1 @@
1
- {"version":3,"file":"generateIframeScriptCode.js","sourceRoot":"","sources":["../src/generateIframeScriptCode.ts"],"names":[],"mappings":"AAAA,mHAAmH;AAEnH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAGnF,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAgB,EAChB,OAAe,EACf,OAA8C;IAE9C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAsB,oBAAoB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,CAAC,GAAG,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CACxG,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,IAAY,EAAE,EAAE,CACtD,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5F,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAE9G,0CAA0C;IAC1C,sDAAsD;IACtD,sBAAsB;IACtB,MAAM,IAAI,GAAG;;;iCAGkB,YAAY;;;;MAIvC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC;;MAEtC,wBAAwB,CAAC,OAAO,CAAC;MACjC,MAAM,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC;;;;;;;;;;;;;;uBAcpC,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4DjG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/lib/builder-vite/src/codegen-iframe-script.ts\n\nimport { getRendererName } from '@storybook/core-common';\nimport type { Options, PreviewAnnotation } from '@storybook/types';\nimport { processPreviewAnnotation } from './utils/processPreviewAnnotation.js';\nimport { generatePreviewEntryCode } from './generatePreviewEntryCode.js';\nimport { generateVirtualStoryEntryCode } from './generateVirtualStoryEntryCode.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\n\n// TODO: Work in progress, not needed right now as it is not part of storyStoreV7.\nexport async function generateIframeScriptCode(\n options: Options,\n appPath: string,\n context: { packages: PackageDefinitionsCache },\n) {\n const { presets } = options;\n const rendererName = await getRendererName(options);\n\n const previewAnnotations = await presets.apply<PreviewAnnotation[]>('previewAnnotations', [], options);\n const configEntries = await Promise.all(\n [...previewAnnotations].filter(Boolean).map((path) => processPreviewAnnotation(path, appPath, context)),\n );\n\n const filesToImport = (files: string[], name: string) =>\n files.map((el, i) => `import ${name ? `* as ${name}_${i} from ` : ''}'${el}'`).join('\\n');\n\n const importArray = (name: string, length: number) => new Array(length).fill(0).map((_, i) => `${name}_${i}`);\n\n // noinspection UnnecessaryLocalVariableJS\n /** @todo Inline variable and remove `noinspection` */\n // language=JavaScript\n const code = `\n // Ensure that the client API is initialized by the framework before any other iframe code\n // is loaded. That way our client-apis can assume the existence of the API+store\n import { configure } from '${rendererName}';\n\n import { logger } from '@storybook/client-logger';\n import * as previewApi from \"@storybook/preview-api\";\n ${filesToImport(configEntries, 'config')}\n\n ${generatePreviewEntryCode(options)};\n ${await generateVirtualStoryEntryCode(options, appPath)};\n\n const {\n addDecorator,\n addParameters,\n addLoader,\n addArgs,\n addArgTypes,\n addStepRunner,\n addArgTypesEnhancer,\n addArgsEnhancer,\n setGlobalRender,\n } = previewApi;\n\n const configs = [${importArray('config', configEntries.length).concat('preview.default').join(',')}].filter(Boolean)\n\n configs.map(config => config.default ? config.default : config).forEach(config => {\n Object.keys(config).forEach((key) => {\n const value = config[key];\n switch (key) {\n case 'args': {\n return addArgs(value);\n }\n case 'argTypes': {\n return addArgTypes(value);\n }\n case 'decorators': {\n return value.forEach((decorator) => addDecorator(decorator, false));\n }\n case 'loaders': {\n return value.forEach((loader) => addLoader(loader, false));\n }\n case 'parameters': {\n return addParameters({ ...value }, false);\n }\n case 'argTypesEnhancers': {\n return value.forEach((enhancer) => addArgTypesEnhancer(enhancer));\n }\n case 'argsEnhancers': {\n return value.forEach((enhancer) => addArgsEnhancer(enhancer))\n }\n case 'render': {\n return setGlobalRender(value)\n }\n case 'globals':\n case 'globalTypes': {\n const v = {};\n v[key] = value;\n return addParameters(v, false);\n }\n case 'decorateStory':\n case 'applyDecorators':\n case 'renderToDOM': // deprecated\n case 'renderToCanvas': {\n return null; // This key is not handled directly in v6 mode.\n }\n case 'runStep': {\n return addStepRunner(value);\n }\n default: {\n // eslint-disable-next-line prefer-template\n return console.log(key + ' was not supported :( !');\n }\n }\n });\n })\n\n /* TODO: not quite sure what to do with this, to fix HMR\n if (import.meta.hot) {\n import.meta.hot.accept();\n }\n */\n\n configStories(configure);\n `.trim();\n return code;\n}\n"]}
1
+ {"version":3,"file":"generateIframeScriptCode.js","sourceRoot":"","sources":["../src/generateIframeScriptCode.ts"],"names":[],"mappings":"AAAA,mHAAmH;AAEnH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAInF,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAgB,EAChB,OAAgE;IAEhE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAsB,oBAAoB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,CAAC,GAAG,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC/F,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,IAAY,EAAE,EAAE,CACtD,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5F,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAE9G,0CAA0C;IAC1C,sDAAsD;IACtD,sBAAsB;IACtB,MAAM,IAAI,GAAG;;;iCAGkB,YAAY;;;;MAIvC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC;;MAEtC,wBAAwB,CAAC,OAAO,CAAC;MACjC,MAAM,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC;;;;;;;;;;;;;;uBAcpC,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4DjG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/lib/builder-vite/src/codegen-iframe-script.ts\n\nimport { getRendererName } from '@storybook/core-common';\nimport type { Options, PreviewAnnotation } from '@storybook/types';\nimport { processPreviewAnnotation } from './utils/processPreviewAnnotation.js';\nimport { generatePreviewEntryCode } from './generatePreviewEntryCode.js';\nimport { generateVirtualStoryEntryCode } from './generateVirtualStoryEntryCode.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n// TODO: Work in progress, not needed right now as it is not part of storyStoreV7.\nexport async function generateIframeScriptCode(\n options: Options,\n context: { packages: PackageDefinitionsCache; session: Session },\n) {\n const { presets } = options;\n const rendererName = await getRendererName(options);\n\n const previewAnnotations = await presets.apply<PreviewAnnotation[]>('previewAnnotations', [], options);\n const configEntries = await Promise.all(\n [...previewAnnotations].filter(Boolean).map((path) => processPreviewAnnotation(path, context)),\n );\n\n const filesToImport = (files: string[], name: string) =>\n files.map((el, i) => `import ${name ? `* as ${name}_${i} from ` : ''}'${el}'`).join('\\n');\n\n const importArray = (name: string, length: number) => new Array(length).fill(0).map((_, i) => `${name}_${i}`);\n\n // noinspection UnnecessaryLocalVariableJS\n /** @todo Inline variable and remove `noinspection` */\n // language=JavaScript\n const code = `\n // Ensure that the client API is initialized by the framework before any other iframe code\n // is loaded. That way our client-apis can assume the existence of the API+store\n import { configure } from '${rendererName}';\n\n import { logger } from '@storybook/client-logger';\n import * as previewApi from \"@storybook/preview-api\";\n ${filesToImport(configEntries, 'config')}\n\n ${generatePreviewEntryCode(options)};\n ${await generateVirtualStoryEntryCode(options, context)};\n\n const {\n addDecorator,\n addParameters,\n addLoader,\n addArgs,\n addArgTypes,\n addStepRunner,\n addArgTypesEnhancer,\n addArgsEnhancer,\n setGlobalRender,\n } = previewApi;\n\n const configs = [${importArray('config', configEntries.length).concat('preview.default').join(',')}].filter(Boolean)\n\n configs.map(config => config.default ? config.default : config).forEach(config => {\n Object.keys(config).forEach((key) => {\n const value = config[key];\n switch (key) {\n case 'args': {\n return addArgs(value);\n }\n case 'argTypes': {\n return addArgTypes(value);\n }\n case 'decorators': {\n return value.forEach((decorator) => addDecorator(decorator, false));\n }\n case 'loaders': {\n return value.forEach((loader) => addLoader(loader, false));\n }\n case 'parameters': {\n return addParameters({ ...value }, false);\n }\n case 'argTypesEnhancers': {\n return value.forEach((enhancer) => addArgTypesEnhancer(enhancer));\n }\n case 'argsEnhancers': {\n return value.forEach((enhancer) => addArgsEnhancer(enhancer))\n }\n case 'render': {\n return setGlobalRender(value)\n }\n case 'globals':\n case 'globalTypes': {\n const v = {};\n v[key] = value;\n return addParameters(v, false);\n }\n case 'decorateStory':\n case 'applyDecorators':\n case 'renderToDOM': // deprecated\n case 'renderToCanvas': {\n return null; // This key is not handled directly in v6 mode.\n }\n case 'runStep': {\n return addStepRunner(value);\n }\n default: {\n // eslint-disable-next-line prefer-template\n return console.log(key + ' was not supported :( !');\n }\n }\n });\n })\n\n /* TODO: not quite sure what to do with this, to fix HMR\n if (import.meta.hot) {\n import.meta.hot.accept();\n }\n */\n\n configStories(configure);\n `.trim();\n return code;\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  import type { Options } from '@storybook/types';
2
+ import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
3
+ import type { Session } from '@ms-cloudpack/api-server';
2
4
  /**
3
5
  * This function takes an array of stories and creates a mapping between the stories' relative paths
4
6
  * to the working directory and their dynamic imports. The import is done in an asynchronous function
@@ -6,5 +8,8 @@ import type { Options } from '@storybook/types';
6
8
  * function and this is called by Storybook to fetch a story dynamically when needed.
7
9
  * @param stories An array of absolute story paths.
8
10
  */
9
- export declare function generateImportFnScriptCode(options: Options, appPath: string): Promise<string>;
11
+ export declare function generateImportFnScriptCode(options: Options, context: {
12
+ packages: PackageDefinitionsCache;
13
+ session: Session;
14
+ }): Promise<string>;
10
15
  //# sourceMappingURL=generateImportFnScriptCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateImportFnScriptCode.d.ts","sourceRoot":"","sources":["../src/generateImportFnScriptCode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAehD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBnG"}
1
+ {"version":3,"file":"generateImportFnScriptCode.d.ts","sourceRoot":"","sources":["../src/generateImportFnScriptCode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAKhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAWxD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
@@ -18,7 +18,13 @@ function toImportPath(relativePath) {
18
18
  * function and this is called by Storybook to fetch a story dynamically when needed.
19
19
  * @param stories An array of absolute story paths.
20
20
  */
21
- export async function generateImportFnScriptCode(options, appPath) {
21
+ export async function generateImportFnScriptCode(options, context) {
22
+ const { packages, session } = context;
23
+ const { appPath } = session;
24
+ const definition = await packages.get(appPath);
25
+ if (!definition) {
26
+ throw new Error('Could not find package definition for the current app');
27
+ }
22
28
  const stories = await listStories(options);
23
29
  const objectEntries = stories.map((file) => {
24
30
  const ext = path.extname(file);
@@ -27,7 +33,7 @@ export async function generateImportFnScriptCode(options, appPath) {
27
33
  if (!['.js', '.jsx', '.ts', '.tsx'].includes(ext)) {
28
34
  logger.warn(`Cannot process ${ext} file with storyStoreV7: ${relativeStoryPath}`);
29
35
  }
30
- return ` '${toImportPath(relativeStoryPath)}': async () => import('@ms-cloudpack/storybook-mock/${relativeStoryPath}')`;
36
+ return ` '${toImportPath(relativeStoryPath)}': async () => import('${definition.name}/${relativeStoryPath}')`;
31
37
  });
32
38
  return `
33
39
  const importers = {
@@ -1 +1 @@
1
- {"version":3,"file":"generateImportFnScriptCode.js","sourceRoot":"","sources":["../src/generateImportFnScriptCode.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAG1H,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;;GAIG;AACH,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAAgB,EAAE,OAAe;IAChF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,gCAAgC;QAChC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,4BAA4B,iBAAiB,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,MAAM,YAAY,CAAC,iBAAiB,CAAC,uDAAuD,iBAAiB,IAAI,CAAC;IAC3H,CAAC,CAAC,CAAC;IAEH,OAAO;;MAEH,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;GAM5B,CAAC,IAAI,EAAE,CAAC;AACX,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/codegen-importfn-script.ts\n\nimport type { Options } from '@storybook/types';\nimport { listStories } from './listStories.js';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport path from 'path';\nimport { logger } from '@storybook/node-logger';\n\n/**\n * Paths get passed either with no leading './' - e.g. `src/Foo.stories.js`,\n * or with a leading `../` (etc), e.g. `../src/Foo.stories.js`.\n * We want to deal in importPaths relative to the working dir, so we normalize\n */\nfunction toImportPath(relativePath: string) {\n return relativePath.startsWith('../') ? relativePath : `./${relativePath}`;\n}\n\n/**\n * This function takes an array of stories and creates a mapping between the stories' relative paths\n * to the working directory and their dynamic imports. The import is done in an asynchronous function\n * to delay loading. It then creates a function, `importFn(path)`, which resolves a path to an import\n * function and this is called by Storybook to fetch a story dynamically when needed.\n * @param stories An array of absolute story paths.\n */\nexport async function generateImportFnScriptCode(options: Options, appPath: string): Promise<string> {\n const stories = await listStories(options);\n const objectEntries = stories.map((file) => {\n const ext = path.extname(file);\n const relativeStoryPath = slash(path.relative(appPath, file));\n // TODO: Add support for '.mdx',\n if (!['.js', '.jsx', '.ts', '.tsx'].includes(ext)) {\n logger.warn(`Cannot process ${ext} file with storyStoreV7: ${relativeStoryPath}`);\n }\n\n return ` '${toImportPath(relativeStoryPath)}': async () => import('@ms-cloudpack/storybook-mock/${relativeStoryPath}')`;\n });\n\n return `\n const importers = {\n ${objectEntries.join(',\\n')}\n };\n\n export async function importFn(path) {\n return importers[path]();\n }\n `.trim();\n}\n"]}
1
+ {"version":3,"file":"generateImportFnScriptCode.js","sourceRoot":"","sources":["../src/generateImportFnScriptCode.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAG1H,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD;;;;GAIG;AACH,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAgB,EAChB,OAAgE;IAEhE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,gCAAgC;QAChC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,4BAA4B,iBAAiB,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,MAAM,YAAY,CAAC,iBAAiB,CAAC,0BAA0B,UAAU,CAAC,IAAI,IAAI,iBAAiB,IAAI,CAAC;IACjH,CAAC,CAAC,CAAC;IAEH,OAAO;;MAEH,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;GAM5B,CAAC,IAAI,EAAE,CAAC;AACX,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/codegen-importfn-script.ts\n\nimport type { Options } from '@storybook/types';\nimport { listStories } from './listStories.js';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport path from 'path';\nimport { logger } from '@storybook/node-logger';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Paths get passed either with no leading './' - e.g. `src/Foo.stories.js`,\n * or with a leading `../` (etc), e.g. `../src/Foo.stories.js`.\n * We want to deal in importPaths relative to the working dir, so we normalize\n */\nfunction toImportPath(relativePath: string) {\n return relativePath.startsWith('../') ? relativePath : `./${relativePath}`;\n}\n\n/**\n * This function takes an array of stories and creates a mapping between the stories' relative paths\n * to the working directory and their dynamic imports. The import is done in an asynchronous function\n * to delay loading. It then creates a function, `importFn(path)`, which resolves a path to an import\n * function and this is called by Storybook to fetch a story dynamically when needed.\n * @param stories An array of absolute story paths.\n */\nexport async function generateImportFnScriptCode(\n options: Options,\n context: { packages: PackageDefinitionsCache; session: Session },\n): Promise<string> {\n const { packages, session } = context;\n const { appPath } = session;\n const definition = await packages.get(appPath);\n\n if (!definition) {\n throw new Error('Could not find package definition for the current app');\n }\n\n const stories = await listStories(options);\n const objectEntries = stories.map((file) => {\n const ext = path.extname(file);\n const relativeStoryPath = slash(path.relative(appPath, file));\n // TODO: Add support for '.mdx',\n if (!['.js', '.jsx', '.ts', '.tsx'].includes(ext)) {\n logger.warn(`Cannot process ${ext} file with storyStoreV7: ${relativeStoryPath}`);\n }\n\n return ` '${toImportPath(relativeStoryPath)}': async () => import('${definition.name}/${relativeStoryPath}')`;\n });\n\n return `\n const importers = {\n ${objectEntries.join(',\\n')}\n };\n\n export async function importFn(path) {\n return importers[path]();\n }\n `.trim();\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { Options } from '@storybook/types';
2
2
  import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
3
3
  import type { Session } from '@ms-cloudpack/api-server';
4
- export declare function generateModernIframeScriptCode(options: Options, appPath: string, context: {
4
+ export declare function generateModernIframeScriptCode(options: Options, context: {
5
5
  packages: PackageDefinitionsCache;
6
6
  session: Session;
7
7
  }): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"generateModernIframeScriptCode.d.ts","sourceRoot":"","sources":["../src/generateModernIframeScriptCode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAKnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CA2EjB"}
1
+ {"version":3,"file":"generateModernIframeScriptCode.d.ts","sourceRoot":"","sources":["../src/generateModernIframeScriptCode.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAKnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,CA4EjB"}
@@ -7,9 +7,10 @@ import { generateVirtualStoryEntryCode } from './generateVirtualStoryEntryCode.j
7
7
  import { addExportsMapEntry, getExportsMap } from '@ms-cloudpack/package-utilities';
8
8
  import { safeRelativePath } from '@ms-cloudpack/path-string-parsing';
9
9
  import { relative } from 'path';
10
- export async function generateModernIframeScriptCode(options, appPath, context) {
10
+ export async function generateModernIframeScriptCode(options, context) {
11
11
  const { presets, configDir } = options;
12
12
  const { session, packages } = context;
13
+ const { appPath } = session;
13
14
  const frameworkName = await getFrameworkName(options);
14
15
  const previewOrConfigFile = loadPreviewOrConfigFile({ configDir });
15
16
  if (previewOrConfigFile) {
@@ -23,7 +24,7 @@ export async function generateModernIframeScriptCode(options, appPath, context)
23
24
  const previewAnnotations = await presets.apply('previewAnnotations', [], options);
24
25
  const previewAnnotationURLs = await Promise.all([...previewAnnotations, previewOrConfigFile]
25
26
  .filter((path) => !!path)
26
- .map(async (path) => await processPreviewAnnotation(path, appPath, context)));
27
+ .map(async (path) => await processPreviewAnnotation(path, context)));
27
28
  // This is pulled out to a variable because it is reused in both the initial page load
28
29
  // and the HMR handler. We don't use the hot.accept callback params because only the changed
29
30
  // modules are provided, the rest are null. We can just re-import everything again in that case.
@@ -54,8 +55,8 @@ export async function generateModernIframeScriptCode(options, appPath, context)
54
55
  ${generateAddonSetupCode()};
55
56
 
56
57
  ${options.features?.storyStoreV7
57
- ? await generateImportFnScriptCode(options, appPath)
58
- : await generateVirtualStoryEntryCode(options, appPath)}
58
+ ? await generateImportFnScriptCode(options, context)
59
+ : await generateVirtualStoryEntryCode(options, context)}
59
60
 
60
61
  ${getPreviewAnnotationsFunction}
61
62
 
@@ -1 +1 @@
1
- {"version":3,"file":"generateModernIframeScriptCode.js","sourceRoot":"","sources":["../src/generateModernIframeScriptCode.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAE1H,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAgB,EAChB,OAAe,EACf,OAAgE;IAEhE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAEnE,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACpG,MAAM,kBAAkB,CACtB;YACE,OAAO;YACP,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;SACrE,EACD,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CACrC,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAsB,oBAAoB,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvG,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7C,CAAC,GAAG,kBAAkB,EAAE,mBAAmB,CAAC;SACzC,MAAM,CAAC,CAAC,IAAI,EAA6B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACnD,GAAG,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE,CAAC,MAAM,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAClG,CAAC;IAEF,sFAAsF;IACtF,6FAA6F;IAC7F,iGAAiG;IAEjG,MAAM,6BAA6B,GAAG;;yCAEC,qBAAqB;SACvD,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,WAAW,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;SACrF,IAAI,CAAC,KAAK,CAAC;;IAEd,CAAC;IAEH,MAAM,kBAAkB,GAAG,GAAW,EAAE;QACtC,mFAAmF;QACnF,IAAI,aAAa,KAAK,+BAA+B,EAAE,CAAC;YACtD,OAAO;;;WAGF,CAAC,IAAI,EAAE,CAAC;QACf,CAAC;QAED,OAAO;;;;WAIA,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;;;IAGL,sBAAsB,EAAE;;IAGxB,OAAO,CAAC,QAAQ,EAAE,YAAY;QAC5B,CAAC,CAAC,MAAM,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC;QACpD,CAAC,CAAC,MAAM,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAC1D;;IAEE,6BAA6B;;;;;;;;IAQ7B,kBAAkB,EAAE;GACrB,CAAC,IAAI,EAAE,CAAC;AACX,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/lib/builder-vite/src/codegen-modern-iframe-script.ts\n\nimport { loadPreviewOrConfigFile, getFrameworkName } from '@storybook/core-common';\nimport type { Options, PreviewAnnotation } from '@storybook/types';\nimport { generateAddonSetupCode } from './generateAddonSetupCode.js';\nimport { processPreviewAnnotation } from './utils/processPreviewAnnotation.js';\nimport { generateImportFnScriptCode } from './generateImportFnScriptCode.js';\nimport { generateVirtualStoryEntryCode } from './generateVirtualStoryEntryCode.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport { addExportsMapEntry, getExportsMap } from '@ms-cloudpack/package-utilities';\nimport type { Session } from '@ms-cloudpack/api-server';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { relative } from 'path';\n\nexport async function generateModernIframeScriptCode(\n options: Options,\n appPath: string,\n context: { packages: PackageDefinitionsCache; session: Session },\n): Promise<string> {\n const { presets, configDir } = options;\n const { session, packages } = context;\n const frameworkName = await getFrameworkName(options);\n\n const previewOrConfigFile = loadPreviewOrConfigFile({ configDir });\n\n if (previewOrConfigFile) {\n const exports = await getExportsMap({ packagePath: appPath }, { packages, config: session.config });\n await addExportsMapEntry(\n {\n exports,\n packagePath: appPath,\n importPath: safeRelativePath(relative(appPath, previewOrConfigFile)),\n },\n { packages, config: session.config },\n );\n }\n\n const previewAnnotations = await presets.apply<PreviewAnnotation[]>('previewAnnotations', [], options);\n const previewAnnotationURLs = await Promise.all(\n [...previewAnnotations, previewOrConfigFile]\n .filter((path): path is PreviewAnnotation => !!path)\n .map(async (path: PreviewAnnotation) => await processPreviewAnnotation(path, appPath, context)),\n );\n\n // This is pulled out to a variable because it is reused in both the initial page load\n // and the HMR handler. We don't use the hot.accept callback params because only the changed\n // modules are provided, the rest are null. We can just re-import everything again in that case.\n\n const getPreviewAnnotationsFunction = `\n const getProjectAnnotations = async () => {\n const configs = await Promise.all([${previewAnnotationURLs\n .map((previewAnnotation) => `import('${previewAnnotation.split('\\\\').join('\\\\\\\\')}')`)\n .join(',\\n')}]);\n return composeConfigs(configs);\n }`;\n\n const generateHMRHandler = (): string => {\n // Web components are not compatible with HMR, so disable HMR, reload page instead.\n if (frameworkName === '@ms-cloudpack/storybook-react') {\n return `\n if (import.meta.hot) {\n import.meta.hot.decline();\n };`.trim();\n }\n\n return `\n if (import.meta.hot) {\n alert('HMR is not supported for web components, reloading the page instead.');\n window.location.reload();\n };`.trim();\n };\n\n return `\n import { composeConfigs, PreviewWeb, ClientApi } from '@storybook/preview-api';\n\n ${generateAddonSetupCode()};\n\n ${\n options.features?.storyStoreV7\n ? await generateImportFnScriptCode(options, appPath)\n : await generateVirtualStoryEntryCode(options, appPath)\n }\n\n ${getPreviewAnnotationsFunction}\n\n window.__STORYBOOK_PREVIEW__ = window.__STORYBOOK_PREVIEW__ || new PreviewWeb();\n\n window.__STORYBOOK_STORY_STORE__ = window.__STORYBOOK_STORY_STORE__ || window.__STORYBOOK_PREVIEW__.storyStore;\n window.__STORYBOOK_CLIENT_API__ = window.__STORYBOOK_CLIENT_API__ || new ClientApi({ storyStore: window.__STORYBOOK_PREVIEW__.storyStore });\n window.__STORYBOOK_PREVIEW__.initialize({ importFn, getProjectAnnotations });\n\n ${generateHMRHandler()}\n `.trim();\n}\n"]}
1
+ {"version":3,"file":"generateModernIframeScriptCode.js","sourceRoot":"","sources":["../src/generateModernIframeScriptCode.ts"],"names":[],"mappings":"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","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/lib/builder-vite/src/codegen-modern-iframe-script.ts\n\nimport { loadPreviewOrConfigFile, getFrameworkName } from '@storybook/core-common';\nimport type { Options, PreviewAnnotation } from '@storybook/types';\nimport { generateAddonSetupCode } from './generateAddonSetupCode.js';\nimport { processPreviewAnnotation } from './utils/processPreviewAnnotation.js';\nimport { generateImportFnScriptCode } from './generateImportFnScriptCode.js';\nimport { generateVirtualStoryEntryCode } from './generateVirtualStoryEntryCode.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport { addExportsMapEntry, getExportsMap } from '@ms-cloudpack/package-utilities';\nimport type { Session } from '@ms-cloudpack/api-server';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { relative } from 'path';\n\nexport async function generateModernIframeScriptCode(\n options: Options,\n context: { packages: PackageDefinitionsCache; session: Session },\n): Promise<string> {\n const { presets, configDir } = options;\n const { session, packages } = context;\n const { appPath } = session;\n const frameworkName = await getFrameworkName(options);\n\n const previewOrConfigFile = loadPreviewOrConfigFile({ configDir });\n\n if (previewOrConfigFile) {\n const exports = await getExportsMap({ packagePath: appPath }, { packages, config: session.config });\n await addExportsMapEntry(\n {\n exports,\n packagePath: appPath,\n importPath: safeRelativePath(relative(appPath, previewOrConfigFile)),\n },\n { packages, config: session.config },\n );\n }\n\n const previewAnnotations = await presets.apply<PreviewAnnotation[]>('previewAnnotations', [], options);\n const previewAnnotationURLs = await Promise.all(\n [...previewAnnotations, previewOrConfigFile]\n .filter((path): path is PreviewAnnotation => !!path)\n .map(async (path: PreviewAnnotation) => await processPreviewAnnotation(path, context)),\n );\n\n // This is pulled out to a variable because it is reused in both the initial page load\n // and the HMR handler. We don't use the hot.accept callback params because only the changed\n // modules are provided, the rest are null. We can just re-import everything again in that case.\n\n const getPreviewAnnotationsFunction = `\n const getProjectAnnotations = async () => {\n const configs = await Promise.all([${previewAnnotationURLs\n .map((previewAnnotation) => `import('${previewAnnotation.split('\\\\').join('\\\\\\\\')}')`)\n .join(',\\n')}]);\n return composeConfigs(configs);\n }`;\n\n const generateHMRHandler = (): string => {\n // Web components are not compatible with HMR, so disable HMR, reload page instead.\n if (frameworkName === '@ms-cloudpack/storybook-react') {\n return `\n if (import.meta.hot) {\n import.meta.hot.decline();\n };`.trim();\n }\n\n return `\n if (import.meta.hot) {\n alert('HMR is not supported for web components, reloading the page instead.');\n window.location.reload();\n };`.trim();\n };\n\n return `\n import { composeConfigs, PreviewWeb, ClientApi } from '@storybook/preview-api';\n\n ${generateAddonSetupCode()};\n\n ${\n options.features?.storyStoreV7\n ? await generateImportFnScriptCode(options, context)\n : await generateVirtualStoryEntryCode(options, context)\n }\n\n ${getPreviewAnnotationsFunction}\n\n window.__STORYBOOK_PREVIEW__ = window.__STORYBOOK_PREVIEW__ || new PreviewWeb();\n\n window.__STORYBOOK_STORY_STORE__ = window.__STORYBOOK_STORY_STORE__ || window.__STORYBOOK_PREVIEW__.storyStore;\n window.__STORYBOOK_CLIENT_API__ = window.__STORYBOOK_CLIENT_API__ || new ClientApi({ storyStore: window.__STORYBOOK_PREVIEW__.storyStore });\n window.__STORYBOOK_PREVIEW__.initialize({ importFn, getProjectAnnotations });\n\n ${generateHMRHandler()}\n `.trim();\n}\n"]}
@@ -1,3 +1,6 @@
1
1
  import type { Options } from '@storybook/types';
2
- export declare function generateVirtualStoryEntryCode(options: Options, appPath: string): Promise<string>;
2
+ import type { Session } from '@ms-cloudpack/api-server';
3
+ export declare function generateVirtualStoryEntryCode(options: Options, context: {
4
+ session: Session;
5
+ }): Promise<string>;
3
6
  //# sourceMappingURL=generateVirtualStoryEntryCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateVirtualStoryEntryCode.d.ts","sourceRoot":"","sources":["../src/generateVirtualStoryEntryCode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQhD,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBtG"}
1
+ {"version":3,"file":"generateVirtualStoryEntryCode.d.ts","sourceRoot":"","sources":["../src/generateVirtualStoryEntryCode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMxD,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBpH"}
@@ -3,7 +3,8 @@ import { listStories } from './listStories.js';
3
3
  import { slash } from '@ms-cloudpack/path-string-parsing';
4
4
  const absoluteFilesToImport = (files, name) => files.map((el, i) => `import ${name ? `* as ${name}_${i} from ` : ''}'/@fs/${slash(el)}'`).join('\n');
5
5
  // TODO: Work in progress, not needed right now as it is not part of storyStoreV7.
6
- export async function generateVirtualStoryEntryCode(options, appPath) {
6
+ export async function generateVirtualStoryEntryCode(options, context) {
7
+ const { appPath } = context.session;
7
8
  const storyEntries = await listStories(options);
8
9
  const resolveMap = storyEntries.reduce((prev, entry) => ({ ...prev, [entry]: entry.replace(slash(appPath), '.') }), {});
9
10
  const modules = storyEntries.map((entry, i) => `${JSON.stringify(entry)}: story_${i}`).join(',');
@@ -1 +1 @@
1
- {"version":3,"file":"generateVirtualStoryEntryCode.js","sourceRoot":"","sources":["../src/generateVirtualStoryEntryCode.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAGlH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE1D,MAAM,qBAAqB,GAAG,CAAC,KAAe,EAAE,IAAY,EAAE,EAAE,CAC9D,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExG,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAgB,EAAE,OAAe;IACnF,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAC3E,EAAE,CACH,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjG,OAAO;MACH,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC;;;gBAGlC,OAAO;;;;qBAIF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;2BACjC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;GAMlD,CAAC,IAAI,EAAE,CAAC;AACX,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/codegen-entries.ts\n\nimport type { Options } from '@storybook/types';\nimport { listStories } from './listStories.js';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\n\nconst absoluteFilesToImport = (files: string[], name: string) =>\n files.map((el, i) => `import ${name ? `* as ${name}_${i} from ` : ''}'/@fs/${slash(el)}'`).join('\\n');\n\n// TODO: Work in progress, not needed right now as it is not part of storyStoreV7.\nexport async function generateVirtualStoryEntryCode(options: Options, appPath: string): Promise<string> {\n const storyEntries = await listStories(options);\n const resolveMap = storyEntries.reduce<Record<string, string>>(\n (prev, entry) => ({ ...prev, [entry]: entry.replace(slash(appPath), '.') }),\n {},\n );\n const modules = storyEntries.map((entry, i) => `${JSON.stringify(entry)}: story_${i}`).join(',');\n\n return `\n ${absoluteFilesToImport(storyEntries, 'story')}\n\n function loadable(key) {\n return {${modules}}[key];\n }\n\n Object.assign(loadable, {\n keys: () => (${JSON.stringify(Object.keys(resolveMap))}),\n resolve: (key) => (${JSON.stringify(resolveMap)}[key])\n });\n\n configStories(configure) {\n configure(loadable, { hot: import.meta.hot }, false);\n }\n `.trim();\n}\n"]}
1
+ {"version":3,"file":"generateVirtualStoryEntryCode.js","sourceRoot":"","sources":["../src/generateVirtualStoryEntryCode.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAGlH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAG1D,MAAM,qBAAqB,GAAG,CAAC,KAAe,EAAE,IAAY,EAAE,EAAE,CAC9D,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExG,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,OAAgB,EAAE,OAA6B;IACjG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAC3E,EAAE,CACH,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjG,OAAO;MACH,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC;;;gBAGlC,OAAO;;;;qBAIF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;2BACjC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;GAMlD,CAAC,IAAI,EAAE,CAAC;AACX,CAAC","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/codegen-entries.ts\n\nimport type { Options } from '@storybook/types';\nimport { listStories } from './listStories.js';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport type { Session } from '@ms-cloudpack/api-server';\n\nconst absoluteFilesToImport = (files: string[], name: string) =>\n files.map((el, i) => `import ${name ? `* as ${name}_${i} from ` : ''}'/@fs/${slash(el)}'`).join('\\n');\n\n// TODO: Work in progress, not needed right now as it is not part of storyStoreV7.\nexport async function generateVirtualStoryEntryCode(options: Options, context: { session: Session }): Promise<string> {\n const { appPath } = context.session;\n const storyEntries = await listStories(options);\n const resolveMap = storyEntries.reduce<Record<string, string>>(\n (prev, entry) => ({ ...prev, [entry]: entry.replace(slash(appPath), '.') }),\n {},\n );\n const modules = storyEntries.map((entry, i) => `${JSON.stringify(entry)}: story_${i}`).join(',');\n\n return `\n ${absoluteFilesToImport(storyEntries, 'story')}\n\n function loadable(key) {\n return {${modules}}[key];\n }\n\n Object.assign(loadable, {\n keys: () => (${JSON.stringify(Object.keys(resolveMap))}),\n resolve: (key) => (${JSON.stringify(resolveMap)}[key])\n });\n\n configStories(configure) {\n configure(loadable, { hot: import.meta.hot }, false);\n }\n `.trim();\n}\n"]}
package/lib/index.js CHANGED
@@ -115,7 +115,7 @@ export const start = async ({ options, startTime, router, server: devServer, })
115
115
  // await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);
116
116
  // }
117
117
  // Storybook set up is mostly done here.
118
- const generated = await generateIframeHtml(options, appPath, { packages, session });
118
+ const generated = await generateIframeHtml(options, { packages, session });
119
119
  await fsExtra.ensureDir(getLocalCachePath(appPath));
120
120
  // TODO: Currently saving it to disk as the config only accepts a path.
121
121
  const iFramePath = path.join(getLocalCachePath(appPath), 'iFrame.html');
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Options } from '@storybook/types';\nimport { type Server } from 'http';\nimport { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server/apis';\nimport { readConfig } from '@ms-cloudpack/config';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport {\n addExportsMapEntry,\n findResolveMapEntry,\n getExportsMap,\n getVersion,\n resolve,\n} from '@ms-cloudpack/package-utilities';\nimport {\n TaskReporter,\n bold,\n defaultLoggingConfig,\n verboseLoggingConfig,\n debugLoggingConfig,\n noLoggingConfig,\n} from '@ms-cloudpack/task-reporter';\nimport { createTelemetryClient } from '@ms-cloudpack/telemetry';\nimport { express, type Router } from '@ms-cloudpack/create-express-app';\nimport { startAppServer, type AppServer } from '@ms-cloudpack/app-server';\nimport { startBundleServer, type BundleServer } from '@ms-cloudpack/bundle-server';\nimport { getNodeModuleDir } from './getNodeModuleDir.js';\nimport { generateIframeHtml } from './generateIFrameHtml.js';\nimport { getLocalCachePath, type ApiServer } from '@ms-cloudpack/api-server';\nimport fsExtra from 'fs-extra';\nimport fsPromises from 'fs/promises';\nimport { listStories } from './listStories.js';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport type { PackageJson } from '@ms-cloudpack/config-types';\n\nexport type ClosableServer = {\n close: () => Promise<void>;\n url: string;\n};\n\nlet appServer: AppServer;\nlet apiServer: ApiServer;\nlet bundleServer: BundleServer;\n\nexport async function bail(error?: Error): Promise<void> {\n if (error) {\n console.error('Error:', error);\n }\n\n const servers = [\n ['appServer', appServer] as const,\n ['apiServer', apiServer] as const,\n ['bundleServer', bundleServer] as const,\n ];\n\n await Promise.all(\n servers.map(async ([name, server]) => {\n if (!server || !server.url) {\n console.info(`No ${name} to close.`);\n return;\n }\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server?.close();\n console.info(`Closed ${name}: ${server.url}`);\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }),\n );\n}\n\nexport const start = async ({\n options,\n startTime,\n router,\n server: devServer,\n}: {\n options: Options;\n startTime: [number, number];\n router: Router;\n server: Server;\n}) => {\n const previewResolvedDir = getNodeModuleDir('@storybook/preview');\n const previewDirOrigin = path.join(previewResolvedDir, 'dist');\n\n router.use('/sb-preview', express.static(previewDirOrigin, { immutable: true, maxAge: '5m' }));\n\n // TODO: This might be useful later on.\n // const env = await options.presets.apply<Record<string, string>>('env');\n\n // eslint-disable-next-line no-restricted-properties -- this is the one place we need cwd (for a default)\n const appPath = process.cwd();\n\n const config = await readConfig(appPath);\n\n // TODO: Move to won package.\n // runPrerequisites(config, appPath);\n\n // Make sure the package has a valid definition.\n const definition = (await readJson(path.join(appPath, 'package.json'))) as PackageJson;\n\n if (!definition.name || !definition.version) {\n throw new Error(`The package.json at \"${appPath}\" did not have a name and/or version.`);\n }\n\n // This part should be almost identical to the cli start command.\n const reporter = new TaskReporter({\n productName: `Cloudpack`,\n version: getVersion(import.meta.url),\n description: () => `Running \"${bold('storybook')}\"`,\n helpMessage: config.helpMessage,\n // TODO: Get options and enable this.\n plainTextMode: options.ci,\n ...(options.loglevel === 'debug'\n ? debugLoggingConfig\n : options.loglevel === 'verbose'\n ? verboseLoggingConfig\n : options.quiet || options.loglevel === 'quiet'\n ? noLoggingConfig\n : defaultLoggingConfig),\n });\n\n const connectionString = options.disableTelemetry\n ? undefined\n : config.telemetry?.connectionString || process.env.CLOUDPACK_TELEMETRY_CONNECTION_STRING;\n\n const logLevel = options.loglevel === 'verbose' ? 'VERBOSE' : options.loglevel === 'debug' ? 'DEBUG' : undefined;\n if (options.loglevel !== 'debug') {\n reporter.ignoreLogMessage('ApplicationInsights:');\n }\n\n const telemetryClient = await createTelemetryClient({\n productVersion: getVersion(import.meta.url),\n connectionString,\n logLevel,\n serviceNamespace: 'cloudpack',\n serviceName: 'cli',\n rootSpanName: 'CLI',\n });\n\n // Register performance observers to track performance metrics as events of CLI span.\n // registerPerformanceObservers(telemetryClient);\n\n const apiContext = await createPartialApiContext({\n appPath,\n config,\n reporter,\n telemetryClient,\n items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n overlayPath: await resolve('@ms-cloudpack/overlay', path.dirname(fileURLToPath(import.meta.url))),\n });\n\n const { packages, session, packageImportPaths } = apiContext;\n\n // TODO: Get options and enable this.\n // Increment the session version if caching is disabled.\n // if (options.cache === false) {\n // session.incrementSessionVersion();\n // }\n\n // Set shared telemetry attributes which will be sent with all telemetry events.\n telemetryClient.setSharedSpanAttribute('sessionId', session.id);\n\n // TODO: Get options and enable this.\n // if (options.logResolveMap) {\n // // Write the resolve map to disk.\n // await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);\n // }\n\n // Storybook set up is mostly done here.\n const generated = await generateIframeHtml(options, appPath, { packages, session });\n await fsExtra.ensureDir(getLocalCachePath(appPath));\n\n // TODO: Currently saving it to disk as the config only accepts a path.\n const iFramePath = path.join(getLocalCachePath(appPath), 'iFrame.html');\n await fsPromises.writeFile(iFramePath, generated, { encoding: 'utf-8' });\n\n // iFrame script is required for storybook to work.\n config.devServer ??= {};\n config.devServer.routes ??= [];\n config.devServer.routes.push({\n match: '/iframe.html',\n renderScript: iFramePath,\n });\n\n const stories = (await listStories(options)).map((story) => safeRelativePath(path.relative(appPath, story)));\n const storyEntries = stories.reduce(\n (acc, story) => {\n acc[story] = story;\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const additionalEntries = [\n {\n name: definition.name,\n entries: {\n ...storyEntries,\n },\n },\n ];\n\n for (const { name, entries } of additionalEntries) {\n const packageEntry = findResolveMapEntry({ packageName: name, resolveMap: session.resolveMap });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${name} in the resolve map.`);\n }\n\n const exports = await getExportsMap({ packagePath: packageEntry.path }, { packages, config: session.config });\n for (const [importPath, filePath] of Object.entries(entries)) {\n await addExportsMapEntry(\n {\n exports,\n packagePath: packageEntry.path,\n importPath,\n filePath,\n },\n { packages, config: session.config },\n );\n }\n }\n\n const { startApiServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n apiServer = await startApiServer(apiContext);\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({\n input: { name: definition.name, version: definition.version },\n ctx: apiContext,\n });\n\n // Kick off bundling some packages we know are required\n const preBundlePackages = ['lodash'];\n\n preBundlePackages.forEach((name) => {\n const packageEntry = findResolveMapEntry({ packageName: name, resolveMap: session.resolveMap });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${name} in the resolve map.`);\n }\n\n void ensurePackageBundled({\n input: { name, version: packageEntry.version },\n ctx: apiContext,\n });\n });\n\n // Then start bundle and app servers for hosting the app.\n bundleServer = await startBundleServer({\n context: {\n ...apiContext,\n apiServer,\n disableCache: false, // TODO: Get options and enable this.\n },\n });\n\n // Finally start the app server.\n appServer = await startAppServer({\n session,\n definition,\n bundleServer,\n apiServer,\n config,\n reporter,\n packages,\n packageImportPaths,\n packageHashes: apiContext.packageHashes,\n middlewareMode: true,\n server: devServer,\n });\n\n router.use(appServer.app);\n\n // TODO: Figure out if it is possible to know when browser will open.\n // performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n\n return {\n bail,\n stats: { toJson: () => null },\n totalTime: process.hrtime(startTime),\n };\n};\n\nexport const build = (_arg: { options: Options; startTime: [number, number] }): void => {\n console.log('Cloudpack Storybook build is not implemented yet.');\n process.exit(1);\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Options } from '@storybook/types';\nimport { type Server } from 'http';\nimport { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server/apis';\nimport { readConfig } from '@ms-cloudpack/config';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport {\n addExportsMapEntry,\n findResolveMapEntry,\n getExportsMap,\n getVersion,\n resolve,\n} from '@ms-cloudpack/package-utilities';\nimport {\n TaskReporter,\n bold,\n defaultLoggingConfig,\n verboseLoggingConfig,\n debugLoggingConfig,\n noLoggingConfig,\n} from '@ms-cloudpack/task-reporter';\nimport { createTelemetryClient } from '@ms-cloudpack/telemetry';\nimport { express, type Router } from '@ms-cloudpack/create-express-app';\nimport { startAppServer, type AppServer } from '@ms-cloudpack/app-server';\nimport { startBundleServer, type BundleServer } from '@ms-cloudpack/bundle-server';\nimport { getNodeModuleDir } from './getNodeModuleDir.js';\nimport { generateIframeHtml } from './generateIFrameHtml.js';\nimport { getLocalCachePath, type ApiServer } from '@ms-cloudpack/api-server';\nimport fsExtra from 'fs-extra';\nimport fsPromises from 'fs/promises';\nimport { listStories } from './listStories.js';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport type { PackageJson } from '@ms-cloudpack/config-types';\n\nexport type ClosableServer = {\n close: () => Promise<void>;\n url: string;\n};\n\nlet appServer: AppServer;\nlet apiServer: ApiServer;\nlet bundleServer: BundleServer;\n\nexport async function bail(error?: Error): Promise<void> {\n if (error) {\n console.error('Error:', error);\n }\n\n const servers = [\n ['appServer', appServer] as const,\n ['apiServer', apiServer] as const,\n ['bundleServer', bundleServer] as const,\n ];\n\n await Promise.all(\n servers.map(async ([name, server]) => {\n if (!server || !server.url) {\n console.info(`No ${name} to close.`);\n return;\n }\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server?.close();\n console.info(`Closed ${name}: ${server.url}`);\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }),\n );\n}\n\nexport const start = async ({\n options,\n startTime,\n router,\n server: devServer,\n}: {\n options: Options;\n startTime: [number, number];\n router: Router;\n server: Server;\n}) => {\n const previewResolvedDir = getNodeModuleDir('@storybook/preview');\n const previewDirOrigin = path.join(previewResolvedDir, 'dist');\n\n router.use('/sb-preview', express.static(previewDirOrigin, { immutable: true, maxAge: '5m' }));\n\n // TODO: This might be useful later on.\n // const env = await options.presets.apply<Record<string, string>>('env');\n\n // eslint-disable-next-line no-restricted-properties -- this is the one place we need cwd (for a default)\n const appPath = process.cwd();\n\n const config = await readConfig(appPath);\n\n // TODO: Move to won package.\n // runPrerequisites(config, appPath);\n\n // Make sure the package has a valid definition.\n const definition = (await readJson(path.join(appPath, 'package.json'))) as PackageJson;\n\n if (!definition.name || !definition.version) {\n throw new Error(`The package.json at \"${appPath}\" did not have a name and/or version.`);\n }\n\n // This part should be almost identical to the cli start command.\n const reporter = new TaskReporter({\n productName: `Cloudpack`,\n version: getVersion(import.meta.url),\n description: () => `Running \"${bold('storybook')}\"`,\n helpMessage: config.helpMessage,\n // TODO: Get options and enable this.\n plainTextMode: options.ci,\n ...(options.loglevel === 'debug'\n ? debugLoggingConfig\n : options.loglevel === 'verbose'\n ? verboseLoggingConfig\n : options.quiet || options.loglevel === 'quiet'\n ? noLoggingConfig\n : defaultLoggingConfig),\n });\n\n const connectionString = options.disableTelemetry\n ? undefined\n : config.telemetry?.connectionString || process.env.CLOUDPACK_TELEMETRY_CONNECTION_STRING;\n\n const logLevel = options.loglevel === 'verbose' ? 'VERBOSE' : options.loglevel === 'debug' ? 'DEBUG' : undefined;\n if (options.loglevel !== 'debug') {\n reporter.ignoreLogMessage('ApplicationInsights:');\n }\n\n const telemetryClient = await createTelemetryClient({\n productVersion: getVersion(import.meta.url),\n connectionString,\n logLevel,\n serviceNamespace: 'cloudpack',\n serviceName: 'cli',\n rootSpanName: 'CLI',\n });\n\n // Register performance observers to track performance metrics as events of CLI span.\n // registerPerformanceObservers(telemetryClient);\n\n const apiContext = await createPartialApiContext({\n appPath,\n config,\n reporter,\n telemetryClient,\n items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n overlayPath: await resolve('@ms-cloudpack/overlay', path.dirname(fileURLToPath(import.meta.url))),\n });\n\n const { packages, session, packageImportPaths } = apiContext;\n\n // TODO: Get options and enable this.\n // Increment the session version if caching is disabled.\n // if (options.cache === false) {\n // session.incrementSessionVersion();\n // }\n\n // Set shared telemetry attributes which will be sent with all telemetry events.\n telemetryClient.setSharedSpanAttribute('sessionId', session.id);\n\n // TODO: Get options and enable this.\n // if (options.logResolveMap) {\n // // Write the resolve map to disk.\n // await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);\n // }\n\n // Storybook set up is mostly done here.\n const generated = await generateIframeHtml(options, { packages, session });\n await fsExtra.ensureDir(getLocalCachePath(appPath));\n\n // TODO: Currently saving it to disk as the config only accepts a path.\n const iFramePath = path.join(getLocalCachePath(appPath), 'iFrame.html');\n await fsPromises.writeFile(iFramePath, generated, { encoding: 'utf-8' });\n\n // iFrame script is required for storybook to work.\n config.devServer ??= {};\n config.devServer.routes ??= [];\n config.devServer.routes.push({\n match: '/iframe.html',\n renderScript: iFramePath,\n });\n\n const stories = (await listStories(options)).map((story) => safeRelativePath(path.relative(appPath, story)));\n const storyEntries = stories.reduce(\n (acc, story) => {\n acc[story] = story;\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const additionalEntries = [\n {\n name: definition.name,\n entries: {\n ...storyEntries,\n },\n },\n ];\n\n for (const { name, entries } of additionalEntries) {\n const packageEntry = findResolveMapEntry({ packageName: name, resolveMap: session.resolveMap });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${name} in the resolve map.`);\n }\n\n const exports = await getExportsMap({ packagePath: packageEntry.path }, { packages, config: session.config });\n for (const [importPath, filePath] of Object.entries(entries)) {\n await addExportsMapEntry(\n {\n exports,\n packagePath: packageEntry.path,\n importPath,\n filePath,\n },\n { packages, config: session.config },\n );\n }\n }\n\n const { startApiServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n apiServer = await startApiServer(apiContext);\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({\n input: { name: definition.name, version: definition.version },\n ctx: apiContext,\n });\n\n // Kick off bundling some packages we know are required\n const preBundlePackages = ['lodash'];\n\n preBundlePackages.forEach((name) => {\n const packageEntry = findResolveMapEntry({ packageName: name, resolveMap: session.resolveMap });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${name} in the resolve map.`);\n }\n\n void ensurePackageBundled({\n input: { name, version: packageEntry.version },\n ctx: apiContext,\n });\n });\n\n // Then start bundle and app servers for hosting the app.\n bundleServer = await startBundleServer({\n context: {\n ...apiContext,\n apiServer,\n disableCache: false, // TODO: Get options and enable this.\n },\n });\n\n // Finally start the app server.\n appServer = await startAppServer({\n session,\n definition,\n bundleServer,\n apiServer,\n config,\n reporter,\n packages,\n packageImportPaths,\n packageHashes: apiContext.packageHashes,\n middlewareMode: true,\n server: devServer,\n });\n\n router.use(appServer.app);\n\n // TODO: Figure out if it is possible to know when browser will open.\n // performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n\n return {\n bail,\n stats: { toJson: () => null },\n totalTime: process.hrtime(startTime),\n };\n};\n\nexport const build = (_arg: { options: Options; startTime: [number, number] }): void => {\n console.log('Cloudpack Storybook build is not implemented yet.');\n process.exit(1);\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import type { PreviewAnnotation } from '@storybook/types';
2
2
  import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
3
+ import type { Session } from '@ms-cloudpack/api-server';
3
4
  /**
4
5
  * Preview annotations can take several forms, and cloudpack needs them to be
5
6
  * a bit more restrained.
@@ -8,7 +9,8 @@ import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
8
9
  * and for files in the user's source, we want URLs absolute relative to project root.
9
10
  *
10
11
  */
11
- export declare function processPreviewAnnotation(path: PreviewAnnotation | undefined, appPath: string, context: {
12
+ export declare function processPreviewAnnotation(path: PreviewAnnotation | undefined, context: {
12
13
  packages: PackageDefinitionsCache;
14
+ session: Session;
13
15
  }): Promise<string>;
14
16
  //# sourceMappingURL=processPreviewAnnotation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processPreviewAnnotation.d.ts","sourceRoot":"","sources":["../../src/utils/processPreviewAnnotation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAA;CAAE,mBA6D/C"}
1
+ {"version":3,"file":"processPreviewAnnotation.d.ts","sourceRoot":"","sources":["../../src/utils/processPreviewAnnotation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,mBA8DjE"}
@@ -11,8 +11,9 @@ import { findPackageRoot } from '@ms-cloudpack/path-utilities';
11
11
  * and for files in the user's source, we want URLs absolute relative to project root.
12
12
  *
13
13
  */
14
- export async function processPreviewAnnotation(path, appPath, context) {
15
- const { packages } = context;
14
+ export async function processPreviewAnnotation(path, context) {
15
+ const { packages, session } = context;
16
+ const { appPath } = session;
16
17
  // If entry is an object, take the first, which is the
17
18
  // bare (non-absolute) specifier.
18
19
  // This is so that webpack can use an absolute path, and
@@ -1 +1 @@
1
- {"version":3,"file":"processPreviewAnnotation.js","sourceRoot":"","sources":["../../src/utils/processPreviewAnnotation.ts"],"names":[],"mappings":"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","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/utils/process-preview-annotation.ts\n\nimport type { PreviewAnnotation } from '@storybook/types';\nimport { resolve, isAbsolute, relative } from 'path';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { stripAbsNodeModulesPath } from '@storybook/core-common';\nimport { findPackageRoot } from '@ms-cloudpack/path-utilities';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\n\n/**\n * Preview annotations can take several forms, and cloudpack needs them to be\n * a bit more restrained.\n *\n * For node_modules, we want bare imports (so cloudpack can process them),\n * and for files in the user's source, we want URLs absolute relative to project root.\n *\n */\nexport async function processPreviewAnnotation(\n path: PreviewAnnotation | undefined,\n appPath: string,\n context: { packages: PackageDefinitionsCache },\n) {\n const { packages } = context;\n // If entry is an object, take the first, which is the\n // bare (non-absolute) specifier.\n // This is so that webpack can use an absolute path, and\n // continue supporting super-addons in pnp/pnpm without\n // requiring them to re-export their sub-addons as we do\n // in addon-essentials.\n if (typeof path === 'object') {\n return path.bare;\n }\n\n // This should not occur, since we use `.filter(Boolean)` prior to\n // calling this function, but this makes typescript happy\n if (!path) {\n throw new Error('Could not determine path for previewAnnotation');\n }\n\n // For addon dependencies that use require.resolve(), we need to convert to a bare path\n // so that cloudpack will process it as a dependency (cjs -> esm, etc).\n // TODO: Evaluate if searching for node_modules in a yarn pnp environment is correct\n if (path.includes('node_modules')) {\n return stripAbsNodeModulesPath(path);\n }\n\n // resolve absolute paths relative to project root\n const relativePath = isAbsolute(path) ? slash(relative(appPath, path)) : path;\n\n // resolve relative paths into absolute urls\n // note: this only works if cloudpack's appPath === cwd.\n // Add package root to relative paths.\n if (relativePath.startsWith('./')) {\n const definition = await packages.get(appPath);\n if (!definition) {\n throw new Error(`Could not find package definition for ${appPath}`);\n }\n return slash(`${definition.name}/${relativePath.replace(/^\\.\\//, '')}`);\n }\n\n // If something is outside of root, convert to absolute. Uncommon?\n if (relativePath.startsWith('../')) {\n // Find package and add to root.\n const packagePath = findPackageRoot(resolve(appPath, relativePath));\n if (!packagePath) {\n throw new Error(`Could not find package root for ${relativePath}`);\n }\n const definition = await packages.get(packagePath);\n if (!definition) {\n throw new Error(`Could not find package definition for ${relativePath}`);\n }\n return slash(`${definition.name}/${relative(packagePath, resolve(appPath, relativePath))}`);\n }\n\n // At this point, it must be relative to the root but not start with a ./ or ../\n // Add package root to relative paths.\n const definition = await packages.get(appPath);\n if (!definition) {\n throw new Error(`Could not find package definition for ${appPath}`);\n }\n return slash(`${definition.name}/${relativePath}`);\n}\n"]}
1
+ {"version":3,"file":"processPreviewAnnotation.js","sourceRoot":"","sources":["../../src/utils/processPreviewAnnotation.ts"],"names":[],"mappings":"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","sourcesContent":["// based on https://github.com/storybookjs/storybook/blob/v7.6.5/code/builders/builder-vite/src/utils/process-preview-annotation.ts\n\nimport type { PreviewAnnotation } from '@storybook/types';\nimport { resolve, isAbsolute, relative } from 'path';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { stripAbsNodeModulesPath } from '@storybook/core-common';\nimport { findPackageRoot } from '@ms-cloudpack/path-utilities';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Preview annotations can take several forms, and cloudpack needs them to be\n * a bit more restrained.\n *\n * For node_modules, we want bare imports (so cloudpack can process them),\n * and for files in the user's source, we want URLs absolute relative to project root.\n *\n */\nexport async function processPreviewAnnotation(\n path: PreviewAnnotation | undefined,\n context: { packages: PackageDefinitionsCache; session: Session },\n) {\n const { packages, session } = context;\n const { appPath } = session;\n // If entry is an object, take the first, which is the\n // bare (non-absolute) specifier.\n // This is so that webpack can use an absolute path, and\n // continue supporting super-addons in pnp/pnpm without\n // requiring them to re-export their sub-addons as we do\n // in addon-essentials.\n if (typeof path === 'object') {\n return path.bare;\n }\n\n // This should not occur, since we use `.filter(Boolean)` prior to\n // calling this function, but this makes typescript happy\n if (!path) {\n throw new Error('Could not determine path for previewAnnotation');\n }\n\n // For addon dependencies that use require.resolve(), we need to convert to a bare path\n // so that cloudpack will process it as a dependency (cjs -> esm, etc).\n // TODO: Evaluate if searching for node_modules in a yarn pnp environment is correct\n if (path.includes('node_modules')) {\n return stripAbsNodeModulesPath(path);\n }\n\n // resolve absolute paths relative to project root\n const relativePath = isAbsolute(path) ? slash(relative(appPath, path)) : path;\n\n // resolve relative paths into absolute urls\n // note: this only works if cloudpack's appPath === cwd.\n // Add package root to relative paths.\n if (relativePath.startsWith('./')) {\n const definition = await packages.get(appPath);\n if (!definition) {\n throw new Error(`Could not find package definition for ${appPath}`);\n }\n return slash(`${definition.name}/${relativePath.replace(/^\\.\\//, '')}`);\n }\n\n // If something is outside of root, convert to absolute. Uncommon?\n if (relativePath.startsWith('../')) {\n // Find package and add to root.\n const packagePath = findPackageRoot(resolve(appPath, relativePath));\n if (!packagePath) {\n throw new Error(`Could not find package root for ${relativePath}`);\n }\n const definition = await packages.get(packagePath);\n if (!definition) {\n throw new Error(`Could not find package definition for ${relativePath}`);\n }\n return slash(`${definition.name}/${relative(packagePath, resolve(appPath, relativePath))}`);\n }\n\n // At this point, it must be relative to the root but not start with a ./ or ../\n // Add package root to relative paths.\n const definition = await packages.get(appPath);\n if (!definition) {\n throw new Error(`Could not find package definition for ${appPath}`);\n }\n return slash(`${definition.name}/${relativePath}`);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/storybook-builder",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "A tool for building storybook bundles for the cloudpack ecosystem.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,14 +22,14 @@
22
22
  "lint": "cloudpack-scripts lint"
23
23
  },
24
24
  "dependencies": {
25
- "@ms-cloudpack/api-server": "^0.31.1",
26
- "@ms-cloudpack/app-server": "^0.1.28",
27
- "@ms-cloudpack/bundle-server": "^0.2.25",
28
- "@ms-cloudpack/config": "^0.17.29",
29
- "@ms-cloudpack/config-types": "^0.5.0",
30
- "@ms-cloudpack/create-express-app": "^1.4.1",
25
+ "@ms-cloudpack/api-server": "^0.31.3",
26
+ "@ms-cloudpack/app-server": "^0.1.30",
27
+ "@ms-cloudpack/bundle-server": "^0.2.27",
28
+ "@ms-cloudpack/config": "^0.17.30",
29
+ "@ms-cloudpack/config-types": "^0.5.1",
30
+ "@ms-cloudpack/create-express-app": "^1.4.3",
31
31
  "@ms-cloudpack/json-utilities": "^0.1.4",
32
- "@ms-cloudpack/package-utilities": "^5.10.4",
32
+ "@ms-cloudpack/package-utilities": "^5.10.5",
33
33
  "@ms-cloudpack/path-string-parsing": "^1.1.3",
34
34
  "@ms-cloudpack/task-reporter": "^0.11.1",
35
35
  "@ms-cloudpack/telemetry": "^0.4.6",
@@ -47,7 +47,9 @@
47
47
  "@ms-cloudpack/scripts": "*"
48
48
  },
49
49
  "files": [
50
- "lib/**/!(*.test.*)"
50
+ "lib/**/!(*.test.*)",
51
+ "preset.js",
52
+ "static"
51
53
  ],
52
54
  "beachball": {
53
55
  "disallowedChangeTypes": [
@@ -0,0 +1,51 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Storybook</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+
8
+ <link rel="prefetch" href="./sb-common-assets/nunito-sans-regular.woff2" as="font" type="font/woff2" crossorigin />
9
+ <link rel="prefetch" href="./sb-common-assets/nunito-sans-italic.woff2" as="font" type="font/woff2" crossorigin />
10
+ <link rel="prefetch" href="./sb-common-assets/nunito-sans-bold.woff2" as="font" type="font/woff2" crossorigin />
11
+ <link
12
+ rel="prefetch"
13
+ href="./sb-common-assets/nunito-sans-bold-italic.woff2"
14
+ as="font"
15
+ type="font/woff2"
16
+ crossorigin
17
+ />
18
+ <link rel="stylesheet" href="./sb-common-assets/fonts.css" />
19
+
20
+ <script>
21
+ window.CONFIG_TYPE = '[CONFIG_TYPE HERE]';
22
+ window.LOGLEVEL = '[LOGLEVEL HERE]';
23
+ window.FRAMEWORK_OPTIONS = '[FRAMEWORK_OPTIONS HERE]';
24
+ window.CHANNEL_OPTIONS = '[CHANNEL_OPTIONS HERE]';
25
+ window.FEATURES = '[FEATURES HERE]';
26
+ window.STORIES = '[STORIES HERE]';
27
+ window.DOCS_OPTIONS = '[DOCS_OPTIONS HERE]';
28
+ window.SERVER_CHANNEL_URL = '[SERVER_CHANNEL_URL HERE]';
29
+
30
+ ('OTHER_GLOBLALS HERE');
31
+
32
+ // TODO: check if it's relevant for us
33
+ // We do this so that "module && module.hot" etc. in Storybook source code
34
+ // doesn't fail (it will simply be disabled)
35
+ window.module = undefined;
36
+ window.global = window;
37
+ </script>
38
+ <!-- [HEAD HTML SNIPPET HERE] -->
39
+ </head>
40
+
41
+ <body>
42
+ <!-- [BODY HTML SNIPPET HERE] -->
43
+ <div id="storybook-root"></div>
44
+ <div id="storybook-docs"></div>
45
+ <script type="module" src="./sb-preview/runtime.js"></script>
46
+ <script type="module">
47
+ ('[APP MODULE SRC HERE]');
48
+ </script>
49
+ <div id="root"></div>
50
+ </body>
51
+ </html>