@liquidmetal-ai/drizzle 0.9.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/appify/build.d.ts +8 -1
- package/dist/appify/build.d.ts.map +1 -1
- package/dist/appify/build.js +69 -1
- package/dist/appify/build.test.js +156 -0
- package/dist/appify/validate.d.ts.map +1 -1
- package/dist/appify/validate.js +37 -0
- package/dist/appify/validate.test.js +38 -1
- package/dist/liquidmetal/v1alpha1/bucket_name_pb.d.ts +11 -11
- package/dist/liquidmetal/v1alpha1/bucket_name_pb.d.ts.map +1 -1
- package/dist/liquidmetal/v1alpha1/bucket_name_pb.js +1 -1
- package/dist/liquidmetal/v1alpha1/object_pb.d.ts +8 -0
- package/dist/liquidmetal/v1alpha1/object_pb.d.ts.map +1 -1
- package/dist/liquidmetal/v1alpha1/object_pb.js +1 -1
- package/dist/liquidmetal/v1alpha1/payments_pb.d.ts +461 -0
- package/dist/liquidmetal/v1alpha1/payments_pb.d.ts.map +1 -0
- package/dist/liquidmetal/v1alpha1/payments_pb.js +152 -0
- package/dist/liquidmetal/v1alpha1/rainbow_auth_pb.d.ts +315 -0
- package/dist/liquidmetal/v1alpha1/rainbow_auth_pb.d.ts.map +1 -1
- package/dist/liquidmetal/v1alpha1/rainbow_auth_pb.js +56 -1
- package/dist/liquidmetal/v1alpha1/riverjack_pb.d.ts +6 -0
- package/dist/liquidmetal/v1alpha1/riverjack_pb.d.ts.map +1 -1
- package/dist/liquidmetal/v1alpha1/riverjack_pb.js +1 -1
- package/dist/liquidmetal/v1alpha1/search_agent_pb.d.ts +374 -0
- package/dist/liquidmetal/v1alpha1/search_agent_pb.d.ts.map +1 -1
- package/dist/liquidmetal/v1alpha1/search_agent_pb.js +46 -1
- package/dist/liquidmetal/v1alpha1/stripe_seller_integration_pb.d.ts +468 -0
- package/dist/liquidmetal/v1alpha1/stripe_seller_integration_pb.d.ts.map +1 -0
- package/dist/liquidmetal/v1alpha1/stripe_seller_integration_pb.js +151 -0
- package/package.json +3 -3
- package/src/appify/build.test.ts +184 -0
- package/src/appify/build.ts +73 -1
- package/src/appify/validate.test.ts +40 -1
- package/src/appify/validate.ts +40 -0
- package/src/liquidmetal/v1alpha1/bucket_name_pb.ts +12 -12
- package/src/liquidmetal/v1alpha1/object_pb.ts +10 -1
- package/src/liquidmetal/v1alpha1/payments_pb.ts +546 -0
- package/src/liquidmetal/v1alpha1/rainbow_auth_pb.ts +362 -1
- package/src/liquidmetal/v1alpha1/riverjack_pb.ts +8 -1
- package/src/liquidmetal/v1alpha1/search_agent_pb.ts +432 -1
- package/src/liquidmetal/v1alpha1/stripe_seller_integration_pb.ts +545 -0
- package/tsconfig.tsbuildinfo +1 -1
package/src/appify/build.test.ts
CHANGED
|
@@ -581,3 +581,187 @@ application "my-agent-app" {
|
|
|
581
581
|
expect(valueOf(app.service[0]!.name)).toBe('agent-api');
|
|
582
582
|
expect(valueOf(app.bucket[0]!.name)).toBe('agent-files');
|
|
583
583
|
});
|
|
584
|
+
|
|
585
|
+
test('payments basic parsing', () => {
|
|
586
|
+
const CONFIG = `
|
|
587
|
+
application "my-app" {
|
|
588
|
+
payments {
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
`;
|
|
592
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
593
|
+
const parser = new Parser(tokenizer);
|
|
594
|
+
const ast = parser.parse();
|
|
595
|
+
expect(parser.errors).toEqual([]);
|
|
596
|
+
|
|
597
|
+
const [apps, errors] = buildManifest(ast);
|
|
598
|
+
expect(errors).toEqual([]);
|
|
599
|
+
|
|
600
|
+
// Check that we have exactly one application
|
|
601
|
+
expect(apps.length).toBe(1);
|
|
602
|
+
|
|
603
|
+
// Check that we have exactly one payments
|
|
604
|
+
expect(apps[0]!.payments.length).toBe(1);
|
|
605
|
+
|
|
606
|
+
// Check the payments properties
|
|
607
|
+
const payments = apps[0]!.payments[0]!;
|
|
608
|
+
expect(valueOf(payments.name)).toBe('payments');
|
|
609
|
+
expect(payments.mode).toBeUndefined();
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
test('payments with mode=test', () => {
|
|
613
|
+
const CONFIG = `
|
|
614
|
+
application "my-app" {
|
|
615
|
+
payments {
|
|
616
|
+
mode = "test"
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
`;
|
|
620
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
621
|
+
const parser = new Parser(tokenizer);
|
|
622
|
+
const ast = parser.parse();
|
|
623
|
+
expect(parser.errors).toEqual([]);
|
|
624
|
+
|
|
625
|
+
const [apps, errors] = buildManifest(ast);
|
|
626
|
+
expect(errors).toEqual([]);
|
|
627
|
+
|
|
628
|
+
// Check that we have exactly one payments
|
|
629
|
+
expect(apps[0]!.payments.length).toBe(1);
|
|
630
|
+
|
|
631
|
+
// Check the payments properties
|
|
632
|
+
const payments = apps[0]!.payments[0]!;
|
|
633
|
+
expect(valueOf(payments.name)).toBe('payments');
|
|
634
|
+
expect(payments.mode).toBeDefined();
|
|
635
|
+
expect(valueOf(payments.mode!)).toBe('test');
|
|
636
|
+
});
|
|
637
|
+
|
|
638
|
+
test('payments with mode=live', () => {
|
|
639
|
+
const CONFIG = `
|
|
640
|
+
application "my-app" {
|
|
641
|
+
payments {
|
|
642
|
+
mode = "live"
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
`;
|
|
646
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
647
|
+
const parser = new Parser(tokenizer);
|
|
648
|
+
const ast = parser.parse();
|
|
649
|
+
expect(parser.errors).toEqual([]);
|
|
650
|
+
|
|
651
|
+
const [apps, errors] = buildManifest(ast);
|
|
652
|
+
expect(errors).toEqual([]);
|
|
653
|
+
|
|
654
|
+
// Check that we have exactly one payments
|
|
655
|
+
expect(apps[0]!.payments.length).toBe(1);
|
|
656
|
+
|
|
657
|
+
// Check the payments properties
|
|
658
|
+
const payments = apps[0]!.payments[0]!;
|
|
659
|
+
expect(valueOf(payments.name)).toBe('payments');
|
|
660
|
+
expect(payments.mode).toBeDefined();
|
|
661
|
+
expect(valueOf(payments.mode!)).toBe('live');
|
|
662
|
+
});
|
|
663
|
+
|
|
664
|
+
test('payments with invalid properties', () => {
|
|
665
|
+
const CONFIG = `
|
|
666
|
+
application "my-app" {
|
|
667
|
+
payments {
|
|
668
|
+
invalid_property = "should fail"
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
`;
|
|
672
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
673
|
+
const parser = new Parser(tokenizer);
|
|
674
|
+
const ast = parser.parse();
|
|
675
|
+
expect(parser.errors).toEqual([]);
|
|
676
|
+
|
|
677
|
+
const [, errors] = buildManifest(ast);
|
|
678
|
+
|
|
679
|
+
// Should have one error for the invalid property
|
|
680
|
+
expect(errors.length).toBe(1);
|
|
681
|
+
expect(errors[0]!.message).toContain('unexpected assignment');
|
|
682
|
+
});
|
|
683
|
+
|
|
684
|
+
test('payments with duplicate mode assignment', () => {
|
|
685
|
+
const CONFIG = `
|
|
686
|
+
application "my-app" {
|
|
687
|
+
payments {
|
|
688
|
+
mode = "test"
|
|
689
|
+
mode = "live"
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
`;
|
|
693
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
694
|
+
const parser = new Parser(tokenizer);
|
|
695
|
+
const ast = parser.parse();
|
|
696
|
+
expect(parser.errors).toEqual([]);
|
|
697
|
+
|
|
698
|
+
const [, errors] = buildManifest(ast);
|
|
699
|
+
|
|
700
|
+
// Should have one error for the duplicate assignment
|
|
701
|
+
expect(errors.length).toBe(1);
|
|
702
|
+
expect(errors[0]!.message).toContain('duplicate');
|
|
703
|
+
});
|
|
704
|
+
|
|
705
|
+
test('payments with invalid mode value', () => {
|
|
706
|
+
const CONFIG = `
|
|
707
|
+
application "my-app" {
|
|
708
|
+
payments {
|
|
709
|
+
mode = "production"
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
`;
|
|
713
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
714
|
+
const parser = new Parser(tokenizer);
|
|
715
|
+
const ast = parser.parse();
|
|
716
|
+
expect(parser.errors).toEqual([]);
|
|
717
|
+
|
|
718
|
+
const [_apps, errors] = buildManifest(ast);
|
|
719
|
+
|
|
720
|
+
// Should have one error for the invalid mode value
|
|
721
|
+
expect(errors.length).toBe(1);
|
|
722
|
+
expect(errors[0]!.message).toContain('mode must be either "live" or "test"');
|
|
723
|
+
expect(errors[0]!.message).toContain('production');
|
|
724
|
+
});
|
|
725
|
+
|
|
726
|
+
test('payments integration with other modules', () => {
|
|
727
|
+
const CONFIG = `
|
|
728
|
+
application "my-payment-app" {
|
|
729
|
+
payments {
|
|
730
|
+
mode = "test"
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
service "api" {
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
actor "processor" {
|
|
737
|
+
visibility = "protected"
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
`;
|
|
741
|
+
const tokenizer = new Tokenizer(CONFIG);
|
|
742
|
+
const parser = new Parser(tokenizer);
|
|
743
|
+
const ast = parser.parse();
|
|
744
|
+
expect(parser.errors).toEqual([]);
|
|
745
|
+
|
|
746
|
+
const [apps, errors] = buildManifest(ast);
|
|
747
|
+
expect(errors).toEqual([]);
|
|
748
|
+
|
|
749
|
+
// Check that we have exactly one application
|
|
750
|
+
expect(apps.length).toBe(1);
|
|
751
|
+
const app = apps[0]!;
|
|
752
|
+
|
|
753
|
+
// Verify all module types are parsed correctly
|
|
754
|
+
expect(app.payments.length).toBe(1);
|
|
755
|
+
expect(app.service.length).toBe(1);
|
|
756
|
+
expect(app.actor.length).toBe(1);
|
|
757
|
+
|
|
758
|
+
// Verify payments properties
|
|
759
|
+
const payments = app.payments[0]!;
|
|
760
|
+
expect(valueOf(payments.name)).toBe('payments');
|
|
761
|
+
expect(payments.mode).toBeDefined();
|
|
762
|
+
expect(valueOf(payments.mode!)).toBe('test');
|
|
763
|
+
|
|
764
|
+
// Verify other modules still work correctly
|
|
765
|
+
expect(valueOf(app.service[0]!.name)).toBe('api');
|
|
766
|
+
expect(valueOf(app.actor[0]!.name)).toBe('processor');
|
|
767
|
+
});
|
package/src/appify/build.ts
CHANGED
|
@@ -80,6 +80,27 @@ export function buildManifest(node: BlockNode): [Application[], ConfigError[]] {
|
|
|
80
80
|
return [applications, errors];
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
// buildName0 is a helper function for stanzas that don't take a name argument.
|
|
84
|
+
// It generates a hardcoded name token based on the stanza type.
|
|
85
|
+
function buildName0(stanzaName: string, node: StanzaNode): [TokenString, ConfigError[]] {
|
|
86
|
+
const errors: ConfigError[] = [];
|
|
87
|
+
if (node.args.length > 0) {
|
|
88
|
+
errors.push({ message: `${stanzaName} does not take a name argument`, ...node.args[0]! });
|
|
89
|
+
}
|
|
90
|
+
// Generate a token with the hardcoded name
|
|
91
|
+
return [
|
|
92
|
+
{
|
|
93
|
+
type: 'string',
|
|
94
|
+
value: `"${stanzaName}"`,
|
|
95
|
+
line: node.line,
|
|
96
|
+
column: node.column,
|
|
97
|
+
start: node.start,
|
|
98
|
+
end: node.block?.start || node.end,
|
|
99
|
+
} as TokenString,
|
|
100
|
+
errors,
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
|
|
83
104
|
// buildName1 is a helper function for parsing a name from a stanza
|
|
84
105
|
// node arguments and asserting there should only be 1, string
|
|
85
106
|
// argument.
|
|
@@ -252,6 +273,9 @@ export function buildApplication(node: StanzaNode): [Application | undefined, Co
|
|
|
252
273
|
case 'smartmemory':
|
|
253
274
|
buildStanza(buildSmartMemory, child, app.smartMemory, errors);
|
|
254
275
|
break;
|
|
276
|
+
case 'payments':
|
|
277
|
+
buildStanza(buildPayments, child, app.payments, errors);
|
|
278
|
+
break;
|
|
255
279
|
default:
|
|
256
280
|
errors.push({ message: 'unexpected stanza', ...child });
|
|
257
281
|
}
|
|
@@ -602,6 +626,42 @@ function buildSmartMemory(stanza: StanzaNode): [SmartMemory, ConfigError[]] {
|
|
|
602
626
|
return [smartMemory, errors];
|
|
603
627
|
}
|
|
604
628
|
|
|
629
|
+
function buildPayments(stanza: StanzaNode): [Payments, ConfigError[]] {
|
|
630
|
+
const errors: ConfigError[] = [];
|
|
631
|
+
const [name, nameErrors] = buildName0('payments', stanza);
|
|
632
|
+
errors.push(...nameErrors);
|
|
633
|
+
const payments = new Payments(name, stanza);
|
|
634
|
+
for (const child of stanza.block?.children ?? []) {
|
|
635
|
+
switch (child.type) {
|
|
636
|
+
case 'assignment':
|
|
637
|
+
switch (child.key.value) {
|
|
638
|
+
case 'mode':
|
|
639
|
+
buildAssignment(payments, 'mode', 'string', child, errors);
|
|
640
|
+
// Validate that mode is either "live" or "test"
|
|
641
|
+
if (payments.mode && child.value.type === 'string') {
|
|
642
|
+
const modeValue = valueOf(payments.mode);
|
|
643
|
+
if (modeValue !== 'live' && modeValue !== 'test') {
|
|
644
|
+
errors.push({
|
|
645
|
+
message: `mode must be either "live" or "test", got "${modeValue}"`,
|
|
646
|
+
...child.value
|
|
647
|
+
});
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
break;
|
|
651
|
+
default:
|
|
652
|
+
errors.push({ message: 'unexpected assignment', ...child });
|
|
653
|
+
}
|
|
654
|
+
break;
|
|
655
|
+
case 'comment':
|
|
656
|
+
case 'newline':
|
|
657
|
+
break;
|
|
658
|
+
default:
|
|
659
|
+
errors.push({ message: `unexpected ${child.type}`, ...child });
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
return [payments, errors];
|
|
663
|
+
}
|
|
664
|
+
|
|
605
665
|
function buildObserver(stanza: StanzaNode): [Observer, ConfigError[]] {
|
|
606
666
|
const errors: ConfigError[] = [];
|
|
607
667
|
const [name, nameErrors] = buildName1(stanza);
|
|
@@ -922,6 +982,7 @@ export class Application {
|
|
|
922
982
|
smartBucket: SmartBucket[] = [];
|
|
923
983
|
smartSql: SmartSql[] = [];
|
|
924
984
|
smartMemory: SmartMemory[] = [];
|
|
985
|
+
payments: Payments[] = [];
|
|
925
986
|
labels: Record<string, string> = {};
|
|
926
987
|
mcpService: McpService[] = [];
|
|
927
988
|
|
|
@@ -1186,7 +1247,18 @@ export class SmartMemory {
|
|
|
1186
1247
|
}
|
|
1187
1248
|
}
|
|
1188
1249
|
|
|
1189
|
-
export
|
|
1250
|
+
export class Payments {
|
|
1251
|
+
name: TokenString;
|
|
1252
|
+
obj: ConfigObject;
|
|
1253
|
+
mode?: TokenString;
|
|
1254
|
+
|
|
1255
|
+
constructor(name: TokenString, obj: ConfigObject) {
|
|
1256
|
+
this.name = name;
|
|
1257
|
+
this.obj = obj;
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
export const VISIBILITIES = ['none', 'public', 'private', 'protected', 'paid', 'application', 'suite', 'tenant'] as const;
|
|
1190
1262
|
export type Visibility = (typeof VISIBILITIES)[number];
|
|
1191
1263
|
|
|
1192
1264
|
export const TASK_TYPES = ['cron'] as const;
|
|
@@ -225,7 +225,7 @@ application "my-app" {
|
|
|
225
225
|
const validateErrors = await validate(builtApps, VALIDATORS);
|
|
226
226
|
expect(validateErrors).toMatchObject([
|
|
227
227
|
{
|
|
228
|
-
message: 'visibility must be one of none, public, private, protected, application, suite, tenant',
|
|
228
|
+
message: 'visibility must be one of none, public, private, protected, paid, application, suite, tenant',
|
|
229
229
|
line: 4,
|
|
230
230
|
column: 18,
|
|
231
231
|
start: 66,
|
|
@@ -533,3 +533,42 @@ describe('task validator', async () => {
|
|
|
533
533
|
}
|
|
534
534
|
});
|
|
535
535
|
});
|
|
536
|
+
|
|
537
|
+
test('paymentsValidator - multiple payments blocks', async () => {
|
|
538
|
+
const manifest = `
|
|
539
|
+
application "my-app" {
|
|
540
|
+
payments {}
|
|
541
|
+
|
|
542
|
+
payments {}
|
|
543
|
+
}
|
|
544
|
+
`;
|
|
545
|
+
const tokenizer = new Tokenizer(manifest);
|
|
546
|
+
const parser = new Parser(tokenizer);
|
|
547
|
+
const parsedManifest = parser.parse();
|
|
548
|
+
const [builtApps] = buildManifest(parsedManifest);
|
|
549
|
+
const validateErrors = await validate(builtApps, VALIDATORS);
|
|
550
|
+
expect(validateErrors).toMatchObject([
|
|
551
|
+
{
|
|
552
|
+
message: 'only one payments block is allowed per application',
|
|
553
|
+
line: 5,
|
|
554
|
+
column: 3,
|
|
555
|
+
severity: 'error',
|
|
556
|
+
},
|
|
557
|
+
]);
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
test('paymentsValidator - single payments block', async () => {
|
|
561
|
+
const manifest = `
|
|
562
|
+
application "my-app" {
|
|
563
|
+
payments {}
|
|
564
|
+
}
|
|
565
|
+
`;
|
|
566
|
+
const tokenizer = new Tokenizer(manifest);
|
|
567
|
+
const parser = new Parser(tokenizer);
|
|
568
|
+
const parsedManifest = parser.parse();
|
|
569
|
+
const [builtApps] = buildManifest(parsedManifest);
|
|
570
|
+
const validateErrors = await validate(builtApps, VALIDATORS);
|
|
571
|
+
// Filter out other validation errors, only check for payments-related errors
|
|
572
|
+
const paymentsErrors = validateErrors.filter((e) => e.message.includes('payments'));
|
|
573
|
+
expect(paymentsErrors).toEqual([]);
|
|
574
|
+
});
|
package/src/appify/validate.ts
CHANGED
|
@@ -543,6 +543,44 @@ const locationHintValidator: Validator = {
|
|
|
543
543
|
},
|
|
544
544
|
};
|
|
545
545
|
|
|
546
|
+
const paymentsValidator: Validator = {
|
|
547
|
+
onApplication: async (app: Application, _application: Application): Promise<ValidationError[]> => {
|
|
548
|
+
const errors: ValidationError[] = [];
|
|
549
|
+
if (app.payments.length > 1) {
|
|
550
|
+
// Report error on the second payments declaration
|
|
551
|
+
const secondPayments = app.payments[1];
|
|
552
|
+
if (secondPayments) {
|
|
553
|
+
errors.push({
|
|
554
|
+
message: 'only one payments block is allowed per application',
|
|
555
|
+
severity: 'error',
|
|
556
|
+
...secondPayments.obj,
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return errors;
|
|
561
|
+
},
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
async function paidVisibilityValidatorFn(app: Application, obj: { visibility?: TokenString }): Promise<ValidationError[]> {
|
|
565
|
+
const errors: ValidationError[] = [];
|
|
566
|
+
if (obj.visibility && valueOf(obj.visibility) === 'paid' && app.payments.length === 0) {
|
|
567
|
+
errors.push({
|
|
568
|
+
message: 'visibility="paid" requires a payments block in the application manifest',
|
|
569
|
+
severity: 'error',
|
|
570
|
+
...(obj.visibility || obj),
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
return errors;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
const paidVisibilityValidator: Validator = {
|
|
577
|
+
onService: paidVisibilityValidatorFn,
|
|
578
|
+
onActor: paidVisibilityValidatorFn,
|
|
579
|
+
onTask: paidVisibilityValidatorFn,
|
|
580
|
+
onQueue: paidVisibilityValidatorFn,
|
|
581
|
+
onBucket: paidVisibilityValidatorFn,
|
|
582
|
+
};
|
|
583
|
+
|
|
546
584
|
export const VALIDATORS: Validator[] = [
|
|
547
585
|
bindingNameValidator,
|
|
548
586
|
bindingValueValidator,
|
|
@@ -555,4 +593,6 @@ export const VALIDATORS: Validator[] = [
|
|
|
555
593
|
vectorIndexValidator,
|
|
556
594
|
duplicateModuleValidator,
|
|
557
595
|
locationHintValidator,
|
|
596
|
+
paymentsValidator,
|
|
597
|
+
paidVisibilityValidator,
|
|
558
598
|
];
|
|
@@ -10,10 +10,10 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
10
10
|
* Describes the file liquidmetal/v1alpha1/bucket_name.proto.
|
|
11
11
|
*/
|
|
12
12
|
export const file_liquidmetal_v1alpha1_bucket_name: GenFile = /*@__PURE__*/
|
|
13
|
-
fileDesc("
|
|
13
|
+
fileDesc("CiZsaXF1aWRtZXRhbC92MWFscGhhMS9idWNrZXRfbmFtZS5wcm90bxIUbGlxdWlkbWV0YWwudjFhbHBoYTEiRQoKQnVja2V0TmFtZRIMCgRuYW1lGAEgASgJEg8KB3ZlcnNpb24YAiABKAkSGAoQYXBwbGljYXRpb25fbmFtZRgDIAEoCSJrCg1CdWNrZXRMb2NhdG9yEhMKCW1vZHVsZV9pZBgBIAEoCUgAEjIKBmJ1Y2tldBgCIAEoCzIgLmxpcXVpZG1ldGFsLnYxYWxwaGExLkJ1Y2tldE5hbWVIAEIRCg9idWNrZXRfbG9jYXRpb24icgoOQnVja2V0UmVzcG9uc2USEQoJbW9kdWxlX2lkGAEgASgJEhMKC2J1Y2tldF9uYW1lGAIgASgJEh4KFmFwcGxpY2F0aW9uX3ZlcnNpb25faWQYBCABKAkSGAoQYXBwbGljYXRpb25fbmFtZRgFIAEoCULqAQoYY29tLmxpcXVpZG1ldGFsLnYxYWxwaGExQg9CdWNrZXROYW1lUHJvdG9QAVpMZ2l0aHViLmNvbS9saXF1aWRtZXRhbC1haS9wcm90b2dlbjIvbGlxdWlkbWV0YWwvdjFhbHBoYTE7bGlxdWlkbWV0YWx2MWFscGhhMaICA0xYWKoCFExpcXVpZG1ldGFsLlYxYWxwaGExygIUTGlxdWlkbWV0YWxcVjFhbHBoYTHiAiBMaXF1aWRtZXRhbFxWMWFscGhhMVxHUEJNZXRhZGF0YeoCFUxpcXVpZG1ldGFsOjpWMWFscGhhMWIGcHJvdG8z");
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* BucketName represents a bucket name with
|
|
16
|
+
* BucketName represents a bucket name with version and application name
|
|
17
17
|
*
|
|
18
18
|
* @generated from message liquidmetal.v1alpha1.BucketName
|
|
19
19
|
*/
|
|
@@ -28,22 +28,22 @@ export type BucketName = Message<"liquidmetal.v1alpha1.BucketName"> & {
|
|
|
28
28
|
name: string;
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* The version of the bucket
|
|
32
32
|
* __EXAMPLE__ "01jtryx2f2f61ryk06vd8mr91p"
|
|
33
|
-
* __REQUIRED__
|
|
33
|
+
* __REQUIRED__ TRUE
|
|
34
34
|
*
|
|
35
|
-
* @generated from field:
|
|
35
|
+
* @generated from field: string version = 2;
|
|
36
36
|
*/
|
|
37
|
-
version
|
|
37
|
+
version: string;
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
40
|
+
* The application name
|
|
41
41
|
* __EXAMPLE__ "my-app"
|
|
42
|
-
* __REQUIRED__
|
|
42
|
+
* __REQUIRED__ TRUE
|
|
43
43
|
*
|
|
44
|
-
* @generated from field:
|
|
44
|
+
* @generated from field: string application_name = 3;
|
|
45
45
|
*/
|
|
46
|
-
applicationName
|
|
46
|
+
applicationName: string;
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -58,7 +58,7 @@ export const BucketNameSchema: GenMessage<BucketName> = /*@__PURE__*/
|
|
|
58
58
|
*/
|
|
59
59
|
export type BucketLocator = Message<"liquidmetal.v1alpha1.BucketLocator"> & {
|
|
60
60
|
/**
|
|
61
|
-
* __EXAMPLE__ { name: 'my-smartbucket' }
|
|
61
|
+
* __EXAMPLE__ { name: 'my-smartbucket', version: '01jtryx2f2f61ryk06vd8mr91p', application_name: 'my-app' }
|
|
62
62
|
* __REQUIRED__ TRUE
|
|
63
63
|
*
|
|
64
64
|
* @generated from oneof liquidmetal.v1alpha1.BucketLocator.bucket_location
|
|
@@ -74,7 +74,7 @@ export type BucketLocator = Message<"liquidmetal.v1alpha1.BucketLocator"> & {
|
|
|
74
74
|
case: "moduleId";
|
|
75
75
|
} | {
|
|
76
76
|
/**
|
|
77
|
-
* __EXAMPLE__ { name: 'my-smartbucket' }
|
|
77
|
+
* __EXAMPLE__ { name: 'my-smartbucket', version: '01jtryx2f2f61ryk06vd8mr91p', application_name: 'my-app' }
|
|
78
78
|
* __REQUIRED__ FALSE
|
|
79
79
|
*
|
|
80
80
|
* @generated from field: liquidmetal.v1alpha1.BucketName bucket = 2;
|
|
@@ -17,7 +17,7 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
17
17
|
* Describes the file liquidmetal/v1alpha1/object.proto.
|
|
18
18
|
*/
|
|
19
19
|
export const file_liquidmetal_v1alpha1_object: GenFile = /*@__PURE__*/
|
|
20
|
-
fileDesc("
|
|
20
|
+
fileDesc("CiFsaXF1aWRtZXRhbC92MWFscGhhMS9vYmplY3QucHJvdG8SFGxpcXVpZG1ldGFsLnYxYWxwaGExIrQBChBQdXRPYmplY3RSZXF1ZXN0EhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEgsKA2tleRgEIAEoCRIPCgdjb250ZW50GAUgASgMEhQKDGNvbnRlbnRfdHlwZRgGIAEoCRI8Cg9idWNrZXRfbG9jYXRpb24YByABKAsyIy5saXF1aWRtZXRhbC52MWFscGhhMS5CdWNrZXRMb2NhdG9ySgQIAxAEIlYKEVB1dE9iamVjdFJlc3BvbnNlEjQKBmJ1Y2tldBgBIAEoCzIkLmxpcXVpZG1ldGFsLnYxYWxwaGExLkJ1Y2tldFJlc3BvbnNlEgsKA2tleRgCIAEoCSKNAQoQR2V0T2JqZWN0UmVxdWVzdBIXCg9vcmdhbml6YXRpb25faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRILCgNrZXkYBCABKAkSPAoPYnVja2V0X2xvY2F0aW9uGAUgASgLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvckoECAMQBCI6ChFHZXRPYmplY3RSZXNwb25zZRIPCgdjb250ZW50GAEgASgMEhQKDGNvbnRlbnRfdHlwZRgCIAEoCSKQAQoTRGVsZXRlT2JqZWN0UmVxdWVzdBIXCg9vcmdhbml6YXRpb25faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRILCgNrZXkYBCABKAkSPAoPYnVja2V0X2xvY2F0aW9uGAUgASgLMiMubGlxdWlkbWV0YWwudjFhbHBoYTEuQnVja2V0TG9jYXRvckoECAMQBCIWChREZWxldGVPYmplY3RSZXNwb25zZSKiAQoSTGlzdE9iamVjdHNSZXF1ZXN0EhcKD29yZ2FuaXphdGlvbl9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjwKD2J1Y2tldF9sb2NhdGlvbhgEIAEoCzIjLmxpcXVpZG1ldGFsLnYxYWxwaGExLkJ1Y2tldExvY2F0b3ISEwoGcHJlZml4GAUgASgJSACIAQFCCQoHX3ByZWZpeEoECAMQBCLOAQoTTGlzdE9iamVjdHNSZXNwb25zZRJFCgdvYmplY3RzGAEgAygLMjQubGlxdWlkbWV0YWwudjFhbHBoYTEuTGlzdE9iamVjdHNSZXNwb25zZS5PYmplY3RJbmZvGnAKCk9iamVjdEluZm8SCwoDa2V5GAEgASgJEgwKBHNpemUYAiABKAMSFAoMY29udGVudF90eXBlGAMgASgJEjEKDWxhc3RfbW9kaWZpZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wMogECg1PYmplY3RTZXJ2aWNlEncKCVB1dE9iamVjdBImLmxpcXVpZG1ldGFsLnYxYWxwaGExLlB1dE9iamVjdFJlcXVlc3QaJy5saXF1aWRtZXRhbC52MWFscGhhMS5QdXRPYmplY3RSZXNwb25zZSIZgtPkkwITOgEqIg4vdjEvcHV0X29iamVjdBJ3CglHZXRPYmplY3QSJi5saXF1aWRtZXRhbC52MWFscGhhMS5HZXRPYmplY3RSZXF1ZXN0GicubGlxdWlkbWV0YWwudjFhbHBoYTEuR2V0T2JqZWN0UmVzcG9uc2UiGYLT5JMCEzoBKiIOL3YxL2dldF9vYmplY3QSgwEKDERlbGV0ZU9iamVjdBIpLmxpcXVpZG1ldGFsLnYxYWxwaGExLkRlbGV0ZU9iamVjdFJlcXVlc3QaKi5saXF1aWRtZXRhbC52MWFscGhhMS5EZWxldGVPYmplY3RSZXNwb25zZSIcgtPkkwIWOgEqIhEvdjEvZGVsZXRlX29iamVjdBJ/CgtMaXN0T2JqZWN0cxIoLmxpcXVpZG1ldGFsLnYxYWxwaGExLkxpc3RPYmplY3RzUmVxdWVzdBopLmxpcXVpZG1ldGFsLnYxYWxwaGExLkxpc3RPYmplY3RzUmVzcG9uc2UiG4LT5JMCFToBKiIQL3YxL2xpc3Rfb2JqZWN0c0LmAQoYY29tLmxpcXVpZG1ldGFsLnYxYWxwaGExQgtPYmplY3RQcm90b1ABWkxnaXRodWIuY29tL2xpcXVpZG1ldGFsLWFpL3Byb3RvZ2VuMi9saXF1aWRtZXRhbC92MWFscGhhMTtsaXF1aWRtZXRhbHYxYWxwaGExogIDTFhYqgIUTGlxdWlkbWV0YWwuVjFhbHBoYTHKAhRMaXF1aWRtZXRhbFxWMWFscGhhMeICIExpcXVpZG1ldGFsXFYxYWxwaGExXEdQQk1ldGFkYXRh6gIVTGlxdWlkbWV0YWw6OlYxYWxwaGExYgZwcm90bzM", [file_google_protobuf_timestamp, file_liquidmetal_v1alpha1_bucket_name]);
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @generated from message liquidmetal.v1alpha1.PutObjectRequest
|
|
@@ -244,6 +244,15 @@ export type ListObjectsRequest = Message<"liquidmetal.v1alpha1.ListObjectsReques
|
|
|
244
244
|
* @generated from field: liquidmetal.v1alpha1.BucketLocator bucket_location = 4;
|
|
245
245
|
*/
|
|
246
246
|
bucketLocation?: BucketLocator;
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* __DESCRIPTION__ Optional prefix to filter object keys (e.g., "documents/" to only list objects in documents folder)
|
|
250
|
+
* __EXAMPLE__ "documents/"
|
|
251
|
+
* __REQUIRED__ FALSE
|
|
252
|
+
*
|
|
253
|
+
* @generated from field: optional string prefix = 5;
|
|
254
|
+
*/
|
|
255
|
+
prefix?: string;
|
|
247
256
|
};
|
|
248
257
|
|
|
249
258
|
/**
|