From c72069816c92fda693e4d7f31a4fd36198956dc1 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Tue, 8 Nov 2022 18:16:40 -0500 Subject: [PATCH] denoncm --- .../01-installation/06-deno.md | 110 +++++++++++++++--- docz/docs/03-demos/35-server.md | 10 +- docz/docs/index.md | 8 +- 3 files changed, 104 insertions(+), 24 deletions(-) diff --git a/docz/docs/02-getting-started/01-installation/06-deno.md b/docz/docs/02-getting-started/01-installation/06-deno.md index 91dd604..c45e063 100644 --- a/docz/docs/02-getting-started/01-installation/06-deno.md +++ b/docz/docs/02-getting-started/01-installation/06-deno.md @@ -7,19 +7,12 @@ sidebar_custom_props: --- import current from '/version.js'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; # Deno -[Deno](https://deno.land/) is a JavaScript runtime powered by V8. - -:::caution Deno support is considered experimental. - -Great open source software grows with user tests and reports. Any issues should -be reported to the Deno project for further diagnosis. - -::: - -Each standalone release script is available at . +Module scripts and type definitions are available at . Using the URL imports, `deno run` will automatically download scripts and types: @@ -30,12 +23,10 @@ import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs' The `@deno-types` comment instructs Deno to use the type definitions. -:::warning +:::caution Deno support is considered experimental. -Older releases are technically available on [deno.land/x](https://deno.land/x/) -but the Deno registry is out of date. - - is the authoritative source for SheetJS scripts. +Great open source software grows with user tests and reports. Any issues should +be reported to the Deno project for further diagnosis. ::: @@ -48,3 +39,92 @@ If Encoding support is required, `cpexcel.full.mjs` must be manually imported: import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs'; XLSX.set_cptable(cptable);`} + +## Node Compatibility Mode + +:::caution + +Node Compatibility Mode is useful for migrating existing NodeJS scripts to Deno. +It is considered unstable by the platform developers. + +For greenfield Deno projects, HTTP imports are strongly recommended. + +::: + +The ["NodeJS" installation section](/docs/getting-started/installation/nodejs) +includes instructions for installing the NodeJS package. + +After installing, the `std/node` require can be used directly: + +```ts +/* load the `require` machinery */ +import { createRequire } from "https://deno.land/std/node/module.ts"; +const require = createRequire(import.meta.url); + +/* require the library */ +const XLSX = require("xlsx"); +``` + +## Upgrade Notes + +Upgrading to the latest version involves changing the import URLs. The import +and the types URLs should be updated at the same time: + +
{`\
+-// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
++// @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts"
+
+-import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
++import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs';
+
+-import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
++import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs';
+`}
+
+ +#### Deno Registry + +:::warning + +The official Deno registry is out of date. This is a registry bug. + + is the authoritative source for SheetJS scripts. + +::: + +Applications using the Deno registry can migrate by changing the URLs. + + + + +The SheetJS CDN version has no `v`. For example, `v0.18.3` maps to `0.18.3`: + +```diff +-// @deno-types="https://deno.land/x/sheetjs@v0.18.3/types/index.d.ts" ++// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts" + +-import * as XLSX from 'https://deno.land/x/sheetjs@v0.18.3/xlsx.mjs'; ++import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs'; + +-import * as cptable from 'https://deno.land/x/sheetjs@v0.18.3/dist/cpexcel.full.mjs'; ++import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs'; +``` + + + + +Version-less imports (`https://deno.land/x/sheetjs/xlsx.mjs`) map to `0.18.3`: + +```diff +-// @deno-types="https://deno.land/x/sheetjs/types/index.d.ts" ++// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts" + +-import * as XLSX from 'https://deno.land/x/sheetjs/xlsx.mjs'; ++import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs'; + +-import * as cptable from 'https://deno.land/x/sheetjs/dist/cpexcel.full.mjs'; ++import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs'; +``` + + + diff --git a/docz/docs/03-demos/35-server.md b/docz/docs/03-demos/35-server.md index 6ea0837..7eb189f 100644 --- a/docz/docs/03-demos/35-server.md +++ b/docz/docs/03-demos/35-server.md @@ -80,8 +80,6 @@ body parser out of the box. In testing, [Drash](https://drash.land/drash/) had an in-memory body parser which could handle file uploads on hosted services like Deno Deploy. -The service is hosted on Deno Deploy using Drash! - _Reading Data_ `Request#bodyParam` reads body parameters. For uploaded files, the `content` @@ -174,9 +172,9 @@ class ParseResource extends Drash.Resource {

SheetJS Spreadsheet Conversion Service

API -Send a POST request to https://s2c.sheetjs.com/ with the file in the "file" body parameter: +Send a POST request to http://localhost:3000/ with the file in the "file" body parameter: -$ curl -X POST -F"file=@test.xlsx" https://s2c.sheetjs.com/ +$ curl -X POST -F"file=@test.xlsx" http://localhost:3000/ The response will be an HTML TABLE generated from the first worksheet. @@ -459,8 +457,8 @@ fastify.post('/', async(req, reply) => { Out of the box, Fastify will return an error `FST_ERR_CTP_BODY_TOO_LARGE` when processing large spreadsheets (`statusCode 413`). This is a Fastify issue. -[`bodyLimit`](https://www.fastify.io/docs/latest/Reference/Server/#bodylimit) -in the docs explains the setting. It can be overridden during server creation: +The default body size limit (including all uploaded files and fields) is 1 MB. +It can be increased by setting the `bodyLimit` option during server creation: ```js /* increase request body size limit to 5MB = 5 * 1024 * 1024 bytes */ diff --git a/docz/docs/index.md b/docz/docs/index.md index 9acb3f1..e40ed31 100644 --- a/docz/docs/index.md +++ b/docz/docs/index.md @@ -126,12 +126,14 @@ support for CSS styling and rich text. ```html