@liquidmetal-ai/raindrop 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +116 -22
  2. package/dist/base-command.d.ts.map +1 -1
  3. package/dist/base-command.js +5 -7
  4. package/dist/commands/build/branch.d.ts +1 -0
  5. package/dist/commands/build/branch.d.ts.map +1 -1
  6. package/dist/commands/build/branch.js +12 -3
  7. package/dist/commands/build/deploy.d.ts +1 -0
  8. package/dist/commands/build/deploy.d.ts.map +1 -1
  9. package/dist/commands/build/deploy.js +43 -25
  10. package/dist/commands/build/env/get.d.ts.map +1 -1
  11. package/dist/commands/build/env/get.js +5 -2
  12. package/dist/commands/build/env/set.d.ts.map +1 -1
  13. package/dist/commands/build/env/set.js +5 -2
  14. package/dist/commands/build/list.d.ts.map +1 -1
  15. package/dist/commands/build/list.js +3 -1
  16. package/dist/commands/build/sandbox.d.ts +16 -0
  17. package/dist/commands/build/sandbox.d.ts.map +1 -0
  18. package/dist/commands/build/sandbox.js +54 -0
  19. package/dist/commands/build/start.js +2 -2
  20. package/dist/commands/build/stop.js +2 -2
  21. package/dist/commands/build/tools/check.d.ts +12 -0
  22. package/dist/commands/build/tools/check.d.ts.map +1 -0
  23. package/dist/commands/build/tools/check.js +19 -0
  24. package/dist/commands/build/tools/fmt.d.ts +12 -0
  25. package/dist/commands/build/tools/fmt.d.ts.map +1 -0
  26. package/dist/commands/build/tools/fmt.js +36 -0
  27. package/dist/commands/build/unsandbox.d.ts +16 -0
  28. package/dist/commands/build/unsandbox.d.ts.map +1 -0
  29. package/dist/commands/build/unsandbox.js +54 -0
  30. package/dist/commands/build/upload.d.ts.map +1 -1
  31. package/dist/commands/build/upload.js +1 -2
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/oclif.manifest.json +241 -2
  34. package/package.json +3 -2
  35. package/templates/handlers/actor/index.test.ts +5 -0
  36. package/templates/handlers/actor/index.ts.hbs +8 -0
  37. package/templates/handlers/http-service/index.test.ts +5 -0
  38. package/templates/handlers/http-service/index.ts.hbs +8 -0
  39. package/templates/handlers/queue-consumer/index.test.ts +5 -0
  40. package/templates/handlers/queue-consumer/index.ts.hbs +11 -0
  41. package/templates/handlers/r2-event-notification/index.test.ts +5 -0
  42. package/templates/handlers/r2-event-notification/index.ts.hbs +8 -0
  43. package/templates/init/package.json.hbs +23 -0
  44. package/templates/init/raindrop.manifest.hbs +3 -0
  45. package/templates/init/tsconfig.json +29 -0
@@ -0,0 +1,54 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ export default class Sandbox extends BaseCommand {
4
+ static args = {
5
+ versionId: Args.string({ char: 'v', description: 'version to sandbox', required: false }),
6
+ };
7
+ static description = 'mark a version as sandboxed in the Raindrop catalog';
8
+ static examples = [
9
+ `<%= config.bin %> <%= command.id %>
10
+ `,
11
+ ];
12
+ static flags = {
13
+ impersonate: Flags.string({
14
+ char: 'i',
15
+ description: 'impersonate organization',
16
+ required: false,
17
+ hidden: true,
18
+ }),
19
+ rainbowAuthService: Flags.string({
20
+ default: 'https://liquidmetal.run/api/connect',
21
+ hidden: true,
22
+ env: 'LIQUIDMETAL_RAINBOW_AUTH_SERVICE',
23
+ }),
24
+ config: Flags.string({
25
+ default: '.raindrop/config.json',
26
+ hidden: true,
27
+ }),
28
+ manifest: Flags.string({ default: 'raindrop.manifest', description: 'project manifest' }),
29
+ };
30
+ async run() {
31
+ const { client: catalogService, userId, organizationId: defaultOrganizationId } = await this.catalogService();
32
+ const organizationId = this.flags.impersonate ?? defaultOrganizationId;
33
+ const config = await this.loadConfig();
34
+ const resp = await catalogService.setVersionSandboxStates({
35
+ userId,
36
+ organizationId,
37
+ versions: [
38
+ {
39
+ versionId: this.args.versionId || config.versionId,
40
+ isSandboxed: true,
41
+ },
42
+ ],
43
+ });
44
+ for (const version of resp.success) {
45
+ this.log(`Set version ${version.versionId} as sandboxed.`);
46
+ }
47
+ for (const version of resp.failure) {
48
+ this.error(`Failed to set version ${version.versionId} as sandboxed.`);
49
+ }
50
+ if (resp.failure.length > 0) {
51
+ this.exit(1);
52
+ }
53
+ }
54
+ }
@@ -54,8 +54,8 @@ Start a Raindrop application.
54
54
  const resp = await catalogService.setApplicationActiveStates({
55
55
  states: [
56
56
  {
57
- applicationName: this.flags.application || appName,
58
- applicationVersionId: this.flags.version || config.versionId,
57
+ name: this.flags.application || appName,
58
+ versionId: this.flags.version || config.versionId,
59
59
  isActive: true,
60
60
  },
61
61
  ],
@@ -50,8 +50,8 @@ Stop a Raindrop application.
50
50
  const resp = await catalogService.setApplicationActiveStates({
51
51
  states: [
52
52
  {
53
- applicationName: this.flags.application,
54
- applicationVersionId: this.flags.version,
53
+ name: this.flags.application,
54
+ versionId: this.flags.version,
55
55
  isActive: false,
56
56
  },
57
57
  ],
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../../base-command.js';
2
+ export default class Check extends BaseCommand<typeof Check> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: string[];
6
+ static flags: {
7
+ root: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ manifest: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../../src/commands/build/tools/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAAiD;IAE5E,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;MAQnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,19 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../../base-command.js';
3
+ export default class Check extends BaseCommand {
4
+ static args = {};
5
+ static description = 'validate a LiquidMetal.AI raindrop.manifest';
6
+ static examples = ['<%= config.bin %> <%= command.id %>'];
7
+ static flags = {
8
+ root: Flags.string({ char: 'r', description: 'root directory', required: false, default: process.cwd() }),
9
+ manifest: Flags.string({
10
+ char: 'm',
11
+ description: 'project manifest',
12
+ required: false,
13
+ default: 'raindrop.manifest',
14
+ }),
15
+ };
16
+ async run() {
17
+ await this.loadManifest();
18
+ }
19
+ }
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../../base-command.js';
2
+ export default class Fmt extends BaseCommand<typeof Fmt> {
3
+ static args: {};
4
+ static description: string;
5
+ static examples: string[];
6
+ static flags: {
7
+ root: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ manifest: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=fmt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fmt.d.ts","sourceRoot":"","sources":["../../../../src/commands/build/tools/fmt.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,WAAW,CAAC,OAAO,GAAG,CAAC;IACtD,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAA+C;IAE1E,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;MAQnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBlC"}
@@ -0,0 +1,36 @@
1
+ import { Parser, Tokenizer, fmt } from '@liquidmetal-ai/drizzle/appify/parse';
2
+ import { Flags } from '@oclif/core';
3
+ import * as fs from 'node:fs/promises';
4
+ import * as path from 'node:path';
5
+ import { BaseCommand } from '../../../base-command.js';
6
+ export default class Fmt extends BaseCommand {
7
+ static args = {};
8
+ static description = 'format a LiquidMetal.AI raindrop.manifest';
9
+ static examples = ['<%= config.bin %> <%= command.id %>'];
10
+ static flags = {
11
+ root: Flags.string({ char: 'r', description: 'root directory', required: false, default: process.cwd() }),
12
+ manifest: Flags.string({
13
+ char: 'm',
14
+ description: 'project manifest',
15
+ required: false,
16
+ default: 'raindrop.manifest',
17
+ }),
18
+ };
19
+ async run() {
20
+ let manifestPath = this.flags.manifest;
21
+ if (this.flags.root) {
22
+ manifestPath = path.isAbsolute(this.flags.manifest)
23
+ ? this.flags.manifest
24
+ : path.join(this.flags.root, this.flags.manifest);
25
+ }
26
+ const contents = await fs.readFile(manifestPath, 'utf-8');
27
+ const tokenizer = new Tokenizer(contents);
28
+ const parser = new Parser(tokenizer);
29
+ const ast = parser.parse();
30
+ if (parser.errors.length > 0) {
31
+ this.error('errors parsing manifest', { exit: 1 });
32
+ }
33
+ const formatted = fmt(ast);
34
+ await fs.writeFile(manifestPath, formatted);
35
+ }
36
+ }
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class Unsandbox extends BaseCommand<typeof Unsandbox> {
3
+ static args: {
4
+ versionId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ impersonate: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ rainbowAuthService: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ manifest: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=unsandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsandbox.d.ts","sourceRoot":"","sources":["../../../src/commands/build/unsandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW,CAAC,OAAO,SAAS,CAAC;IAClE,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,WAAW,SAA2D;IAE7E,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;;;;MAiBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyB3B"}
@@ -0,0 +1,54 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ export default class Unsandbox extends BaseCommand {
4
+ static args = {
5
+ versionId: Args.string({ char: 'v', description: 'version to sandbox', required: false }),
6
+ };
7
+ static description = 'mark a version as unsandboxed in the Raindrop catalog';
8
+ static examples = [
9
+ `<%= config.bin %> <%= command.id %>
10
+ `,
11
+ ];
12
+ static flags = {
13
+ impersonate: Flags.string({
14
+ char: 'i',
15
+ description: 'impersonate organization',
16
+ required: false,
17
+ hidden: true,
18
+ }),
19
+ rainbowAuthService: Flags.string({
20
+ default: 'https://liquidmetal.run/api/connect',
21
+ hidden: true,
22
+ env: 'LIQUIDMETAL_RAINBOW_AUTH_SERVICE',
23
+ }),
24
+ config: Flags.string({
25
+ default: '.raindrop/config.json',
26
+ hidden: true,
27
+ }),
28
+ manifest: Flags.string({ default: 'raindrop.manifest', description: 'project manifest' }),
29
+ };
30
+ async run() {
31
+ const { client: catalogService, userId, organizationId: defaultOrganizationId } = await this.catalogService();
32
+ const organizationId = this.flags.impersonate ?? defaultOrganizationId;
33
+ const config = await this.loadConfig();
34
+ const resp = await catalogService.setVersionSandboxStates({
35
+ userId,
36
+ organizationId,
37
+ versions: [
38
+ {
39
+ versionId: this.args.versionId || config.versionId,
40
+ isSandboxed: false,
41
+ },
42
+ ],
43
+ });
44
+ for (const version of resp.success) {
45
+ this.log(`Set version ${version.versionId} as unsandboxed.`);
46
+ }
47
+ for (const version of resp.failure) {
48
+ this.error(`Failed to set version ${version.versionId} as unsandboxed.`);
49
+ }
50
+ if (resp.failure.length > 0) {
51
+ this.exit(1);
52
+ }
53
+ }
54
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/commands/build/upload.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAAiD;IAE5E,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;;;;;;MAsBnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyClC"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/commands/build/upload.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,OAAgB,IAAI,KAAM;IAE1B,OAAgB,WAAW,SAAiD;IAE5E,OAAgB,QAAQ,WAA2C;IAEnE,OAAgB,KAAK;;;;;;;;MAsBnB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwClC"}
@@ -35,7 +35,6 @@ export default class Upload extends BaseCommand {
35
35
  };
36
36
  async run() {
37
37
  const apps = await this.loadManifest();
38
- const srcDir = path.join(this.flags.root, 'src');
39
38
  const buildDir = path.isAbsolute(this.flags.output)
40
39
  ? this.flags.output
41
40
  : path.join(this.flags.root, this.flags.output);
@@ -61,7 +60,7 @@ export default class Upload extends BaseCommand {
61
60
  }
62
61
  // Per above, each application gets the same db bundle, which is
63
62
  // boneheaded. src/db is also pretty arbitrary.
64
- const dbBundle = new FileSystemBundle(path.join(srcDir, 'db'));
63
+ const dbBundle = new FileSystemBundle(path.join(this.flags.root, 'db'));
65
64
  await catalogService.uploadBundle({
66
65
  userId,
67
66
  organizationId,
@@ -1 +1 @@
1
- {"root":["../src/base-command.ts","../src/build.test.ts","../src/build.ts","../src/codegen.test.ts","../src/codegen.ts","../src/config.test.ts","../src/config.ts","../src/index.test.ts","../src/index.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/delete.ts","../src/commands/build/deploy.ts","../src/commands/build/find.ts","../src/commands/build/generate.ts","../src/commands/build/init.ts","../src/commands/build/list.ts","../src/commands/build/start.ts","../src/commands/build/stop.ts","../src/commands/build/token.ts","../src/commands/build/upload.ts","../src/commands/build/validate.ts","../src/commands/build/env/get.ts","../src/commands/build/env/set.ts"],"version":"5.6.2"}
1
+ {"root":["../src/base-command.ts","../src/build.test.ts","../src/build.ts","../src/codegen.test.ts","../src/codegen.ts","../src/config.test.ts","../src/config.ts","../src/index.test.ts","../src/index.ts","../src/commands/auth/list.ts","../src/commands/auth/login.ts","../src/commands/auth/logout.ts","../src/commands/auth/select.ts","../src/commands/build/branch.ts","../src/commands/build/delete.ts","../src/commands/build/deploy.ts","../src/commands/build/find.ts","../src/commands/build/generate.ts","../src/commands/build/init.ts","../src/commands/build/list.ts","../src/commands/build/sandbox.ts","../src/commands/build/start.ts","../src/commands/build/stop.ts","../src/commands/build/token.ts","../src/commands/build/unsandbox.ts","../src/commands/build/upload.ts","../src/commands/build/validate.ts","../src/commands/build/env/get.ts","../src/commands/build/env/set.ts","../src/commands/build/tools/check.ts","../src/commands/build/tools/fmt.ts"],"version":"5.6.2"}
@@ -122,7 +122,7 @@
122
122
  "args": {},
123
123
  "description": "create a new branch in the Raindrop catalog",
124
124
  "examples": [
125
- "<%= config.bin %> <%= command.id %> .\nCreate a new branch in the Raindrop catalog."
125
+ "<%= config.bin %> <%= command.id %> .\nCreated new branch 1234\n"
126
126
  ],
127
127
  "flags": {
128
128
  "previousVersionId": {
@@ -186,6 +186,13 @@
186
186
  "hasDynamicHelp": false,
187
187
  "multiple": false,
188
188
  "type": "option"
189
+ },
190
+ "show": {
191
+ "description": "show the current branch",
192
+ "name": "show",
193
+ "required": false,
194
+ "allowNo": false,
195
+ "type": "boolean"
189
196
  }
190
197
  },
191
198
  "hasDynamicHelp": false,
@@ -391,6 +398,14 @@
391
398
  "hasDynamicHelp": false,
392
399
  "multiple": false,
393
400
  "type": "option"
401
+ },
402
+ "amend": {
403
+ "char": "a",
404
+ "description": "amend an existing application",
405
+ "name": "amend",
406
+ "required": false,
407
+ "allowNo": false,
408
+ "type": "boolean"
394
409
  }
395
410
  },
396
411
  "hasDynamicHelp": false,
@@ -674,6 +689,72 @@
674
689
  "list.js"
675
690
  ]
676
691
  },
692
+ "build:sandbox": {
693
+ "aliases": [],
694
+ "args": {
695
+ "versionId": {
696
+ "description": "version to sandbox",
697
+ "name": "versionId",
698
+ "required": false
699
+ }
700
+ },
701
+ "description": "mark a version as sandboxed in the Raindrop catalog",
702
+ "examples": [
703
+ "<%= config.bin %> <%= command.id %>\n"
704
+ ],
705
+ "flags": {
706
+ "impersonate": {
707
+ "char": "i",
708
+ "description": "impersonate organization",
709
+ "hidden": true,
710
+ "name": "impersonate",
711
+ "required": false,
712
+ "hasDynamicHelp": false,
713
+ "multiple": false,
714
+ "type": "option"
715
+ },
716
+ "rainbowAuthService": {
717
+ "env": "LIQUIDMETAL_RAINBOW_AUTH_SERVICE",
718
+ "hidden": true,
719
+ "name": "rainbowAuthService",
720
+ "default": "https://liquidmetal.run/api/connect",
721
+ "hasDynamicHelp": false,
722
+ "multiple": false,
723
+ "type": "option"
724
+ },
725
+ "config": {
726
+ "hidden": true,
727
+ "name": "config",
728
+ "default": ".raindrop/config.json",
729
+ "hasDynamicHelp": false,
730
+ "multiple": false,
731
+ "type": "option"
732
+ },
733
+ "manifest": {
734
+ "description": "project manifest",
735
+ "name": "manifest",
736
+ "default": "raindrop.manifest",
737
+ "hasDynamicHelp": false,
738
+ "multiple": false,
739
+ "type": "option"
740
+ }
741
+ },
742
+ "hasDynamicHelp": false,
743
+ "hiddenAliases": [],
744
+ "id": "build:sandbox",
745
+ "pluginAlias": "@liquidmetal-ai/raindrop",
746
+ "pluginName": "@liquidmetal-ai/raindrop",
747
+ "pluginType": "core",
748
+ "strict": true,
749
+ "enableJsonFlag": false,
750
+ "isESM": true,
751
+ "relativePath": [
752
+ "dist",
753
+ "commands",
754
+ "build",
755
+ "sandbox.js"
756
+ ]
757
+ },
677
758
  "build:start": {
678
759
  "aliases": [],
679
760
  "args": {},
@@ -848,6 +929,72 @@
848
929
  "token.js"
849
930
  ]
850
931
  },
932
+ "build:unsandbox": {
933
+ "aliases": [],
934
+ "args": {
935
+ "versionId": {
936
+ "description": "version to sandbox",
937
+ "name": "versionId",
938
+ "required": false
939
+ }
940
+ },
941
+ "description": "mark a version as unsandboxed in the Raindrop catalog",
942
+ "examples": [
943
+ "<%= config.bin %> <%= command.id %>\n"
944
+ ],
945
+ "flags": {
946
+ "impersonate": {
947
+ "char": "i",
948
+ "description": "impersonate organization",
949
+ "hidden": true,
950
+ "name": "impersonate",
951
+ "required": false,
952
+ "hasDynamicHelp": false,
953
+ "multiple": false,
954
+ "type": "option"
955
+ },
956
+ "rainbowAuthService": {
957
+ "env": "LIQUIDMETAL_RAINBOW_AUTH_SERVICE",
958
+ "hidden": true,
959
+ "name": "rainbowAuthService",
960
+ "default": "https://liquidmetal.run/api/connect",
961
+ "hasDynamicHelp": false,
962
+ "multiple": false,
963
+ "type": "option"
964
+ },
965
+ "config": {
966
+ "hidden": true,
967
+ "name": "config",
968
+ "default": ".raindrop/config.json",
969
+ "hasDynamicHelp": false,
970
+ "multiple": false,
971
+ "type": "option"
972
+ },
973
+ "manifest": {
974
+ "description": "project manifest",
975
+ "name": "manifest",
976
+ "default": "raindrop.manifest",
977
+ "hasDynamicHelp": false,
978
+ "multiple": false,
979
+ "type": "option"
980
+ }
981
+ },
982
+ "hasDynamicHelp": false,
983
+ "hiddenAliases": [],
984
+ "id": "build:unsandbox",
985
+ "pluginAlias": "@liquidmetal-ai/raindrop",
986
+ "pluginName": "@liquidmetal-ai/raindrop",
987
+ "pluginType": "core",
988
+ "strict": true,
989
+ "enableJsonFlag": false,
990
+ "isESM": true,
991
+ "relativePath": [
992
+ "dist",
993
+ "commands",
994
+ "build",
995
+ "unsandbox.js"
996
+ ]
997
+ },
851
998
  "build:upload": {
852
999
  "aliases": [],
853
1000
  "args": {},
@@ -1202,7 +1349,99 @@
1202
1349
  "env",
1203
1350
  "set.js"
1204
1351
  ]
1352
+ },
1353
+ "build:tools:check": {
1354
+ "aliases": [],
1355
+ "args": {},
1356
+ "description": "validate a LiquidMetal.AI raindrop.manifest",
1357
+ "examples": [
1358
+ "<%= config.bin %> <%= command.id %>"
1359
+ ],
1360
+ "flags": {
1361
+ "root": {
1362
+ "char": "r",
1363
+ "description": "root directory",
1364
+ "name": "root",
1365
+ "required": false,
1366
+ "default": "/Users/ian/liquidmetal/packages/raindrop",
1367
+ "hasDynamicHelp": false,
1368
+ "multiple": false,
1369
+ "type": "option"
1370
+ },
1371
+ "manifest": {
1372
+ "char": "m",
1373
+ "description": "project manifest",
1374
+ "name": "manifest",
1375
+ "required": false,
1376
+ "default": "raindrop.manifest",
1377
+ "hasDynamicHelp": false,
1378
+ "multiple": false,
1379
+ "type": "option"
1380
+ }
1381
+ },
1382
+ "hasDynamicHelp": false,
1383
+ "hiddenAliases": [],
1384
+ "id": "build:tools:check",
1385
+ "pluginAlias": "@liquidmetal-ai/raindrop",
1386
+ "pluginName": "@liquidmetal-ai/raindrop",
1387
+ "pluginType": "core",
1388
+ "strict": true,
1389
+ "enableJsonFlag": false,
1390
+ "isESM": true,
1391
+ "relativePath": [
1392
+ "dist",
1393
+ "commands",
1394
+ "build",
1395
+ "tools",
1396
+ "check.js"
1397
+ ]
1398
+ },
1399
+ "build:tools:fmt": {
1400
+ "aliases": [],
1401
+ "args": {},
1402
+ "description": "format a LiquidMetal.AI raindrop.manifest",
1403
+ "examples": [
1404
+ "<%= config.bin %> <%= command.id %>"
1405
+ ],
1406
+ "flags": {
1407
+ "root": {
1408
+ "char": "r",
1409
+ "description": "root directory",
1410
+ "name": "root",
1411
+ "required": false,
1412
+ "default": "/Users/ian/liquidmetal/packages/raindrop",
1413
+ "hasDynamicHelp": false,
1414
+ "multiple": false,
1415
+ "type": "option"
1416
+ },
1417
+ "manifest": {
1418
+ "char": "m",
1419
+ "description": "project manifest",
1420
+ "name": "manifest",
1421
+ "required": false,
1422
+ "default": "raindrop.manifest",
1423
+ "hasDynamicHelp": false,
1424
+ "multiple": false,
1425
+ "type": "option"
1426
+ }
1427
+ },
1428
+ "hasDynamicHelp": false,
1429
+ "hiddenAliases": [],
1430
+ "id": "build:tools:fmt",
1431
+ "pluginAlias": "@liquidmetal-ai/raindrop",
1432
+ "pluginName": "@liquidmetal-ai/raindrop",
1433
+ "pluginType": "core",
1434
+ "strict": true,
1435
+ "enableJsonFlag": false,
1436
+ "isESM": true,
1437
+ "relativePath": [
1438
+ "dist",
1439
+ "commands",
1440
+ "build",
1441
+ "tools",
1442
+ "fmt.js"
1443
+ ]
1205
1444
  }
1206
1445
  },
1207
- "version": "0.0.3"
1446
+ "version": "0.0.5"
1208
1447
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@liquidmetal-ai/raindrop",
3
3
  "description": "CLI for the Raindrop platform",
4
- "version": "0.0.3",
4
+ "version": "0.0.5",
5
5
  "author": "bosgood",
6
6
  "bin": {
7
7
  "raindrop": "./bin/run.js"
@@ -56,7 +56,8 @@
56
56
  "files": [
57
57
  "/bin",
58
58
  "/dist",
59
- "/oclif.manifest.json"
59
+ "/oclif.manifest.json",
60
+ "/templates"
60
61
  ],
61
62
  "homepage": "https://github.com/LiquidMetal-AI/liquidmetal/tree/main/packages/raindrop",
62
63
  "keywords": [
@@ -0,0 +1,5 @@
1
+ import { expect, test } from 'vitest';
2
+
3
+ test('dummy test', async () => {
4
+ expect(true).toBe(true);
5
+ });
@@ -0,0 +1,8 @@
1
+ import { actors } from '@liquidmetal-ai/raindrop-framework';
2
+ import { Env } from './raindrop.gen';
3
+
4
+ export class {{ actorClassName }} extends actors.Actor<Env> {
5
+ constructor(state: DurableObjectState, env: Env) {
6
+ super(state, env);
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ import { expect, test } from 'vitest';
2
+
3
+ test('dummy test', async () => {
4
+ expect(true).toBe(true);
5
+ });
@@ -0,0 +1,8 @@
1
+ import { services } from '@liquidmetal-ai/raindrop-framework';
2
+ import { Env } from './raindrop.gen';
3
+
4
+ export default class extends services.Service<Env> {
5
+ async fetch(request: Request): Promise<Response> {
6
+ return new Response('Request received');
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ import { expect, test } from 'vitest';
2
+
3
+ test('dummy test', async () => {
4
+ expect(true).toBe(true);
5
+ });
@@ -0,0 +1,11 @@
1
+ import { observers } from '@liquidmetal-ai/raindrop-framework';
2
+ import { Env } from './raindrop.gen';
3
+
4
+ export default class extends observers.Each<Body, Env> {
5
+ async process(message: Body): Promise<void> {
6
+ console.log(JSON.stringify(message));
7
+ }
8
+ }
9
+
10
+ export interface Body {
11
+ }
@@ -0,0 +1,5 @@
1
+ import { expect, test } from 'vitest';
2
+
3
+ test('dummy test', async () => {
4
+ expect(true).toBe(true);
5
+ });
@@ -0,0 +1,8 @@
1
+ import { observers } from '@liquidmetal-ai/raindrop-framework';
2
+ import { Env } from './raindrop.gen';
3
+
4
+ export default class extends observers.Each<Body, Env> {
5
+ async process(message: observers.BucketEventNotification): Promise<void> {
6
+ console.log(JSON.stringify(message));
7
+ }
8
+ }