@gallop.software/studio 0.1.72 → 0.1.73

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.
@@ -0,0 +1,27 @@
1
+ // src/types.ts
2
+ function getThumbnailPath(originalPath, size) {
3
+ if (size === "full") {
4
+ const ext2 = originalPath.match(/\.\w+$/)?.[0] || ".jpg";
5
+ const base2 = originalPath.replace(/\.\w+$/, "");
6
+ const outputExt2 = ext2.toLowerCase() === ".png" ? ".png" : ".jpg";
7
+ return `/images${base2}${outputExt2}`;
8
+ }
9
+ const ext = originalPath.match(/\.\w+$/)?.[0] || ".jpg";
10
+ const base = originalPath.replace(/\.\w+$/, "");
11
+ const outputExt = ext.toLowerCase() === ".png" ? ".png" : ".jpg";
12
+ return `/images${base}-${size}${outputExt}`;
13
+ }
14
+ function getAllThumbnailPaths(originalPath) {
15
+ return [
16
+ getThumbnailPath(originalPath, "full"),
17
+ getThumbnailPath(originalPath, "lg"),
18
+ getThumbnailPath(originalPath, "md"),
19
+ getThumbnailPath(originalPath, "sm")
20
+ ];
21
+ }
22
+
23
+ export {
24
+ getThumbnailPath,
25
+ getAllThumbnailPaths
26
+ };
27
+ //# sourceMappingURL=chunk-3RI33B7A.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["/**\n * Lean meta entry - minimal data per image\n */\nexport interface LeanImageEntry {\n w: number // original width\n h: number // original height\n blur: string // blurhash\n s?: 1 // synced to CDN (omit if not synced)\n}\n\n/**\n * Lean meta schema - keyed by path from public folder\n * Example: { \"/portfolio/photo.jpg\": { w: 2400, h: 1600, blur: \"...\" } }\n */\nexport type LeanMeta = Record<string, LeanImageEntry>\n\n/**\n * File/folder item for browser\n */\nexport interface FileItem {\n name: string\n path: string\n type: 'file' | 'folder'\n size?: number\n dimensions?: { width: number; height: number }\n cdnSynced?: boolean\n // Folder-specific properties\n fileCount?: number\n totalSize?: number\n // For showing thumbnails - path to -sm version if exists\n thumbnail?: string\n // Whether a processed thumbnail exists\n hasThumbnail?: boolean\n}\n\n/**\n * Studio configuration\n */\nexport interface StudioConfig {\n r2AccountId?: string\n r2AccessKeyId?: string\n r2SecretAccessKey?: string\n r2BucketName?: string\n r2PublicUrl?: string\n thumbnailSizes?: {\n small: number\n medium: number\n large: number\n }\n}\n\n/**\n * Get thumbnail path from original image path\n */\nexport function getThumbnailPath(originalPath: string, size: 'sm' | 'md' | 'lg' | 'full'): string {\n if (size === 'full') {\n const ext = originalPath.match(/\\.\\w+$/)?.[0] || '.jpg'\n const base = originalPath.replace(/\\.\\w+$/, '')\n const outputExt = ext.toLowerCase() === '.png' ? '.png' : '.jpg'\n return `/images${base}${outputExt}`\n }\n const ext = originalPath.match(/\\.\\w+$/)?.[0] || '.jpg'\n const base = originalPath.replace(/\\.\\w+$/, '')\n const outputExt = ext.toLowerCase() === '.png' ? '.png' : '.jpg'\n return `/images${base}-${size}${outputExt}`\n}\n\n/**\n * Get all thumbnail paths for an image\n */\nexport function getAllThumbnailPaths(originalPath: string): string[] {\n return [\n getThumbnailPath(originalPath, 'full'),\n getThumbnailPath(originalPath, 'lg'),\n getThumbnailPath(originalPath, 'md'),\n getThumbnailPath(originalPath, 'sm'),\n ]\n}\n"],"mappings":";AAsDO,SAAS,iBAAiB,cAAsB,MAA2C;AAChG,MAAI,SAAS,QAAQ;AACnB,UAAMA,OAAM,aAAa,MAAM,QAAQ,IAAI,CAAC,KAAK;AACjD,UAAMC,QAAO,aAAa,QAAQ,UAAU,EAAE;AAC9C,UAAMC,aAAYF,KAAI,YAAY,MAAM,SAAS,SAAS;AAC1D,WAAO,UAAUC,KAAI,GAAGC,UAAS;AAAA,EACnC;AACA,QAAM,MAAM,aAAa,MAAM,QAAQ,IAAI,CAAC,KAAK;AACjD,QAAM,OAAO,aAAa,QAAQ,UAAU,EAAE;AAC9C,QAAM,YAAY,IAAI,YAAY,MAAM,SAAS,SAAS;AAC1D,SAAO,UAAU,IAAI,IAAI,IAAI,GAAG,SAAS;AAC3C;AAKO,SAAS,qBAAqB,cAAgC;AACnE,SAAO;AAAA,IACL,iBAAiB,cAAc,MAAM;AAAA,IACrC,iBAAiB,cAAc,IAAI;AAAA,IACnC,iBAAiB,cAAc,IAAI;AAAA,IACnC,iBAAiB,cAAc,IAAI;AAAA,EACrC;AACF;","names":["ext","base","outputExt"]}
@@ -0,0 +1,27 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/types.ts
2
+ function getThumbnailPath(originalPath, size) {
3
+ if (size === "full") {
4
+ const ext2 = _optionalChain([originalPath, 'access', _ => _.match, 'call', _2 => _2(/\.\w+$/), 'optionalAccess', _3 => _3[0]]) || ".jpg";
5
+ const base2 = originalPath.replace(/\.\w+$/, "");
6
+ const outputExt2 = ext2.toLowerCase() === ".png" ? ".png" : ".jpg";
7
+ return `/images${base2}${outputExt2}`;
8
+ }
9
+ const ext = _optionalChain([originalPath, 'access', _4 => _4.match, 'call', _5 => _5(/\.\w+$/), 'optionalAccess', _6 => _6[0]]) || ".jpg";
10
+ const base = originalPath.replace(/\.\w+$/, "");
11
+ const outputExt = ext.toLowerCase() === ".png" ? ".png" : ".jpg";
12
+ return `/images${base}-${size}${outputExt}`;
13
+ }
14
+ function getAllThumbnailPaths(originalPath) {
15
+ return [
16
+ getThumbnailPath(originalPath, "full"),
17
+ getThumbnailPath(originalPath, "lg"),
18
+ getThumbnailPath(originalPath, "md"),
19
+ getThumbnailPath(originalPath, "sm")
20
+ ];
21
+ }
22
+
23
+
24
+
25
+
26
+ exports.getThumbnailPath = getThumbnailPath; exports.getAllThumbnailPaths = getAllThumbnailPaths;
27
+ //# sourceMappingURL=chunk-CN5NRNWB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/chrisb/Sites/studio/dist/chunk-CN5NRNWB.js","../src/types.ts"],"names":["ext","base","outputExt"],"mappings":"AAAA;ACsDO,SAAS,gBAAA,CAAiB,YAAA,EAAsB,IAAA,EAA2C;AAChG,EAAA,GAAA,CAAI,KAAA,IAAS,MAAA,EAAQ;AACnB,IAAA,MAAMA,KAAAA,kBAAM,YAAA,mBAAa,KAAA,mBAAM,QAAQ,CAAA,4BAAA,CAAI,CAAC,IAAA,GAAK,MAAA;AACjD,IAAA,MAAMC,MAAAA,EAAO,YAAA,CAAa,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAC9C,IAAA,MAAMC,WAAAA,EAAYF,IAAAA,CAAI,WAAA,CAAY,EAAA,IAAM,OAAA,EAAS,OAAA,EAAS,MAAA;AAC1D,IAAA,OAAO,CAAA,OAAA,EAAUC,KAAI,CAAA,EAAA;AACvB,EAAA;AACyB,EAAA;AACZ,EAAA;AACS,EAAA;AACG,EAAA;AAC3B;AAKgB;AACP,EAAA;AACY,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACnB,EAAA;AACF;ADxD2B;AACA;AACA;AACA;AACA","file":"/Users/chrisb/Sites/studio/dist/chunk-CN5NRNWB.js","sourcesContent":[null,"/**\n * Lean meta entry - minimal data per image\n */\nexport interface LeanImageEntry {\n w: number // original width\n h: number // original height\n blur: string // blurhash\n s?: 1 // synced to CDN (omit if not synced)\n}\n\n/**\n * Lean meta schema - keyed by path from public folder\n * Example: { \"/portfolio/photo.jpg\": { w: 2400, h: 1600, blur: \"...\" } }\n */\nexport type LeanMeta = Record<string, LeanImageEntry>\n\n/**\n * File/folder item for browser\n */\nexport interface FileItem {\n name: string\n path: string\n type: 'file' | 'folder'\n size?: number\n dimensions?: { width: number; height: number }\n cdnSynced?: boolean\n // Folder-specific properties\n fileCount?: number\n totalSize?: number\n // For showing thumbnails - path to -sm version if exists\n thumbnail?: string\n // Whether a processed thumbnail exists\n hasThumbnail?: boolean\n}\n\n/**\n * Studio configuration\n */\nexport interface StudioConfig {\n r2AccountId?: string\n r2AccessKeyId?: string\n r2SecretAccessKey?: string\n r2BucketName?: string\n r2PublicUrl?: string\n thumbnailSizes?: {\n small: number\n medium: number\n large: number\n }\n}\n\n/**\n * Get thumbnail path from original image path\n */\nexport function getThumbnailPath(originalPath: string, size: 'sm' | 'md' | 'lg' | 'full'): string {\n if (size === 'full') {\n const ext = originalPath.match(/\\.\\w+$/)?.[0] || '.jpg'\n const base = originalPath.replace(/\\.\\w+$/, '')\n const outputExt = ext.toLowerCase() === '.png' ? '.png' : '.jpg'\n return `/images${base}${outputExt}`\n }\n const ext = originalPath.match(/\\.\\w+$/)?.[0] || '.jpg'\n const base = originalPath.replace(/\\.\\w+$/, '')\n const outputExt = ext.toLowerCase() === '.png' ? '.png' : '.jpg'\n return `/images${base}-${size}${outputExt}`\n}\n\n/**\n * Get all thumbnail paths for an image\n */\nexport function getAllThumbnailPaths(originalPath: string): string[] {\n return [\n getThumbnailPath(originalPath, 'full'),\n getThumbnailPath(originalPath, 'lg'),\n getThumbnailPath(originalPath, 'md'),\n getThumbnailPath(originalPath, 'sm'),\n ]\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
- import { F as FileItem } from './types-1m_7EjJU.mjs';
2
+ import { F as FileItem } from './types-C9CMIJLW.mjs';
3
3
 
4
4
  /**
5
5
  * Unified GET handler for all Studio API routes
@@ -1,5 +1,5 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
- import { F as FileItem } from './types-1m_7EjJU.js';
2
+ import { F as FileItem } from './types-C9CMIJLW.js';
3
3
 
4
4
  /**
5
5
  * Unified GET handler for all Studio API routes