@telia-ace/alliance-internal-node-utilities 4.0.0-next.11 → 4.0.0-next.13
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/dist/chunk-BTGZNKCJ.js +72 -0
- package/dist/compile-distribution.js +8 -8
- package/dist/index.js +2 -2
- package/package.json +5 -5
- package/dist/chunk-FUASCPVV.js +0 -72
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as c__createRequire } from 'node:module';
|
|
3
3
|
const require = c__createRequire(import.meta.url);
|
|
4
|
-
import{a as h,b as p,c as x,d as y,e as S,g as j,i as I}from"./chunk-
|
|
5
|
-
`)}function O(e,o=[],t=""){e._errors?.length&&o.push(`${t} - ${e._errors.join(" + ")}`);for(let[
|
|
6
|
-
`)}function m(e){return typeof e=="function"?e():e}var b=class extends Error{constructor(o,t){super(o),this.code=t,this.name="CLIError"}},J=/\d/,Z=["-","_","/","."];function X(e=""){if(!J.test(e))return e!==e.toLowerCase()}function N(e,o){let t=o??Z,
|
|
7
|
-
`)}catch(t){y.error(t)}}async function se(e,o){let t=await m(e.meta||{}),
|
|
8
|
-
`)}async function q(e,o={}){let t=o.rawArgs||process.argv.slice(2),
|
|
9
|
-
`),n&&await
|
|
4
|
+
import{a as h,b as p,c as x,d as y,e as S,g as j,i as I}from"./chunk-BTGZNKCJ.js";import"./chunk-COPUUGH4.js";import{existsSync as ce,mkdirSync as le,readFileSync as L,writeFileSync as P}from"fs";import{relative as ue,resolve as w}from"path";var B=h.enum(["necessary","functional","analytics","marketing"]),G=h.object({purpose:h.string().describe("Purpose of the storing the value."),category:B.describe("Category of the storage value - necessary, functional, analytics or marketing."),lifespan:h.string().describe("Basic description of how long the value will be stored.")}),$=h.record(G.describe("Key used when writing to the storage.")),F=h.object({value:h.string().describe("The localization token default value."),description:h.string().describe("The localization token description.")}),V=h.object({localization:h.record(F.describe("Key used when getting the localized text.")).default({}).describe("Translateable texts used in the app")}),_=h.object({common:h.object({order:h.number().optional().describe("Order of the capability in the common capabilities list."),variant:h.enum(["primary","secondary","expressive","destructive","text","primary-white","secondary-white","expressive-white","tertiary-purple"]).default("secondary").describe("Variant of the capability button.")}).optional().describe("Common capability configuration."),label:h.string().optional().describe("Label for the capability.")}),Y=h.object({name:h.string().describe("URL friendly name of the app."),endpoints:h.string().array().default([]).describe("Endpoints that should be communicated with using the API gateway."),permissions:h.string().array().default([]).describe("Permissions that can be added to user roles."),resources:V.default({}).describe("Resources used by the app."),storage:$.default({}).describe("Cookies, session storage, and local storage values that are used by the app."),capabilities:h.record(_.describe("Capability key.")).default({}).describe("Capabilities that the app has.")}).passthrough();function D(e,o){let t=Y.safeParse(e);return t.success?t.data:O(t.error.format(),o?[o]:[]).join(`
|
|
5
|
+
`)}function O(e,o=[],t=""){e._errors?.length&&o.push(`${t} - ${e._errors.join(" + ")}`);for(let[a,i]of Object.entries(e))a==="_errors"||!i||typeof i!="object"||Array.isArray(i)||O(i,o,t?`${t}.${a}`:a);return o}import"tty";function K(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function T(e,o=""){let t=[];for(let a of e)for(let[i,n]of a.entries())t[i]=Math.max(t[i]||0,n.length);return e.map(a=>a.map((i,n)=>o+i[n===0?"padStart":"padEnd"](t[n])).join(" ")).join(`
|
|
6
|
+
`)}function m(e){return typeof e=="function"?e():e}var b=class extends Error{constructor(o,t){super(o),this.code=t,this.name="CLIError"}},J=/\d/,Z=["-","_","/","."];function X(e=""){if(!J.test(e))return e!==e.toLowerCase()}function N(e,o){let t=o??Z,a=[];if(!e||typeof e!="string")return a;let i="",n,u;for(let r of e){let s=t.includes(r);if(s===!0){a.push(i),i="",n=void 0;continue}let c=X(r);if(u===!1){if(n===!1&&c===!0){a.push(i),i=r,n=c;continue}if(n===!0&&c===!1&&i.length>1){let f=i.at(-1);a.push(i.slice(0,Math.max(0,i.length-1))),i=f+r,n=c;continue}}i+=r,n=c,u=s}return a.push(i),a}function W(e){return e?e[0].toUpperCase()+e.slice(1):""}function Q(e){return e?e[0].toLowerCase()+e.slice(1):""}function ee(e,o){return e?(Array.isArray(e)?e:N(e)).map(t=>W(o?.normalize?t.toLowerCase():t)).join(""):""}function oe(e,o){return Q(ee(e||"",o))}function te(e,o){return e?(Array.isArray(e)?e:N(e)).map(t=>t.toLowerCase()).join(o??"-"):""}function E(e){return e==null?[]:Array.isArray(e)?e:[e]}function ie(e,o,t,a){let i,n=e[o],u=~a.string.indexOf(o)?t==null||t===!0?"":String(t):typeof t=="boolean"?t:~a.boolean.indexOf(o)?t==="false"?!1:t==="true"||(e._.push((i=+t,i*0===0?i:t)),!!t):(i=+t,i*0===0?i:t);e[o]=n==null?u:Array.isArray(n)?n.concat(u):[n,u]}function ae(e=[],o={}){let t,a,i,n,u,r={_:[]},s=0,c=0,f=0,A=e.length,C=o.alias!==void 0,l=o.unknown!==void 0,d=o.default!==void 0;if(o.alias=o.alias||{},o.string=E(o.string),o.boolean=E(o.boolean),C)for(t in o.alias)for(a=o.alias[t]=E(o.alias[t]),s=0;s<a.length;s++)(o.alias[a[s]]=a.concat(t)).splice(s,1);for(s=o.boolean.length;s-- >0;)for(a=o.alias[o.boolean[s]]||[],c=a.length;c-- >0;)o.boolean.push(a[c]);for(s=o.string.length;s-- >0;)for(a=o.alias[o.string[s]]||[],c=a.length;c-- >0;)o.string.push(a[c]);if(d){for(t in o.default)if(n=typeof o.default[t],a=o.alias[t]=o.alias[t]||[],o[n]!==void 0)for(o[n].push(t),s=0;s<a.length;s++)o[n].push(a[s])}let g=l?Object.keys(o.alias):[];for(s=0;s<A;s++){if(i=e[s],i==="--"){r._=r._.concat(e.slice(++s));break}for(c=0;c<i.length&&i.charCodeAt(c)===45;c++);if(c===0)r._.push(i);else if(i.substring(c,c+3)==="no-"){if(n=i.slice(Math.max(0,c+3)),l&&!~g.indexOf(n))return o.unknown(i);r[n]=!1}else{for(f=c+1;f<i.length&&i.charCodeAt(f)!==61;f++);for(n=i.substring(c,f),u=i.slice(Math.max(0,++f))||s+1===A||(""+e[s+1]).charCodeAt(0)===45||e[++s],a=c===2?[n]:n,f=0;f<a.length;f++){if(n=a[f],l&&!~g.indexOf(n))return o.unknown("-".repeat(c)+n);ie(r,n,f+1<a.length||u,o)}}}if(d)for(t in o.default)r[t]===void 0&&(r[t]=o.default[t]);if(C)for(t in r)for(a=o.alias[t]||[];a.length>0;)r[a.shift()]=r[t];return r}function re(e,o){let t={boolean:[],string:[],mixed:[],alias:{},default:{}},a=U(o);for(let r of a)r.type!=="positional"&&(r.type==="string"?t.string.push(r.name):r.type==="boolean"&&t.boolean.push(r.name),r.default!==void 0&&(t.default[r.name]=r.default),r.alias&&(t.alias[r.name]=r.alias));let i=ae(e,t),[...n]=i._,u=new Proxy(i,{get(r,s){return r[s]??r[oe(s)]??r[te(s)]}});for(let[,r]of a.entries())if(r.type==="positional"){let s=n.shift();if(s!==void 0)u[r.name]=s;else{if(r.default===void 0&&r.required!==!1)throw new b(`Missing required positional argument: ${r.name.toUpperCase()}`,"EARG");u[r.name]=r.default}}else if(r.required&&u[r.name]===void 0)throw new b(`Missing required argument: --${r.name}`,"EARG");return u}function U(e){let o=[];for(let[t,a]of Object.entries(e||{}))o.push({...a,name:t,alias:K(a.alias)});return o}async function R(e,o){let t=await m(e.args||{}),a=re(o.rawArgs,t),i={rawArgs:o.rawArgs,args:a,data:o.data,cmd:e};typeof e.setup=="function"&&await e.setup(i);let n;try{let u=await m(e.subCommands);if(u&&Object.keys(u).length>0){let r=o.rawArgs.findIndex(c=>!c.startsWith("-")),s=o.rawArgs[r];if(s){if(!u[s])throw new b(`Unknown command \`${s}\``,"E_UNKNOWN_COMMAND");let c=await m(u[s]);c&&await R(c,{rawArgs:o.rawArgs.slice(r+1)})}else if(!e.run)throw new b("No command specified.","E_NO_COMMAND")}typeof e.run=="function"&&(n=await e.run(i))}finally{typeof e.cleanup=="function"&&await e.cleanup(i)}return{result:n}}async function M(e,o,t){let a=await m(e.subCommands);if(a&&Object.keys(a).length>0){let i=o.findIndex(r=>!r.startsWith("-")),n=o[i],u=await m(a[n]);if(u)return M(u,o.slice(i+1),e)}return[e,t]}async function ne(e,o){try{y.log(await se(e,o)+`
|
|
7
|
+
`)}catch(t){y.error(t)}}async function se(e,o){let t=await m(e.meta||{}),a=U(await m(e.args||{})),i=await m(o?.meta||{}),n=`${i.name?`${i.name} `:""}`+(t.name||process.argv[1]),u=[],r=[],s=[],c=[];for(let l of a)if(l.type==="positional"){let d=l.name.toUpperCase(),g=l.required!==!1&&l.default===void 0,k=l.default?`="${l.default}"`:"";r.push(["`"+d+k+"`",l.description||"",l.valueHint?`<${l.valueHint}>`:""]),c.push(g?`<${d}>`:`[${d}]`)}else{let d=l.required===!0&&l.default===void 0,g=(l.type==="boolean"&&l.default===!0?[...(l.alias||[]).map(k=>`--no-${k}`),`--no-${l.name}`].join(", "):[...(l.alias||[]).map(k=>`-${k}`),`--${l.name}`].join(", "))+(l.type==="string"&&(l.valueHint||l.default)?`=${l.valueHint?`<${l.valueHint}>`:`"${l.default||""}"`}`:"");u.push(["`"+g+(d?" (required)":"")+"`",l.description||""]),d&&c.push(g)}if(e.subCommands){let l=[],d=await m(e.subCommands);for(let[g,k]of Object.entries(d)){let z=await m(k),H=await m(z?.meta);s.push([`\`${g}\``,H?.description||""]),l.push(g)}c.push(l.join("|"))}let f=[],A=t.version||i.version;f.push(p.gray(`${t.description} (${n+(A?` v${A}`:"")})`),"");let C=u.length>0||r.length>0;return f.push(`${p.underline(p.bold("USAGE"))} \`${n}${C?" [OPTIONS]":""} ${c.join(" ")}\``,""),r.length>0&&(f.push(p.underline(p.bold("ARGUMENTS")),""),f.push(T(r," ")),f.push("")),u.length>0&&(f.push(p.underline(p.bold("OPTIONS")),""),f.push(T(u," ")),f.push("")),s.length>0&&(f.push(p.underline(p.bold("COMMANDS")),""),f.push(T(s," ")),f.push("",`Use \`${n} <command> --help\` for more information about a command.`)),f.filter(l=>typeof l=="string").join(`
|
|
8
|
+
`)}async function q(e,o={}){let t=o.rawArgs||process.argv.slice(2),a=o.showUsage||ne;try{if(t.includes("--help")||t.includes("-h"))await a(...await M(e,t)),process.exit(0);else if(t.length===1&&t[0]==="--version"){let i=typeof e.meta=="function"?await e.meta():await e.meta;if(!i?.version)throw new b("No version specified","E_NO_VERSION");y.log(i.version)}else await R(e,{rawArgs:t})}catch(i){let n=i instanceof b;n||y.error(i,`
|
|
9
|
+
`),n&&await a(...await M(e,t)),y.error(i.message),process.exit(1)}}var fe="public",he="manifests.json",de="cookie-policy.html",pe="config.schema.json",me="manifest.schema.json";function v(e){console.log(x("yellowBright","DIST ")+x("bold",ue(process.cwd(),e)))}await q({meta:{name:"compile-distribution",description:"Creates files used when building an Alliance distribution by reading alliance.apps in the CWD package.json."},async run(){let e=await S(),o=e?.alliance?.apps||[];if(!o.length)throw new Error("No alliance.apps in package.json.");let t=await I(e.alliance.apps);for(let c of t){let f=D(c,`App '${c.name}' has an invalid manifest`);typeof f=="string"&&(y.error(f),process.exit(1))}let a=j(o.map(c=>({packageName:c,appImportPath:`${c}/app`,manifestImportPath:`${c}/manifest`})));v(a);let i=w(process.cwd(),fe);ce(i)||(le(i),v(i));let n=w(i,he);P(n,JSON.stringify(t)),v(n);let u=w(i,de);P(u,ye(t)),v(u);let[r,s]=ge(i);v(r),v(s)}});function ge(e){let o=w(process.cwd(),"node_modules","@telia-ace/alliance-framework","dist"),t=w(e,pe);P(t,L(w(o,"config.schema.json")));let a=w(e,me);return P(a,L(w(o,"manifest.schema.json"))),[t,a]}function ye(e){let o=[];for(let t of e)if(t.storage)for(let[a,i]of Object.entries(t.storage)){let n=be(a,i);o.push(n)}return we().replace("{APP_COOKIES}",o.join("")).trim()}function be(e,o){let t=["<tr>"],{category:a,purpose:i,lifespan:n}=o;return t.push(`<td>${e}</td>`),t.push(`<td>${a}</td>`),t.push(`<td>${i}</td>`),t.push(`<td>${n}</td>`),t.push("</tr>"),t.join("")}function we(){return`
|
|
10
10
|
<!DOCTYPE html>
|
|
11
11
|
<html lang="en">
|
|
12
12
|
<head>
|
|
@@ -272,9 +272,9 @@ import{a as h,b as p,c as x,d as y,e as S,g as j,i as I}from"./chunk-FUASCPVV.js
|
|
|
272
272
|
</thead>
|
|
273
273
|
<tbody>
|
|
274
274
|
<tr>
|
|
275
|
-
<td>alliance-
|
|
275
|
+
<td>alliance-auth</td>
|
|
276
276
|
<td>necessary</td>
|
|
277
|
-
<td>Contains the authenticated
|
|
277
|
+
<td>Contains the authenticated users session ID.</td>
|
|
278
278
|
<td>1 day</td>
|
|
279
279
|
</tr>
|
|
280
280
|
{APP_COOKIES}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as c__createRequire } from 'node:module';
|
|
2
2
|
const require = c__createRequire(import.meta.url);
|
|
3
|
-
import{a as C,f as ce,g as ge,h as P,i as le}from"./chunk-
|
|
3
|
+
import{a as C,f as ce,g as ge,h as P,i as le}from"./chunk-BTGZNKCJ.js";import"./chunk-COPUUGH4.js";import{createPublicKey as fe}from"crypto";import pe from"jsonwebtoken";var me=C.enum(["true","false"]).transform(e=>e==="true"),I=C.string().min(1),b=C.object({AUTH_COOKIE_NAME:I.default("alliance-auth"),AUTH_COOKIE_SECRET:I.default("zlLZBlk7wt8lypP5lA4D"),DB_ENDPOINT:I,JWT_PRIVATE_KEY:I.default("MIIEogIBAAKCAQEAsGqOzjnfQtCYlDqhgGAnKuJOCiPt2WpCmL1Cs+SLBQlyoNn6LT8BJ6ZRj8t/vK8Sw0p51Uq/3k0tazh7bLGkWNMBLY3BqFiNRMMnCqHJfvGIUi/itNXNe2kbP7H3rbyQTu4O7yH/ZAMitdpF2KLucVRlFxrQ/ggZjxwEGso4JUnCwmAnoKct/uupKz9Y2PMTr00WWN79aPfD4LcKi570VJqBT3ISSucdwFLYNqnOkQnEa8O8xbthQhiI0k1GGJT+GCQcATUPeEbaCFXonOrJm+CyuMmQWYLFF3NbE5NllU1jz9PYHzp2hAgAx8WGeretTvpEA1dE2gvXNESGbQ8FxQIDAQABAoIBAAjTJmud1348eGAfLV8CRaij2MAxxenJ9/ozVXfcPIa2+fCelsuBSv8pwbYODvNoVT7xpcs2nwccGI6JgnBl09EhqlMWCT7w7GLT2aBy3A/T6JF76xJICQGzDfWPYygMtlyhv0YqZDUjjFlJHun+/ysqIUMY81AR0FLUAEc6yw41ChcdSvTgIqBM9f5PsBRK7zOgdW1vcVQiZbf2Vqr+7wTJ+6b9A4rWnnAqesGDXqYupx3UJEu3x0wRNQB8FeiG9iJrw4cyD9SmM95doTyKosQ2PWWnUO1NMgmWCR/mWcKZAUcfZUpnQ8rz75WAWept8ZIOOdha8UZ1B/kw3EsVdEECgYEA3iN0BRUqMN0J69bazvlNOWtI+Chc1lYMt/tZ4p78pIJpAZvc3rQ9lAp6JvOEno2IglULA4I+ZLUmpz+lfu7XxKMNOI3cnG7WdiGbiIlwOSwuxzeO1FJqhtnc0U6mNkIjptV8b2etj8U2/SXAC3CC8XgsawAj9A/I7awlCL3NXdECgYEAy07gun3rcd3Y0ISmd3+SbAn/MbGf8uRLcfSc2ls9B6m3pXj25prXJWIrB6DyGuL/HQmHzffQkOeXmwFGHFXyiIFOIITX4z8b9lMnavgUZoPDY+ZFsxp6I7vMn75AetB8wYXpOFFeCG/Ck/VSIYP7oAN8kLw8EHdOuNbZYbu34bUCgYBYd14ZOBiZZS4yUlrJ2tc6atOgoNJ4OcTO8LcXXaHYEmenUF9iAf4UGygSoyDJ1CvtW9kLCK+4g7xlFx/dsVkU4qq9PyIA2tNmMHQ0qCedXU8z35huTnRGSDV81gmzyhtQsezgoTWp8Cy6HHKjG6fKasWlx2SKKk8m+Eu3c396QQKBgBMY2asq4M7VU+RiUXCwHwTe+4Wjda7PGvcdTw6Du3vYyVNVxXtr2AG+8uPIjnVQFT6ZApSqToEOAAOjXv6SZDHGU5xiXhUOfIXq0a0OmHv4rIXZv3pPZmGs5k+rA0uGAfH7riiIHBkWxmQ3ivty9lPVgAHobIvvaQmbxNeVVnRxAoGAUzUmcBiUAiODfjulrpYvWG0tCn5B//yk7g1Tm3Chrh9huA1qGEN3jDoqSsTd5k4Yi5foyAZt5ORgoiUVm4IsfS56aoxIco1CtFG3zeMQRy4uKzTsvUTOdsJ4RlQdjNwpngXR44VL0WelgCDqTqJwn5ubzPvuIHuTj3cBpmJCjOo="),JWT_PUBLIC_CSP_KEY:C.string().min(1).default("BgIAAACkAABSU0ExAAgAAAEAAQDFBQ9thkQ01wvaRFcDRPpOrbd6hsXHAAiEdjof2NPPY02VZZMTW3MXxYJZkMm4suCbyeqc6FUI2kZ4DzUBHCQY/pQYRk3SiBhCYbvFvMNrxAmRzqk22FLAHedKEnJPgZpU9J6LCrfgw/do/d5YFk2vE/PYWD8rqev+LaegJ2DCwkklOMoaBByPGQj+0BoXZVRx7qLYRdq1IgNk/yHvDu5OkLyt97E/G2l7zdW04i9SiPF+yaEKJ8NEjViowY0tAdNYpLFsezhrLU3ev0rVeUrDEq+8f8uPUaYnAT8t+tmgcgkFi+SzQr2YQmrZ7SMKTuIqJ2CAoTqUmNBC3znOjmqw"),SERVICE_LOG_LEVEL:C.enum(["silent","fatal","error","warn","info","debug","trace"]).default("trace"),SERVICE_PORT:I.transform(Number).default("3000"),REDIS_HOST:I,REDIS_PASSWORD:I.optional()});var S=(m=>(m.TargetUrl="alliance-target-url",m.TargetApp="alliance-target-app",m.TargetWorkspace="alliance-target-workspace",m.TargetOrganization="alliance-target-organization",m.TargetProxy="alliance-target-proxy",m.Language="alliance-language",m))(S||{});var Xe=b.pick({JWT_PRIVATE_KEY:!0,JWT_PUBLIC_CSP_KEY:!0});function de({privateKey:e,audience:t,user:n,workspace:u,organization:g,expiration:l="1h"}){return`Bearer ${pe.sign({iss:"Alliance",aud:t,sub:n.id,firstName:n.firstName,lastName:n.lastName,accessToken:n.accessToken,email:n.email,permissions:n.permissions,workspace:u.slug,organization:g.slug,workspaceName:u.name},e,{expiresIn:l,algorithm:"RS256"})}`}function V(e){return`-----BEGIN RSA PRIVATE KEY-----
|
|
4
4
|
${e.JWT_PRIVATE_KEY}
|
|
5
5
|
-----END RSA PRIVATE KEY-----`}function ve(e){let t=V(e),n=fe(t);return{pkcs:n.export({type:"pkcs1",format:"pem"}).toString().trim(),spki:n.export({type:"spki",format:"pem"}).toString().trim(),csp:e.JWT_PUBLIC_CSP_KEY}}function ye(e,t){return t[e].replace("-----BEGIN RSA PUBLIC KEY-----","").replace("-----END RSA PUBLIC KEY-----","").replace("-----BEGIN PUBLIC KEY-----","").replace("-----END PUBLIC KEY-----","").trim().replaceAll(`
|
|
6
|
-
`,"")}var W=(i=>(i[i.NoObjectId=10001]="NoObjectId",i[i.NoTargetAppHeader=10002]="NoTargetAppHeader",i[i.NoTargetWorkspaceHeader=10003]="NoTargetWorkspaceHeader",i[i.NoManifest=10006]="NoManifest",i[i.NoRequestContext=10007]="NoRequestContext",i[i.NoUserInRequestContext=10008]="NoUserInRequestContext",i[i.NoAppInRequestContext=10009]="NoAppInRequestContext",i[i.NoWorkspaceInRequestContext=10010]="NoWorkspaceInRequestContext",i[i.NoUserPermissionsInRequestContext=10012]="NoUserPermissionsInRequestContext",i[i.WorkspacePermissionDenied=10013]="WorkspacePermissionDenied",i[i.NoTargetUrlHeader=10014]="NoTargetUrlHeader",i[i.NoSessionInRedisCache=10015]="NoSessionInRedisCache",i[i.ProhibitedTargetDomain=10016]="ProhibitedTargetDomain",i[i.NoOrganizationInRequestContext=10017]="NoOrganizationInRequestContext",i))(W||{}),F=(n=>(n[n.NoPublicKey=11e3]="NoPublicKey",n[n.NoAuthHeader=11001]="NoAuthHeader",n))(F||{});var Y={10001:{statusCode:401,msg:"No object id available on authenticated user."},10002:{statusCode:400,msg:"Request missing header 'alliance-target-app'."},10003:{statusCode:400,msg:"Request missing header 'alliance-target-workspace'."},10014:{statusCode:400,msg:"Request missing header 'alliance-target-url'."},10015:{statusCode:401,msg:"Could not find user session in Redis server."},10006:{statusCode:500,msg:"Could not find manifest for app '{{appSlug}}'."},10007:{statusCode:500,msg:"No request context."},10008:{statusCode:500,msg:"No user in request context."},10009:{statusCode:500,msg:"No app in request context."},10010:{statusCode:500,msg:"No workspace in request context."},10017:{statusCode:500,msg:"No organization in request context."},10012:{statusCode:500,msg:"No user permissions in request context."},10013:{statusCode:403,msg:"User does not have access to the current workspace."},10016:{statusCode:403,msg:"Request prohibited - REQUEST_DOMAIN_WHITE_LIST does not contain '{{domain}}'."},11e3:{statusCode:401,msg:"No public key available to decode JWT."},11001:{statusCode:401,msg:"No authorization header found."},12e3:{statusCode:401,msg:"No object id found in user claims."}};var z=class extends Error{constructor(n,u={}){let{msg:g,statusCode:l}=Y[n],m=he(g,u);super(m);this.errorCode=n;this.message=m,this.statusCode=l,this.info=`https://github.com/telia-company/ace-alliance-sdk/wiki/error-codes#${this.errorCode}`}info;statusCode};function he(e,t){return Object.entries(t).reduce((n,[u,g])=>n.replaceAll(`{{${u}}}`,g),e)}function Ie(e){let t=[e.status,e.statusCode,e.code];for(let n of t)if(typeof n=="number"&&Number.isInteger(n))return n;return 500}function we(e){return(t,n,u,g)=>{let l={cause:t.cause,message:t.message,status:Ie(t),info:t.info};e.error("error when processing request",{url:n.url,body:n.body,error:l}),u.status(l.status).json(l)}}import{homedir as Be,tmpdir as Oe}from"os";import{resolve as qe}from"path";function xe(e){return!e||typeof e.then!="function"?Promise.resolve(e):e}function f(e,...t){try{return xe(e(...t))}catch(n){return Promise.reject(n)}}function Ce(e){let t=typeof e;return e===null||t!=="object"&&t!=="function"}function Ee(e){let t=Object.getPrototypeOf(e);return!t||t.isPrototypeOf(Object)}function R(e){if(Ce(e))return String(e);if(Ee(e)||Array.isArray(e))return JSON.stringify(e);if(typeof e.toJSON=="function")return R(e.toJSON());throw new Error("[unstorage] Cannot stringify value!")}var L="base64:";function _(e){return typeof e=="string"?e:L+Ne(e)}function J(e){return typeof e!="string"||!e.startsWith(L)?e:Ae(e.slice(L.length))}function Ae(e){return globalThis.Buffer?Buffer.from(e,"base64"):Uint8Array.from(globalThis.atob(e),t=>t.codePointAt(0))}function Ne(e){return globalThis.Buffer?Buffer.from(e).toString("base64"):globalThis.btoa(String.fromCodePoint(...e))}var Pe=["has","hasItem","get","getItem","getItemRaw","set","setItem","setItemRaw","del","remove","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function k(e,t){if(t=E(t),!t)return e;let n={...e};for(let u of Pe)n[u]=(g="",...l)=>e[u](t+g,...l);return n.getKeys=(u="",...g)=>e.getKeys(t+u,...g).then(l=>l.map(m=>m.slice(t.length))),n.getItems=async(u,g)=>{let l=u.map(d=>typeof d=="string"?t+d:{...d,key:t+d.key});return(await e.getItems(l,g)).map(d=>({key:d.key.slice(t.length),value:d.value}))},n.setItems=async(u,g)=>{let l=u.map(m=>({key:t+m.key,value:m.value,options:m.options}));return e.setItems(l,g)},n}function p(e){return e&&e.split("?")[0]?.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,"")||""}function H(...e){return p(e.join(":"))}function E(e){return e=p(e),e?e+":":""}function Q(e,t){if(t===void 0)return!0;let n=0,u=e.indexOf(":");for(;u>-1;)n++,u=e.indexOf(":",u+1);return n<=t}function G(e,t){return t?e.startsWith(t)&&e[e.length-1]!=="$":e[e.length-1]!=="$"}var Re="memory",Te=()=>{let e=new Map;return{name:Re,getInstance:()=>e,hasItem(t){return e.has(t)},getItem(t){return e.get(t)??null},getItemRaw(t){return e.get(t)??null},setItem(t,n){e.set(t,n)},setItemRaw(t,n){e.set(t,n)},removeItem(t){e.delete(t)},getKeys(){return[...e.keys()]},clear(){e.clear()},dispose(){e.clear()}}};function $(e={}){let t={mounts:{"":e.driver||Te()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=r=>{for(let o of t.mountpoints)if(r.startsWith(o))return{base:o,relativeKey:r.slice(o.length),driver:t.mounts[o]};return{base:"",relativeKey:r,driver:t.mounts[""]}},u=(r,o)=>t.mountpoints.filter(s=>s.startsWith(r)||o&&r.startsWith(s)).map(s=>({relativeBase:r.length>s.length?r.slice(s.length):void 0,mountpoint:s,driver:t.mounts[s]})),g=(r,o)=>{if(t.watching){o=p(o);for(let s of t.watchListeners)s(r,o)}},l=async()=>{if(!t.watching){t.watching=!0;for(let r in t.mounts)t.unwatch[r]=await Z(t.mounts[r],g,r)}},m=async()=>{if(t.watching){for(let r in t.unwatch)await t.unwatch[r]();t.unwatch={},t.watching=!1}},d=(r,o,s)=>{let a=new Map,c=i=>{let y=a.get(i.base);return y||(y={driver:i.driver,base:i.base,items:[]},a.set(i.base,y)),y};for(let i of r){let y=typeof i=="string",h=p(y?i:i.key),b=y?void 0:i.value,A=y||!i.options?o:{...o,...i.options},N=n(h);c(N).items.push({key:h,value:b,relativeKey:N.relativeKey,options:A})}return Promise.all([...a.values()].map(i=>s(i))).then(i=>i.flat())},v={hasItem(r,o={}){r=p(r);let{relativeKey:s,driver:a}=n(r);return f(a.hasItem,s,o)},getItem(r,o={}){r=p(r);let{relativeKey:s,driver:a}=n(r);return f(a.getItem,s,o).then(c=>P(c))},getItems(r,o={}){return d(r,o,s=>s.driver.getItems?f(s.driver.getItems,s.items.map(a=>({key:a.relativeKey,options:a.options})),o).then(a=>a.map(c=>({key:H(s.base,c.key),value:P(c.value)}))):Promise.all(s.items.map(a=>f(s.driver.getItem,a.relativeKey,a.options).then(c=>({key:a.key,value:P(c)})))))},getItemRaw(r,o={}){r=p(r);let{relativeKey:s,driver:a}=n(r);return a.getItemRaw?f(a.getItemRaw,s,o):f(a.getItem,s,o).then(c=>J(c))},async setItem(r,o,s={}){if(o===void 0)return v.removeItem(r);r=p(r);let{relativeKey:a,driver:c}=n(r);c.setItem&&(await f(c.setItem,a,R(o),s),c.watch||g("update",r))},async setItems(r,o){await d(r,o,async s=>{if(s.driver.setItems)return f(s.driver.setItems,s.items.map(a=>({key:a.relativeKey,value:R(a.value),options:a.options})),o);s.driver.setItem&&await Promise.all(s.items.map(a=>f(s.driver.setItem,a.relativeKey,R(a.value),a.options)))})},async setItemRaw(r,o,s={}){if(o===void 0)return v.removeItem(r,s);r=p(r);let{relativeKey:a,driver:c}=n(r);if(c.setItemRaw)await f(c.setItemRaw,a,o,s);else if(c.setItem)await f(c.setItem,a,_(o),s);else return;c.watch||g("update",r)},async removeItem(r,o={}){typeof o=="boolean"&&(o={removeMeta:o}),r=p(r);let{relativeKey:s,driver:a}=n(r);a.removeItem&&(await f(a.removeItem,s,o),(o.removeMeta||o.removeMata)&&await f(a.removeItem,s+"$",o),a.watch||g("remove",r))},async getMeta(r,o={}){typeof o=="boolean"&&(o={nativeOnly:o}),r=p(r);let{relativeKey:s,driver:a}=n(r),c=Object.create(null);if(a.getMeta&&Object.assign(c,await f(a.getMeta,s,o)),!o.nativeOnly){let i=await f(a.getItem,s+"$",o).then(y=>P(y));i&&typeof i=="object"&&(typeof i.atime=="string"&&(i.atime=new Date(i.atime)),typeof i.mtime=="string"&&(i.mtime=new Date(i.mtime)),Object.assign(c,i))}return c},setMeta(r,o,s={}){return this.setItem(r+"$",o,s)},removeMeta(r,o={}){return this.removeItem(r+"$",o)},async getKeys(r,o={}){r=E(r);let s=u(r,!0),a=[],c=[],i=!0;for(let h of s){h.driver.flags?.maxDepth||(i=!1);let b=await f(h.driver.getKeys,h.relativeBase,o);for(let A of b){let N=h.mountpoint+p(A);a.some(ue=>N.startsWith(ue))||c.push(N)}a=[h.mountpoint,...a.filter(A=>!A.startsWith(h.mountpoint))]}let y=o.maxDepth!==void 0&&!i;return c.filter(h=>(!y||Q(h,o.maxDepth))&&G(h,r))},async clear(r,o={}){r=E(r),await Promise.all(u(r,!1).map(async s=>{if(s.driver.clear)return f(s.driver.clear,s.relativeBase,o);if(s.driver.removeItem){let a=await s.driver.getKeys(s.relativeBase||"",o);return Promise.all(a.map(c=>s.driver.removeItem(c,o)))}}))},async dispose(){await Promise.all(Object.values(t.mounts).map(r=>X(r)))},async watch(r){return await l(),t.watchListeners.push(r),async()=>{t.watchListeners=t.watchListeners.filter(o=>o!==r),t.watchListeners.length===0&&await m()}},async unwatch(){t.watchListeners=[],await m()},mount(r,o){if(r=E(r),r&&t.mounts[r])throw new Error(`already mounted at ${r}`);return r&&(t.mountpoints.push(r),t.mountpoints.sort((s,a)=>a.length-s.length)),t.mounts[r]=o,t.watching&&Promise.resolve(Z(o,g,r)).then(s=>{t.unwatch[r]=s}).catch(console.error),v},async unmount(r,o=!0){r=E(r),!(!r||!t.mounts[r])&&(t.watching&&r in t.unwatch&&(t.unwatch[r]?.(),delete t.unwatch[r]),o&&await X(t.mounts[r]),t.mountpoints=t.mountpoints.filter(s=>s!==r),delete t.mounts[r])},getMount(r=""){r=p(r)+":";let o=n(r);return{driver:o.driver,base:o.base}},getMounts(r="",o={}){return r=p(r),u(r,o.parents).map(a=>({driver:a.driver,base:a.mountpoint}))},keys:(r,o={})=>v.getKeys(r,o),get:(r,o={})=>v.getItem(r,o),set:(r,o,s={})=>v.setItem(r,o,s),has:(r,o={})=>v.hasItem(r,o),del:(r,o={})=>v.removeItem(r,o),remove:(r,o={})=>v.removeItem(r,o)};return v}function Z(e,t,n){return e.watch?e.watch((u,g)=>t(u,n+g)):()=>{}}async function X(e){typeof e.dispose=="function"&&await f(e.dispose)}import{existsSync as Ke,promises as Se}from"fs";import{resolve as ze,join as Le}from"path";function T(e,t,n){let u=new Error(`[unstorage] [${e}] ${t}`,n);return Error.captureStackTrace&&Error.captureStackTrace(u,T),u}function ee(e,t){return Array.isArray(t)?T(e,`Missing some of the required options ${t.map(n=>"`"+n+"`").join(", ")}`):T(e,`Missing required option \`${t}\`.`)}import{existsSync as be,promises as w}from"fs";import{resolve as re,dirname as ne}from"path";function B(e){return e.code==="ENOENT"||e.code==="EISDIR"?null:e}function te(e){return e.code==="EEXIST"?null:e}async function O(e,t,n){return await ie(ne(e)),w.writeFile(e,t,n)}function q(e,t){return w.readFile(e,t).catch(B)}function oe(e){return w.unlink(e).catch(B)}function se(e){return w.readdir(e,{withFileTypes:!0}).catch(B).then(t=>t||[])}async function ie(e){be(e)||(await ie(ne(e)).catch(te),await w.mkdir(e).catch(te))}async function U(e,t,n){if(t&&t(e))return[];let u=await se(e),g=[];return await Promise.all(u.map(async l=>{let m=re(e,l.name);if(l.isDirectory()){if(n===void 0||n>0){let d=await U(m,t,n===void 0?void 0:n-1);g.push(...d.map(v=>l.name+"/"+v))}}else t&&t(l.name)||g.push(l.name)})),g}async function M(e){let t=await se(e);await Promise.all(t.map(n=>{let u=re(e,n.name);return n.isDirectory()?M(u).then(()=>w.rmdir(u)):w.unlink(u)}))}var ke=/\.\.:|\.\.$/,j="fs-lite",ae=(e={})=>{if(!e.base)throw ee(j,"base");e.base=ze(e.base);let t=n=>{if(ke.test(n))throw T(j,`Invalid key: ${JSON.stringify(n)}. It should not contain .. segments`);return Le(e.base,n.replace(/:/g,"/"))};return{name:j,options:e,flags:{maxDepth:!0},hasItem(n){return Ke(t(n))},getItem(n){return q(t(n),"utf8")},getItemRaw(n){return q(t(n))},async getMeta(n){let{atime:u,mtime:g,size:l,birthtime:m,ctime:d}=await Se.stat(t(n)).catch(()=>({}));return{atime:u,mtime:g,size:l,birthtime:m,ctime:d}},setItem(n,u){if(!e.readOnly)return O(t(n),u,"utf8")},setItemRaw(n,u){if(!e.readOnly)return O(t(n),u)},removeItem(n){if(!e.readOnly)return oe(t(n))},getKeys(n,u){return U(t("."),e.ignore,u?.maxDepth)},async clear(){e.readOnly||e.noClear||await M(t("."))}}};function Ue({prefix:e,logger:t}){return k($({driver:ae({base:Me({logger:t})})}),e)}function Me({logger:e}){let t="";try{t=Be()}catch(n){e.error("could not use homedir, trying tmpdir",{error:n?.message})}if(!t)try{t=Oe()}catch(n){e.error("could not use tmpdir, trying process.cwd",{error:n?.message})}if(!t)try{t=process.cwd()}catch(n){e.error("could not use process.cwd, exiting",{error:n?.message}),process.exit(1)}return qe(t,".alliance")}import je from"pino";function x(e){return t=>(n,u)=>e[t]({...u,msg:n})}function De(e){return D(e,{target:"pino-pretty",options:{colorize:!0,ignore:"time,pid,hostname",messageFormat:"{msg}"}})}function D(e,t){let n=je({level:e.SERVICE_LOG_LEVEL,redact:["authorization","headers.authorization","req.headers.authorization","res.headers.authorization","req.headers.cookie",'res.headers["set-cookie"]'],transport:t});return{fatal:x(n)("fatal"),error:x(n)("error"),warn:x(n)("warn"),info:x(n)("info"),debug:x(n)("debug"),trace:x(n)("trace"),silent:x(n)("silent"),child:()=>D(e),level:e.SERVICE_LOG_LEVEL}}function Ve(e){return(t,n,u)=>(e.trace("received request",{url:t.url,params:t.params,query:t.query,body:t.body}),u())}export{z as AllianceError,S as AllianceHeaders,F as DataErrorCode,W as GatewayErrorCode,de as createBearerToken,Ue as createFileStorage,ge as createIndexHtml,D as createLogger,De as createPrettyLogger,ve as createPublicKeys,le as getAppManifests,ye as getCleanPublicKey,V as getPrivateKey,we as requestErrorHandler,Ve as requestLoggerHandler,ce as slugify,me as zBooleanEnum,I as zNonEmptyString,K as zSharedConfig};
|
|
6
|
+
`,"")}var W=(i=>(i[i.NoObjectId=10001]="NoObjectId",i[i.NoTargetAppHeader=10002]="NoTargetAppHeader",i[i.NoTargetWorkspaceHeader=10003]="NoTargetWorkspaceHeader",i[i.NoManifest=10006]="NoManifest",i[i.NoRequestContext=10007]="NoRequestContext",i[i.NoUserInRequestContext=10008]="NoUserInRequestContext",i[i.NoAppInRequestContext=10009]="NoAppInRequestContext",i[i.NoWorkspaceInRequestContext=10010]="NoWorkspaceInRequestContext",i[i.NoUserPermissionsInRequestContext=10012]="NoUserPermissionsInRequestContext",i[i.WorkspacePermissionDenied=10013]="WorkspacePermissionDenied",i[i.NoTargetUrlHeader=10014]="NoTargetUrlHeader",i[i.NoSessionInRedisCache=10015]="NoSessionInRedisCache",i[i.ProhibitedTargetDomain=10016]="ProhibitedTargetDomain",i[i.NoOrganizationInRequestContext=10017]="NoOrganizationInRequestContext",i))(W||{}),F=(n=>(n[n.NoPublicKey=11e3]="NoPublicKey",n[n.NoAuthHeader=11001]="NoAuthHeader",n))(F||{});var Y={10001:{statusCode:401,msg:"No object id available on authenticated user."},10002:{statusCode:400,msg:"Request missing header 'alliance-target-app'."},10003:{statusCode:400,msg:"Request missing header 'alliance-target-workspace'."},10014:{statusCode:400,msg:"Request missing header 'alliance-target-url'."},10015:{statusCode:401,msg:"Could not find user session in Redis server."},10006:{statusCode:500,msg:"Could not find manifest for app '{{appSlug}}'."},10007:{statusCode:500,msg:"No request context."},10008:{statusCode:500,msg:"No user in request context."},10009:{statusCode:500,msg:"No app in request context."},10010:{statusCode:500,msg:"No workspace in request context."},10017:{statusCode:500,msg:"No organization in request context."},10012:{statusCode:500,msg:"No user permissions in request context."},10013:{statusCode:403,msg:"User does not have access to the current workspace."},10016:{statusCode:403,msg:"Request prohibited - REQUEST_DOMAIN_WHITE_LIST does not contain '{{domain}}'."},11e3:{statusCode:401,msg:"No public key available to decode JWT."},11001:{statusCode:401,msg:"No authorization header found."},12e3:{statusCode:401,msg:"No object id found in user claims."}};var z=class extends Error{constructor(n,u={}){let{msg:g,statusCode:l}=Y[n],m=he(g,u);super(m);this.errorCode=n;this.message=m,this.statusCode=l,this.info=`https://github.com/telia-company/ace-alliance-sdk/wiki/error-codes#${this.errorCode}`}info;statusCode};function he(e,t){return Object.entries(t).reduce((n,[u,g])=>n.replaceAll(`{{${u}}}`,g),e)}function Ie(e){let t=[e.status,e.statusCode,e.code];for(let n of t)if(typeof n=="number"&&Number.isInteger(n))return n;return 500}function we(e){return(t,n,u,g)=>{let l={cause:t.cause,message:t.message,status:Ie(t),info:t.info};e.error("error when processing request",{url:n.url,body:n.body,error:l}),u.status(l.status).json(l)}}import{homedir as Be,tmpdir as Oe}from"os";import{resolve as qe}from"path";function xe(e){return!e||typeof e.then!="function"?Promise.resolve(e):e}function f(e,...t){try{return xe(e(...t))}catch(n){return Promise.reject(n)}}function Ce(e){let t=typeof e;return e===null||t!=="object"&&t!=="function"}function Ee(e){let t=Object.getPrototypeOf(e);return!t||t.isPrototypeOf(Object)}function R(e){if(Ce(e))return String(e);if(Ee(e)||Array.isArray(e))return JSON.stringify(e);if(typeof e.toJSON=="function")return R(e.toJSON());throw new Error("[unstorage] Cannot stringify value!")}var L="base64:";function _(e){return typeof e=="string"?e:L+Ne(e)}function J(e){return typeof e!="string"||!e.startsWith(L)?e:Ae(e.slice(L.length))}function Ae(e){return globalThis.Buffer?Buffer.from(e,"base64"):Uint8Array.from(globalThis.atob(e),t=>t.codePointAt(0))}function Ne(e){return globalThis.Buffer?Buffer.from(e).toString("base64"):globalThis.btoa(String.fromCodePoint(...e))}var Pe=["has","hasItem","get","getItem","getItemRaw","set","setItem","setItemRaw","del","remove","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function k(e,t){if(t=E(t),!t)return e;let n={...e};for(let u of Pe)n[u]=(g="",...l)=>e[u](t+g,...l);return n.getKeys=(u="",...g)=>e.getKeys(t+u,...g).then(l=>l.map(m=>m.slice(t.length))),n.keys=n.getKeys,n.getItems=async(u,g)=>{let l=u.map(d=>typeof d=="string"?t+d:{...d,key:t+d.key});return(await e.getItems(l,g)).map(d=>({key:d.key.slice(t.length),value:d.value}))},n.setItems=async(u,g)=>{let l=u.map(m=>({key:t+m.key,value:m.value,options:m.options}));return e.setItems(l,g)},n}function p(e){return e&&e.split("?")[0]?.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,"")||""}function H(...e){return p(e.join(":"))}function E(e){return e=p(e),e?e+":":""}function Q(e,t){if(t===void 0)return!0;let n=0,u=e.indexOf(":");for(;u>-1;)n++,u=e.indexOf(":",u+1);return n<=t}function G(e,t){return t?e.startsWith(t)&&e[e.length-1]!=="$":e[e.length-1]!=="$"}var Re="memory",Te=()=>{let e=new Map;return{name:Re,getInstance:()=>e,hasItem(t){return e.has(t)},getItem(t){return e.get(t)??null},getItemRaw(t){return e.get(t)??null},setItem(t,n){e.set(t,n)},setItemRaw(t,n){e.set(t,n)},removeItem(t){e.delete(t)},getKeys(){return[...e.keys()]},clear(){e.clear()},dispose(){e.clear()}}};function $(e={}){let t={mounts:{"":e.driver||Te()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=r=>{for(let o of t.mountpoints)if(r.startsWith(o))return{base:o,relativeKey:r.slice(o.length),driver:t.mounts[o]};return{base:"",relativeKey:r,driver:t.mounts[""]}},u=(r,o)=>t.mountpoints.filter(s=>s.startsWith(r)||o&&r.startsWith(s)).map(s=>({relativeBase:r.length>s.length?r.slice(s.length):void 0,mountpoint:s,driver:t.mounts[s]})),g=(r,o)=>{if(t.watching){o=p(o);for(let s of t.watchListeners)s(r,o)}},l=async()=>{if(!t.watching){t.watching=!0;for(let r in t.mounts)t.unwatch[r]=await Z(t.mounts[r],g,r)}},m=async()=>{if(t.watching){for(let r in t.unwatch)await t.unwatch[r]();t.unwatch={},t.watching=!1}},d=(r,o,s)=>{let a=new Map,c=i=>{let y=a.get(i.base);return y||(y={driver:i.driver,base:i.base,items:[]},a.set(i.base,y)),y};for(let i of r){let y=typeof i=="string",h=p(y?i:i.key),K=y?void 0:i.value,A=y||!i.options?o:{...o,...i.options},N=n(h);c(N).items.push({key:h,value:K,relativeKey:N.relativeKey,options:A})}return Promise.all([...a.values()].map(i=>s(i))).then(i=>i.flat())},v={hasItem(r,o={}){r=p(r);let{relativeKey:s,driver:a}=n(r);return f(a.hasItem,s,o)},getItem(r,o={}){r=p(r);let{relativeKey:s,driver:a}=n(r);return f(a.getItem,s,o).then(c=>P(c))},getItems(r,o={}){return d(r,o,s=>s.driver.getItems?f(s.driver.getItems,s.items.map(a=>({key:a.relativeKey,options:a.options})),o).then(a=>a.map(c=>({key:H(s.base,c.key),value:P(c.value)}))):Promise.all(s.items.map(a=>f(s.driver.getItem,a.relativeKey,a.options).then(c=>({key:a.key,value:P(c)})))))},getItemRaw(r,o={}){r=p(r);let{relativeKey:s,driver:a}=n(r);return a.getItemRaw?f(a.getItemRaw,s,o):f(a.getItem,s,o).then(c=>J(c))},async setItem(r,o,s={}){if(o===void 0)return v.removeItem(r);r=p(r);let{relativeKey:a,driver:c}=n(r);c.setItem&&(await f(c.setItem,a,R(o),s),c.watch||g("update",r))},async setItems(r,o){await d(r,o,async s=>{if(s.driver.setItems)return f(s.driver.setItems,s.items.map(a=>({key:a.relativeKey,value:R(a.value),options:a.options})),o);s.driver.setItem&&await Promise.all(s.items.map(a=>f(s.driver.setItem,a.relativeKey,R(a.value),a.options)))})},async setItemRaw(r,o,s={}){if(o===void 0)return v.removeItem(r,s);r=p(r);let{relativeKey:a,driver:c}=n(r);if(c.setItemRaw)await f(c.setItemRaw,a,o,s);else if(c.setItem)await f(c.setItem,a,_(o),s);else return;c.watch||g("update",r)},async removeItem(r,o={}){typeof o=="boolean"&&(o={removeMeta:o}),r=p(r);let{relativeKey:s,driver:a}=n(r);a.removeItem&&(await f(a.removeItem,s,o),(o.removeMeta||o.removeMata)&&await f(a.removeItem,s+"$",o),a.watch||g("remove",r))},async getMeta(r,o={}){typeof o=="boolean"&&(o={nativeOnly:o}),r=p(r);let{relativeKey:s,driver:a}=n(r),c=Object.create(null);if(a.getMeta&&Object.assign(c,await f(a.getMeta,s,o)),!o.nativeOnly){let i=await f(a.getItem,s+"$",o).then(y=>P(y));i&&typeof i=="object"&&(typeof i.atime=="string"&&(i.atime=new Date(i.atime)),typeof i.mtime=="string"&&(i.mtime=new Date(i.mtime)),Object.assign(c,i))}return c},setMeta(r,o,s={}){return this.setItem(r+"$",o,s)},removeMeta(r,o={}){return this.removeItem(r+"$",o)},async getKeys(r,o={}){r=E(r);let s=u(r,!0),a=[],c=[],i=!0;for(let h of s){h.driver.flags?.maxDepth||(i=!1);let K=await f(h.driver.getKeys,h.relativeBase,o);for(let A of K){let N=h.mountpoint+p(A);a.some(ue=>N.startsWith(ue))||c.push(N)}a=[h.mountpoint,...a.filter(A=>!A.startsWith(h.mountpoint))]}let y=o.maxDepth!==void 0&&!i;return c.filter(h=>(!y||Q(h,o.maxDepth))&&G(h,r))},async clear(r,o={}){r=E(r),await Promise.all(u(r,!1).map(async s=>{if(s.driver.clear)return f(s.driver.clear,s.relativeBase,o);if(s.driver.removeItem){let a=await s.driver.getKeys(s.relativeBase||"",o);return Promise.all(a.map(c=>s.driver.removeItem(c,o)))}}))},async dispose(){await Promise.all(Object.values(t.mounts).map(r=>X(r)))},async watch(r){return await l(),t.watchListeners.push(r),async()=>{t.watchListeners=t.watchListeners.filter(o=>o!==r),t.watchListeners.length===0&&await m()}},async unwatch(){t.watchListeners=[],await m()},mount(r,o){if(r=E(r),r&&t.mounts[r])throw new Error(`already mounted at ${r}`);return r&&(t.mountpoints.push(r),t.mountpoints.sort((s,a)=>a.length-s.length)),t.mounts[r]=o,t.watching&&Promise.resolve(Z(o,g,r)).then(s=>{t.unwatch[r]=s}).catch(console.error),v},async unmount(r,o=!0){r=E(r),!(!r||!t.mounts[r])&&(t.watching&&r in t.unwatch&&(t.unwatch[r]?.(),delete t.unwatch[r]),o&&await X(t.mounts[r]),t.mountpoints=t.mountpoints.filter(s=>s!==r),delete t.mounts[r])},getMount(r=""){r=p(r)+":";let o=n(r);return{driver:o.driver,base:o.base}},getMounts(r="",o={}){return r=p(r),u(r,o.parents).map(a=>({driver:a.driver,base:a.mountpoint}))},keys:(r,o={})=>v.getKeys(r,o),get:(r,o={})=>v.getItem(r,o),set:(r,o,s={})=>v.setItem(r,o,s),has:(r,o={})=>v.hasItem(r,o),del:(r,o={})=>v.removeItem(r,o),remove:(r,o={})=>v.removeItem(r,o)};return v}function Z(e,t,n){return e.watch?e.watch((u,g)=>t(u,n+g)):()=>{}}async function X(e){typeof e.dispose=="function"&&await f(e.dispose)}import{existsSync as be,promises as Se}from"fs";import{resolve as ze,join as Le}from"path";function T(e,t,n){let u=new Error(`[unstorage] [${e}] ${t}`,n);return Error.captureStackTrace&&Error.captureStackTrace(u,T),u}function ee(e,t){return Array.isArray(t)?T(e,`Missing some of the required options ${t.map(n=>"`"+n+"`").join(", ")}`):T(e,`Missing required option \`${t}\`.`)}import{existsSync as Ke,promises as w}from"fs";import{resolve as re,dirname as ne}from"path";function B(e){return e.code==="ENOENT"||e.code==="EISDIR"?null:e}function te(e){return e.code==="EEXIST"?null:e}async function O(e,t,n){return await ie(ne(e)),w.writeFile(e,t,n)}function q(e,t){return w.readFile(e,t).catch(B)}function oe(e){return w.unlink(e).catch(B)}function se(e){return w.readdir(e,{withFileTypes:!0}).catch(B).then(t=>t||[])}async function ie(e){Ke(e)||(await ie(ne(e)).catch(te),await w.mkdir(e).catch(te))}async function U(e,t,n){if(t&&t(e))return[];let u=await se(e),g=[];return await Promise.all(u.map(async l=>{let m=re(e,l.name);if(l.isDirectory()){if(n===void 0||n>0){let d=await U(m,t,n===void 0?void 0:n-1);g.push(...d.map(v=>l.name+"/"+v))}}else t&&t(l.name)||g.push(l.name)})),g}async function M(e){let t=await se(e);await Promise.all(t.map(n=>{let u=re(e,n.name);return n.isDirectory()?M(u).then(()=>w.rmdir(u)):w.unlink(u)}))}var ke=/\.\.:|\.\.$/,j="fs-lite",ae=(e={})=>{if(!e.base)throw ee(j,"base");e.base=ze(e.base);let t=n=>{if(ke.test(n))throw T(j,`Invalid key: ${JSON.stringify(n)}. It should not contain .. segments`);return Le(e.base,n.replace(/:/g,"/"))};return{name:j,options:e,flags:{maxDepth:!0},hasItem(n){return be(t(n))},getItem(n){return q(t(n),"utf8")},getItemRaw(n){return q(t(n))},async getMeta(n){let{atime:u,mtime:g,size:l,birthtime:m,ctime:d}=await Se.stat(t(n)).catch(()=>({}));return{atime:u,mtime:g,size:l,birthtime:m,ctime:d}},setItem(n,u){if(!e.readOnly)return O(t(n),u,"utf8")},setItemRaw(n,u){if(!e.readOnly)return O(t(n),u)},removeItem(n){if(!e.readOnly)return oe(t(n))},getKeys(n,u){return U(t("."),e.ignore,u?.maxDepth)},async clear(){e.readOnly||e.noClear||await M(t("."))}}};function Ue({prefix:e,logger:t}){return k($({driver:ae({base:Me({logger:t})})}),e)}function Me({logger:e}){let t="";try{t=Be()}catch(n){e.error("could not use homedir, trying tmpdir",{error:n?.message})}if(!t)try{t=Oe()}catch(n){e.error("could not use tmpdir, trying process.cwd",{error:n?.message})}if(!t)try{t=process.cwd()}catch(n){e.error("could not use process.cwd, exiting",{error:n?.message}),process.exit(1)}return qe(t,".alliance")}import je from"pino";function x(e){return t=>(n,u)=>e[t]({...u,msg:n})}function De(e){return D(e,{target:"pino-pretty",options:{colorize:!0,ignore:"time,pid,hostname",messageFormat:"{msg}"}})}function D(e,t){let n=je({level:e.SERVICE_LOG_LEVEL,redact:["authorization","headers.authorization","req.headers.authorization","res.headers.authorization","req.headers.cookie",'res.headers["set-cookie"]'],transport:t});return{fatal:x(n)("fatal"),error:x(n)("error"),warn:x(n)("warn"),info:x(n)("info"),debug:x(n)("debug"),trace:x(n)("trace"),silent:x(n)("silent"),child:()=>D(e),level:e.SERVICE_LOG_LEVEL}}function Ve(e){return(t,n,u)=>(e.trace("received request",{url:t.url,params:t.params,query:t.query,body:t.body}),u())}export{z as AllianceError,S as AllianceHeaders,F as DataErrorCode,W as GatewayErrorCode,de as createBearerToken,Ue as createFileStorage,ge as createIndexHtml,D as createLogger,De as createPrettyLogger,ve as createPublicKeys,le as getAppManifests,ye as getCleanPublicKey,V as getPrivateKey,we as requestErrorHandler,Ve as requestLoggerHandler,ce as slugify,me as zBooleanEnum,I as zNonEmptyString,b as zSharedConfig};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/alliance-internal-node-utilities",
|
|
3
|
-
"version": "4.0.0-next.
|
|
3
|
+
"version": "4.0.0-next.13",
|
|
4
4
|
"description": "Utilities used internally by packages developed by team Alliance.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"author": "Telia Company AB",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"jsonwebtoken": "^9.0.2",
|
|
24
|
-
"pino": "^9.
|
|
24
|
+
"pino": "^9.9.4"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"import-from-esm": "^2.0.0",
|
|
28
|
-
"pino-pretty": "^13.
|
|
29
|
-
"pkg-types": "^2.
|
|
30
|
-
"@telia-ace/alliance-framework": "^4.0.0-next.
|
|
28
|
+
"pino-pretty": "^13.1.1",
|
|
29
|
+
"pkg-types": "^2.3.0",
|
|
30
|
+
"@telia-ace/alliance-framework": "^4.0.0-next.13"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|