@marimo-team/marimo-export 0.0.0 → 0.0.2

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.
@@ -0,0 +1,201 @@
1
+ //#region ../portable-json/src/types.d.ts
2
+ type JsonPrimitive = string | number | boolean | null;
3
+ type JsonValue = JsonPrimitive | readonly JsonValue[] | JsonObject;
4
+ interface JsonObject {
5
+ readonly [key: string]: JsonValue;
6
+ }
7
+ //#endregion
8
+ //#region src/types.d.ts
9
+ declare const NOTEBOOK_EXPORT_ERROR_CODES: readonly ["abort", "asset_invalid", "decode_failed", "integrity_failed", "loader_ambiguous", "loader_invalid", "loader_unavailable", "output_not_found", "output_representation_changed", "export_invalid", "export_noncanonical", "read_failed", "read_limit_exceeded", "state_input_invalid", "state_not_found", "state_unavailable"];
10
+ type ScalarValue = null | boolean | string | number | bigint;
11
+ type NotebookExportErrorCode = (typeof NOTEBOOK_EXPORT_ERROR_CODES)[number];
12
+ interface NotebookExportErrorOptions {
13
+ readonly cause?: unknown;
14
+ readonly details?: JsonObject;
15
+ }
16
+ declare class NotebookExportError extends Error {
17
+ readonly code: NotebookExportErrorCode;
18
+ readonly details: JsonObject | undefined;
19
+ readonly cause: unknown;
20
+ constructor(code: NotebookExportErrorCode, message: string, options?: NotebookExportErrorOptions);
21
+ }
22
+ declare function isNotebookExportError<Value>(value: Value): value is Value & NotebookExportError;
23
+ interface NotebookProvenance {
24
+ readonly filename: string | null;
25
+ readonly documentSha256: string;
26
+ }
27
+ interface ProducerProvenance {
28
+ readonly marimo: string;
29
+ readonly marimoExport: string;
30
+ readonly implementationSha256: string;
31
+ }
32
+ interface ControlIndexStep {
33
+ readonly kind: "index";
34
+ readonly value: number;
35
+ }
36
+ interface ControlKeyStep {
37
+ readonly kind: "key";
38
+ readonly value: string;
39
+ }
40
+ interface ControlElementStep {
41
+ readonly kind: "element";
42
+ }
43
+ type ControlPathStep = ControlIndexStep | ControlKeyStep | ControlElementStep;
44
+ interface ControlBinding {
45
+ readonly input: string;
46
+ readonly path: readonly ControlPathStep[];
47
+ }
48
+ interface Provenance {
49
+ readonly pythonType: string;
50
+ }
51
+ interface AssetDescriptor {
52
+ readonly sha256: string;
53
+ readonly size: number;
54
+ }
55
+ interface ScalarDescriptor {
56
+ readonly codec: "marimo.scalar.v1";
57
+ readonly mediaType: "application/vnd.marimo.scalar.v1+json";
58
+ readonly provenance: Provenance;
59
+ readonly value: ScalarValue;
60
+ }
61
+ interface JsonDescriptor {
62
+ readonly codec: "marimo.json.v1";
63
+ readonly mediaType: "application/vnd.marimo.json.v1+json";
64
+ readonly provenance: Provenance;
65
+ readonly value: JsonValue;
66
+ }
67
+ interface MarimoOutputDescriptor {
68
+ readonly codec: "marimo.output.v1";
69
+ readonly mediaType: "application/vnd.marimo.output.v1+json";
70
+ readonly provenance: Provenance;
71
+ readonly asset: AssetDescriptor;
72
+ }
73
+ interface MarimoCellDescriptor {
74
+ readonly codec: "marimo.cell.v1";
75
+ readonly mediaType: "application/vnd.marimo.cell.v1+json";
76
+ readonly provenance: Provenance;
77
+ readonly asset: AssetDescriptor;
78
+ }
79
+ interface NumpyDescriptor {
80
+ readonly codec: "numpy.npy.v1";
81
+ readonly mediaType: "application/x-npy";
82
+ readonly provenance: Provenance;
83
+ readonly asset: AssetDescriptor;
84
+ }
85
+ interface ArrowDescriptor {
86
+ readonly codec: "apache.arrow.file.v1";
87
+ readonly mediaType: "application/vnd.apache.arrow.file";
88
+ readonly provenance: Provenance;
89
+ readonly asset: AssetDescriptor;
90
+ }
91
+ interface BlobAssetDescriptor {
92
+ readonly codec: "marimo.blob-asset.msgpack.v1";
93
+ readonly mediaType: string;
94
+ readonly filename: string | null;
95
+ readonly metadata: JsonObject;
96
+ readonly provenance: Provenance;
97
+ readonly asset: AssetDescriptor;
98
+ }
99
+ type OutputDescriptor = ScalarDescriptor | JsonDescriptor | MarimoOutputDescriptor | MarimoCellDescriptor | NumpyDescriptor | ArrowDescriptor | BlobAssetDescriptor;
100
+ interface MediaType {
101
+ readonly raw: string;
102
+ readonly essence: string;
103
+ readonly type: string;
104
+ readonly subtype: string;
105
+ readonly parameters: ReadonlyMap<string, string>;
106
+ }
107
+ interface BlobAsset {
108
+ readonly data: Uint8Array;
109
+ readonly mediaType: MediaType;
110
+ readonly filename: string | null;
111
+ readonly metadata: JsonObject;
112
+ }
113
+ interface OutputPayloadMap {
114
+ readonly "marimo.scalar.v1": ScalarValue;
115
+ readonly "marimo.json.v1": JsonValue;
116
+ readonly "marimo.output.v1": Uint8Array;
117
+ readonly "marimo.cell.v1": Uint8Array;
118
+ readonly "numpy.npy.v1": Uint8Array;
119
+ readonly "apache.arrow.file.v1": Uint8Array;
120
+ readonly "marimo.blob-asset.msgpack.v1": BlobAsset;
121
+ }
122
+ type OutputCodec = keyof OutputPayloadMap;
123
+ type DescriptorFor<C extends OutputCodec> = C extends "marimo.scalar.v1" ? ScalarDescriptor : C extends "marimo.json.v1" ? JsonDescriptor : C extends "marimo.output.v1" ? MarimoOutputDescriptor : C extends "marimo.cell.v1" ? MarimoCellDescriptor : C extends "numpy.npy.v1" ? NumpyDescriptor : C extends "apache.arrow.file.v1" ? ArrowDescriptor : C extends "marimo.blob-asset.msgpack.v1" ? BlobAssetDescriptor : never;
124
+ interface OutputLoader<C extends OutputCodec, T> {
125
+ readonly codec: C;
126
+ accepts(descriptor: DescriptorFor<C>, mediaType: MediaType): boolean;
127
+ load(input: {
128
+ readonly descriptor: DescriptorFor<C>;
129
+ readonly mediaType: MediaType;
130
+ readonly payload: OutputPayloadMap[C];
131
+ readonly signal?: AbortSignal;
132
+ }): T | Promise<T>;
133
+ }
134
+ type AnyOutputLoader = { [C in OutputCodec]: OutputLoader<C, unknown>; }[OutputCodec];
135
+ type BlobAssetLoader<T> = OutputLoader<"marimo.blob-asset.msgpack.v1", T>;
136
+ interface BlobAssetLoadInput {
137
+ readonly descriptor: BlobAssetDescriptor;
138
+ readonly mediaType: MediaType;
139
+ readonly payload: BlobAsset;
140
+ readonly signal?: AbortSignal;
141
+ }
142
+ interface OpenExportOptions {
143
+ readonly fetch?: typeof globalThis.fetch;
144
+ readonly signal?: AbortSignal;
145
+ }
146
+ interface LoadOptions {
147
+ readonly signal?: AbortSignal;
148
+ readonly maxBytes?: number;
149
+ }
150
+ interface VerifyOptions extends LoadOptions {
151
+ readonly maxTotalBytes?: number;
152
+ }
153
+ interface VerificationResult {
154
+ readonly states: number;
155
+ readonly outputs: number;
156
+ readonly assets: number;
157
+ readonly bytesVerified: number;
158
+ }
159
+ interface NotebookExport {
160
+ readonly base: URL;
161
+ readonly identity: string;
162
+ readonly specSha256: string;
163
+ readonly defaultState: ExportState;
164
+ readonly notebook: NotebookProvenance;
165
+ readonly producer: ProducerProvenance;
166
+ readonly inputNames: readonly string[];
167
+ readonly controlBindings: Readonly<Record<string, ControlBinding>>;
168
+ readonly outputNames: readonly string[];
169
+ states(): readonly ExportState[];
170
+ state(alias: string): ExportState;
171
+ resolve(inputs: JsonObject): ExportState;
172
+ verify(options?: VerifyOptions): Promise<VerificationResult>;
173
+ }
174
+ interface ExportState {
175
+ readonly notebookExport: NotebookExport;
176
+ readonly fingerprint: string;
177
+ readonly aliases: readonly string[];
178
+ readonly inputs: JsonObject;
179
+ outputs(): readonly ExportOutput[];
180
+ output(name: string): ExportOutput;
181
+ resolve(patch: JsonObject): ExportState;
182
+ }
183
+ interface ExportOutput {
184
+ readonly state: ExportState;
185
+ readonly name: string;
186
+ readonly codec: OutputCodec;
187
+ readonly mediaType: MediaType;
188
+ readonly descriptor: OutputDescriptor;
189
+ load<C extends OutputCodec, T>(loader: OutputLoader<C, T>, options?: LoadOptions): Promise<T>;
190
+ }
191
+ interface MountedView {
192
+ dispose(): void | Promise<void>;
193
+ }
194
+ interface MountOptions {
195
+ readonly signal?: AbortSignal;
196
+ }
197
+ interface MountableValue {
198
+ mount(element: HTMLElement, options?: MountOptions): Promise<MountedView>;
199
+ }
200
+ //#endregion
201
+ export { OutputDescriptor as A, JsonObject as B, NotebookExport as C, NumpyDescriptor as D, NotebookProvenance as E, ScalarDescriptor as F, JsonValue as H, ScalarValue as I, VerificationResult as L, OutputPayloadMap as M, ProducerProvenance as N, OpenExportOptions as O, Provenance as P, VerifyOptions as R, MountedView as S, NotebookExportErrorCode as T, JsonPrimitive as V, LoadOptions as _, BlobAssetDescriptor as a, MediaType as b, ControlBinding as c, ControlKeyStep as d, ControlPathStep as f, JsonDescriptor as g, ExportState as h, BlobAsset as i, OutputLoader as j, OutputCodec as k, ControlElementStep as l, ExportOutput as m, ArrowDescriptor as n, BlobAssetLoadInput as o, DescriptorFor as p, AssetDescriptor as r, BlobAssetLoader as s, AnyOutputLoader as t, ControlIndexStep as u, MarimoCellDescriptor as v, NotebookExportError as w, MountableValue as x, MarimoOutputDescriptor as y, isNotebookExportError as z };
@@ -0,0 +1,17 @@
1
+ //#region src/loader/utf8.ts
2
+ const decoder = new TextDecoder("utf-8", {
3
+ fatal: true,
4
+ ignoreBOM: true
5
+ });
6
+ const decodeUtf8Blob = ({ payload, signal }) => {
7
+ signal?.throwIfAborted();
8
+ const value = decoder.decode(payload.data);
9
+ signal?.throwIfAborted();
10
+ return value;
11
+ };
12
+ const hasUtf8Charset = (mediaType) => {
13
+ const charset = mediaType.parameters.get("charset");
14
+ return charset === void 0 || charset.toLowerCase() === "utf-8" || charset.toLowerCase() === "utf8";
15
+ };
16
+ //#endregion
17
+ export { hasUtf8Charset as n, decodeUtf8Blob as t };
package/package.json CHANGED
@@ -1,14 +1,121 @@
1
1
  {
2
2
  "name": "@marimo-team/marimo-export",
3
- "version": "0.0.0",
4
- "description": "Placeholder for @marimo-team/marimo-export. Real releases coming soon.",
3
+ "version": "0.0.2",
4
+ "description": "Load precomputed marimo notebook results in browser applications",
5
+ "homepage": "https://marimo-team.github.io/marimo-export/",
6
+ "bugs": {
7
+ "url": "https://github.com/marimo-team/marimo-export/issues"
8
+ },
5
9
  "license": "Apache-2.0",
6
10
  "repository": {
7
11
  "type": "git",
8
- "url": "git+https://github.com/marimo-team/marimo-export.git"
12
+ "url": "git+https://github.com/marimo-team/marimo-export.git",
13
+ "directory": "packages/browser"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"
18
+ ],
19
+ "type": "module",
20
+ "sideEffects": false,
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/index.d.mts",
24
+ "import": "./dist/index.mjs"
25
+ },
26
+ "./prepared": {
27
+ "types": "./dist/prepared/index.d.mts",
28
+ "import": "./dist/prepared/index.mjs"
29
+ },
30
+ "./loader/anywidget": {
31
+ "types": "./dist/loader/anywidget.d.mts",
32
+ "import": "./dist/loader/anywidget.mjs"
33
+ },
34
+ "./loader/arrow": {
35
+ "types": "./dist/loader/arrow.d.mts",
36
+ "import": "./dist/loader/arrow.mjs"
37
+ },
38
+ "./loader/html": {
39
+ "types": "./dist/loader/html.d.mts",
40
+ "import": "./dist/loader/html.mjs"
41
+ },
42
+ "./loader/json": {
43
+ "types": "./dist/loader/json.d.mts",
44
+ "import": "./dist/loader/json.mjs"
45
+ },
46
+ "./loader/marimo-cell": {
47
+ "types": "./dist/loader/marimo-cell.d.mts",
48
+ "import": "./dist/loader/marimo-cell.mjs"
49
+ },
50
+ "./loader/marimo-output": {
51
+ "types": "./dist/loader/marimo-output.d.mts",
52
+ "import": "./dist/loader/marimo-output.mjs"
53
+ },
54
+ "./loader/numpy": {
55
+ "types": "./dist/loader/numpy.d.mts",
56
+ "import": "./dist/loader/numpy.mjs"
57
+ },
58
+ "./loader/parquet": {
59
+ "types": "./dist/loader/parquet.d.mts",
60
+ "import": "./dist/loader/parquet.mjs"
61
+ },
62
+ "./loader/text": {
63
+ "types": "./dist/loader/text.d.mts",
64
+ "import": "./dist/loader/text.mjs"
65
+ },
66
+ "./loader/vegalite": {
67
+ "types": "./dist/loader/vegalite.d.mts",
68
+ "import": "./dist/loader/vegalite.mjs"
69
+ },
70
+ "./package.json": "./package.json"
9
71
  },
10
- "homepage": "https://marimo.io",
11
72
  "publishConfig": {
12
73
  "access": "public"
74
+ },
75
+ "dependencies": {
76
+ "@msgpack/msgpack": "^3.1.3"
77
+ },
78
+ "devDependencies": {
79
+ "@anywidget/types": "^0.4.0",
80
+ "@marimo-team/portable-json": "0.0.0",
81
+ "@types/node": "^24.13.3",
82
+ "@uwdata/flechette": "^2.5.0",
83
+ "hyparquet": "^1.29.2",
84
+ "lz4js": "0.2.0",
85
+ "typescript": "^6.0.3",
86
+ "vega-embed": "^7.2.0",
87
+ "vite-plus": "0.3.0"
88
+ },
89
+ "peerDependencies": {
90
+ "@anywidget/types": "^0.4.0",
91
+ "@uwdata/flechette": "^2.5.0",
92
+ "hyparquet": "^1.26.2",
93
+ "lz4js": "0.2.0",
94
+ "vega-embed": "^7.1.0"
95
+ },
96
+ "peerDependenciesMeta": {
97
+ "@anywidget/types": {
98
+ "optional": true
99
+ },
100
+ "@uwdata/flechette": {
101
+ "optional": true
102
+ },
103
+ "hyparquet": {
104
+ "optional": true
105
+ },
106
+ "lz4js": {
107
+ "optional": true
108
+ },
109
+ "vega-embed": {
110
+ "optional": true
111
+ }
112
+ },
113
+ "scripts": {
114
+ "build": "vp pack",
115
+ "check": "vp check",
116
+ "test": "vp test",
117
+ "test:package": "vp pack && pnpm run test:workspace && node tests/packed-install.mjs",
118
+ "test:workspace": "node tests/clean-workspace.mjs",
119
+ "typecheck": "tsc --noEmit"
13
120
  }
14
- }
121
+ }