@ms-cloudpack/storybook-builder 0.7.1 → 0.7.3
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.
|
@@ -53,7 +53,7 @@ export async function createCloudpackContext(options) {
|
|
|
53
53
|
reporter,
|
|
54
54
|
telemetryClient,
|
|
55
55
|
taskRunner: new TaskRunner(),
|
|
56
|
-
overlayPath,
|
|
56
|
+
additionalPaths: overlayPath ? [overlayPath] : undefined,
|
|
57
57
|
});
|
|
58
58
|
// TODO: Get options and enable this.
|
|
59
59
|
// Increment the session version if caching is disabled.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCloudpackContext.js","sourceRoot":"","sources":["../src/createCloudpackContext.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"createCloudpackContext.js","sourceRoot":"","sources":["../src/createCloudpackContext.ts"],"names":[],"mappings":"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","sourcesContent":["import { createApiContext, TaskRunner, type Context } from '@ms-cloudpack/api-server';\nimport { readConfig } from '@ms-cloudpack/config';\nimport { environmentInfo } from '@ms-cloudpack/environment';\nimport { getDisplayVersion, getVersion } from '@ms-cloudpack/package-utilities';\nimport { isExternalPackage, resolve } from '@ms-cloudpack/path-utilities';\nimport {\n bold,\n debugLoggingConfig,\n defaultLoggingConfig,\n noLoggingConfig,\n TaskReporter,\n verboseLoggingConfig,\n} from '@ms-cloudpack/task-reporter';\nimport { startTelemetry } from '@ms-cloudpack/telemetry';\nimport type { Options } from '@storybook/types';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst currentDir = path.dirname(fileURLToPath(import.meta.url));\n\n/** Create the Cloudpack context. */\nexport async function createCloudpackContext(options: {\n appPath: string;\n storybookOptions: Options;\n}): Promise<Context> {\n const { appPath, storybookOptions } = options;\n const { loglevel } = storybookOptions;\n\n const config = await readConfig(appPath);\n\n // TODO: Move to won package.\n // runPrerequisites(config, appPath);\n\n // This part should be almost identical to the cli start command.\n const reporter = new TaskReporter({\n productName: 'Storybook + Cloudpack',\n version: getDisplayVersion(import.meta.url),\n description: () => `Running \"${bold('storybook')}\"`,\n helpMessage: config.helpMessage,\n // TODO: Get options and enable this.\n plainTextMode: storybookOptions.ci,\n ...(loglevel === 'debug'\n ? debugLoggingConfig\n : loglevel === 'verbose'\n ? verboseLoggingConfig\n : storybookOptions.quiet || loglevel === 'quiet'\n ? noLoggingConfig\n : defaultLoggingConfig),\n });\n\n const connectionString = storybookOptions.disableTelemetry\n ? undefined\n : config.telemetry?.connectionString || environmentInfo.cloudpack.telemetryConnectionString;\n\n if (loglevel !== 'debug') {\n reporter.ignoreLogMessage('ApplicationInsights:');\n }\n\n const telemetryClient = await startTelemetry({\n productVersion: getVersion(import.meta.url),\n logLevel: loglevel === 'verbose' ? 'VERBOSE' : loglevel === 'debug' ? 'DEBUG' : undefined,\n serviceName: 'storybook',\n }).createClient(connectionString);\n\n let overlayPath = await resolve('@ms-cloudpack/overlay', currentDir);\n\n // If overlay is an internal package, resolve the overlay from the current package's linked node modules\n // to \"externalize\" it, so that we always use the bundled version of the overlay instead of the source.\n if (overlayPath && !isExternalPackage(overlayPath)) {\n overlayPath = path.resolve(currentDir, '../node_modules/@ms-cloudpack/overlay');\n }\n\n const apiContext = await createApiContext({\n config,\n reporter,\n telemetryClient,\n taskRunner: new TaskRunner(),\n additionalPaths: overlayPath ? [overlayPath] : undefined,\n });\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 return apiContext;\n}\n"]}
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAWzD,KAAK,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAwBzC,eAAO,MAAM,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAMzC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAkH3C,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAI3C,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ensurePackageBundled } from '@ms-cloudpack/api-server';
|
|
2
2
|
import { startServers } from '@ms-cloudpack/app-server';
|
|
3
3
|
import { getLocalCachePath } from '@ms-cloudpack/config';
|
|
4
|
-
import { express } from '@ms-cloudpack/create-express-app';
|
|
5
4
|
import { slash } from '@ms-cloudpack/path-string-parsing';
|
|
6
5
|
import { findPackageRoot, normalizedPathRelativeTo, resolve } from '@ms-cloudpack/path-utilities';
|
|
7
6
|
import { loadPreviewOrConfigFile } from '@storybook/core-common';
|
|
8
7
|
import fsPromises from 'fs/promises';
|
|
9
8
|
import path from 'path';
|
|
9
|
+
import serveStatic from 'serve-static';
|
|
10
10
|
import { fileURLToPath } from 'url';
|
|
11
11
|
import { generateIframeHtml } from './generateIFrameHtml.js';
|
|
12
12
|
import { listStories } from './listStories.js';
|
|
@@ -40,7 +40,7 @@ export const start = async ({ options, startTime, router, server: expressServer
|
|
|
40
40
|
throw new Error(`Could not resolve @storybook/preview from ${currentDir}`);
|
|
41
41
|
}
|
|
42
42
|
const previewDirOrigin = path.join(previewResolvedDir, 'dist');
|
|
43
|
-
router.use('/sb-preview',
|
|
43
|
+
router.use('/sb-preview', serveStatic(previewDirOrigin, { immutable: true, maxAge: '5m' }));
|
|
44
44
|
// TODO: This might be useful later on.
|
|
45
45
|
// const env = await options.presets.apply<Record<string, string>>('env');
|
|
46
46
|
// eslint-disable-next-line no-restricted-properties -- this is where we find the appPath
|
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 { ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { startServers } from '@ms-cloudpack/app-server';\nimport type { PackageJsonExportsObject } from '@ms-cloudpack/common-types';\nimport { getLocalCachePath } from '@ms-cloudpack/config';\nimport { express } from '@ms-cloudpack/create-express-app';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { findPackageRoot, normalizedPathRelativeTo, resolve } from '@ms-cloudpack/path-utilities';\nimport { loadPreviewOrConfigFile } from '@storybook/core-common';\nimport type { Builder, Options } from '@storybook/types';\nimport fsPromises from 'fs/promises';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { generateIframeHtml } from './generateIFrameHtml.js';\nimport { listStories } from './listStories.js';\nimport { createCloudpackContext } from './createCloudpackContext.js';\n\nconst currentDir = path.dirname(fileURLToPath(import.meta.url));\n\ntype CloudpackBuilder = Builder<Options>;\n\ntype ClosableServer = {\n close: () => Promise<void>;\n url: string;\n};\n\nconst disposables: Array<() => void | Promise<void>> = [];\n\nfunction addDisposableServer(server: ClosableServer | undefined, name: string) {\n if (!server) return;\n\n disposables.push(async () => {\n const desc = `${name} (${server.url})`;\n console.info(`Closing ${desc}`);\n try {\n await server.close();\n console.info(`Closed ${desc}`);\n } catch (err) {\n console.warn(`Error closing ${desc}:`, err);\n }\n });\n}\n\nexport const bail: CloudpackBuilder['bail'] = async (error) => {\n if (error) {\n console.error('Error:', error);\n }\n\n await Promise.all(disposables.map((d) => d()));\n};\n\nexport const start: CloudpackBuilder['start'] = async ({ options, startTime, router, server: expressServer }) => {\n const previewResolvedDir = await resolve('@storybook/preview', currentDir);\n if (!previewResolvedDir) {\n throw new Error(`Could not resolve @storybook/preview from ${currentDir}`);\n }\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 where we find the appPath\n const cwd = process.cwd();\n const appPath = findPackageRoot(cwd);\n if (!appPath) {\n throw new Error(`Could not find package.json relative to ${cwd}`);\n }\n\n const apiContext = await createCloudpackContext({ appPath, storybookOptions: options });\n disposables.push(() => apiContext.dispose?.());\n const { packages, session } = apiContext;\n const { config } = session;\n\n // Resolve the story files, and find the preview/config file.\n const { storySpecifiers, resolvedStories } = await listStories({ storybookOptions: options, appPath });\n const previewOrConfigFile = loadPreviewOrConfigFile(options);\n\n // Overwrite the exports of the app package to just contain the stories and preview/config file.\n packages.registerTransform(() => ({ definition, packagePath }) => {\n if (slash(appPath) !== slash(packagePath)) {\n return;\n }\n\n // We just need a simple path mapping for the stories, so it's not necessary to use addExportsMapEntry.\n const exports: PackageJsonExportsObject = {};\n\n for (const story of resolvedStories) {\n if (!story.startsWith('./')) {\n // Not sure if this is even allowed by Storybook, but check just in case...\n // In theory we could handle this by either modifying the exports of the other package too,\n // or possibly by enabling autoUpdateEntries so the file will be bundled on import.\n throw new Error(`Cloudpack does not support stories outside of the package root: ${story}`);\n }\n exports[story] = story;\n }\n\n if (previewOrConfigFile) {\n const normalizedPreview = normalizedPathRelativeTo(appPath, previewOrConfigFile);\n if (!normalizedPreview.startsWith('./')) {\n // Not sure if this is allowed by storybook either\n throw new Error(\n `Cloudpack does not support preview/config files outside of the package root: ${previewOrConfigFile}`,\n );\n }\n exports[normalizedPreview] = normalizedPreview;\n }\n\n return { ...definition, exports };\n });\n\n const appDefinition = await packages.get(appPath);\n\n // Storybook set up is mostly done here.\n const generated = await generateIframeHtml(\n { storybookOptions: options, storySpecifiers, resolvedStories, appDefinition, previewOrConfigFile },\n apiContext,\n );\n\n // TODO: Currently saving it to disk as the config only accepts a path.\n const cachePath = getLocalCachePath(appPath);\n await fsPromises.mkdir(cachePath, { recursive: true });\n const iFramePath = path.join(cachePath, 'iframe.html');\n const relativeIframePath = normalizedPathRelativeTo(appPath, iFramePath);\n await fsPromises.writeFile(iFramePath, generated, { encoding: 'utf-8' });\n\n // iFrame script is required for storybook to work.\n config.routes ??= [];\n config.routes.push({\n match: '/iframe.html',\n serverEntry: { importPath: relativeIframePath, sourcePath: iFramePath },\n });\n\n const { createCloudpackServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n const apiServer = await createCloudpackServer({}, apiContext);\n addDisposableServer(apiServer, 'api server');\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({ name: appDefinition.name, version: appDefinition.version }, apiContext);\n\n // Start bundle and app servers for hosting the app.\n const { appServer, bundleServer } = await startServers(\n {\n definition: appDefinition,\n expressServer,\n // TODO: Get options and enable this.\n bundleServerOptions: { disableCache: false },\n },\n apiContext,\n );\n addDisposableServer(appServer, 'app server');\n addDisposableServer(bundleServer, 'bundle server');\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 totalTime: process.hrtime(startTime),\n };\n};\n\nexport const build: CloudpackBuilder['build'] = () => {\n console.log('Cloudpack Storybook build is not implemented yet.');\n // eslint-disable-next-line no-restricted-properties -- top level handler\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 { ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { startServers } from '@ms-cloudpack/app-server';\nimport type { PackageJsonExportsObject } from '@ms-cloudpack/common-types';\nimport { getLocalCachePath } from '@ms-cloudpack/config';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { findPackageRoot, normalizedPathRelativeTo, resolve } from '@ms-cloudpack/path-utilities';\nimport { loadPreviewOrConfigFile } from '@storybook/core-common';\nimport type { Builder, Options } from '@storybook/types';\nimport fsPromises from 'fs/promises';\nimport path from 'path';\nimport serveStatic from 'serve-static';\nimport { fileURLToPath } from 'url';\nimport { generateIframeHtml } from './generateIFrameHtml.js';\nimport { listStories } from './listStories.js';\nimport { createCloudpackContext } from './createCloudpackContext.js';\n\nconst currentDir = path.dirname(fileURLToPath(import.meta.url));\n\ntype CloudpackBuilder = Builder<Options>;\n\ntype ClosableServer = {\n close: () => Promise<void>;\n url: string;\n};\n\nconst disposables: Array<() => void | Promise<void>> = [];\n\nfunction addDisposableServer(server: ClosableServer | undefined, name: string) {\n if (!server) return;\n\n disposables.push(async () => {\n const desc = `${name} (${server.url})`;\n console.info(`Closing ${desc}`);\n try {\n await server.close();\n console.info(`Closed ${desc}`);\n } catch (err) {\n console.warn(`Error closing ${desc}:`, err);\n }\n });\n}\n\nexport const bail: CloudpackBuilder['bail'] = async (error) => {\n if (error) {\n console.error('Error:', error);\n }\n\n await Promise.all(disposables.map((d) => d()));\n};\n\nexport const start: CloudpackBuilder['start'] = async ({ options, startTime, router, server: expressServer }) => {\n const previewResolvedDir = await resolve('@storybook/preview', currentDir);\n if (!previewResolvedDir) {\n throw new Error(`Could not resolve @storybook/preview from ${currentDir}`);\n }\n const previewDirOrigin = path.join(previewResolvedDir, 'dist');\n\n router.use('/sb-preview', serveStatic(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 where we find the appPath\n const cwd = process.cwd();\n const appPath = findPackageRoot(cwd);\n if (!appPath) {\n throw new Error(`Could not find package.json relative to ${cwd}`);\n }\n\n const apiContext = await createCloudpackContext({ appPath, storybookOptions: options });\n disposables.push(() => apiContext.dispose?.());\n const { packages, session } = apiContext;\n const { config } = session;\n\n // Resolve the story files, and find the preview/config file.\n const { storySpecifiers, resolvedStories } = await listStories({ storybookOptions: options, appPath });\n const previewOrConfigFile = loadPreviewOrConfigFile(options);\n\n // Overwrite the exports of the app package to just contain the stories and preview/config file.\n packages.registerTransform(() => ({ definition, packagePath }) => {\n if (slash(appPath) !== slash(packagePath)) {\n return;\n }\n\n // We just need a simple path mapping for the stories, so it's not necessary to use addExportsMapEntry.\n const exports: PackageJsonExportsObject = {};\n\n for (const story of resolvedStories) {\n if (!story.startsWith('./')) {\n // Not sure if this is even allowed by Storybook, but check just in case...\n // In theory we could handle this by either modifying the exports of the other package too,\n // or possibly by enabling autoUpdateEntries so the file will be bundled on import.\n throw new Error(`Cloudpack does not support stories outside of the package root: ${story}`);\n }\n exports[story] = story;\n }\n\n if (previewOrConfigFile) {\n const normalizedPreview = normalizedPathRelativeTo(appPath, previewOrConfigFile);\n if (!normalizedPreview.startsWith('./')) {\n // Not sure if this is allowed by storybook either\n throw new Error(\n `Cloudpack does not support preview/config files outside of the package root: ${previewOrConfigFile}`,\n );\n }\n exports[normalizedPreview] = normalizedPreview;\n }\n\n return { ...definition, exports };\n });\n\n const appDefinition = await packages.get(appPath);\n\n // Storybook set up is mostly done here.\n const generated = await generateIframeHtml(\n { storybookOptions: options, storySpecifiers, resolvedStories, appDefinition, previewOrConfigFile },\n apiContext,\n );\n\n // TODO: Currently saving it to disk as the config only accepts a path.\n const cachePath = getLocalCachePath(appPath);\n await fsPromises.mkdir(cachePath, { recursive: true });\n const iFramePath = path.join(cachePath, 'iframe.html');\n const relativeIframePath = normalizedPathRelativeTo(appPath, iFramePath);\n await fsPromises.writeFile(iFramePath, generated, { encoding: 'utf-8' });\n\n // iFrame script is required for storybook to work.\n config.routes ??= [];\n config.routes.push({\n match: '/iframe.html',\n serverEntry: { importPath: relativeIframePath, sourcePath: iFramePath },\n });\n\n const { createCloudpackServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n const apiServer = await createCloudpackServer({}, apiContext);\n addDisposableServer(apiServer, 'api server');\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({ name: appDefinition.name, version: appDefinition.version }, apiContext);\n\n // Start bundle and app servers for hosting the app.\n const { appServer, bundleServer } = await startServers(\n {\n definition: appDefinition,\n expressServer,\n // TODO: Get options and enable this.\n bundleServerOptions: { disableCache: false },\n },\n apiContext,\n );\n addDisposableServer(appServer, 'app server');\n addDisposableServer(bundleServer, 'bundle server');\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 totalTime: process.hrtime(startTime),\n };\n};\n\nexport const build: CloudpackBuilder['build'] = () => {\n console.log('Cloudpack Storybook build is not implemented yet.');\n // eslint-disable-next-line no-restricted-properties -- top level handler\n process.exit(1);\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/storybook-builder",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "A tool for building storybook bundles for the cloudpack ecosystem.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,13 +22,12 @@
|
|
|
22
22
|
"lint": "cloudpack-scripts lint"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@ms-cloudpack/api-server": "^0.
|
|
26
|
-
"@ms-cloudpack/app-server": "^0.18.
|
|
25
|
+
"@ms-cloudpack/api-server": "^0.63.0",
|
|
26
|
+
"@ms-cloudpack/app-server": "^0.18.3",
|
|
27
27
|
"@ms-cloudpack/common-types": "^0.24.17",
|
|
28
28
|
"@ms-cloudpack/config": "^0.35.3",
|
|
29
|
-
"@ms-cloudpack/create-express-app": "^1.10.31",
|
|
30
29
|
"@ms-cloudpack/environment": "^0.1.1",
|
|
31
|
-
"@ms-cloudpack/overlay": "^0.18.
|
|
30
|
+
"@ms-cloudpack/overlay": "^0.18.2",
|
|
32
31
|
"@ms-cloudpack/package-utilities": "^12.3.5",
|
|
33
32
|
"@ms-cloudpack/path-string-parsing": "^1.2.7",
|
|
34
33
|
"@ms-cloudpack/path-utilities": "^3.1.2",
|
|
@@ -38,6 +37,7 @@
|
|
|
38
37
|
"@storybook/node-logger": "^7.0.0",
|
|
39
38
|
"@storybook/preview": "^7.0.0",
|
|
40
39
|
"@storybook/preview-api": "^7.0.0",
|
|
40
|
+
"serve-static": "^1.0.0",
|
|
41
41
|
"tinyglobby": "^0.2.13",
|
|
42
42
|
"ts-dedent": "^2.2.0"
|
|
43
43
|
},
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"@ms-cloudpack/common-types": "^0.24.17",
|
|
46
46
|
"@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
|
|
47
47
|
"@ms-cloudpack/scripts": "^0.0.1",
|
|
48
|
-
"@storybook/types": "^7.0.0"
|
|
48
|
+
"@storybook/types": "^7.0.0",
|
|
49
|
+
"@types/serve-static": "^1.0.0"
|
|
49
50
|
},
|
|
50
51
|
"files": [
|
|
51
52
|
"lib/**/!(*.test.*)",
|