@platforma-sdk/bootstrap 5.2.51 → 5.2.53
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/_virtual/_rolldown/runtime.cjs +29 -0
- package/dist/block.cjs +106 -146
- package/dist/block.cjs.map +1 -1
- package/dist/block.js +100 -125
- package/dist/block.js.map +1 -1
- package/dist/cmd-opts.cjs +87 -177
- package/dist/cmd-opts.cjs.map +1 -1
- package/dist/cmd-opts.js +87 -172
- package/dist/cmd-opts.js.map +1 -1
- package/dist/commands/create-block.cjs +19 -20
- package/dist/commands/create-block.cjs.map +1 -1
- package/dist/commands/create-block.d.ts +12 -7
- package/dist/commands/create-block.js +17 -17
- package/dist/commands/create-block.js.map +1 -1
- package/dist/commands/reset.cjs +18 -21
- package/dist/commands/reset.cjs.map +1 -1
- package/dist/commands/reset.d.ts +12 -7
- package/dist/commands/reset.js +16 -18
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/start/docker/s3.cjs +64 -67
- package/dist/commands/start/docker/s3.cjs.map +1 -1
- package/dist/commands/start/docker/s3.d.ts +32 -27
- package/dist/commands/start/docker/s3.js +61 -64
- package/dist/commands/start/docker/s3.js.map +1 -1
- package/dist/commands/start/docker.cjs +64 -67
- package/dist/commands/start/docker.cjs.map +1 -1
- package/dist/commands/start/docker.d.ts +32 -27
- package/dist/commands/start/docker.js +61 -64
- package/dist/commands/start/docker.js.map +1 -1
- package/dist/commands/start/local/s3.cjs +101 -135
- package/dist/commands/start/local/s3.cjs.map +1 -1
- package/dist/commands/start/local/s3.d.ts +36 -31
- package/dist/commands/start/local/s3.js +97 -113
- package/dist/commands/start/local/s3.js.map +1 -1
- package/dist/commands/start/local.cjs +95 -122
- package/dist/commands/start/local.cjs.map +1 -1
- package/dist/commands/start/local.d.ts +34 -29
- package/dist/commands/start/local.js +91 -100
- package/dist/commands/start/local.js.map +1 -1
- package/dist/commands/start.cjs +18 -21
- package/dist/commands/start.cjs.map +1 -1
- package/dist/commands/start.d.ts +12 -7
- package/dist/commands/start.js +16 -18
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.cjs +22 -27
- package/dist/commands/stop.cjs.map +1 -1
- package/dist/commands/stop.d.ts +12 -7
- package/dist/commands/stop.js +20 -24
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/svc/create/arg-parser.cjs +102 -172
- package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
- package/dist/commands/svc/create/arg-parser.js +102 -171
- package/dist/commands/svc/create/arg-parser.js.map +1 -1
- package/dist/commands/svc/create/docker/s3.cjs +78 -96
- package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
- package/dist/commands/svc/create/docker/s3.d.ts +35 -30
- package/dist/commands/svc/create/docker/s3.js +75 -93
- package/dist/commands/svc/create/docker/s3.js.map +1 -1
- package/dist/commands/svc/create/docker.cjs +82 -103
- package/dist/commands/svc/create/docker.cjs.map +1 -1
- package/dist/commands/svc/create/docker.d.ts +35 -30
- package/dist/commands/svc/create/docker.js +79 -100
- package/dist/commands/svc/create/docker.js.map +1 -1
- package/dist/commands/svc/create/local/s3.cjs +107 -139
- package/dist/commands/svc/create/local/s3.cjs.map +1 -1
- package/dist/commands/svc/create/local/s3.d.ts +39 -34
- package/dist/commands/svc/create/local/s3.js +103 -117
- package/dist/commands/svc/create/local/s3.js.map +1 -1
- package/dist/commands/svc/create/local.cjs +101 -138
- package/dist/commands/svc/create/local.cjs.map +1 -1
- package/dist/commands/svc/create/local.d.ts +37 -32
- package/dist/commands/svc/create/local.js +97 -116
- package/dist/commands/svc/create/local.js.map +1 -1
- package/dist/commands/svc/delete.cjs +36 -38
- package/dist/commands/svc/delete.cjs.map +1 -1
- package/dist/commands/svc/delete.d.ts +16 -11
- package/dist/commands/svc/delete.js +34 -35
- package/dist/commands/svc/delete.js.map +1 -1
- package/dist/commands/svc/down.cjs +27 -30
- package/dist/commands/svc/down.cjs.map +1 -1
- package/dist/commands/svc/down.d.ts +15 -10
- package/dist/commands/svc/down.js +25 -27
- package/dist/commands/svc/down.js.map +1 -1
- package/dist/commands/svc/list.cjs +25 -29
- package/dist/commands/svc/list.cjs.map +1 -1
- package/dist/commands/svc/list.d.ts +9 -5
- package/dist/commands/svc/list.js +23 -26
- package/dist/commands/svc/list.js.map +1 -1
- package/dist/commands/svc/up.cjs +33 -49
- package/dist/commands/svc/up.cjs.map +1 -1
- package/dist/commands/svc/up.d.ts +15 -10
- package/dist/commands/svc/up.js +31 -46
- package/dist/commands/svc/up.js.map +1 -1
- package/dist/core.cjs +712 -881
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +709 -877
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +36 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +37 -33
- package/dist/index.js +35 -34
- package/dist/index.js.map +1 -1
- package/dist/package.cjs +15 -36
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +14 -14
- package/dist/package.js.map +1 -1
- package/dist/platforma.cjs +119 -148
- package/dist/platforma.cjs.map +1 -1
- package/dist/platforma.js +114 -122
- package/dist/platforma.js.map +1 -1
- package/dist/run.cjs +55 -58
- package/dist/run.cjs.map +1 -1
- package/dist/run.js +56 -56
- package/dist/run.js.map +1 -1
- package/dist/state.cjs +114 -141
- package/dist/state.cjs.map +1 -1
- package/dist/state.js +110 -139
- package/dist/state.js.map +1 -1
- package/dist/templates/compose.cjs +38 -65
- package/dist/templates/compose.cjs.map +1 -1
- package/dist/templates/compose.js +35 -63
- package/dist/templates/compose.js.map +1 -1
- package/dist/templates/pl-config.cjs +163 -165
- package/dist/templates/pl-config.cjs.map +1 -1
- package/dist/templates/pl-config.js +161 -163
- package/dist/templates/pl-config.js.map +1 -1
- package/dist/templates/types.cjs +24 -23
- package/dist/templates/types.cjs.map +1 -1
- package/dist/templates/types.js +24 -22
- package/dist/templates/types.js.map +1 -1
- package/dist/util.cjs +57 -74
- package/dist/util.cjs.map +1 -1
- package/dist/util.js +51 -72
- package/dist/util.js.map +1 -1
- package/package.json +7 -7
- package/dist/block.d.ts +0 -25
- package/dist/block.d.ts.map +0 -1
- package/dist/cmd-opts.d.ts +0 -89
- package/dist/cmd-opts.d.ts.map +0 -1
- package/dist/commands/create-block.d.ts.map +0 -1
- package/dist/commands/reset.d.ts.map +0 -1
- package/dist/commands/start/docker/s3.d.ts.map +0 -1
- package/dist/commands/start/docker.d.ts.map +0 -1
- package/dist/commands/start/local/s3.d.ts.map +0 -1
- package/dist/commands/start/local.d.ts.map +0 -1
- package/dist/commands/start.d.ts.map +0 -1
- package/dist/commands/stop.d.ts.map +0 -1
- package/dist/commands/svc/create/arg-parser.d.ts +0 -43
- package/dist/commands/svc/create/arg-parser.d.ts.map +0 -1
- package/dist/commands/svc/create/docker/s3.d.ts.map +0 -1
- package/dist/commands/svc/create/docker.d.ts.map +0 -1
- package/dist/commands/svc/create/local/s3.d.ts.map +0 -1
- package/dist/commands/svc/create/local.d.ts.map +0 -1
- package/dist/commands/svc/delete.d.ts.map +0 -1
- package/dist/commands/svc/down.d.ts.map +0 -1
- package/dist/commands/svc/list.d.ts.map +0 -1
- package/dist/commands/svc/up.d.ts.map +0 -1
- package/dist/core.d.ts +0 -105
- package/dist/core.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/package.d.ts +0 -7
- package/dist/package.d.ts.map +0 -1
- package/dist/platforma.d.ts +0 -24
- package/dist/platforma.d.ts.map +0 -1
- package/dist/run.d.ts +0 -13
- package/dist/run.d.ts.map +0 -1
- package/dist/state.d.ts +0 -63
- package/dist/state.d.ts.map +0 -1
- package/dist/templates/compose.d.ts +0 -14
- package/dist/templates/compose.d.ts.map +0 -1
- package/dist/templates/pl-config.d.ts +0 -6
- package/dist/templates/pl-config.d.ts.map +0 -1
- package/dist/templates/types.d.ts +0 -138
- package/dist/templates/types.d.ts.map +0 -1
- package/dist/util.d.ts +0 -18
- package/dist/util.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pl-config.cjs","sources":["../../src/templates/pl-config.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport * as types from \"./types\";\nimport { assertNever, resolveTilde } from \"../util\";\nimport state from \"../state\";\n\nexport type { plOptions } from \"./types\";\n\nexport function storageSettingsFromURL(\n storageURL: string,\n baseDir?: string,\n defaults?: types.storageOptions,\n): types.storageOptions {\n storageURL = resolveTilde(storageURL);\n const url = new URL(storageURL, `file:${baseDir}`);\n\n switch (url.protocol) {\n case \"s3:\": {\n const bucketName = url.hostname;\n const region = url.searchParams.get(\"region\");\n const keyPrefix = url.pathname.slice(1); // 's3://bucket/' will have '/' as pathname. We don't want to always have '/' prefix\n\n return {\n ...defaults,\n\n type: \"S3\",\n bucketName,\n region,\n keyPrefix,\n } as types.storageOptions;\n }\n case \"s3e:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `http://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"s3es:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `https://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"file:\":\n return {\n type: \"FS\",\n rootPath: url.pathname,\n };\n\n default:\n throw new Error(`storage protocol '${url.protocol}' is not supported`);\n }\n}\n\nexport function loadDefaults(jwtKey: string, options?: types.plOptions): types.plSettings {\n const localRoot = options?.localRoot ?? state.instanceDir(\"default\");\n\n const log: types.logSettings = {\n level: options?.log?.level ?? \"info\",\n path: options?.log?.path ?? `${localRoot}/logs/platforma.log`,\n };\n\n const grpc: types.grpcSettings = {\n listen: options?.grpc?.listen ?? \"localhost:6345\",\n tls: {\n enable: defaultBool(options?.grpc?.tls?.enable, false),\n clientAuthMode: options?.grpc?.tls?.clientAuthMode ?? \"NoAuth\",\n certFile: options?.grpc?.tls?.certFile ?? `${localRoot}/certs/tls.cert`,\n keyFile: options?.grpc?.tls?.keyFile ?? `${localRoot}/certs/tls.key`,\n\n ...options?.grpc?.tls,\n },\n };\n\n const core: types.coreSettings = {\n auth: {\n enabled: options?.core?.auth?.enabled ?? false,\n drivers: options?.core?.auth?.drivers ?? [\n { driver: \"jwt\", key: jwtKey },\n { driver: \"htpasswd\", path: `${localRoot}/users.htpasswd` },\n ],\n },\n db: {\n path: `${localRoot}/db`,\n },\n };\n\n const primary = defaultStorageSettings(\n \"main\",\n `${localRoot}/storages/main`,\n \"platforma-primary-bucket\",\n options?.storages?.primary,\n );\n\n let work: types.storageSettings;\n const wType = options?.storages?.work?.type;\n switch (wType) {\n case undefined:\n case \"FS\":\n work = types.emptyFSSettings(\"work\");\n work.rootPath = options?.storages?.work?.rootPath ?? `${localRoot}/storages/work`;\n work.indexCachePeriod = options?.storages?.work?.indexCachePeriod ?? \"1m\";\n break;\n\n default:\n throw new Error(\n \"work storage MUST have 'FS' type as it is used for working directories management\",\n );\n }\n\n const library = defaultStorageSettings(\n \"library\",\n `${localRoot}/storages/library`,\n \"platforma-library-bucket\",\n options?.storages?.library,\n );\n\n const monitoring: types.monitoringSettings = {\n enabled: defaultBool(options?.monitoring?.enabled, true),\n listen: options?.monitoring?.listen ?? \"127.0.0.1:9090\",\n };\n const debug: types.debugSettings = {\n enabled: defaultBool(options?.debug?.enabled, true),\n listen: options?.debug?.listen ?? \"127.0.0.1:9091\",\n };\n const license: types.licenseSettings = {\n value: options?.license?.value ?? \"\",\n file: options?.license?.file ?? \"\",\n };\n\n return {\n localRoot,\n license,\n log,\n grpc,\n core,\n monitoring,\n debug,\n numCpu: options?.numCpu,\n storages: { primary, work, library },\n hacks: { libraryDownloadable: true },\n };\n}\n\nfunction defaultStorageSettings(\n storageID: string,\n defaultLocation: string,\n defaultBucket: string,\n options?: types.storageOptions,\n): types.storageSettings {\n let storage: types.storageSettings;\n const pType = options?.type;\n switch (pType) {\n case undefined:\n case \"FS\":\n storage = types.emptyFSSettings(storageID);\n storage.rootPath = options?.rootPath ?? defaultLocation;\n break;\n\n case \"S3\":\n storage = types.emptyS3Settings(storageID);\n\n storage.endpoint = options?.endpoint;\n storage.region = options?.region;\n storage.presignEndpoint = options?.presignEndpoint ?? options?.endpoint;\n storage.bucketName = options?.bucketName ?? defaultBucket;\n storage.createBucket = defaultBool(options?.createBucket, true);\n storage.forcePathStyle = defaultBool(options?.forcePathStyle, true);\n storage.key = options?.key ?? \"\";\n storage.secret = options?.secret ?? \"\";\n storage.keyPrefix = options?.keyPrefix ?? \"\";\n storage.accessPrefixes = options?.accessPrefixes ?? [\"\"];\n storage.uploadKeyPrefix = options?.uploadKeyPrefix ?? \"\";\n break;\n\n default:\n assertNever(pType);\n throw new Error(\"unknown storage type\"); // calm down TS type analyzer\n }\n\n return storage;\n}\n\nexport function render(options: types.plSettings): string {\n const disableMon = options.monitoring.enabled ? \"\" : \" disabled\";\n const disableDbg = options.debug.enabled ? \"\" : \" disabled\";\n const libraryDownloadable = options.hacks.libraryDownloadable ? \"true\" : \"false\";\n let miLicenseSecret = options.license.value;\n if (options.license.file != \"\") {\n miLicenseSecret = fs.readFileSync(options.license.file).toString().trimEnd();\n }\n\n let cpuLimit = \"\";\n if (options.numCpu) {\n cpuLimit = `\n resources:\n cpu: ${options.numCpu}\n`;\n }\n\n return `\nlicense:\n value: '${options.license.value}'\n file: '${options.license.file}'\n\nlogging:\n level: '${options.log.level}'\n destinations:\n - path: '${options.log.path}'\n rotation:\n maxSize: 1GiB\n maxBackups: 15\n compress: true\n\nmonitoring${disableMon}:\n listen: '${options.monitoring.listen}'\n\ndebug${disableDbg}:\n listen: '${options.debug.listen}'\n\ncore:\n logging:\n extendedInfo: true\n dumpResourceData: false\n\n grpc:\n listen: '${options.grpc.listen}'\n\n tlsEnabled: ${JSON.stringify(options.grpc.tls.enable)}\n tls:\n clientAuthMode: '${options.grpc.tls.clientAuthMode}'\n certificates:\n - certFile: '${options.grpc.tls.certFile}'\n keyFile: '${options.grpc.tls.keyFile}'\n\n\n authEnabled: ${JSON.stringify(options.core.auth.enabled)}\n auth: ${JSON.stringify(options.core.auth.drivers)}\n db:\n path: '${options.core.db.path}'\n\ncontrollers:\n data:\n main:\n storages:\n main:\n mode: primary\n downloadable: true\n\n library:\n mode: passive\n downloadable: ${libraryDownloadable}\n\n work:\n mode: active\n downloadable: false\n\n storages:\n - ${JSON.stringify(options.storages.primary)}\n - ${JSON.stringify(options.storages.library)}\n - ${JSON.stringify(options.storages.work)}\n\n runner:\n type: local\n storageRoot: '${options.storages.work.rootPath}'\n workdirCacheOnSuccess: 20m\n workdirCacheOnFailure: 1h\n${cpuLimit}\n secrets:\n - map:\n MI_LICENSE: ${JSON.stringify(miLicenseSecret)}\n\n packageLoader:\n packagesRoot: '${options.localRoot}/packages'\n\n workflows:\n features:\n pureFutureFields: true\n commandExpressions: true\n workdirLimits: true\n computeLimits: false\n`;\n}\n\nfunction defaultBool(v: boolean | undefined, def: boolean): boolean {\n return v === undefined ? def : v;\n}\n"],"names":["resolveTilde","types.emptyFSSettings","types.emptyS3Settings","assertNever"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pl-config.cjs","names":["resolveTilde","state","fs"],"sources":["../../src/templates/pl-config.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport * as types from \"./types\";\nimport { assertNever, resolveTilde } from \"../util\";\nimport state from \"../state\";\n\nexport type { plOptions } from \"./types\";\n\nexport function storageSettingsFromURL(\n storageURL: string,\n baseDir?: string,\n defaults?: types.storageOptions,\n): types.storageOptions {\n storageURL = resolveTilde(storageURL);\n const url = new URL(storageURL, `file:${baseDir}`);\n\n switch (url.protocol) {\n case \"s3:\": {\n const bucketName = url.hostname;\n const region = url.searchParams.get(\"region\");\n const keyPrefix = url.pathname.slice(1); // 's3://bucket/' will have '/' as pathname. We don't want to always have '/' prefix\n\n return {\n ...defaults,\n\n type: \"S3\",\n bucketName,\n region,\n keyPrefix,\n } as types.storageOptions;\n }\n case \"s3e:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `http://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"s3es:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `https://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"file:\":\n return {\n type: \"FS\",\n rootPath: url.pathname,\n };\n\n default:\n throw new Error(`storage protocol '${url.protocol}' is not supported`);\n }\n}\n\nexport function loadDefaults(jwtKey: string, options?: types.plOptions): types.plSettings {\n const localRoot = options?.localRoot ?? state.instanceDir(\"default\");\n\n const log: types.logSettings = {\n level: options?.log?.level ?? \"info\",\n path: options?.log?.path ?? `${localRoot}/logs/platforma.log`,\n };\n\n const grpc: types.grpcSettings = {\n listen: options?.grpc?.listen ?? \"localhost:6345\",\n tls: {\n enable: defaultBool(options?.grpc?.tls?.enable, false),\n clientAuthMode: options?.grpc?.tls?.clientAuthMode ?? \"NoAuth\",\n certFile: options?.grpc?.tls?.certFile ?? `${localRoot}/certs/tls.cert`,\n keyFile: options?.grpc?.tls?.keyFile ?? `${localRoot}/certs/tls.key`,\n\n ...options?.grpc?.tls,\n },\n };\n\n const core: types.coreSettings = {\n auth: {\n enabled: options?.core?.auth?.enabled ?? false,\n drivers: options?.core?.auth?.drivers ?? [\n { driver: \"jwt\", key: jwtKey },\n { driver: \"htpasswd\", path: `${localRoot}/users.htpasswd` },\n ],\n },\n db: {\n path: `${localRoot}/db`,\n },\n };\n\n const primary = defaultStorageSettings(\n \"main\",\n `${localRoot}/storages/main`,\n \"platforma-primary-bucket\",\n options?.storages?.primary,\n );\n\n let work: types.storageSettings;\n const wType = options?.storages?.work?.type;\n switch (wType) {\n case undefined:\n case \"FS\":\n work = types.emptyFSSettings(\"work\");\n work.rootPath = options?.storages?.work?.rootPath ?? `${localRoot}/storages/work`;\n work.indexCachePeriod = options?.storages?.work?.indexCachePeriod ?? \"1m\";\n break;\n\n default:\n throw new Error(\n \"work storage MUST have 'FS' type as it is used for working directories management\",\n );\n }\n\n const library = defaultStorageSettings(\n \"library\",\n `${localRoot}/storages/library`,\n \"platforma-library-bucket\",\n options?.storages?.library,\n );\n\n const monitoring: types.monitoringSettings = {\n enabled: defaultBool(options?.monitoring?.enabled, true),\n listen: options?.monitoring?.listen ?? \"127.0.0.1:9090\",\n };\n const debug: types.debugSettings = {\n enabled: defaultBool(options?.debug?.enabled, true),\n listen: options?.debug?.listen ?? \"127.0.0.1:9091\",\n };\n const license: types.licenseSettings = {\n value: options?.license?.value ?? \"\",\n file: options?.license?.file ?? \"\",\n };\n\n return {\n localRoot,\n license,\n log,\n grpc,\n core,\n monitoring,\n debug,\n numCpu: options?.numCpu,\n storages: { primary, work, library },\n hacks: { libraryDownloadable: true },\n };\n}\n\nfunction defaultStorageSettings(\n storageID: string,\n defaultLocation: string,\n defaultBucket: string,\n options?: types.storageOptions,\n): types.storageSettings {\n let storage: types.storageSettings;\n const pType = options?.type;\n switch (pType) {\n case undefined:\n case \"FS\":\n storage = types.emptyFSSettings(storageID);\n storage.rootPath = options?.rootPath ?? defaultLocation;\n break;\n\n case \"S3\":\n storage = types.emptyS3Settings(storageID);\n\n storage.endpoint = options?.endpoint;\n storage.region = options?.region;\n storage.presignEndpoint = options?.presignEndpoint ?? options?.endpoint;\n storage.bucketName = options?.bucketName ?? defaultBucket;\n storage.createBucket = defaultBool(options?.createBucket, true);\n storage.forcePathStyle = defaultBool(options?.forcePathStyle, true);\n storage.key = options?.key ?? \"\";\n storage.secret = options?.secret ?? \"\";\n storage.keyPrefix = options?.keyPrefix ?? \"\";\n storage.accessPrefixes = options?.accessPrefixes ?? [\"\"];\n storage.uploadKeyPrefix = options?.uploadKeyPrefix ?? \"\";\n break;\n\n default:\n assertNever(pType);\n throw new Error(\"unknown storage type\"); // calm down TS type analyzer\n }\n\n return storage;\n}\n\nexport function render(options: types.plSettings): string {\n const disableMon = options.monitoring.enabled ? \"\" : \" disabled\";\n const disableDbg = options.debug.enabled ? \"\" : \" disabled\";\n const libraryDownloadable = options.hacks.libraryDownloadable ? \"true\" : \"false\";\n let miLicenseSecret = options.license.value;\n if (options.license.file != \"\") {\n miLicenseSecret = fs.readFileSync(options.license.file).toString().trimEnd();\n }\n\n let cpuLimit = \"\";\n if (options.numCpu) {\n cpuLimit = `\n resources:\n cpu: ${options.numCpu}\n`;\n }\n\n return `\nlicense:\n value: '${options.license.value}'\n file: '${options.license.file}'\n\nlogging:\n level: '${options.log.level}'\n destinations:\n - path: '${options.log.path}'\n rotation:\n maxSize: 1GiB\n maxBackups: 15\n compress: true\n\nmonitoring${disableMon}:\n listen: '${options.monitoring.listen}'\n\ndebug${disableDbg}:\n listen: '${options.debug.listen}'\n\ncore:\n logging:\n extendedInfo: true\n dumpResourceData: false\n\n grpc:\n listen: '${options.grpc.listen}'\n\n tlsEnabled: ${JSON.stringify(options.grpc.tls.enable)}\n tls:\n clientAuthMode: '${options.grpc.tls.clientAuthMode}'\n certificates:\n - certFile: '${options.grpc.tls.certFile}'\n keyFile: '${options.grpc.tls.keyFile}'\n\n\n authEnabled: ${JSON.stringify(options.core.auth.enabled)}\n auth: ${JSON.stringify(options.core.auth.drivers)}\n db:\n path: '${options.core.db.path}'\n\ncontrollers:\n data:\n main:\n storages:\n main:\n mode: primary\n downloadable: true\n\n library:\n mode: passive\n downloadable: ${libraryDownloadable}\n\n work:\n mode: active\n downloadable: false\n\n storages:\n - ${JSON.stringify(options.storages.primary)}\n - ${JSON.stringify(options.storages.library)}\n - ${JSON.stringify(options.storages.work)}\n\n runner:\n type: local\n storageRoot: '${options.storages.work.rootPath}'\n workdirCacheOnSuccess: 20m\n workdirCacheOnFailure: 1h\n${cpuLimit}\n secrets:\n - map:\n MI_LICENSE: ${JSON.stringify(miLicenseSecret)}\n\n packageLoader:\n packagesRoot: '${options.localRoot}/packages'\n\n workflows:\n features:\n pureFutureFields: true\n commandExpressions: true\n workdirLimits: true\n computeLimits: false\n`;\n}\n\nfunction defaultBool(v: boolean | undefined, def: boolean): boolean {\n return v === undefined ? def : v;\n}\n"],"mappings":"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"}
|
|
@@ -1,175 +1,172 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
1
|
+
import { assertNever, resolveTilde } from "../util.js";
|
|
2
|
+
import state_default from "../state.js";
|
|
3
|
+
import { emptyFSSettings, emptyS3Settings } from "./types.js";
|
|
4
|
+
import fs from "node:fs";
|
|
5
5
|
|
|
6
|
+
//#region src/templates/pl-config.ts
|
|
6
7
|
function storageSettingsFromURL(storageURL, baseDir, defaults) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
throw new Error(`storage protocol '${url.protocol}' is not supported`);
|
|
59
|
-
}
|
|
8
|
+
storageURL = resolveTilde(storageURL);
|
|
9
|
+
const url = new URL(storageURL, `file:${baseDir}`);
|
|
10
|
+
switch (url.protocol) {
|
|
11
|
+
case "s3:": {
|
|
12
|
+
const bucketName = url.hostname;
|
|
13
|
+
const region = url.searchParams.get("region");
|
|
14
|
+
const keyPrefix = url.pathname.slice(1);
|
|
15
|
+
return {
|
|
16
|
+
...defaults,
|
|
17
|
+
type: "S3",
|
|
18
|
+
bucketName,
|
|
19
|
+
region,
|
|
20
|
+
keyPrefix
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
case "s3e:": {
|
|
24
|
+
const p = url.pathname.split("/").slice(1);
|
|
25
|
+
const bucketName = p[0];
|
|
26
|
+
const keyPrefix = p.length > 1 ? p.slice(1).join("/") : "";
|
|
27
|
+
return {
|
|
28
|
+
...defaults,
|
|
29
|
+
type: "S3",
|
|
30
|
+
endpoint: `http://${url.host}/`,
|
|
31
|
+
bucketName,
|
|
32
|
+
keyPrefix,
|
|
33
|
+
region: url.searchParams.get("region"),
|
|
34
|
+
key: url.username ? `static:${url.username}` : "",
|
|
35
|
+
secret: url.password ? `static:${url.password}` : ""
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
case "s3es:": {
|
|
39
|
+
const p = url.pathname.split("/").slice(1);
|
|
40
|
+
const bucketName = p[0];
|
|
41
|
+
const keyPrefix = p.length > 1 ? p.slice(1).join("/") : "";
|
|
42
|
+
return {
|
|
43
|
+
...defaults,
|
|
44
|
+
type: "S3",
|
|
45
|
+
endpoint: `https://${url.host}/`,
|
|
46
|
+
bucketName,
|
|
47
|
+
keyPrefix,
|
|
48
|
+
region: url.searchParams.get("region"),
|
|
49
|
+
key: url.username ? `static:${url.username}` : "",
|
|
50
|
+
secret: url.password ? `static:${url.password}` : ""
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
case "file:": return {
|
|
54
|
+
type: "FS",
|
|
55
|
+
rootPath: url.pathname
|
|
56
|
+
};
|
|
57
|
+
default: throw new Error(`storage protocol '${url.protocol}' is not supported`);
|
|
58
|
+
}
|
|
60
59
|
}
|
|
61
60
|
function loadDefaults(jwtKey, options) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
61
|
+
const localRoot = options?.localRoot ?? state_default.instanceDir("default");
|
|
62
|
+
const log = {
|
|
63
|
+
level: options?.log?.level ?? "info",
|
|
64
|
+
path: options?.log?.path ?? `${localRoot}/logs/platforma.log`
|
|
65
|
+
};
|
|
66
|
+
const grpc = {
|
|
67
|
+
listen: options?.grpc?.listen ?? "localhost:6345",
|
|
68
|
+
tls: {
|
|
69
|
+
enable: defaultBool(options?.grpc?.tls?.enable, false),
|
|
70
|
+
clientAuthMode: options?.grpc?.tls?.clientAuthMode ?? "NoAuth",
|
|
71
|
+
certFile: options?.grpc?.tls?.certFile ?? `${localRoot}/certs/tls.cert`,
|
|
72
|
+
keyFile: options?.grpc?.tls?.keyFile ?? `${localRoot}/certs/tls.key`,
|
|
73
|
+
...options?.grpc?.tls
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const core = {
|
|
77
|
+
auth: {
|
|
78
|
+
enabled: options?.core?.auth?.enabled ?? false,
|
|
79
|
+
drivers: options?.core?.auth?.drivers ?? [{
|
|
80
|
+
driver: "jwt",
|
|
81
|
+
key: jwtKey
|
|
82
|
+
}, {
|
|
83
|
+
driver: "htpasswd",
|
|
84
|
+
path: `${localRoot}/users.htpasswd`
|
|
85
|
+
}]
|
|
86
|
+
},
|
|
87
|
+
db: { path: `${localRoot}/db` }
|
|
88
|
+
};
|
|
89
|
+
const primary = defaultStorageSettings("main", `${localRoot}/storages/main`, "platforma-primary-bucket", options?.storages?.primary);
|
|
90
|
+
let work;
|
|
91
|
+
switch (options?.storages?.work?.type) {
|
|
92
|
+
case void 0:
|
|
93
|
+
case "FS":
|
|
94
|
+
work = emptyFSSettings("work");
|
|
95
|
+
work.rootPath = options?.storages?.work?.rootPath ?? `${localRoot}/storages/work`;
|
|
96
|
+
work.indexCachePeriod = options?.storages?.work?.indexCachePeriod ?? "1m";
|
|
97
|
+
break;
|
|
98
|
+
default: throw new Error("work storage MUST have 'FS' type as it is used for working directories management");
|
|
99
|
+
}
|
|
100
|
+
const library = defaultStorageSettings("library", `${localRoot}/storages/library`, "platforma-library-bucket", options?.storages?.library);
|
|
101
|
+
const monitoring = {
|
|
102
|
+
enabled: defaultBool(options?.monitoring?.enabled, true),
|
|
103
|
+
listen: options?.monitoring?.listen ?? "127.0.0.1:9090"
|
|
104
|
+
};
|
|
105
|
+
const debug = {
|
|
106
|
+
enabled: defaultBool(options?.debug?.enabled, true),
|
|
107
|
+
listen: options?.debug?.listen ?? "127.0.0.1:9091"
|
|
108
|
+
};
|
|
109
|
+
return {
|
|
110
|
+
localRoot,
|
|
111
|
+
license: {
|
|
112
|
+
value: options?.license?.value ?? "",
|
|
113
|
+
file: options?.license?.file ?? ""
|
|
114
|
+
},
|
|
115
|
+
log,
|
|
116
|
+
grpc,
|
|
117
|
+
core,
|
|
118
|
+
monitoring,
|
|
119
|
+
debug,
|
|
120
|
+
numCpu: options?.numCpu,
|
|
121
|
+
storages: {
|
|
122
|
+
primary,
|
|
123
|
+
work,
|
|
124
|
+
library
|
|
125
|
+
},
|
|
126
|
+
hacks: { libraryDownloadable: true }
|
|
127
|
+
};
|
|
127
128
|
}
|
|
128
129
|
function defaultStorageSettings(storageID, defaultLocation, defaultBucket, options) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
130
|
+
let storage;
|
|
131
|
+
const pType = options?.type;
|
|
132
|
+
switch (pType) {
|
|
133
|
+
case void 0:
|
|
134
|
+
case "FS":
|
|
135
|
+
storage = emptyFSSettings(storageID);
|
|
136
|
+
storage.rootPath = options?.rootPath ?? defaultLocation;
|
|
137
|
+
break;
|
|
138
|
+
case "S3":
|
|
139
|
+
storage = emptyS3Settings(storageID);
|
|
140
|
+
storage.endpoint = options?.endpoint;
|
|
141
|
+
storage.region = options?.region;
|
|
142
|
+
storage.presignEndpoint = options?.presignEndpoint ?? options?.endpoint;
|
|
143
|
+
storage.bucketName = options?.bucketName ?? defaultBucket;
|
|
144
|
+
storage.createBucket = defaultBool(options?.createBucket, true);
|
|
145
|
+
storage.forcePathStyle = defaultBool(options?.forcePathStyle, true);
|
|
146
|
+
storage.key = options?.key ?? "";
|
|
147
|
+
storage.secret = options?.secret ?? "";
|
|
148
|
+
storage.keyPrefix = options?.keyPrefix ?? "";
|
|
149
|
+
storage.accessPrefixes = options?.accessPrefixes ?? [""];
|
|
150
|
+
storage.uploadKeyPrefix = options?.uploadKeyPrefix ?? "";
|
|
151
|
+
break;
|
|
152
|
+
default:
|
|
153
|
+
assertNever(pType);
|
|
154
|
+
throw new Error("unknown storage type");
|
|
155
|
+
}
|
|
156
|
+
return storage;
|
|
156
157
|
}
|
|
157
158
|
function render(options) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
let cpuLimit = "";
|
|
166
|
-
if (options.numCpu) {
|
|
167
|
-
cpuLimit = `
|
|
159
|
+
const disableMon = options.monitoring.enabled ? "" : " disabled";
|
|
160
|
+
const disableDbg = options.debug.enabled ? "" : " disabled";
|
|
161
|
+
const libraryDownloadable = options.hacks.libraryDownloadable ? "true" : "false";
|
|
162
|
+
let miLicenseSecret = options.license.value;
|
|
163
|
+
if (options.license.file != "") miLicenseSecret = fs.readFileSync(options.license.file).toString().trimEnd();
|
|
164
|
+
let cpuLimit = "";
|
|
165
|
+
if (options.numCpu) cpuLimit = `
|
|
168
166
|
resources:
|
|
169
167
|
cpu: ${options.numCpu}
|
|
170
168
|
`;
|
|
171
|
-
|
|
172
|
-
return `
|
|
169
|
+
return `
|
|
173
170
|
license:
|
|
174
171
|
value: '${options.license.value}'
|
|
175
172
|
file: '${options.license.file}'
|
|
@@ -253,8 +250,9 @@ ${cpuLimit}
|
|
|
253
250
|
`;
|
|
254
251
|
}
|
|
255
252
|
function defaultBool(v, def) {
|
|
256
|
-
|
|
253
|
+
return v === void 0 ? def : v;
|
|
257
254
|
}
|
|
258
255
|
|
|
256
|
+
//#endregion
|
|
259
257
|
export { loadDefaults, render, storageSettingsFromURL };
|
|
260
|
-
//# sourceMappingURL=pl-config.js.map
|
|
258
|
+
//# sourceMappingURL=pl-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pl-config.js","sources":["../../src/templates/pl-config.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport * as types from \"./types\";\nimport { assertNever, resolveTilde } from \"../util\";\nimport state from \"../state\";\n\nexport type { plOptions } from \"./types\";\n\nexport function storageSettingsFromURL(\n storageURL: string,\n baseDir?: string,\n defaults?: types.storageOptions,\n): types.storageOptions {\n storageURL = resolveTilde(storageURL);\n const url = new URL(storageURL, `file:${baseDir}`);\n\n switch (url.protocol) {\n case \"s3:\": {\n const bucketName = url.hostname;\n const region = url.searchParams.get(\"region\");\n const keyPrefix = url.pathname.slice(1); // 's3://bucket/' will have '/' as pathname. We don't want to always have '/' prefix\n\n return {\n ...defaults,\n\n type: \"S3\",\n bucketName,\n region,\n keyPrefix,\n } as types.storageOptions;\n }\n case \"s3e:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `http://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"s3es:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `https://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"file:\":\n return {\n type: \"FS\",\n rootPath: url.pathname,\n };\n\n default:\n throw new Error(`storage protocol '${url.protocol}' is not supported`);\n }\n}\n\nexport function loadDefaults(jwtKey: string, options?: types.plOptions): types.plSettings {\n const localRoot = options?.localRoot ?? state.instanceDir(\"default\");\n\n const log: types.logSettings = {\n level: options?.log?.level ?? \"info\",\n path: options?.log?.path ?? `${localRoot}/logs/platforma.log`,\n };\n\n const grpc: types.grpcSettings = {\n listen: options?.grpc?.listen ?? \"localhost:6345\",\n tls: {\n enable: defaultBool(options?.grpc?.tls?.enable, false),\n clientAuthMode: options?.grpc?.tls?.clientAuthMode ?? \"NoAuth\",\n certFile: options?.grpc?.tls?.certFile ?? `${localRoot}/certs/tls.cert`,\n keyFile: options?.grpc?.tls?.keyFile ?? `${localRoot}/certs/tls.key`,\n\n ...options?.grpc?.tls,\n },\n };\n\n const core: types.coreSettings = {\n auth: {\n enabled: options?.core?.auth?.enabled ?? false,\n drivers: options?.core?.auth?.drivers ?? [\n { driver: \"jwt\", key: jwtKey },\n { driver: \"htpasswd\", path: `${localRoot}/users.htpasswd` },\n ],\n },\n db: {\n path: `${localRoot}/db`,\n },\n };\n\n const primary = defaultStorageSettings(\n \"main\",\n `${localRoot}/storages/main`,\n \"platforma-primary-bucket\",\n options?.storages?.primary,\n );\n\n let work: types.storageSettings;\n const wType = options?.storages?.work?.type;\n switch (wType) {\n case undefined:\n case \"FS\":\n work = types.emptyFSSettings(\"work\");\n work.rootPath = options?.storages?.work?.rootPath ?? `${localRoot}/storages/work`;\n work.indexCachePeriod = options?.storages?.work?.indexCachePeriod ?? \"1m\";\n break;\n\n default:\n throw new Error(\n \"work storage MUST have 'FS' type as it is used for working directories management\",\n );\n }\n\n const library = defaultStorageSettings(\n \"library\",\n `${localRoot}/storages/library`,\n \"platforma-library-bucket\",\n options?.storages?.library,\n );\n\n const monitoring: types.monitoringSettings = {\n enabled: defaultBool(options?.monitoring?.enabled, true),\n listen: options?.monitoring?.listen ?? \"127.0.0.1:9090\",\n };\n const debug: types.debugSettings = {\n enabled: defaultBool(options?.debug?.enabled, true),\n listen: options?.debug?.listen ?? \"127.0.0.1:9091\",\n };\n const license: types.licenseSettings = {\n value: options?.license?.value ?? \"\",\n file: options?.license?.file ?? \"\",\n };\n\n return {\n localRoot,\n license,\n log,\n grpc,\n core,\n monitoring,\n debug,\n numCpu: options?.numCpu,\n storages: { primary, work, library },\n hacks: { libraryDownloadable: true },\n };\n}\n\nfunction defaultStorageSettings(\n storageID: string,\n defaultLocation: string,\n defaultBucket: string,\n options?: types.storageOptions,\n): types.storageSettings {\n let storage: types.storageSettings;\n const pType = options?.type;\n switch (pType) {\n case undefined:\n case \"FS\":\n storage = types.emptyFSSettings(storageID);\n storage.rootPath = options?.rootPath ?? defaultLocation;\n break;\n\n case \"S3\":\n storage = types.emptyS3Settings(storageID);\n\n storage.endpoint = options?.endpoint;\n storage.region = options?.region;\n storage.presignEndpoint = options?.presignEndpoint ?? options?.endpoint;\n storage.bucketName = options?.bucketName ?? defaultBucket;\n storage.createBucket = defaultBool(options?.createBucket, true);\n storage.forcePathStyle = defaultBool(options?.forcePathStyle, true);\n storage.key = options?.key ?? \"\";\n storage.secret = options?.secret ?? \"\";\n storage.keyPrefix = options?.keyPrefix ?? \"\";\n storage.accessPrefixes = options?.accessPrefixes ?? [\"\"];\n storage.uploadKeyPrefix = options?.uploadKeyPrefix ?? \"\";\n break;\n\n default:\n assertNever(pType);\n throw new Error(\"unknown storage type\"); // calm down TS type analyzer\n }\n\n return storage;\n}\n\nexport function render(options: types.plSettings): string {\n const disableMon = options.monitoring.enabled ? \"\" : \" disabled\";\n const disableDbg = options.debug.enabled ? \"\" : \" disabled\";\n const libraryDownloadable = options.hacks.libraryDownloadable ? \"true\" : \"false\";\n let miLicenseSecret = options.license.value;\n if (options.license.file != \"\") {\n miLicenseSecret = fs.readFileSync(options.license.file).toString().trimEnd();\n }\n\n let cpuLimit = \"\";\n if (options.numCpu) {\n cpuLimit = `\n resources:\n cpu: ${options.numCpu}\n`;\n }\n\n return `\nlicense:\n value: '${options.license.value}'\n file: '${options.license.file}'\n\nlogging:\n level: '${options.log.level}'\n destinations:\n - path: '${options.log.path}'\n rotation:\n maxSize: 1GiB\n maxBackups: 15\n compress: true\n\nmonitoring${disableMon}:\n listen: '${options.monitoring.listen}'\n\ndebug${disableDbg}:\n listen: '${options.debug.listen}'\n\ncore:\n logging:\n extendedInfo: true\n dumpResourceData: false\n\n grpc:\n listen: '${options.grpc.listen}'\n\n tlsEnabled: ${JSON.stringify(options.grpc.tls.enable)}\n tls:\n clientAuthMode: '${options.grpc.tls.clientAuthMode}'\n certificates:\n - certFile: '${options.grpc.tls.certFile}'\n keyFile: '${options.grpc.tls.keyFile}'\n\n\n authEnabled: ${JSON.stringify(options.core.auth.enabled)}\n auth: ${JSON.stringify(options.core.auth.drivers)}\n db:\n path: '${options.core.db.path}'\n\ncontrollers:\n data:\n main:\n storages:\n main:\n mode: primary\n downloadable: true\n\n library:\n mode: passive\n downloadable: ${libraryDownloadable}\n\n work:\n mode: active\n downloadable: false\n\n storages:\n - ${JSON.stringify(options.storages.primary)}\n - ${JSON.stringify(options.storages.library)}\n - ${JSON.stringify(options.storages.work)}\n\n runner:\n type: local\n storageRoot: '${options.storages.work.rootPath}'\n workdirCacheOnSuccess: 20m\n workdirCacheOnFailure: 1h\n${cpuLimit}\n secrets:\n - map:\n MI_LICENSE: ${JSON.stringify(miLicenseSecret)}\n\n packageLoader:\n packagesRoot: '${options.localRoot}/packages'\n\n workflows:\n features:\n pureFutureFields: true\n commandExpressions: true\n workdirLimits: true\n computeLimits: false\n`;\n}\n\nfunction defaultBool(v: boolean | undefined, def: boolean): boolean {\n return v === undefined ? def : v;\n}\n"],"names":["types.emptyFSSettings","types.emptyS3Settings","fs"],"mappings":";;;;;SAOgB,sBAAsB,CACpC,UAAkB,EAClB,OAAgB,EAChB,QAA+B,EAAA;AAE/B,IAAA,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,CAAC;AAElD,IAAA,QAAQ,GAAG,CAAC,QAAQ;QAClB,KAAK,KAAK,EAAE;AACV,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ;YAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7C,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAExC,OAAO;AACL,gBAAA,GAAG,QAAQ;AAEX,gBAAA,IAAI,EAAE,IAAI;gBACV,UAAU;gBACV,MAAM;gBACN,SAAS;aACc;QAC3B;QACA,KAAK,MAAM,EAAE;AACX,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YAE1D,OAAO;AACL,gBAAA,GAAG,QAAQ;AAEX,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,QAAQ,EAAE,CAAA,OAAA,EAAU,GAAG,CAAC,IAAI,CAAA,CAAA,CAAG;gBAC/B,UAAU;gBACV,SAAS;gBACT,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,gBAAA,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAA,OAAA,EAAU,GAAG,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE;AACjD,gBAAA,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAA,OAAA,EAAU,GAAG,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE;aAC7B;QAC3B;QACA,KAAK,OAAO,EAAE;AACZ,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YAE1D,OAAO;AACL,gBAAA,GAAG,QAAQ;AAEX,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,QAAQ,EAAE,CAAA,QAAA,EAAW,GAAG,CAAC,IAAI,CAAA,CAAA,CAAG;gBAChC,UAAU;gBACV,SAAS;gBACT,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,gBAAA,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAA,OAAA,EAAU,GAAG,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE;AACjD,gBAAA,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAA,OAAA,EAAU,GAAG,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE;aAC7B;QAC3B;AACA,QAAA,KAAK,OAAO;YACV,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB;AAEH,QAAA;YACE,MAAM,IAAI,KAAK,CAAC,CAAA,kBAAA,EAAqB,GAAG,CAAC,QAAQ,CAAA,kBAAA,CAAoB,CAAC;;AAE5E;AAEM,SAAU,YAAY,CAAC,MAAc,EAAE,OAAyB,EAAA;AACpE,IAAA,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AAEpE,IAAA,MAAM,GAAG,GAAsB;AAC7B,QAAA,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI,MAAM;QACpC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,IAAI,CAAA,EAAG,SAAS,CAAA,mBAAA,CAAqB;KAC9D;AAED,IAAA,MAAM,IAAI,GAAuB;AAC/B,QAAA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,gBAAgB;AACjD,QAAA,GAAG,EAAE;AACH,YAAA,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC;YACtD,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,IAAI,QAAQ;YAC9D,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,IAAI,CAAA,EAAG,SAAS,CAAA,eAAA,CAAiB;YACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,IAAI,CAAA,EAAG,SAAS,CAAA,cAAA,CAAgB;AAEpE,YAAA,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG;AACtB,SAAA;KACF;AAED,IAAA,MAAM,IAAI,GAAuB;AAC/B,QAAA,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK;YAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI;AACvC,gBAAA,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;gBAC9B,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA,EAAG,SAAS,CAAA,eAAA,CAAiB,EAAE;AAC5D,aAAA;AACF,SAAA;AACD,QAAA,EAAE,EAAE;YACF,IAAI,EAAE,CAAA,EAAG,SAAS,CAAA,GAAA,CAAK;AACxB,SAAA;KACF;AAED,IAAA,MAAM,OAAO,GAAG,sBAAsB,CACpC,MAAM,EACN,GAAG,SAAS,CAAA,cAAA,CAAgB,EAC5B,0BAA0B,EAC1B,OAAO,EAAE,QAAQ,EAAE,OAAO,CAC3B;AAED,IAAA,IAAI,IAA2B;IAC/B,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI;IAC3C,QAAQ,KAAK;AACX,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,IAAI;AACP,YAAA,IAAI,GAAGA,eAAqB,CAAC,MAAM,CAAC;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,CAAA,EAAG,SAAS,gBAAgB;AACjF,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,IAAI,IAAI;YACzE;AAEF,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF;;AAGL,IAAA,MAAM,OAAO,GAAG,sBAAsB,CACpC,SAAS,EACT,GAAG,SAAS,CAAA,iBAAA,CAAmB,EAC/B,0BAA0B,EAC1B,OAAO,EAAE,QAAQ,EAAE,OAAO,CAC3B;AAED,IAAA,MAAM,UAAU,GAA6B;QAC3C,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;AACxD,QAAA,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,gBAAgB;KACxD;AACD,IAAA,MAAM,KAAK,GAAwB;QACjC,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AACnD,QAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,gBAAgB;KACnD;AACD,IAAA,MAAM,OAAO,GAA0B;AACrC,QAAA,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;AACpC,QAAA,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;KACnC;IAED,OAAO;QACL,SAAS;QACT,OAAO;QACP,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,KAAK;QACL,MAAM,EAAE,OAAO,EAAE,MAAM;AACvB,QAAA,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,QAAA,KAAK,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE;KACrC;AACH;AAEA,SAAS,sBAAsB,CAC7B,SAAiB,EACjB,eAAuB,EACvB,aAAqB,EACrB,OAA8B,EAAA;AAE9B,IAAA,IAAI,OAA8B;AAClC,IAAA,MAAM,KAAK,GAAG,OAAO,EAAE,IAAI;IAC3B,QAAQ,KAAK;AACX,QAAA,KAAK,SAAS;AACd,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,GAAGA,eAAqB,CAAC,SAAS,CAAC;YAC1C,OAAO,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,eAAe;YACvD;AAEF,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,GAAGC,eAAqB,CAAC,SAAS,CAAC;AAE1C,YAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ;AACpC,YAAA,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM;YAChC,OAAO,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,QAAQ;YACvE,OAAO,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,aAAa;YACzD,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC;YAC/D,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC;YACnE,OAAO,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE;YAChC,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE;YACtC,OAAO,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE;YAC5C,OAAO,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,EAAE;YACxD;AAEF,QAAA;YACE,WAAW,CAAM,CAAC;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;;AAG5C,IAAA,OAAO,OAAO;AAChB;AAEM,SAAU,MAAM,CAAC,OAAyB,EAAA;AAC9C,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,GAAG,WAAW;AAChE,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,WAAW;AAC3D,IAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,MAAM,GAAG,OAAO;AAChF,IAAA,IAAI,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK;IAC3C,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE;AAC9B,QAAA,eAAe,GAAGC,WAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;IAC9E;IAEA,IAAI,QAAQ,GAAG,EAAE;AACjB,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,QAAA,QAAQ,GAAG;;AAEF,WAAA,EAAA,OAAO,CAAC,MAAM;CAC1B;IACC;IAEA,OAAO;;YAEG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAA;WACtB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;;;YAGnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAA;;eAEd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAA;;;;;;YAMnB,UAAU,CAAA;aACT,OAAO,CAAC,UAAU,CAAC,MAAM,CAAA;;OAE/B,UAAU,CAAA;aACJ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;;;;;;;;eAQlB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;;kBAEhB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;;AAEhC,uBAAA,EAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAA;;AAEjC,qBAAA,EAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAA;AAC1B,oBAAA,EAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAA;;;iBAG7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;UAChD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEtC,WAAA,EAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA;;;;;;;;;;;;8BAYH,mBAAmB;;;;;;;UAOvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;UACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;UACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;;;;AAI3B,kBAAA,EAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAA;;;EAGhD,QAAQ;;;AAGc,sBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;;;AAGlC,mBAAA,EAAA,OAAO,CAAC,SAAS,CAAA;;;;;;;;CAQrC;AACD;AAEA,SAAS,WAAW,CAAC,CAAsB,EAAE,GAAY,EAAA;IACvD,OAAO,CAAC,KAAK,SAAS,GAAG,GAAG,GAAG,CAAC;AAClC;;;;"}
|
|
1
|
+
{"version":3,"file":"pl-config.js","names":["state","types.emptyFSSettings","types.emptyS3Settings"],"sources":["../../src/templates/pl-config.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport * as types from \"./types\";\nimport { assertNever, resolveTilde } from \"../util\";\nimport state from \"../state\";\n\nexport type { plOptions } from \"./types\";\n\nexport function storageSettingsFromURL(\n storageURL: string,\n baseDir?: string,\n defaults?: types.storageOptions,\n): types.storageOptions {\n storageURL = resolveTilde(storageURL);\n const url = new URL(storageURL, `file:${baseDir}`);\n\n switch (url.protocol) {\n case \"s3:\": {\n const bucketName = url.hostname;\n const region = url.searchParams.get(\"region\");\n const keyPrefix = url.pathname.slice(1); // 's3://bucket/' will have '/' as pathname. We don't want to always have '/' prefix\n\n return {\n ...defaults,\n\n type: \"S3\",\n bucketName,\n region,\n keyPrefix,\n } as types.storageOptions;\n }\n case \"s3e:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `http://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"s3es:\": {\n const p = url.pathname.split(\"/\").slice(1); // '/bucket/key/prefix' -> ['', 'bucket', 'key' 'prefix'] -> ['bucket', 'key', 'prefix']\n const bucketName = p[0];\n const keyPrefix = p.length > 1 ? p.slice(1).join(\"/\") : \"\";\n\n return {\n ...defaults,\n\n type: \"S3\",\n endpoint: `https://${url.host}/`,\n bucketName,\n keyPrefix,\n region: url.searchParams.get(\"region\"),\n key: url.username ? `static:${url.username}` : \"\",\n secret: url.password ? `static:${url.password}` : \"\",\n } as types.storageOptions;\n }\n case \"file:\":\n return {\n type: \"FS\",\n rootPath: url.pathname,\n };\n\n default:\n throw new Error(`storage protocol '${url.protocol}' is not supported`);\n }\n}\n\nexport function loadDefaults(jwtKey: string, options?: types.plOptions): types.plSettings {\n const localRoot = options?.localRoot ?? state.instanceDir(\"default\");\n\n const log: types.logSettings = {\n level: options?.log?.level ?? \"info\",\n path: options?.log?.path ?? `${localRoot}/logs/platforma.log`,\n };\n\n const grpc: types.grpcSettings = {\n listen: options?.grpc?.listen ?? \"localhost:6345\",\n tls: {\n enable: defaultBool(options?.grpc?.tls?.enable, false),\n clientAuthMode: options?.grpc?.tls?.clientAuthMode ?? \"NoAuth\",\n certFile: options?.grpc?.tls?.certFile ?? `${localRoot}/certs/tls.cert`,\n keyFile: options?.grpc?.tls?.keyFile ?? `${localRoot}/certs/tls.key`,\n\n ...options?.grpc?.tls,\n },\n };\n\n const core: types.coreSettings = {\n auth: {\n enabled: options?.core?.auth?.enabled ?? false,\n drivers: options?.core?.auth?.drivers ?? [\n { driver: \"jwt\", key: jwtKey },\n { driver: \"htpasswd\", path: `${localRoot}/users.htpasswd` },\n ],\n },\n db: {\n path: `${localRoot}/db`,\n },\n };\n\n const primary = defaultStorageSettings(\n \"main\",\n `${localRoot}/storages/main`,\n \"platforma-primary-bucket\",\n options?.storages?.primary,\n );\n\n let work: types.storageSettings;\n const wType = options?.storages?.work?.type;\n switch (wType) {\n case undefined:\n case \"FS\":\n work = types.emptyFSSettings(\"work\");\n work.rootPath = options?.storages?.work?.rootPath ?? `${localRoot}/storages/work`;\n work.indexCachePeriod = options?.storages?.work?.indexCachePeriod ?? \"1m\";\n break;\n\n default:\n throw new Error(\n \"work storage MUST have 'FS' type as it is used for working directories management\",\n );\n }\n\n const library = defaultStorageSettings(\n \"library\",\n `${localRoot}/storages/library`,\n \"platforma-library-bucket\",\n options?.storages?.library,\n );\n\n const monitoring: types.monitoringSettings = {\n enabled: defaultBool(options?.monitoring?.enabled, true),\n listen: options?.monitoring?.listen ?? \"127.0.0.1:9090\",\n };\n const debug: types.debugSettings = {\n enabled: defaultBool(options?.debug?.enabled, true),\n listen: options?.debug?.listen ?? \"127.0.0.1:9091\",\n };\n const license: types.licenseSettings = {\n value: options?.license?.value ?? \"\",\n file: options?.license?.file ?? \"\",\n };\n\n return {\n localRoot,\n license,\n log,\n grpc,\n core,\n monitoring,\n debug,\n numCpu: options?.numCpu,\n storages: { primary, work, library },\n hacks: { libraryDownloadable: true },\n };\n}\n\nfunction defaultStorageSettings(\n storageID: string,\n defaultLocation: string,\n defaultBucket: string,\n options?: types.storageOptions,\n): types.storageSettings {\n let storage: types.storageSettings;\n const pType = options?.type;\n switch (pType) {\n case undefined:\n case \"FS\":\n storage = types.emptyFSSettings(storageID);\n storage.rootPath = options?.rootPath ?? defaultLocation;\n break;\n\n case \"S3\":\n storage = types.emptyS3Settings(storageID);\n\n storage.endpoint = options?.endpoint;\n storage.region = options?.region;\n storage.presignEndpoint = options?.presignEndpoint ?? options?.endpoint;\n storage.bucketName = options?.bucketName ?? defaultBucket;\n storage.createBucket = defaultBool(options?.createBucket, true);\n storage.forcePathStyle = defaultBool(options?.forcePathStyle, true);\n storage.key = options?.key ?? \"\";\n storage.secret = options?.secret ?? \"\";\n storage.keyPrefix = options?.keyPrefix ?? \"\";\n storage.accessPrefixes = options?.accessPrefixes ?? [\"\"];\n storage.uploadKeyPrefix = options?.uploadKeyPrefix ?? \"\";\n break;\n\n default:\n assertNever(pType);\n throw new Error(\"unknown storage type\"); // calm down TS type analyzer\n }\n\n return storage;\n}\n\nexport function render(options: types.plSettings): string {\n const disableMon = options.monitoring.enabled ? \"\" : \" disabled\";\n const disableDbg = options.debug.enabled ? \"\" : \" disabled\";\n const libraryDownloadable = options.hacks.libraryDownloadable ? \"true\" : \"false\";\n let miLicenseSecret = options.license.value;\n if (options.license.file != \"\") {\n miLicenseSecret = fs.readFileSync(options.license.file).toString().trimEnd();\n }\n\n let cpuLimit = \"\";\n if (options.numCpu) {\n cpuLimit = `\n resources:\n cpu: ${options.numCpu}\n`;\n }\n\n return `\nlicense:\n value: '${options.license.value}'\n file: '${options.license.file}'\n\nlogging:\n level: '${options.log.level}'\n destinations:\n - path: '${options.log.path}'\n rotation:\n maxSize: 1GiB\n maxBackups: 15\n compress: true\n\nmonitoring${disableMon}:\n listen: '${options.monitoring.listen}'\n\ndebug${disableDbg}:\n listen: '${options.debug.listen}'\n\ncore:\n logging:\n extendedInfo: true\n dumpResourceData: false\n\n grpc:\n listen: '${options.grpc.listen}'\n\n tlsEnabled: ${JSON.stringify(options.grpc.tls.enable)}\n tls:\n clientAuthMode: '${options.grpc.tls.clientAuthMode}'\n certificates:\n - certFile: '${options.grpc.tls.certFile}'\n keyFile: '${options.grpc.tls.keyFile}'\n\n\n authEnabled: ${JSON.stringify(options.core.auth.enabled)}\n auth: ${JSON.stringify(options.core.auth.drivers)}\n db:\n path: '${options.core.db.path}'\n\ncontrollers:\n data:\n main:\n storages:\n main:\n mode: primary\n downloadable: true\n\n library:\n mode: passive\n downloadable: ${libraryDownloadable}\n\n work:\n mode: active\n downloadable: false\n\n storages:\n - ${JSON.stringify(options.storages.primary)}\n - ${JSON.stringify(options.storages.library)}\n - ${JSON.stringify(options.storages.work)}\n\n runner:\n type: local\n storageRoot: '${options.storages.work.rootPath}'\n workdirCacheOnSuccess: 20m\n workdirCacheOnFailure: 1h\n${cpuLimit}\n secrets:\n - map:\n MI_LICENSE: ${JSON.stringify(miLicenseSecret)}\n\n packageLoader:\n packagesRoot: '${options.localRoot}/packages'\n\n workflows:\n features:\n pureFutureFields: true\n commandExpressions: true\n workdirLimits: true\n computeLimits: false\n`;\n}\n\nfunction defaultBool(v: boolean | undefined, def: boolean): boolean {\n return v === undefined ? def : v;\n}\n"],"mappings":"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"}
|
package/dist/templates/types.cjs
CHANGED
|
@@ -1,31 +1,32 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
|
|
2
|
+
//#region src/templates/types.ts
|
|
3
3
|
function emptyS3Settings(id) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
4
|
+
return {
|
|
5
|
+
id,
|
|
6
|
+
type: "S3",
|
|
7
|
+
indexCachePeriod: "0s",
|
|
8
|
+
endpoint: "",
|
|
9
|
+
region: "",
|
|
10
|
+
bucketName: "",
|
|
11
|
+
createBucket: false,
|
|
12
|
+
forcePathStyle: false,
|
|
13
|
+
key: "",
|
|
14
|
+
secret: "",
|
|
15
|
+
keyPrefix: "",
|
|
16
|
+
accessPrefixes: [],
|
|
17
|
+
uploadKeyPrefix: ""
|
|
18
|
+
};
|
|
19
19
|
}
|
|
20
20
|
function emptyFSSettings(id) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
return {
|
|
22
|
+
id,
|
|
23
|
+
type: "FS",
|
|
24
|
+
indexCachePeriod: "0s",
|
|
25
|
+
rootPath: ""
|
|
26
|
+
};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
//#endregion
|
|
29
30
|
exports.emptyFSSettings = emptyFSSettings;
|
|
30
31
|
exports.emptyS3Settings = emptyS3Settings;
|
|
31
|
-
//# sourceMappingURL=types.cjs.map
|
|
32
|
+
//# sourceMappingURL=types.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sources":["../../src/templates/types.ts"],"sourcesContent":["export type plSettings = {\n localRoot: string;\n\n license: licenseSettings;\n log: logSettings;\n grpc: grpcSettings;\n core: coreSettings;\n storages: storagesSettings;\n\n monitoring: monitoringSettings;\n debug: debugSettings;\n\n numCpu?: number;\n\n hacks: {\n libraryDownloadable: boolean;\n };\n};\nexport type plOptions = {\n localRoot?: string;\n\n license?: licenseOptions;\n log?: logOptions;\n grpc?: grpcOptions;\n core?: coreOptions;\n storages?: storagesOptions;\n\n numCpu?: number;\n\n monitoring?: monitoringOptions;\n debug?: debugOptions;\n};\n\nexport type licenseSettings = {\n value: string;\n file: string;\n};\nexport type licenseOptions = DeepPartial<licenseSettings>;\n\nexport type logSettings = {\n level: string;\n path: string;\n};\nexport type logOptions = DeepPartial<logSettings>;\n\nexport type coreSettings = {\n auth: authSettings;\n db: dbSettings;\n};\nexport type coreOptions = {\n auth?: authOptions;\n db?: dbOptions;\n};\n\nexport type authSettings = {\n enabled: boolean;\n drivers: authDriver[];\n};\nexport type authOptions = Partial<authSettings>;\n\nexport type dbSettings = {\n path: string;\n};\nexport type dbOptions = Partial<dbSettings>;\n\nexport type authDriver =\n | {\n driver: \"ldap\";\n serverUrl: string; // 'ldaps://ldap.example.com:1111'\n defaultDN: string; // 'cn=%u,ou=users,ou=users,dc=example,dc=com'\n }\n | {\n driver: \"jwt\";\n key: string;\n }\n | {\n driver: \"htpasswd\";\n path: string;\n };\n\nexport type grpcSettings = {\n listen: string;\n tls: tlsSettings;\n};\nexport type grpcOptions = Partial<grpcSettings>;\n\nexport type tlsSettings = {\n enable: boolean;\n clientAuthMode: tlsAuthMode;\n certFile: string;\n keyFile: string;\n};\nexport type tlsOptions = Partial<tlsSettings>;\n\nexport type tlsAuthMode =\n | \"NoAuth\"\n | \"RequestAnyCert\"\n | \"RequireAnyCert\"\n | \"RequestValidCert\"\n | \"RequireValidCert\";\n\nexport type storagesSettings = {\n primary: storageSettings;\n work: fsStorageSettings;\n library: storageSettings;\n};\nexport type storagesOptions = {\n primary?: storageOptions;\n work?: storageOptions;\n library?: storageOptions;\n};\n\nexport type storageSettings = s3StorageSettings | fsStorageSettings;\nexport type storageOptions = s3StorageOptions | fsStorageOptions;\n\ntype storageID = { id: string };\ntype commonStorageSettings = {\n indexCachePeriod: string;\n};\n\nexport type s3StorageSettings = storageID &\n s3StorageType &\n commonStorageSettings &\n s3StorageTypeSettings;\nexport type s3StorageOptions = s3StorageType &\n Partial<commonStorageSettings> &\n Partial<s3StorageTypeSettings>;\nexport function emptyS3Settings(id: string): s3StorageSettings {\n return {\n id: id,\n type: \"S3\",\n indexCachePeriod: \"0s\",\n endpoint: \"\",\n region: \"\",\n bucketName: \"\",\n createBucket: false,\n forcePathStyle: false,\n key: \"\",\n secret: \"\",\n keyPrefix: \"\",\n accessPrefixes: [],\n uploadKeyPrefix: \"\",\n };\n}\n\ntype s3StorageType = { type: \"S3\" };\ntype s3StorageTypeSettings = {\n endpoint?: string;\n presignEndpoint?: string;\n region?: string;\n bucketName: string;\n createBucket: boolean;\n forcePathStyle: boolean;\n key: string;\n secret: string;\n keyPrefix: string;\n accessPrefixes: string[];\n uploadKeyPrefix: string;\n};\n\nexport type fsStorageSettings = storageID &\n fsStorageType &\n commonStorageSettings &\n fsStorageTypeSettings;\nexport type fsStorageOptions = fsStorageType &\n Partial<commonStorageSettings> &\n Partial<fsStorageTypeSettings>;\nexport function emptyFSSettings(id: string): fsStorageSettings {\n return {\n id: id,\n type: \"FS\",\n indexCachePeriod: \"0s\",\n rootPath: \"\",\n };\n}\n\ntype fsStorageType = { type: \"FS\" };\ntype fsStorageTypeSettings = {\n rootPath: string;\n};\n\nexport type monitoringSettings = {\n enabled: boolean;\n listen: string;\n};\nexport type monitoringOptions = Partial<monitoringSettings>;\n\nexport type debugSettings = {\n enabled: boolean;\n listen: string;\n};\nexport type debugOptions = Partial<debugSettings>;\n\n/** Makes all keys and keys in sub-objects optional. */\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n"],"
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/templates/types.ts"],"sourcesContent":["export type plSettings = {\n localRoot: string;\n\n license: licenseSettings;\n log: logSettings;\n grpc: grpcSettings;\n core: coreSettings;\n storages: storagesSettings;\n\n monitoring: monitoringSettings;\n debug: debugSettings;\n\n numCpu?: number;\n\n hacks: {\n libraryDownloadable: boolean;\n };\n};\nexport type plOptions = {\n localRoot?: string;\n\n license?: licenseOptions;\n log?: logOptions;\n grpc?: grpcOptions;\n core?: coreOptions;\n storages?: storagesOptions;\n\n numCpu?: number;\n\n monitoring?: monitoringOptions;\n debug?: debugOptions;\n};\n\nexport type licenseSettings = {\n value: string;\n file: string;\n};\nexport type licenseOptions = DeepPartial<licenseSettings>;\n\nexport type logSettings = {\n level: string;\n path: string;\n};\nexport type logOptions = DeepPartial<logSettings>;\n\nexport type coreSettings = {\n auth: authSettings;\n db: dbSettings;\n};\nexport type coreOptions = {\n auth?: authOptions;\n db?: dbOptions;\n};\n\nexport type authSettings = {\n enabled: boolean;\n drivers: authDriver[];\n};\nexport type authOptions = Partial<authSettings>;\n\nexport type dbSettings = {\n path: string;\n};\nexport type dbOptions = Partial<dbSettings>;\n\nexport type authDriver =\n | {\n driver: \"ldap\";\n serverUrl: string; // 'ldaps://ldap.example.com:1111'\n defaultDN: string; // 'cn=%u,ou=users,ou=users,dc=example,dc=com'\n }\n | {\n driver: \"jwt\";\n key: string;\n }\n | {\n driver: \"htpasswd\";\n path: string;\n };\n\nexport type grpcSettings = {\n listen: string;\n tls: tlsSettings;\n};\nexport type grpcOptions = Partial<grpcSettings>;\n\nexport type tlsSettings = {\n enable: boolean;\n clientAuthMode: tlsAuthMode;\n certFile: string;\n keyFile: string;\n};\nexport type tlsOptions = Partial<tlsSettings>;\n\nexport type tlsAuthMode =\n | \"NoAuth\"\n | \"RequestAnyCert\"\n | \"RequireAnyCert\"\n | \"RequestValidCert\"\n | \"RequireValidCert\";\n\nexport type storagesSettings = {\n primary: storageSettings;\n work: fsStorageSettings;\n library: storageSettings;\n};\nexport type storagesOptions = {\n primary?: storageOptions;\n work?: storageOptions;\n library?: storageOptions;\n};\n\nexport type storageSettings = s3StorageSettings | fsStorageSettings;\nexport type storageOptions = s3StorageOptions | fsStorageOptions;\n\ntype storageID = { id: string };\ntype commonStorageSettings = {\n indexCachePeriod: string;\n};\n\nexport type s3StorageSettings = storageID &\n s3StorageType &\n commonStorageSettings &\n s3StorageTypeSettings;\nexport type s3StorageOptions = s3StorageType &\n Partial<commonStorageSettings> &\n Partial<s3StorageTypeSettings>;\nexport function emptyS3Settings(id: string): s3StorageSettings {\n return {\n id: id,\n type: \"S3\",\n indexCachePeriod: \"0s\",\n endpoint: \"\",\n region: \"\",\n bucketName: \"\",\n createBucket: false,\n forcePathStyle: false,\n key: \"\",\n secret: \"\",\n keyPrefix: \"\",\n accessPrefixes: [],\n uploadKeyPrefix: \"\",\n };\n}\n\ntype s3StorageType = { type: \"S3\" };\ntype s3StorageTypeSettings = {\n endpoint?: string;\n presignEndpoint?: string;\n region?: string;\n bucketName: string;\n createBucket: boolean;\n forcePathStyle: boolean;\n key: string;\n secret: string;\n keyPrefix: string;\n accessPrefixes: string[];\n uploadKeyPrefix: string;\n};\n\nexport type fsStorageSettings = storageID &\n fsStorageType &\n commonStorageSettings &\n fsStorageTypeSettings;\nexport type fsStorageOptions = fsStorageType &\n Partial<commonStorageSettings> &\n Partial<fsStorageTypeSettings>;\nexport function emptyFSSettings(id: string): fsStorageSettings {\n return {\n id: id,\n type: \"FS\",\n indexCachePeriod: \"0s\",\n rootPath: \"\",\n };\n}\n\ntype fsStorageType = { type: \"FS\" };\ntype fsStorageTypeSettings = {\n rootPath: string;\n};\n\nexport type monitoringSettings = {\n enabled: boolean;\n listen: string;\n};\nexport type monitoringOptions = Partial<monitoringSettings>;\n\nexport type debugSettings = {\n enabled: boolean;\n listen: string;\n};\nexport type debugOptions = Partial<debugSettings>;\n\n/** Makes all keys and keys in sub-objects optional. */\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n"],"mappings":";;AA+HA,SAAgB,gBAAgB,IAA+B;AAC7D,QAAO;EACD;EACJ,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,QAAQ;EACR,YAAY;EACZ,cAAc;EACd,gBAAgB;EAChB,KAAK;EACL,QAAQ;EACR,WAAW;EACX,gBAAgB,EAAE;EAClB,iBAAiB;EAClB;;AAyBH,SAAgB,gBAAgB,IAA+B;AAC7D,QAAO;EACD;EACJ,MAAM;EACN,kBAAkB;EAClB,UAAU;EACX"}
|