@shellicar/svelte-adapter-azure-functions 0.1.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 (44) hide show
  1. package/README.md +74 -0
  2. package/dist/adapter.d.ts +9 -0
  3. package/dist/adapter.js +1 -0
  4. package/dist/adapter.js.map +1 -0
  5. package/dist/ambient.d.d.ts +9 -0
  6. package/dist/ambient.d.js +1 -0
  7. package/dist/ambient.d.js.map +1 -0
  8. package/dist/chunk-42KILSBR.js +1 -0
  9. package/dist/chunk-42KILSBR.js.map +1 -0
  10. package/dist/chunk-6TUT2TP2.js +1 -0
  11. package/dist/chunk-6TUT2TP2.js.map +1 -0
  12. package/dist/chunk-AW5NC2LL.js +1 -0
  13. package/dist/chunk-AW5NC2LL.js.map +1 -0
  14. package/dist/chunk-GKOGVGYC.js +1 -0
  15. package/dist/chunk-GKOGVGYC.js.map +1 -0
  16. package/dist/chunk-PJIDA4TG.js +1 -0
  17. package/dist/chunk-PJIDA4TG.js.map +1 -0
  18. package/dist/chunk-PSBHP5ZD.js +1 -0
  19. package/dist/chunk-PSBHP5ZD.js.map +1 -0
  20. package/dist/defaults.d.ts +5 -0
  21. package/dist/defaults.js +1 -0
  22. package/dist/defaults.js.map +1 -0
  23. package/dist/handler.d.ts +5 -0
  24. package/dist/handler.js +1 -0
  25. package/dist/handler.js.map +1 -0
  26. package/dist/headers.d.ts +17 -0
  27. package/dist/headers.js +1 -0
  28. package/dist/headers.js.map +1 -0
  29. package/dist/index.d.ts +16 -0
  30. package/dist/index.js +1 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/server.d.ts +5 -0
  33. package/dist/server.js +1 -0
  34. package/dist/server.js.map +1 -0
  35. package/dist/shims.d.ts +2 -0
  36. package/dist/shims.js +1 -0
  37. package/dist/shims.js.map +1 -0
  38. package/dist/trigger.d.ts +2 -0
  39. package/dist/trigger.js +408 -0
  40. package/dist/trigger.js.map +1 -0
  41. package/dist/types.d.ts +8 -0
  42. package/dist/types.js +1 -0
  43. package/dist/types.js.map +1 -0
  44. package/package.json +59 -0
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # @shellicar/svelte-adapter-azure-functions
2
+
3
+ [![Azure Functions](https://img.shields.io/badge/Azure%20Functions-v4-0078D4?logo=azure-functions)][azure-functions]
4
+ [![SvelteKit](https://img.shields.io/badge/SvelteKit-2-FF3E00?logo=svelte)][sveltekit]
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?logo=typescript)][typescript]
6
+ [![Checked with Biome](https://img.shields.io/badge/Checked_with-Biome-60A5FA?logo=biome)][biome]
7
+
8
+ A [SvelteKit adapter](https://kit.svelte.dev/docs/adapters) that builds your app into an Azure Function.
9
+
10
+ ## Motivation
11
+
12
+ Looking at the available SvelteKit adapters, there's one for Node.js and a community adapter for Azure Static Web Apps. I wanted to deploy to Azure Functions, so I created this adapter.
13
+
14
+ ## Implementation
15
+
16
+ The adapter generates a single Azure Function:
17
+
18
+ ```typescript
19
+ app.http('server', {
20
+ handler,
21
+ route: '{*url}',
22
+ methods: ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT']
23
+ });
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ```bash
29
+ pnpm add -D @shellicar/svelte-adapter-azure-functions
30
+ ```
31
+
32
+ In `svelte.config.js`:
33
+ ```js
34
+ import adapter from '@shellicar/svelte-adapter-azure-functions';
35
+
36
+ export default {
37
+ kit: {
38
+ adapter: adapter()
39
+ }
40
+ };
41
+ ```
42
+
43
+ ## Configuration
44
+
45
+ ### esbuildOptions
46
+
47
+ ```js
48
+ adapter({
49
+ esbuildOptions: {
50
+ minify: false
51
+ }
52
+ })
53
+ ```
54
+
55
+ Default options in [defaults.ts](./src/defaults.ts):
56
+ ```typescript
57
+ export const defaults = {
58
+ bundle: true,
59
+ platform: 'node',
60
+ target: 'node20',
61
+ format: 'esm',
62
+ // ...see defaults.ts for full options
63
+ };
64
+ ```
65
+
66
+ ## Credits
67
+
68
+ * [svelte-adapter-azure-swa](https://github.com/geoffrich/svelte-adapter-azure-swa)
69
+ * [esbuild-azure-functions](https://github.com/beyerleinf/esbuild-azure-functions)
70
+
71
+ [azure-functions]: https://learn.microsoft.com/azure/azure-functions/functions-reference-node?tabs=typescript%2Cwindows%2Cazure-cli&pivots=nodejs-model-v4
72
+ [sveltekit]: https://kit.svelte.dev
73
+ [typescript]: https://www.typescriptlang.org
74
+ [biome]: https://biomejs.dev
@@ -0,0 +1,9 @@
1
+ import { Adapter } from '@sveltejs/kit';
2
+ import { BuildOptions } from 'esbuild';
3
+
4
+ interface AzureFunctionsAdapterOptions {
5
+ esbuildOptions?: BuildOptions;
6
+ }
7
+ declare const createAdapter: (options?: AzureFunctionsAdapterOptions) => Adapter;
8
+
9
+ export { type AzureFunctionsAdapterOptions, createAdapter };
@@ -0,0 +1 @@
1
+ import{createAdapter as o}from"./chunk-42KILSBR.js";import"./chunk-6TUT2TP2.js";import"./chunk-AW5NC2LL.js";export{o as createAdapter};//# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,9 @@
1
+ import * as _sveltejs_kit from '@sveltejs/kit';
2
+
3
+ declare module 'SERVER' {
4
+ export { Server } from '@sveltejs/kit';
5
+ }
6
+
7
+ declare module 'MANIFEST' {
8
+ export const manifest: _sveltejs_kit.SSRManifest;
9
+ }
@@ -0,0 +1 @@
1
+ import{init_cjs_shim as m}from"./chunk-AW5NC2LL.js";m();//# sourceMappingURL=ambient.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ambient.d.ts"],"sourcesContent":["declare module 'SERVER' {\n export { Server } from '@sveltejs/kit';\n}\n\ndeclare module 'MANIFEST' {\n export const manifest: import('@sveltejs/kit').SSRManifest;\n}\n\ninterface String {\n split(separator: string | RegExp): [string, ...string[]];\n}\n\ndeclare namespace NodeJS {\n interface ProcessEnv {\n [key: string]: string;\n }\n}\n"],"mappings":";;;;;AAAA;","names":[]}
@@ -0,0 +1 @@
1
+ import{defaults as r}from"./chunk-6TUT2TP2.js";import{__name as e,init_cjs_shim as t}from"./chunk-AW5NC2LL.js";t();import{writeFileSync as i}from"node:fs";import{join as o,posix as n}from"node:path";import{fileURLToPath as s}from"node:url";import{build as a}from"esbuild";var m=e(((e={})=>({name:"adapter-azure-functions",async adapt(t){const{esbuildOptions:m={}}=e,p="build",l=t.getBuildDirectory("adapter-azure-functions"),c=o(p,"server"),d=o(p,"static");t.log.minor(`Publishing to "${p}"`),t.rimraf(p),t.rimraf(l),t.log.minor("Copying assets..."),t.writeClient(d),t.writePrerendered(d);const f=s(new URL("../dist",import.meta.url)),u=n.relative(l,o(t.getServerDirectory()));t.log.minor("Generating serverless function..."),t.copy(f,l,{replace:{MANIFEST:"./manifest.js",SERVER:`${u}/index.js`,SHIMS:"./shims.js"}}),i(`${l}/manifest.js`,`export const manifest = ${t.generateManifest({relativePath:u})};\n`),await a({entryPoints:[`${l}/trigger.js`],outdir:o(c,"dist"),...r,...m});const g=s(new URL("../files",import.meta.url));t.log.minor("Copying files to server directory"),t.copy(g,c)}})),"createAdapter");export{m as createAdapter};//# sourceMappingURL=chunk-42KILSBR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapter.ts"],"sourcesContent":["import { writeFileSync } from 'node:fs';\nimport { join, posix } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { Adapter, Builder } from '@sveltejs/kit';\nimport { type BuildOptions, build } from 'esbuild';\nimport { defaults } from './defaults';\n\nexport interface AzureFunctionsAdapterOptions {\n esbuildOptions?: BuildOptions;\n}\n\nexport const createAdapter = (options: AzureFunctionsAdapterOptions = {}): Adapter => {\n return {\n name: 'adapter-azure-functions',\n async adapt(builder: Builder) {\n const { esbuildOptions = {} } = options;\n const publish = 'build';\n const tmp = builder.getBuildDirectory('adapter-azure-functions');\n const serverDir = join(publish, 'server');\n const staticDir = join(publish, 'static');\n\n builder.log.minor(`Publishing to \"${publish}\"`);\n builder.rimraf(publish);\n builder.rimraf(tmp);\n\n builder.log.minor('Copying assets...');\n builder.writeClient(staticDir);\n builder.writePrerendered(staticDir);\n\n const distFiles = fileURLToPath(new URL('../dist', import.meta.url));\n\n const relativePath = posix.relative(tmp, join(builder.getServerDirectory()));\n\n builder.log.minor('Generating serverless function...');\n builder.copy(distFiles, tmp, {\n replace: {\n MANIFEST: './manifest.js',\n SERVER: `${relativePath}/index.js`,\n SHIMS: './shims.js',\n },\n });\n\n writeFileSync(`${tmp}/manifest.js`, `export const manifest = ${builder.generateManifest({ relativePath })};\\n`);\n\n await build({\n entryPoints: [`${tmp}/trigger.js`],\n outdir: join(serverDir, 'dist'),\n ...defaults,\n ...esbuildOptions,\n });\n\n const copyFiles = fileURLToPath(new URL('../files', import.meta.url));\n builder.log.minor('Copying files to server directory');\n builder.copy(copyFiles, serverDir);\n },\n };\n};\n"],"mappings":";;;;;;;;;AAAA;AAAA,SAAS,qBAAqB;AAC9B,SAAS,MAAM,aAAa;AAC5B,SAAS,qBAAqB;AAE9B,SAA4B,aAAa;AAOlC,IAAM,gBAAgB,wBAAC,UAAwC,CAAC,MAAe;AACpF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,MAAM,SAAkB;AAC5B,YAAM,EAAE,iBAAiB,CAAC,EAAE,IAAI;AAChC,YAAM,UAAU;AAChB,YAAM,MAAM,QAAQ,kBAAkB,yBAAyB;AAC/D,YAAM,YAAY,KAAK,SAAS,QAAQ;AACxC,YAAM,YAAY,KAAK,SAAS,QAAQ;AAExC,cAAQ,IAAI,MAAM,kBAAkB,OAAO,GAAG;AAC9C,cAAQ,OAAO,OAAO;AACtB,cAAQ,OAAO,GAAG;AAElB,cAAQ,IAAI,MAAM,mBAAmB;AACrC,cAAQ,YAAY,SAAS;AAC7B,cAAQ,iBAAiB,SAAS;AAElC,YAAM,YAAY,cAAc,IAAI,IAAI,WAAW,YAAY,GAAG,CAAC;AAEnE,YAAM,eAAe,MAAM,SAAS,KAAK,KAAK,QAAQ,mBAAmB,CAAC,CAAC;AAE3E,cAAQ,IAAI,MAAM,mCAAmC;AACrD,cAAQ,KAAK,WAAW,KAAK;AAAA,QAC3B,SAAS;AAAA,UACP,UAAU;AAAA,UACV,QAAQ,GAAG,YAAY;AAAA,UACvB,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,oBAAc,GAAG,GAAG,gBAAgB,2BAA2B,QAAQ,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAAA,CAAK;AAE9G,YAAM,MAAM;AAAA,QACV,aAAa,CAAC,GAAG,GAAG,aAAa;AAAA,QACjC,QAAQ,KAAK,WAAW,MAAM;AAAA,QAC9B,GAAG;AAAA,QACH,GAAG;AAAA,MACL,CAAC;AAED,YAAM,YAAY,cAAc,IAAI,IAAI,YAAY,YAAY,GAAG,CAAC;AACpE,cAAQ,IAAI,MAAM,mCAAmC;AACrD,cAAQ,KAAK,WAAW,SAAS;AAAA,IACnC;AAAA,EACF;AACF,GA7C6B;","names":[]}
@@ -0,0 +1 @@
1
+ import{init_cjs_shim as e}from"./chunk-AW5NC2LL.js";e();var t={bundle:!0,platform:"node",target:"node20",treeShaking:!0,format:"esm",splitting:!0,minify:!0,keepNames:!0,sourcemap:!0,outExtension:{".js":".mjs"}};export{t as defaults};//# sourceMappingURL=chunk-6TUT2TP2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/defaults.ts"],"sourcesContent":["import type { BuildOptions } from 'esbuild';\n\nexport const defaults: BuildOptions = {\n bundle: true,\n platform: 'node',\n target: 'node20',\n treeShaking: true,\n format: 'esm',\n splitting: true,\n minify: true,\n keepNames: true,\n sourcemap: true,\n outExtension: { '.js': '.mjs' },\n};\n"],"mappings":";;;;;AAAA;AAEO,IAAM,WAAyB;AAAA,EACpC,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,WAAW;AAAA,EACX,cAAc,EAAE,OAAO,OAAO;AAChC;","names":[]}
@@ -0,0 +1 @@
1
+ var e=Object.create,r=Object.defineProperty,t=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,n=Object.getPrototypeOf,i=Object.prototype.hasOwnProperty,u=(e,t)=>r(e,"name",{value:t,configurable:!0}),f=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,r)=>("undefined"!=typeof require?require:e)[r]}):e)((function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')})),p=(e,r)=>function(){return r||(0,e[o(e)[0]])((r={exports:{}}).exports,r),r.exports},a=(u,f,p)=>(p=null!=u?e(n(u)):{},((e,n,u,f)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let p of o(n))i.call(e,p)||p===u||r(e,p,{get:()=>n[p],enumerable:!(f=t(n,p))||f.enumerable});return e})(!f&&u&&u.__esModule?p:r(p,"default",{value:u,enumerable:!0}),u));import{createRequire as l}from"node:module";import m from"node:path";import d from"node:url";var c,s,y=(c={"cjs-shim.mts"(){globalThis.require=l(import.meta.url),globalThis.__filename=d.fileURLToPath(import.meta.url),globalThis.__dirname=m.dirname(__filename)}},function(){return c&&(s=(0,c[o(c)[0]])(c=0)),s});export{u as __name,f as __require,p as __commonJS,a as __toESM,y as init_cjs_shim};//# sourceMappingURL=chunk-AW5NC2LL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../cjs-shim.mts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\n\nglobalThis.require = createRequire(import.meta.url);\nglobalThis.__filename = url.fileURLToPath(import.meta.url);\nglobalThis.__dirname = path.dirname(__filename);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AACjB,OAAO,SAAS;AAFhB;AAAA;AAAA;AAIA,eAAW,UAAU,cAAc,YAAY,GAAG;AAClD,eAAW,aAAa,IAAI,cAAc,YAAY,GAAG;AACzD,eAAW,YAAY,KAAK,QAAQ,UAAU;AAAA;AAAA;","names":[]}
@@ -0,0 +1 @@
1
+ import{__name as r,init_cjs_shim as t}from"./chunk-AW5NC2LL.js";t();import"SHIMS";import{manifest as e}from"MANIFEST";import{Server as i}from"SERVER";var o=r((async()=>{const r=new i(e);return await r.init({env:process.env}),r}),"getInitializedServer")();export{o as serverPromise};//# sourceMappingURL=chunk-GKOGVGYC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server.ts"],"sourcesContent":["import 'SHIMS';\nimport { manifest } from 'MANIFEST';\nimport { Server } from 'SERVER';\n\nconst getInitializedServer = async () => {\n const server = new Server(manifest);\n await server.init({ env: process.env });\n return server;\n};\n\nexport const serverPromise = getInitializedServer();\n"],"mappings":";;;;;;AAAA;AAAA,OAAO;AACP,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,IAAM,uBAAuB,mCAAY;AACvC,QAAM,SAAS,IAAI,OAAO,QAAQ;AAClC,QAAM,OAAO,KAAK,EAAE,KAAK,QAAQ,IAAI,CAAC;AACtC,SAAO;AACT,GAJ6B;AAMtB,IAAM,gBAAgB,qBAAqB;","names":[]}
@@ -0,0 +1 @@
1
+ import{getClientIPFromHeaders as e,getClientPrincipalFromHeaders as r,splitCookiesFromHeaders as t}from"./chunk-PSBHP5ZD.js";import{serverPromise as s}from"./chunk-GKOGVGYC.js";import{__name as a,init_cjs_shim as o}from"./chunk-AW5NC2LL.js";o();var n=a((async e=>{const{method:r,headers:t,url:s}=e,a={method:r,headers:Object.fromEntries(t)};return"GET"!==r&&"HEAD"!==r&&(a.body=await e.arrayBuffer()),new Request(s,a)}),"toRequest"),d=a((async(a,o)=>{const d=await n(a),i=await s,c=e(d.headers),h=r(d.headers),u=await i.respond(d,{getClientAddress:()=>c,platform:{clientPrincipal:h,context:o}}),{headers:m,cookies:f}=t(u.headers);return{status:u.status,body:u.body,headers:m,cookies:f}}),"handler");export{d as handler};//# sourceMappingURL=chunk-PJIDA4TG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/handler.ts"],"sourcesContent":["import type { HttpHandler, HttpRequest, HttpResponseInit } from '@azure/functions';\nimport { getClientIPFromHeaders, getClientPrincipalFromHeaders, splitCookiesFromHeaders } from './headers';\nimport { serverPromise } from './server.js';\n\nconst toRequest = async (req: HttpRequest) => {\n const { method, headers, url: originalUrl } = req;\n\n const init: RequestInit = {\n method,\n headers: Object.fromEntries(headers),\n };\n if (method !== 'GET' && method !== 'HEAD') {\n init.body = await req.arrayBuffer();\n }\n\n return new Request(originalUrl, init);\n};\n\nexport const handler: HttpHandler = async (req, context): Promise<HttpResponseInit> => {\n const request = await toRequest(req);\n const server = await serverPromise;\n\n const ipAddress = getClientIPFromHeaders(request.headers);\n const clientPrincipal = getClientPrincipalFromHeaders(request.headers);\n\n const response = await server.respond(request, {\n getClientAddress() {\n return ipAddress;\n },\n platform: {\n clientPrincipal,\n context,\n },\n });\n\n const { headers, cookies } = splitCookiesFromHeaders(response.headers);\n return {\n status: response.status,\n body: response.body,\n headers,\n cookies,\n };\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAIA,IAAM,YAAY,8BAAO,QAAqB;AAC5C,QAAM,EAAE,QAAQ,SAAS,KAAK,YAAY,IAAI;AAE9C,QAAM,OAAoB;AAAA,IACxB;AAAA,IACA,SAAS,OAAO,YAAY,OAAO;AAAA,EACrC;AACA,MAAI,WAAW,SAAS,WAAW,QAAQ;AACzC,SAAK,OAAO,MAAM,IAAI,YAAY;AAAA,EACpC;AAEA,SAAO,IAAI,QAAQ,aAAa,IAAI;AACtC,GAZkB;AAcX,IAAM,UAAuB,8BAAO,KAAK,YAAuC;AACrF,QAAM,UAAU,MAAM,UAAU,GAAG;AACnC,QAAM,SAAS,MAAM;AAErB,QAAM,YAAY,uBAAuB,QAAQ,OAAO;AACxD,QAAM,kBAAkB,8BAA8B,QAAQ,OAAO;AAErE,QAAM,WAAW,MAAM,OAAO,QAAQ,SAAS;AAAA,IAC7C,mBAAmB;AACjB,aAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,EAAE,SAAS,QAAQ,IAAI,wBAAwB,SAAS,OAAO;AACrE,SAAO;AAAA,IACL,QAAQ,SAAS;AAAA,IACjB,MAAM,SAAS;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACF,GAxBoC;","names":[]}
@@ -0,0 +1 @@
1
+ import{__commonJS as e,__name as r,__toESM as t,init_cjs_shim as o}from"./chunk-AW5NC2LL.js";var s=e({"node_modules/.pnpm/set-cookie-parser@2.7.1/node_modules/set-cookie-parser/lib/set-cookie.js"(e,t){o();var s={decodeValues:!0,map:!1,silent:!1};function i(e){return"string"==typeof e&&!!e.trim()}function n(e,r){var t=e.split(";").filter(i),o=a(t.shift()),n=o.name,c=o.value;r=r?Object.assign({},s,r):s;try{c=r.decodeValues?decodeURIComponent(c):c}catch(e){console.error("set-cookie-parser encountered an error while decoding a cookie with value '"+c+"'. Set options.decodeValues to false to disable this feature.",e)}var p={name:n,value:c};return t.forEach((function(e){var r=e.split("="),t=r.shift().trimLeft().toLowerCase(),o=r.join("=");"expires"===t?p.expires=new Date(o):"max-age"===t?p.maxAge=parseInt(o,10):"secure"===t?p.secure=!0:"httponly"===t?p.httpOnly=!0:"samesite"===t?p.sameSite=o:"partitioned"===t?p.partitioned=!0:p[t]=o})),p}function a(e){var r="",t="",o=e.split("=");return o.length>1?(r=o.shift(),t=o.join("=")):t=e,{name:r,value:t}}function c(e,r){if(r=r?Object.assign({},s,r):s,!e)return r.map?{}:[];if(e.headers)if("function"==typeof e.headers.getSetCookie)e=e.headers.getSetCookie();else if(e.headers["set-cookie"])e=e.headers["set-cookie"];else{var t=e.headers[Object.keys(e.headers).find((function(e){return"set-cookie"===e.toLowerCase()}))];t||!e.headers.cookie||r.silent||console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."),e=t}if(Array.isArray(e)||(e=[e]),r.map){return e.filter(i).reduce((function(e,t){var o=n(t,r);return e[o.name]=o,e}),{})}return e.filter(i).map((function(e){return n(e,r)}))}function p(e){if(Array.isArray(e))return e;if("string"!=typeof e)return[];var t,o,s,i,n,a=[],c=0;function p(){for(;c<e.length&&/\s/.test(e.charAt(c));)c+=1;return c<e.length}function l(){return"="!==(o=e.charAt(c))&&";"!==o&&","!==o}for(r(p,"skipWhitespace"),r(l,"notSpecialChar");c<e.length;){for(t=c,n=!1;p();)if(","===(o=e.charAt(c))){for(s=c,c+=1,p(),i=c;c<e.length&&l();)c+=1;c<e.length&&"="===e.charAt(c)?(n=!0,c=i,a.push(e.substring(t,s)),t=c):c=s+1}else c+=1;(!n||c>=e.length)&&a.push(e.substring(t,e.length))}return a}r(i,"isNonEmptyString"),r(n,"parseString"),r(a,"parseNameValuePair"),r(c,"parse"),r(p,"splitCookiesString"),t.exports=c,t.exports.parse=c,t.exports.parseString=n,t.exports.splitCookiesString=p}});o();var i=t(s(),1),n=r((e=>{const r={},t=[];return e.forEach(((e,o)=>{if("set-cookie"===o){const r=(0,i.splitCookiesString)(e);t.push(...(0,i.parse)(r))}else r[o]=e})),{headers:r,cookies:t}}),"splitCookiesFromHeaders"),a=r((e=>{const r=e.get("x-forwarded-for")??"127.0.0.1",[t]=r.split(", "),[o]=t.split(":");return o}),"getClientIPFromHeaders");function c(e){const r=e.get("x-ms-client-principal");if(r)try{const e=Buffer.from(r,"base64").toString("ascii");return JSON.parse(e)}catch(e){return void console.log("Unable to parse client principal:",e)}}r(c,"getClientPrincipalFromHeaders");export{n as splitCookiesFromHeaders,a as getClientIPFromHeaders,c as getClientPrincipalFromHeaders};//# sourceMappingURL=chunk-PSBHP5ZD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/.pnpm/set-cookie-parser@2.7.1/node_modules/set-cookie-parser/lib/set-cookie.js","../src/headers.ts"],"sourcesContent":["\"use strict\";\n\nvar defaultParseOptions = {\n decodeValues: true,\n map: false,\n silent: false,\n};\n\nfunction isNonEmptyString(str) {\n return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n var nameValuePairStr = parts.shift();\n var parsed = parseNameValuePair(nameValuePairStr);\n var name = parsed.name;\n var value = parsed.value;\n\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n try {\n value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n } catch (e) {\n console.error(\n \"set-cookie-parser encountered an error while decoding a cookie with value '\" +\n value +\n \"'. Set options.decodeValues to false to disable this feature.\",\n e\n );\n }\n\n var cookie = {\n name: name,\n value: value,\n };\n\n parts.forEach(function (part) {\n var sides = part.split(\"=\");\n var key = sides.shift().trimLeft().toLowerCase();\n var value = sides.join(\"=\");\n if (key === \"expires\") {\n cookie.expires = new Date(value);\n } else if (key === \"max-age\") {\n cookie.maxAge = parseInt(value, 10);\n } else if (key === \"secure\") {\n cookie.secure = true;\n } else if (key === \"httponly\") {\n cookie.httpOnly = true;\n } else if (key === \"samesite\") {\n cookie.sameSite = value;\n } else if (key === \"partitioned\") {\n cookie.partitioned = true;\n } else {\n cookie[key] = value;\n }\n });\n\n return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n // Parses name-value-pair according to rfc6265bis draft\n\n var name = \"\";\n var value = \"\";\n var nameValueArr = nameValuePairStr.split(\"=\");\n if (nameValueArr.length > 1) {\n name = nameValueArr.shift();\n value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n } else {\n value = nameValuePairStr;\n }\n\n return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n options = options\n ? Object.assign({}, defaultParseOptions, options)\n : defaultParseOptions;\n\n if (!input) {\n if (!options.map) {\n return [];\n } else {\n return {};\n }\n }\n\n if (input.headers) {\n if (typeof input.headers.getSetCookie === \"function\") {\n // for fetch responses - they combine headers of the same type in the headers array,\n // but getSetCookie returns an uncombined array\n input = input.headers.getSetCookie();\n } else if (input.headers[\"set-cookie\"]) {\n // fast-path for node.js (which automatically normalizes header names to lower-case\n input = input.headers[\"set-cookie\"];\n } else {\n // slow-path for other environments - see #25\n var sch =\n input.headers[\n Object.keys(input.headers).find(function (key) {\n return key.toLowerCase() === \"set-cookie\";\n })\n ];\n // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n if (!sch && input.headers.cookie && !options.silent) {\n console.warn(\n \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n );\n }\n input = sch;\n }\n }\n if (!Array.isArray(input)) {\n input = [input];\n }\n\n if (!options.map) {\n return input.filter(isNonEmptyString).map(function (str) {\n return parseString(str, options);\n });\n } else {\n var cookies = {};\n return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n var cookie = parseString(str, options);\n cookies[cookie.name] = cookie;\n return cookies;\n }, cookies);\n }\n}\n\n/*\n Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n that are within a single set-cookie field-value, such as in the Expires portion.\n\n This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n React Native's fetch does this for *every* header, including set-cookie.\n\n Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n if (Array.isArray(cookiesString)) {\n return cookiesString;\n }\n if (typeof cookiesString !== \"string\") {\n return [];\n }\n\n var cookiesStrings = [];\n var pos = 0;\n var start;\n var ch;\n var lastComma;\n var nextStart;\n var cookiesSeparatorFound;\n\n function skipWhitespace() {\n while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n pos += 1;\n }\n return pos < cookiesString.length;\n }\n\n function notSpecialChar() {\n ch = cookiesString.charAt(pos);\n\n return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n }\n\n while (pos < cookiesString.length) {\n start = pos;\n cookiesSeparatorFound = false;\n\n while (skipWhitespace()) {\n ch = cookiesString.charAt(pos);\n if (ch === \",\") {\n // ',' is a cookie separator if we have later first '=', not ';' or ','\n lastComma = pos;\n pos += 1;\n\n skipWhitespace();\n nextStart = pos;\n\n while (pos < cookiesString.length && notSpecialChar()) {\n pos += 1;\n }\n\n // currently special character\n if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n // we found cookies separator\n cookiesSeparatorFound = true;\n // pos is inside the next cookie, so back up and return it.\n pos = nextStart;\n cookiesStrings.push(cookiesString.substring(start, lastComma));\n start = pos;\n } else {\n // in param ',' or param separator ';',\n // we continue from that comma\n pos = lastComma + 1;\n }\n } else {\n pos += 1;\n }\n }\n\n if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n }\n }\n\n return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n","import type { Cookie } from '@azure/functions';\nimport { parse, splitCookiesString } from 'set-cookie-parser';\nimport type { ClientPrincipal } from './types';\n\n/**\n * Splits 'set-cookie' headers into individual cookies\n */\nexport const splitCookiesFromHeaders = (headers: Headers): { headers: Record<string, string>; cookies: Cookie[] } => {\n const resHeaders: Record<string, string> = {};\n const resCookies: Cookie[] = [];\n\n headers.forEach((value, key) => {\n if (key === 'set-cookie') {\n const cookieStrings = splitCookiesString(value);\n resCookies.push(...(parse(cookieStrings) as Cookie[]));\n } else {\n resHeaders[key] = value;\n }\n });\n\n return { headers: resHeaders, cookies: resCookies };\n};\n\nexport const getClientIPFromHeaders = (headers: Headers): string => {\n const resHeader = headers.get('x-forwarded-for') ?? '127.0.0.1';\n const [origin] = resHeader.split(', ');\n const [ipAddress] = origin.split(':');\n return ipAddress;\n};\n\n/**\n * Gets the client principal from `x-ms-client-principal` header.\n */\nexport function getClientPrincipalFromHeaders(headers: Headers): ClientPrincipal | undefined {\n // Code adapted from the official SWA documentation\n // https://learn.microsoft.com/en-us/azure/static-web-apps/user-information?tabs=javascript#api-functions\n const header = headers.get('x-ms-client-principal');\n if (!header) {\n return undefined;\n }\n\n try {\n const encoded = Buffer.from(header, 'base64');\n const decoded = encoded.toString('ascii');\n const clientPrincipal = JSON.parse(decoded);\n\n return clientPrincipal;\n } catch (e) {\n console.log('Unable to parse client principal:', e);\n return undefined;\n }\n}\n"],"mappings":"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","names":["value","parse","cookies","splitCookiesString"]}
@@ -0,0 +1,5 @@
1
+ import { BuildOptions } from 'esbuild';
2
+
3
+ declare const defaults: BuildOptions;
4
+
5
+ export { defaults };
@@ -0,0 +1 @@
1
+ import{defaults as o}from"./chunk-6TUT2TP2.js";import"./chunk-AW5NC2LL.js";export{o as defaults};//# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { HttpHandler } from '@azure/functions';
2
+
3
+ declare const handler: HttpHandler;
4
+
5
+ export { handler };
@@ -0,0 +1 @@
1
+ import{handler as o}from"./chunk-PJIDA4TG.js";import"./chunk-PSBHP5ZD.js";import"./chunk-GKOGVGYC.js";import"./chunk-AW5NC2LL.js";export{o as handler};//# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,17 @@
1
+ import { Cookie } from '@azure/functions';
2
+ import { ClientPrincipal } from './types.js';
3
+
4
+ /**
5
+ * Splits 'set-cookie' headers into individual cookies
6
+ */
7
+ declare const splitCookiesFromHeaders: (headers: Headers) => {
8
+ headers: Record<string, string>;
9
+ cookies: Cookie[];
10
+ };
11
+ declare const getClientIPFromHeaders: (headers: Headers) => string;
12
+ /**
13
+ * Gets the client principal from `x-ms-client-principal` header.
14
+ */
15
+ declare function getClientPrincipalFromHeaders(headers: Headers): ClientPrincipal | undefined;
16
+
17
+ export { getClientIPFromHeaders, getClientPrincipalFromHeaders, splitCookiesFromHeaders };
@@ -0,0 +1 @@
1
+ import{getClientIPFromHeaders as o,getClientPrincipalFromHeaders as r,splitCookiesFromHeaders as m}from"./chunk-PSBHP5ZD.js";import"./chunk-AW5NC2LL.js";export{o as getClientIPFromHeaders,r as getClientPrincipalFromHeaders,m as splitCookiesFromHeaders};//# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,16 @@
1
+ import { InvocationContext } from '@azure/functions';
2
+ import { createAdapter } from './adapter.js';
3
+ import { ClientPrincipal } from './types.js';
4
+ import '@sveltejs/kit';
5
+ import 'esbuild';
6
+
7
+ declare global {
8
+ namespace App {
9
+ interface Platform {
10
+ clientPrincipal?: ClientPrincipal;
11
+ context: InvocationContext;
12
+ }
13
+ }
14
+ }
15
+
16
+ export { createAdapter, createAdapter as default };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ import{createAdapter as r}from"./chunk-42KILSBR.js";import"./chunk-6TUT2TP2.js";import{init_cjs_shim as o}from"./chunk-AW5NC2LL.js";o();var m=r;export{r as createAdapter,m as default};//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { InvocationContext } from '@azure/functions';\nimport { createAdapter } from './adapter';\nimport type { ClientPrincipal } from './types';\n\nexport { createAdapter };\nexport default createAdapter;\n\ndeclare global {\n namespace App {\n export interface Platform {\n clientPrincipal?: ClientPrincipal;\n context: InvocationContext;\n }\n }\n}\n"],"mappings":";;;;;;;;;AAAA;AAKA,IAAO,gBAAQ;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { Server } from 'SERVER';
2
+
3
+ declare const serverPromise: Promise<Server>;
4
+
5
+ export { serverPromise };
package/dist/server.js ADDED
@@ -0,0 +1 @@
1
+ import{serverPromise as o}from"./chunk-GKOGVGYC.js";import"./chunk-AW5NC2LL.js";export{o as serverPromise};//# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
package/dist/shims.js ADDED
@@ -0,0 +1 @@
1
+ import{__name as o,init_cjs_shim as r}from"./chunk-AW5NC2LL.js";r(),r();import e from"node:buffer";import{webcrypto as i}from"node:crypto";var l={crypto:i,File:e.File};function n(){for(const o in l)o in globalThis||Object.defineProperty(globalThis,o,{enumerable:!0,configurable:!0,writable:!0,value:l[o]})}o(n,"installPolyfills"),n();//# sourceMappingURL=shims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shims.ts","../node_modules/.pnpm/@sveltejs+kit@2.15.1_@sveltejs+vite-plugin-svelte@5.0.3_svelte@5.16.0_vite@6.0.6_@types+node@_3vyaly6met64vw3ow5k7jefbly/node_modules/@sveltejs/kit/src/exports/node/polyfills.js"],"sourcesContent":["import { installPolyfills } from '@sveltejs/kit/node/polyfills';\ninstallPolyfills();\n","import buffer from 'node:buffer';\nimport { webcrypto as crypto } from 'node:crypto';\n\n// `buffer.File` was added in Node 18.13.0 while the `File` global was added in Node 20.0.0\nconst File = /** @type {import('node:buffer') & { File?: File}} */ (buffer).File;\n\n/** @type {Record<string, any>} */\nconst globals = {\n\tcrypto,\n\tFile\n};\n\n// exported for dev/preview and node environments\n/**\n * Make various web APIs available as globals:\n * - `crypto`\n * - `File`\n */\nexport function installPolyfills() {\n\tfor (const name in globals) {\n\t\tif (name in globalThis) continue;\n\n\t\tObject.defineProperty(globalThis, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t\tvalue: globals[name]\n\t\t});\n\t}\n}\n"],"mappings":";;;;;;AAAA;;;ACAA;AAAA,OAAO,YAAY;AACnB,SAAS,aAAa,cAAc;AAGpC,IAAM;AAAA;AAAA,EAA8D,OAAQ;AAAA;AAG5E,IAAM,UAAU;AAAA,EACf;AAAA,EACA;AACD;AAQO,SAAS,mBAAmB;AAClC,aAAW,QAAQ,SAAS;AAC3B,QAAI,QAAQ,WAAY;AAExB,WAAO,eAAe,YAAY,MAAM;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO,QAAQ,IAAI;AAAA,IACpB,CAAC;AAAA,EACF;AACD;AAXgB;;;ADjBhB,iBAAiB;","names":[]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }