@fireproof/core 0.19.11-dev-dryrun → 0.19.11-dev-dryrun2
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.
- package/{chunk-MAK4D54P.js → chunk-OFGPKRCM.js} +11 -1
- package/chunk-OFGPKRCM.js.map +1 -0
- package/{chunk-XINRLWR3.js → chunk-WS3YRPIA.js} +4 -4
- package/{gateway-VWWKLHUI.js → gateway-5FCWPX5W.js} +3 -3
- package/{gateway-7OM6OSYK.js → gateway-H7UD6TNB.js} +2 -2
- package/index.cjs +331 -378
- package/index.cjs.map +1 -1
- package/index.d.cts +9 -5
- package/index.d.ts +9 -5
- package/index.global.js +270 -318
- package/index.global.js.map +1 -1
- package/index.js +273 -329
- package/index.js.map +1 -1
- package/{key-bag-file-DFMW6ZM6.js → key-bag-file-WADZBHYG.js} +3 -3
- package/{key-bag-indexdb-R2RWGSQ4.js → key-bag-indexdb-PGVAI3FJ.js} +3 -3
- package/{mem-filesystem-BZQZLUR6.js → mem-filesystem-YPPJV7Q2.js} +3 -3
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/metafile-iife.json +1 -1
- package/{node-filesystem-7YZR3POJ.js → node-filesystem-INX4ZTHE.js} +3 -3
- package/package.json +1 -1
- package/tests/fireproof/all-gateway.test.ts +12 -13
- package/tests/fireproof/utils.test.ts +19 -0
- package/tests/www/todo-local.html +1 -1
- package/tests/www/todo.html +12 -15
- package/{utils-AISQB3PB.js → utils-QO2HIWGI.js} +3 -3
- package/chunk-MAK4D54P.js.map +0 -1
- package/tests/fireproof/convert_uint8.py +0 -27
- /package/{chunk-XINRLWR3.js.map → chunk-WS3YRPIA.js.map} +0 -0
- /package/{gateway-VWWKLHUI.js.map → gateway-5FCWPX5W.js.map} +0 -0
- /package/{gateway-7OM6OSYK.js.map → gateway-H7UD6TNB.js.map} +0 -0
- /package/{key-bag-file-DFMW6ZM6.js.map → key-bag-file-WADZBHYG.js.map} +0 -0
- /package/{key-bag-indexdb-R2RWGSQ4.js.map → key-bag-indexdb-PGVAI3FJ.js.map} +0 -0
- /package/{mem-filesystem-BZQZLUR6.js.map → mem-filesystem-YPPJV7Q2.js.map} +0 -0
- /package/{node-filesystem-7YZR3POJ.js.map → node-filesystem-INX4ZTHE.js.map} +0 -0
- /package/tests/fireproof/cars/{bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js → bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts} +0 -0
- /package/{utils-AISQB3PB.js.map → utils-QO2HIWGI.js.map} +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
import {
|
2
2
|
toArrayBuffer
|
3
|
-
} from "./chunk-
|
4
|
-
import "./chunk-
|
3
|
+
} from "./chunk-WS3YRPIA.js";
|
4
|
+
import "./chunk-OFGPKRCM.js";
|
5
5
|
|
6
6
|
// src/runtime/gateways/file/node-filesystem.ts
|
7
7
|
import { runtimeFn } from "@adviser/cement";
|
@@ -42,4 +42,4 @@ var NodeFileSystem = class {
|
|
42
42
|
export {
|
43
43
|
NodeFileSystem
|
44
44
|
};
|
45
|
-
//# sourceMappingURL=node-filesystem-
|
45
|
+
//# sourceMappingURL=node-filesystem-INX4ZTHE.js.map
|
package/package.json
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import { Database, bs } from "@fireproof/core";
|
2
2
|
import { URI } from "@adviser/cement";
|
3
3
|
|
4
|
-
// @ts-expect-error - This import has no type definitions
|
5
4
|
import { fileContent } from "./cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.js";
|
6
5
|
|
7
6
|
function customExpect(value: unknown, matcher: (val: unknown) => void, message: string): void {
|
@@ -320,18 +319,18 @@ describe("noop Gateway subscribe", function () {
|
|
320
319
|
const metaUrl = await metaGateway?.buildUrl(metaStore?._url, "main");
|
321
320
|
await metaGateway?.start(metaStore?._url);
|
322
321
|
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
const
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
322
|
+
let resolve: () => void;
|
323
|
+
let didCall = false;
|
324
|
+
const p = new Promise<void>((r) => {
|
325
|
+
resolve = r;
|
326
|
+
});
|
327
|
+
const metaSubscribeResult = await metaGateway?.subscribe?.(metaUrl?.Ok(), async (data: Uint8Array) => {
|
328
|
+
const decodedData = new TextDecoder().decode(data);
|
329
|
+
expect(decodedData).toContain("[]");
|
330
|
+
didCall = true;
|
331
|
+
resolve();
|
332
|
+
});
|
333
|
+
if (!metaSubscribeResult?.isErr()) {
|
335
334
|
expect(metaSubscribeResult?.Ok()).toBeTruthy();
|
336
335
|
const ok = await db.put({ _id: "key1", hello: "world1" });
|
337
336
|
expect(ok).toBeTruthy();
|
@@ -2,6 +2,9 @@ import { URI } from "@adviser/cement";
|
|
2
2
|
import { rt, getStore, ensureSuperLog } from "@fireproof/core";
|
3
3
|
import { mockSuperThis } from "../helpers";
|
4
4
|
|
5
|
+
// only for test
|
6
|
+
import { UUID } from "uuidv7";
|
7
|
+
|
5
8
|
describe("utils", () => {
|
6
9
|
const sthis = mockSuperThis({});
|
7
10
|
const logger = ensureSuperLog(sthis, "getfilename");
|
@@ -62,4 +65,20 @@ describe("utils", () => {
|
|
62
65
|
});
|
63
66
|
}
|
64
67
|
});
|
68
|
+
|
69
|
+
it("order timeorderednextid", () => {
|
70
|
+
let last = sthis.timeOrderedNextId().str;
|
71
|
+
for (let i = 0; i < 10; i++) {
|
72
|
+
const id = sthis.timeOrderedNextId().str;
|
73
|
+
const x = UUID.parse(id);
|
74
|
+
expect(x.getVariant()).toBe("VAR_10");
|
75
|
+
assert(id !== last, "id should be greater than last");
|
76
|
+
assert(id.slice(0, 13) >= last.slice(0, 13), `id should be greater than last ${id.slice(0, 13)} ${last.slice(0, 13)}`);
|
77
|
+
last = id;
|
78
|
+
}
|
79
|
+
});
|
80
|
+
it("timeorderednextid is uuidv7", () => {
|
81
|
+
const id = sthis.timeOrderedNextId(0xcafebabebeef).str;
|
82
|
+
expect(id.slice(0, 15)).toBe("cafebabe-beef-7");
|
83
|
+
});
|
65
84
|
});
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta charset="UTF-8" />
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6
6
|
<title>Fireproof Test</title>
|
7
|
-
<script src="
|
7
|
+
<script src="index.global.js"></script>
|
8
8
|
<script type="text/javascript">
|
9
9
|
function todoApp() {
|
10
10
|
const actorTag = Math.random().toString(36).substring(2, 7);
|
package/tests/www/todo.html
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
<meta charset="UTF-8" />
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6
6
|
<title>Fireproof Test</title>
|
7
|
-
<script src="
|
8
|
-
<script src="
|
7
|
+
<script src="index.global.js"></script>
|
8
|
+
<script src="partykit.global.js"></script>
|
9
9
|
<script type="text/javascript">
|
10
10
|
function todoApp() {
|
11
11
|
const actorTag = Math.random().toString(36).substring(2, 7);
|
12
12
|
const { fireproof, index } = Fireproof;
|
13
|
-
const { connect } =
|
13
|
+
const { connect } = Connect;
|
14
14
|
|
15
15
|
// console.log('connect', connect)
|
16
16
|
|
@@ -38,10 +38,11 @@
|
|
38
38
|
} else {
|
39
39
|
dbName = name;
|
40
40
|
db = fireproof(name, { autoCompact: 100, threshold: 50000 });
|
41
|
-
cx = connect
|
42
|
-
cx.
|
41
|
+
cx = connect(db);
|
42
|
+
cx.loaded.then(async () => {
|
43
43
|
const span = document.querySelector("#cxInfo");
|
44
|
-
|
44
|
+
console.log("cx", cx);
|
45
|
+
span.innerText = `📡 ${cx.url.toString()}`;
|
45
46
|
});
|
46
47
|
}
|
47
48
|
|
@@ -52,7 +53,7 @@
|
|
52
53
|
if (changes.clock.length > 0) {
|
53
54
|
input.disabled = false;
|
54
55
|
} else {
|
55
|
-
cx.
|
56
|
+
cx.loaded.then(async () => {
|
56
57
|
input.disabled = false;
|
57
58
|
});
|
58
59
|
}
|
@@ -75,16 +76,12 @@
|
|
75
76
|
let compactor = "🚗";
|
76
77
|
function drawInfo() {
|
77
78
|
document.querySelector("#carLog").innerText =
|
78
|
-
` ⏰ ${db._crdt.clock.head.length} ${compactor} ${cx.loader.carLog.length} 📩 ${
|
79
|
+
` ⏰ ${db._crdt.clock.head.length} ${compactor} ${cx.loader.carLog.length} 📩 ${1}`;
|
79
80
|
}
|
80
81
|
const doRedraw = async () => {
|
81
82
|
drawInfo();
|
82
83
|
const result = await db.allDocs().catch((e) => {
|
83
|
-
console.error(
|
84
|
-
"allDocs error",
|
85
|
-
e,
|
86
|
-
` ⏰ ${db._crdt.clock.head.length} ${compactor} ${cx.loader.carLog.length} 📩 ${cx.loader.remoteWAL.walState.operations.length}`,
|
87
|
-
);
|
84
|
+
console.error("allDocs error", e, ` ⏰ ${db._crdt.clock.head.length} ${compactor} ${cx.loader.carLog.length} 📩 ${1}`);
|
88
85
|
return { rows: [] };
|
89
86
|
});
|
90
87
|
drawInfo();
|
@@ -166,8 +163,8 @@
|
|
166
163
|
const goWorker = (dcs) => {
|
167
164
|
const timeout =
|
168
165
|
10 +
|
169
|
-
Math.pow(db._crdt.clock.head.length + cx.loader.
|
170
|
-
(Math.floor(Math.random() *
|
166
|
+
Math.pow(db._crdt.clock.head.length + cx.loader.taskManager.queue.length, 2) *
|
167
|
+
(Math.floor(Math.random() * 2000) + 2000);
|
171
168
|
// console.log('go worker', timeout/ 1000)
|
172
169
|
worker = setTimeout(async () => {
|
173
170
|
await Promise.all(
|
@@ -3,12 +3,12 @@ import {
|
|
3
3
|
getFileSystem,
|
4
4
|
getPath,
|
5
5
|
toArrayBuffer
|
6
|
-
} from "./chunk-
|
7
|
-
import "./chunk-
|
6
|
+
} from "./chunk-WS3YRPIA.js";
|
7
|
+
import "./chunk-OFGPKRCM.js";
|
8
8
|
export {
|
9
9
|
getFileName,
|
10
10
|
getFileSystem,
|
11
11
|
getPath,
|
12
12
|
toArrayBuffer
|
13
13
|
};
|
14
|
-
//# sourceMappingURL=utils-
|
14
|
+
//# sourceMappingURL=utils-QO2HIWGI.js.map
|
package/chunk-MAK4D54P.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["import {\n Logger,\n LoggerImpl,\n IsLogger,\n Result,\n ResolveOnce,\n isURL,\n URI,\n CoerceURI,\n runtimeFn,\n envFactory,\n Env,\n toCryptoRuntime,\n CryptoRuntime,\n JSONFormatter,\n YAMLFormatter,\n} from \"@adviser/cement\";\nimport { PathOps, StoreType, SuperThis, SuperThisOpts, TextEndeCoder } from \"./types\";\nimport { base58btc } from \"multiformats/bases/base58\";\n\nexport type { Logger };\nexport { Result };\n\nconst globalLogger: Logger = new LoggerImpl();\n\nconst registerFP_DEBUG = new ResolveOnce();\n\ninterface superThisOpts {\n readonly logger: Logger;\n readonly env: Env;\n readonly pathOps: PathOps;\n readonly crypto: CryptoRuntime;\n readonly ctx: Record<string, unknown>;\n readonly txt: TextEndeCoder;\n}\n\nclass superThis implements SuperThis {\n readonly logger: Logger;\n readonly env: Env;\n readonly pathOps: PathOps;\n readonly ctx: Record<string, unknown>;\n readonly txt: TextEndeCoder;\n readonly crypto: CryptoRuntime;\n\n constructor(opts: superThisOpts) {\n this.logger = opts.logger;\n this.env = opts.env;\n this.crypto = opts.crypto;\n this.pathOps = opts.pathOps;\n this.txt = opts.txt;\n this.ctx = { ...opts.ctx };\n // console.log(\"superThis\", this);\n }\n\n nextId(bytes = 6): { str: string; bin: Uint8Array } {\n const bin = this.crypto.randomBytes(bytes);\n return {\n str: base58btc.encode(bin),\n bin,\n };\n }\n\n start(): Promise<void> {\n return Promise.resolve();\n }\n\n clone(override: Partial<SuperThisOpts>): SuperThis {\n return new superThis({\n logger: override.logger || this.logger,\n env: envFactory(override.env) || this.env,\n crypto: override.crypto || this.crypto,\n pathOps: override.pathOps || this.pathOps,\n txt: override.txt || this.txt,\n ctx: { ...this.ctx, ...override.ctx },\n });\n }\n}\n\n// const pathOps =\nfunction presetEnv() {\n const penv = new Map([\n // [\"FP_DEBUG\", \"xxx\"],\n // [\"FP_ENV\", \"development\"],\n ...Array.from(\n Object.entries(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((globalThis as any)[Symbol.for(\"FP_PRESET_ENV\")] || {}) as Record<string, string>,\n ),\n ), // .map(([k, v]) => [k, v as string])\n ]);\n // console.log(\">>>>>>\", penv)\n return penv;\n}\n// const envImpl = envFactory({\n// symbol: \"FP_ENV\",\n// presetEnv: presetEnv(),\n// });\nclass pathOpsImpl implements PathOps {\n join(...paths: string[]): string {\n return paths.map((i) => i.replace(/\\/+$/, \"\")).join(\"/\");\n }\n dirname(path: string) {\n return path.split(\"/\").slice(0, -1).join(\"/\");\n }\n // homedir() {\n // throw new Error(\"SysContainer:homedir is not available in seeded state\");\n // }\n}\nconst pathOps = new pathOpsImpl();\nconst txtOps = {\n encode: (input: string) => new TextEncoder().encode(input),\n decode: (input: Uint8Array) => new TextDecoder().decode(input),\n};\n\nexport function ensureSuperThis(osthis?: Partial<SuperThisOpts>): SuperThis {\n const env = envFactory({\n symbol: osthis?.env?.symbol || \"FP_ENV\",\n presetEnv: osthis?.env?.presetEnv || presetEnv(),\n });\n return new superThis({\n logger: osthis?.logger || globalLogger,\n env,\n crypto: osthis?.crypto || toCryptoRuntime(),\n ctx: osthis?.ctx || {},\n pathOps,\n txt: osthis?.txt || txtOps,\n });\n}\n\n// // eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function ensureSuperLog(sthis: SuperThis, componentName: string, ctx?: Record<string, unknown>): SuperThis {\n return sthis.clone({\n logger: ensureLogger(sthis, componentName, ctx),\n });\n}\n\nexport function ensureLogger(\n sthis: SuperThis /* Partial<LoggerOpts> | Logger */,\n componentName: string,\n ctx?: Record<string, unknown>,\n): Logger {\n // if (!opts?.logger) {\n // throw new Error(\"logger is required\");\n // }\n let logger = globalLogger;\n if (IsLogger(sthis)) {\n logger = sthis;\n } else if (sthis && IsLogger(sthis.logger)) {\n logger = sthis.logger;\n }\n const cLogger = logger.With().Module(componentName); //.Str(\"this\", uuidv7());\n const debug: string[] = [];\n let exposeStack = false;\n if (ctx) {\n if (\"debug\" in ctx) {\n if (typeof ctx.debug === \"string\" && ctx.debug.length > 0) {\n debug.push(ctx.debug);\n } else {\n debug.push(componentName);\n }\n delete ctx.debug;\n }\n if (\"exposeStack\" in ctx) {\n exposeStack = true;\n delete ctx.exposeStack;\n }\n if (\"this\" in ctx) {\n cLogger.Str(\"this\", sthis.nextId(4).str);\n delete ctx.this;\n }\n for (const [key, value] of Object.entries(ctx)) {\n switch (typeof value) {\n case \"string\":\n cLogger.Str(key, value);\n break;\n case \"number\":\n cLogger.Uint64(key, value);\n break;\n default:\n if (value instanceof Date) {\n cLogger.Str(key, value.toISOString());\n } else if (isURL(value)) {\n cLogger.Str(key, value.toString());\n } else if (typeof value === \"function\") {\n cLogger.Ref(key, value);\n } else {\n cLogger.Any(key, value);\n }\n break;\n }\n }\n }\n registerFP_DEBUG\n .once(async () => {\n // console.log(\"registerFP_DEBUG\", SysContainer.env)\n sthis.env.onSet(\n (key, value) => {\n // console.log(\"FP_DEBUG\", key, value, debug)\n switch (key) {\n case \"FP_FORMAT\": {\n switch (value) {\n case \"jsonice\":\n logger.SetFormatter(new JSONFormatter(logger.TxtEnDe(), 2));\n break;\n case \"yaml\":\n logger.SetFormatter(new YAMLFormatter(logger.TxtEnDe(), 2));\n break;\n case \"json\":\n default:\n logger.SetFormatter(new JSONFormatter(logger.TxtEnDe()));\n break;\n }\n break;\n }\n case \"FP_DEBUG\":\n logger.SetDebug(value || []);\n break;\n case \"FP_STACK\":\n logger.SetExposeStack(!!value);\n break;\n }\n },\n \"FP_FORMAT\",\n \"FP_DEBUG\",\n \"FP_STACK\",\n );\n })\n .finally(() => {\n /* do nothing */\n });\n\n if (debug.length > 0) {\n logger.SetDebug(debug);\n }\n if (exposeStack) {\n logger.SetExposeStack(true);\n }\n const out = cLogger.Logger();\n // out.Debug().Msg(\"logger ready\");\n return out;\n}\n\nexport type Joiner = (...toJoin: string[]) => string;\n\nexport interface Store {\n readonly store: StoreType;\n readonly name: string;\n}\n\nexport function getStore(url: URI, sthis: SuperThis, joiner: Joiner): Store {\n const store = url.getParam(\"store\");\n switch (store) {\n case \"data\":\n case \"wal\":\n case \"meta\":\n break;\n default:\n throw sthis.logger.Error().Url(url).Msg(`store not found`).AsError();\n }\n let name: string = store;\n if (url.hasParam(\"index\")) {\n name = joiner(url.getParam(\"index\") || \"idx\", name);\n }\n return { store, name };\n}\n\nexport function getKey(url: URI, logger: Logger): string {\n const result = url.getParam(\"key\");\n if (!result) throw logger.Error().Str(\"url\", url.toString()).Msg(`key not found`).AsError();\n return result;\n}\n\nexport function getName(sthis: SuperThis, url: URI): string {\n let result = url.getParam(\"name\");\n if (!result) {\n result = sthis.pathOps.dirname(url.pathname);\n if (result.length === 0) {\n throw sthis.logger.Error().Str(\"url\", url.toString()).Msg(`name not found`).AsError();\n }\n }\n return result;\n}\n\n// export function exception2Result<T = void>(fn: () => Promise<T>): Promise<Result<T>> {\n// return fn()\n// .then((value) => Result.Ok(value))\n// .catch((e) => Result.Err(e));\n// }\n\nexport async function exceptionWrapper<T, E extends Error>(fn: () => Promise<Result<T, E>>): Promise<Result<T, E>> {\n return fn().catch((e) => Result.Err(e));\n}\n\n// // the big side effect party --- hate it\n// export function sanitizeURL(url: URL) {\n// url.searchParams.sort();\n// // const searchParams = Object.entries(url.searchParams).sort(([a], [b]) => a.localeCompare(b));\n// // console.log(\"searchParams\", searchParams);\n// // for (const [key] of searchParams) {\n// // url.searchParams.delete(key);\n// // }\n// // for (const [key, value] of searchParams) {\n// // url.searchParams.set(key, value);\n// // }\n// }\n\nexport class NotFoundError extends Error {\n readonly code = \"ENOENT\";\n}\n\nexport function isNotFoundError(e: Error | Result<unknown> | unknown): e is NotFoundError {\n if (Result.Is(e)) {\n if (e.isOk()) return false;\n e = e.Err();\n }\n if ((e as NotFoundError).code === \"ENOENT\") return true;\n return false;\n}\n\nexport function dataDir(sthis: SuperThis, name?: string, base?: CoerceURI): URI {\n if (!base) {\n if (!runtimeFn().isBrowser) {\n const home = sthis.env.get(\"HOME\") || \"./\";\n base = sthis.env.get(\"FP_STORAGE_URL\") || `file://${sthis.pathOps.join(home, \".fireproof\")}`;\n } else {\n base = sthis.env.get(\"FP_STORAGE_URL\") || `indexdb://fp`;\n }\n }\n return URI.from(base.toString())\n .build()\n .setParam(\"name\", name || \"\")\n .URI();\n}\n\nexport function UInt8ArrayEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":"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","names":[]}
|
@@ -1,27 +0,0 @@
|
|
1
|
-
import sys
|
2
|
-
import os
|
3
|
-
|
4
|
-
def file_to_js_uint8array(input_file, output_file):
|
5
|
-
with open(input_file, 'rb') as f:
|
6
|
-
content = f.read()
|
7
|
-
|
8
|
-
uint8array = ', '.join(str(byte) for byte in content)
|
9
|
-
|
10
|
-
js_content = f"const fileContent = new Uint8Array([{uint8array}]);\n\n"
|
11
|
-
js_content += "// You can use this Uint8Array as needed in your JavaScript code\n"
|
12
|
-
js_content += "// For example, to create a Blob:\n"
|
13
|
-
js_content += "// const blob = new Blob([fileContent], { type: 'application/octet-stream' });\n"
|
14
|
-
|
15
|
-
with open(output_file, 'w') as f:
|
16
|
-
f.write(js_content)
|
17
|
-
|
18
|
-
if __name__ == "__main__":
|
19
|
-
if len(sys.argv) != 2:
|
20
|
-
print("Usage: python script.py <input_file>")
|
21
|
-
sys.exit(1)
|
22
|
-
|
23
|
-
input_file = sys.argv[1]
|
24
|
-
output_file = os.path.splitext(input_file)[0] + '.js'
|
25
|
-
|
26
|
-
file_to_js_uint8array(input_file, output_file)
|
27
|
-
print(f"Converted {input_file} to {output_file}")
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|