@sharpee/devkit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/cli.d.ts +3 -0
  2. package/cli.d.ts.map +1 -0
  3. package/cli.js +219 -0
  4. package/cli.js.map +1 -0
  5. package/commands/browser.d.ts +10 -0
  6. package/commands/browser.d.ts.map +1 -0
  7. package/commands/browser.js +107 -0
  8. package/commands/browser.js.map +1 -0
  9. package/commands/build.d.ts +38 -0
  10. package/commands/build.d.ts.map +1 -0
  11. package/commands/build.js +165 -0
  12. package/commands/build.js.map +1 -0
  13. package/commands/bundle.d.ts +9 -0
  14. package/commands/bundle.d.ts.map +1 -0
  15. package/commands/bundle.js +46 -0
  16. package/commands/bundle.js.map +1 -0
  17. package/commands/clean.d.ts +7 -0
  18. package/commands/clean.d.ts.map +1 -0
  19. package/commands/clean.js +31 -0
  20. package/commands/clean.js.map +1 -0
  21. package/commands/register.d.ts +5 -0
  22. package/commands/register.d.ts.map +1 -0
  23. package/commands/register.js +45 -0
  24. package/commands/register.js.map +1 -0
  25. package/commands/test-npm.d.ts +34 -0
  26. package/commands/test-npm.d.ts.map +1 -0
  27. package/commands/test-npm.js +155 -0
  28. package/commands/test-npm.js.map +1 -0
  29. package/commands/verify.d.ts +7 -0
  30. package/commands/verify.d.ts.map +1 -0
  31. package/commands/verify.js +27 -0
  32. package/commands/verify.js.map +1 -0
  33. package/commands/zifmia.d.ts +10 -0
  34. package/commands/zifmia.d.ts.map +1 -0
  35. package/commands/zifmia.js +56 -0
  36. package/commands/zifmia.js.map +1 -0
  37. package/consumer-gen.d.ts +49 -0
  38. package/consumer-gen.d.ts.map +1 -0
  39. package/consumer-gen.js +137 -0
  40. package/consumer-gen.js.map +1 -0
  41. package/index.d.ts +29 -0
  42. package/index.d.ts.map +1 -0
  43. package/index.js +55 -0
  44. package/index.js.map +1 -0
  45. package/package.json +42 -0
  46. package/registry.d.ts +33 -0
  47. package/registry.d.ts.map +1 -0
  48. package/registry.js +81 -0
  49. package/registry.js.map +1 -0
  50. package/repo.d.ts +64 -0
  51. package/repo.d.ts.map +1 -0
  52. package/repo.js +185 -0
  53. package/repo.js.map +1 -0
  54. package/standalone/build-browser.d.ts +10 -0
  55. package/standalone/build-browser.d.ts.map +1 -0
  56. package/standalone/build-browser.js +208 -0
  57. package/standalone/build-browser.js.map +1 -0
  58. package/standalone/build.d.ts +8 -0
  59. package/standalone/build.d.ts.map +1 -0
  60. package/standalone/build.js +319 -0
  61. package/standalone/build.js.map +1 -0
  62. package/standalone/ifid.d.ts +2 -0
  63. package/standalone/ifid.d.ts.map +1 -0
  64. package/standalone/ifid.js +71 -0
  65. package/standalone/ifid.js.map +1 -0
  66. package/standalone/init-browser.d.ts +10 -0
  67. package/standalone/init-browser.d.ts.map +1 -0
  68. package/standalone/init-browser.js +194 -0
  69. package/standalone/init-browser.js.map +1 -0
  70. package/standalone/init.d.ts +10 -0
  71. package/standalone/init.d.ts.map +1 -0
  72. package/standalone/init.js +183 -0
  73. package/standalone/init.js.map +1 -0
package/repo.js ADDED
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUNDLE_DTS = exports.BUNDLE_ALIASES = exports.PLATFORM_PACKAGES = void 0;
4
+ exports.findMonorepoRoot = findMonorepoRoot;
5
+ exports.findRepoRoot = findRepoRoot;
6
+ exports.detectMode = detectMode;
7
+ exports.tsfBin = tsfBin;
8
+ exports.resolveStoryDir = resolveStoryDir;
9
+ exports.storyVersionFile = storyVersionFile;
10
+ exports.resolveStory = resolveStory;
11
+ exports.readVersion = readVersion;
12
+ /**
13
+ * repo.ts — monorepo layout constants and root resolution for devkit build/bundle.
14
+ *
15
+ * Owner context: @sharpee/devkit (ADR-180 Phase 3). These values mirror build.sh
16
+ * exactly so `devkit build`/`bundle` reach byte-for-byte output parity before
17
+ * build.sh is retired. Any drift here is a parity-gate failure.
18
+ *
19
+ * Public interface: findRepoRoot(), PLATFORM_PACKAGES, BUNDLE_ALIASES, BUNDLE_DTS,
20
+ * storyVersionFile(), resolveStoryDir().
21
+ */
22
+ const node_fs_1 = require("node:fs");
23
+ const node_path_1 = require("node:path");
24
+ /**
25
+ * Ordered platform build list (build.sh PACKAGES, 479-507): `[pkgName, dirUnderPackages]`.
26
+ * Order is dependency order — do not re-sort.
27
+ */
28
+ exports.PLATFORM_PACKAGES = [
29
+ ['@sharpee/core', 'core'],
30
+ ['@sharpee/text-blocks', 'text-blocks'],
31
+ ['@sharpee/if-domain', 'if-domain'],
32
+ ['@sharpee/media', 'media'],
33
+ ['@sharpee/world-model', 'world-model'],
34
+ ['@sharpee/helpers', 'helpers'],
35
+ ['@sharpee/queries', 'queries'],
36
+ ['@sharpee/event-processor', 'event-processor'],
37
+ ['@sharpee/lang-en-us', 'lang-en-us'],
38
+ ['@sharpee/parser-en-us', 'parser-en-us'],
39
+ ['@sharpee/if-services', 'if-services'],
40
+ ['@sharpee/channel-service', 'channel-service'],
41
+ ['@sharpee/stdlib', 'stdlib'],
42
+ ['@sharpee/character', 'character'],
43
+ ['@sharpee/ext-basic-combat', 'extensions/basic-combat'],
44
+ ['@sharpee/plugins', 'plugins'],
45
+ ['@sharpee/plugin-npc', 'plugin-npc'],
46
+ ['@sharpee/plugin-scheduler', 'plugin-scheduler'],
47
+ ['@sharpee/plugin-state-machine', 'plugin-state-machine'],
48
+ ['@sharpee/story-runtime-baseline', 'story-runtime-baseline'],
49
+ ['@sharpee/ext-testing', 'extensions/testing'],
50
+ ['@sharpee/engine', 'engine'],
51
+ ['@sharpee/bootstrap', 'bootstrap'],
52
+ ['@sharpee/platform-browser', 'platform-browser'],
53
+ ['@sharpee/sharpee', 'sharpee'],
54
+ ['@sharpee/transcript-tester', 'transcript-tester'],
55
+ ['@sharpee/devkit', 'devkit'],
56
+ ];
57
+ /**
58
+ * esbuild `--alias:` entries for the CLI bundle (build.sh build_bundle, 587-604).
59
+ * Order matches build.sh so the esbuild command is byte-identical.
60
+ */
61
+ exports.BUNDLE_ALIASES = [
62
+ ['@sharpee/core', './packages/core/dist/index.js'],
63
+ ['@sharpee/if-domain', './packages/if-domain/dist/index.js'],
64
+ ['@sharpee/world-model', './packages/world-model/dist/index.js'],
65
+ ['@sharpee/stdlib', './packages/stdlib/dist/index.js'],
66
+ ['@sharpee/engine', './packages/engine/dist/index.js'],
67
+ ['@sharpee/parser-en-us', './packages/parser-en-us/dist/index.js'],
68
+ ['@sharpee/lang-en-us', './packages/lang-en-us/dist/index.js'],
69
+ ['@sharpee/event-processor', './packages/event-processor/dist/index.js'],
70
+ ['@sharpee/text-blocks', './packages/text-blocks/dist/index.js'],
71
+ ['@sharpee/channel-service', './packages/channel-service/dist/index.js'],
72
+ ['@sharpee/if-services', './packages/if-services/dist/index.js'],
73
+ ['@sharpee/ext-basic-combat', './packages/extensions/basic-combat/dist/index.js'],
74
+ ['@sharpee/plugins', './packages/plugins/dist/index.js'],
75
+ ['@sharpee/plugin-npc', './packages/plugin-npc/dist/index.js'],
76
+ ['@sharpee/plugin-scheduler', './packages/plugin-scheduler/dist/index.js'],
77
+ ['@sharpee/plugin-state-machine', './packages/plugin-state-machine/dist/index.js'],
78
+ ['@sharpee/bootstrap', './packages/bootstrap/dist/index.js'],
79
+ ['@sharpee/transcript-tester', './packages/transcript-tester/dist/index.js'],
80
+ ];
81
+ /** Hand-written CLI bundle declarations (build.sh build_bundle, 607-619) — verbatim. */
82
+ exports.BUNDLE_DTS = `// Auto-generated Sharpee type declarations
83
+ export * from '../packages/core/dist/index';
84
+ export * from '../packages/if-domain/dist/index';
85
+ export * from '../packages/world-model/dist/index';
86
+ export * from '../packages/stdlib/dist/index';
87
+ export * from '../packages/engine/dist/index';
88
+ export * from '../packages/parser-en-us/dist/index';
89
+ export * from '../packages/lang-en-us/dist/index';
90
+ export * from '../packages/event-processor/dist/index';
91
+ export * from '../packages/text-blocks/dist/index';
92
+ export * from '../packages/channel-service/dist/index';
93
+ `;
94
+ /**
95
+ * Walk up from `start` to the Sharpee monorepo root (the dir holding
96
+ * pnpm-workspace.yaml AND packages/core — the monorepo signature, so an author's
97
+ * coincidental pnpm workspace is not mistaken for it). Returns null if not found.
98
+ */
99
+ function findMonorepoRoot(start = process.cwd()) {
100
+ let dir = (0, node_path_1.resolve)(start);
101
+ for (;;) {
102
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(dir, 'pnpm-workspace.yaml')) && (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, 'packages', 'core'))) {
103
+ return dir;
104
+ }
105
+ const parent = (0, node_path_1.dirname)(dir);
106
+ if (parent === dir)
107
+ return null;
108
+ dir = parent;
109
+ }
110
+ }
111
+ /**
112
+ * The monorepo root, or throw. Use when an operation is monorepo-only.
113
+ * @throws if not inside the Sharpee monorepo.
114
+ */
115
+ function findRepoRoot(start = process.cwd()) {
116
+ const root = findMonorepoRoot(start);
117
+ if (!root)
118
+ throw new Error(`not inside the Sharpee monorepo (no pnpm-workspace.yaml + packages/core above ${start})`);
119
+ return root;
120
+ }
121
+ /**
122
+ * 'monorepo' when run inside the Sharpee monorepo (build platform + bundle + in-repo
123
+ * stories); 'standalone' when run in an author's own project (build their story via its
124
+ * own toolchain). The location-aware split behind `sharpee build` (ADR-180 unify).
125
+ */
126
+ function detectMode(start = process.cwd()) {
127
+ return findMonorepoRoot(start) ? 'monorepo' : 'standalone';
128
+ }
129
+ /**
130
+ * Resolve the `tsf` executable. Prefers the workspace-local `node_modules/.bin/tsf`
131
+ * (a bare `tsf` fails when tsf is only a shell alias / not on a non-interactive PATH);
132
+ * falls back to `tsf` on PATH. Produces identical compiler output either way.
133
+ */
134
+ function tsfBin(root) {
135
+ const local = (0, node_path_1.join)(root, 'node_modules', '.bin', 'tsf');
136
+ return (0, node_fs_1.existsSync)(local) ? local : 'tsf';
137
+ }
138
+ /**
139
+ * Resolve a story name to its directory (build.sh resolve_story_dir, 39-48):
140
+ * `stories/<name>` then `tutorials/<name>`. Returns absolute path or null.
141
+ */
142
+ function resolveStoryDir(root, name) {
143
+ for (const base of ['stories', 'tutorials']) {
144
+ const dir = (0, node_path_1.join)(root, base, name);
145
+ if ((0, node_fs_1.existsSync)(dir))
146
+ return dir;
147
+ }
148
+ return null;
149
+ }
150
+ /** The story version.ts path build.sh stamps (stories/<name> only — tutorials are NOT stamped). */
151
+ function storyVersionFile(root, name) {
152
+ return (0, node_path_1.join)(root, 'stories', name, 'src', 'version.ts');
153
+ }
154
+ function classifyStory(root, dir) {
155
+ const name = (0, node_path_1.basename)(dir);
156
+ const parent = (0, node_path_1.dirname)(dir);
157
+ const underStories = parent === (0, node_path_1.join)(root, 'stories');
158
+ const underTutorials = parent === (0, node_path_1.join)(root, 'tutorials');
159
+ const inRepo = underStories || underTutorials;
160
+ const pkg = underStories
161
+ ? `@sharpee/story-${name}`
162
+ : underTutorials
163
+ ? `@sharpee/tutorial-${name}`
164
+ : null;
165
+ return { name, dir, pkg, inRepo, underStories };
166
+ }
167
+ /**
168
+ * Resolve a story given either a **path** (a directory with a package.json, tried
169
+ * relative to cwd then to root) or a bare **name** (stories/<name> then tutorials/<name>).
170
+ * Returns null if neither resolves. This is the single resolver `build` + `stampVersions`
171
+ * share, so path and name forms behave identically (ADR-180 Decision 4: a story is a location).
172
+ */
173
+ function resolveStory(root, nameOrPath) {
174
+ for (const dir of [(0, node_path_1.resolve)(nameOrPath), (0, node_path_1.resolve)(root, nameOrPath)]) {
175
+ if ((0, node_fs_1.existsSync)(dir) && (0, node_fs_1.existsSync)((0, node_path_1.join)(dir, 'package.json')))
176
+ return classifyStory(root, dir);
177
+ }
178
+ const byName = resolveStoryDir(root, nameOrPath);
179
+ return byName ? classifyStory(root, byName) : null;
180
+ }
181
+ /** Read a package.json's `version` field. */
182
+ function readVersion(pkgJsonPath) {
183
+ return JSON.parse((0, node_fs_1.readFileSync)(pkgJsonPath, 'utf8')).version;
184
+ }
185
+ //# sourceMappingURL=repo.js.map
package/repo.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI: sharpee build-browser
3
+ *
4
+ * Bundles a Sharpee story for web browser deployment.
5
+ */
6
+ /**
7
+ * Run the build-browser command
8
+ */
9
+ export declare function runBuildBrowserCommand(args: string[], projectDirArg?: string): Promise<void>;
10
+ //# sourceMappingURL=build-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-browser.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/standalone/build-browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwDH;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHlG"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * CLI: sharpee build-browser
4
+ *
5
+ * Bundles a Sharpee story for web browser deployment.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.runBuildBrowserCommand = runBuildBrowserCommand;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const child_process_1 = require("child_process");
45
+ /**
46
+ * Read story info from package.json or index.ts
47
+ */
48
+ function getProjectInfo(projectDir) {
49
+ // Try package.json first
50
+ const packagePath = path.join(projectDir, 'package.json');
51
+ if (fs.existsSync(packagePath)) {
52
+ try {
53
+ const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
54
+ return {
55
+ storyId: pkg.name || 'my-story',
56
+ storyTitle: pkg.description || pkg.name || 'My Story',
57
+ };
58
+ }
59
+ catch {
60
+ // Fall through
61
+ }
62
+ }
63
+ // Try reading from src/index.ts
64
+ const indexPath = path.join(projectDir, 'src', 'index.ts');
65
+ if (fs.existsSync(indexPath)) {
66
+ const content = fs.readFileSync(indexPath, 'utf-8');
67
+ const idMatch = content.match(/id:\s*['"]([^'"]+)['"]/);
68
+ const titleMatch = content.match(/title:\s*['"]([^'"]+)['"]/);
69
+ if (idMatch || titleMatch) {
70
+ return {
71
+ storyId: idMatch?.[1] || 'my-story',
72
+ storyTitle: titleMatch?.[1] || 'My Story',
73
+ };
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ /**
79
+ * Process template placeholders
80
+ */
81
+ function processTemplate(content, info) {
82
+ return content
83
+ .replace(/\{\{STORY_ID\}\}/g, info.storyId)
84
+ .replace(/\{\{STORY_TITLE\}\}/g, info.storyTitle);
85
+ }
86
+ /**
87
+ * Run the build-browser command
88
+ */
89
+ async function runBuildBrowserCommand(args, projectDirArg) {
90
+ // Check for help
91
+ if (args.includes('--help') || args.includes('-h')) {
92
+ showHelp();
93
+ return;
94
+ }
95
+ const projectDir = projectDirArg || process.cwd();
96
+ const minify = !args.includes('--no-minify');
97
+ const sourcemap = !args.includes('--no-sourcemap');
98
+ console.log('\nšŸ”Ø Building browser bundle\n');
99
+ // Check if this is a Sharpee project
100
+ const info = getProjectInfo(projectDir);
101
+ if (!info) {
102
+ console.error('Error: This does not appear to be a Sharpee project.');
103
+ console.error('Make sure you have a package.json or src/index.ts with story config.');
104
+ process.exit(1);
105
+ }
106
+ console.log(` Story: ${info.storyTitle} (${info.storyId})`);
107
+ // Check for browser-entry.ts
108
+ const browserEntryPath = path.join(projectDir, 'src', 'browser-entry.ts');
109
+ if (!fs.existsSync(browserEntryPath)) {
110
+ console.error('\nError: src/browser-entry.ts not found.');
111
+ console.error('Run "sharpee init-browser" first to add browser support.');
112
+ process.exit(1);
113
+ }
114
+ // Create output directory
115
+ const outDir = path.join(projectDir, 'dist', 'web');
116
+ fs.mkdirSync(outDir, { recursive: true });
117
+ // Build with esbuild
118
+ console.log(' Building...');
119
+ const esbuildArgs = [
120
+ browserEntryPath,
121
+ '--bundle',
122
+ '--platform=browser',
123
+ '--target=es2020',
124
+ '--format=iife',
125
+ `--global-name=SharpeeGame`,
126
+ `--outfile=${path.join(outDir, info.storyId + '.js')}`,
127
+ '--define:process.env.NODE_ENV=\\"production\\"',
128
+ '--define:process.env.PARSER_DEBUG=\\"false\\"',
129
+ '--define:process.env.DEBUG_PRONOUNS=\\"\\"',
130
+ ];
131
+ if (minify) {
132
+ esbuildArgs.push('--minify');
133
+ }
134
+ if (sourcemap) {
135
+ esbuildArgs.push('--sourcemap');
136
+ }
137
+ try {
138
+ (0, child_process_1.execSync)(`npx esbuild ${esbuildArgs.join(' ')}`, {
139
+ cwd: projectDir,
140
+ stdio: 'pipe',
141
+ });
142
+ console.log(` āœ“ Built ${info.storyId}.js`);
143
+ }
144
+ catch (error) {
145
+ console.error(' āœ— Build failed');
146
+ if (error.stderr) {
147
+ console.error(error.stderr.toString());
148
+ }
149
+ process.exit(1);
150
+ }
151
+ // Copy HTML template
152
+ const browserHtmlPath = path.join(projectDir, 'browser', 'index.html');
153
+ const defaultHtmlPath = path.join(__dirname, '..', '..', 'templates', 'browser', 'index.html');
154
+ const htmlSource = fs.existsSync(browserHtmlPath) ? browserHtmlPath : defaultHtmlPath;
155
+ if (fs.existsSync(htmlSource)) {
156
+ let htmlContent = fs.readFileSync(htmlSource, 'utf-8');
157
+ htmlContent = processTemplate(htmlContent, info);
158
+ fs.writeFileSync(path.join(outDir, 'index.html'), htmlContent);
159
+ console.log(' āœ“ Copied index.html');
160
+ }
161
+ else {
162
+ console.warn(' ⚠ HTML template not found');
163
+ }
164
+ // Copy CSS
165
+ const browserCssPath = path.join(projectDir, 'browser', 'styles.css');
166
+ const defaultCssPath = path.join(__dirname, '..', '..', 'templates', 'browser', 'styles.css');
167
+ const cssSource = fs.existsSync(browserCssPath) ? browserCssPath : defaultCssPath;
168
+ if (fs.existsSync(cssSource)) {
169
+ fs.copyFileSync(cssSource, path.join(outDir, 'styles.css'));
170
+ console.log(' āœ“ Copied styles.css');
171
+ }
172
+ else {
173
+ console.warn(' ⚠ CSS file not found');
174
+ }
175
+ // Report bundle size
176
+ const bundlePath = path.join(outDir, info.storyId + '.js');
177
+ if (fs.existsSync(bundlePath)) {
178
+ const stats = fs.statSync(bundlePath);
179
+ const sizeKb = (stats.size / 1024).toFixed(1);
180
+ console.log(`\n Bundle size: ${sizeKb} KB`);
181
+ }
182
+ console.log('\nāœ… Build complete!\n');
183
+ console.log(`Output: ${path.relative(projectDir, outDir)}/`);
184
+ console.log('');
185
+ console.log('To test locally:');
186
+ console.log(` npx serve ${path.relative(projectDir, outDir)}`);
187
+ console.log('');
188
+ }
189
+ function showHelp() {
190
+ console.log(`
191
+ sharpee build-browser - Build a web browser bundle
192
+
193
+ Usage: sharpee build-browser [options]
194
+
195
+ Options:
196
+ --no-minify Skip minification
197
+ --no-sourcemap Skip source map generation
198
+
199
+ Output:
200
+ dist/web/
201
+ index.html HTML page
202
+ <story-id>.js JavaScript bundle
203
+ styles.css Stylesheet
204
+
205
+ The bundle includes your story, the Sharpee engine, and all dependencies.
206
+ `);
207
+ }
208
+ //# sourceMappingURL=build-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-browser.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/devkit/src/standalone/build-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * CLI: sharpee build
3
+ *
4
+ * Builds a .sharpee story bundle and browser client from a story project.
5
+ * With --test, also compiles the story and runs transcript tests.
6
+ */
7
+ export declare function runBuildCommand(args: string[], projectDirArg?: string): Promise<void>;
8
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/devkit/src/standalone/build.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiDH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwI3F"}