@amerilux/netsuite-api 0.1.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.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +209 -0
  3. package/dist/client/apiClient.d.ts +57 -0
  4. package/dist/client/apiClient.js +96 -0
  5. package/dist/client/index.d.ts +8 -0
  6. package/dist/client/index.js +6 -0
  7. package/dist/index.d.ts +76 -0
  8. package/dist/index.js +9 -0
  9. package/dist/server/apiError.d.ts +9 -0
  10. package/dist/server/apiError.js +18 -0
  11. package/dist/server/defineRestlet.d.ts +15 -0
  12. package/dist/server/defineRestlet.js +4 -0
  13. package/dist/server/defineSuitelet.d.ts +16 -0
  14. package/dist/server/defineSuitelet.js +20 -0
  15. package/dist/server/endpoint.d.ts +59 -0
  16. package/dist/server/endpoint.js +95 -0
  17. package/dist/server/fileCabinet.d.ts +14 -0
  18. package/dist/server/fileCabinet.js +40 -0
  19. package/dist/server/index.d.ts +21 -0
  20. package/dist/server/index.js +14 -0
  21. package/dist/server/rawResponse.d.ts +39 -0
  22. package/dist/server/rawResponse.js +28 -0
  23. package/dist/server/suiteletClient.d.ts +23 -0
  24. package/dist/server/suiteletClient.js +54 -0
  25. package/dist/testing/N/error.d.ts +2 -0
  26. package/dist/testing/N/error.js +6 -0
  27. package/dist/testing/N/file.d.ts +9 -0
  28. package/dist/testing/N/file.js +6 -0
  29. package/dist/testing/N/format.d.ts +8 -0
  30. package/dist/testing/N/format.js +4 -0
  31. package/dist/testing/N/https.d.ts +15 -0
  32. package/dist/testing/N/https.js +10 -0
  33. package/dist/testing/N/log.d.ts +5 -0
  34. package/dist/testing/N/log.js +5 -0
  35. package/dist/testing/N/query.d.ts +7 -0
  36. package/dist/testing/N/query.js +7 -0
  37. package/dist/testing/N/record.d.ts +14 -0
  38. package/dist/testing/N/record.js +11 -0
  39. package/dist/testing/N/runtime.d.ts +11 -0
  40. package/dist/testing/N/runtime.js +8 -0
  41. package/dist/testing/N/search.d.ts +10 -0
  42. package/dist/testing/N/search.js +8 -0
  43. package/dist/testing/N/task.d.ts +7 -0
  44. package/dist/testing/N/task.js +4 -0
  45. package/dist/testing/N/ui/serverWidget.d.ts +7 -0
  46. package/dist/testing/N/ui/serverWidget.js +7 -0
  47. package/dist/testing/N/url.d.ts +9 -0
  48. package/dist/testing/N/url.js +6 -0
  49. package/dist/testing/index.d.ts +28 -0
  50. package/dist/testing/index.js +32 -0
  51. package/dist-tooling/appReader.d.ts +12 -0
  52. package/dist-tooling/appReader.js +31 -0
  53. package/dist-tooling/cli/arguments.d.ts +9 -0
  54. package/dist-tooling/cli/arguments.js +34 -0
  55. package/dist-tooling/cli/bin.d.ts +2 -0
  56. package/dist-tooling/cli/bin.js +7 -0
  57. package/dist-tooling/cli/main.d.ts +13 -0
  58. package/dist-tooling/cli/main.js +88 -0
  59. package/dist-tooling/config.d.ts +43 -0
  60. package/dist-tooling/config.js +77 -0
  61. package/dist-tooling/controllerReader.d.ts +68 -0
  62. package/dist-tooling/controllerReader.js +267 -0
  63. package/dist-tooling/emit.d.ts +29 -0
  64. package/dist-tooling/emit.js +79 -0
  65. package/dist-tooling/file-system.d.ts +15 -0
  66. package/dist-tooling/file-system.js +53 -0
  67. package/dist-tooling/generate.d.ts +36 -0
  68. package/dist-tooling/generate.js +128 -0
  69. package/dist-tooling/index.d.ts +15 -0
  70. package/dist-tooling/index.js +8 -0
  71. package/dist-tooling/scriptsReader.d.ts +17 -0
  72. package/dist-tooling/scriptsReader.js +57 -0
  73. package/package.json +77 -0
@@ -0,0 +1,57 @@
1
+ import ts from 'typescript';
2
+ function unwrapExpression(expression) {
3
+ let current = expression;
4
+ while (ts.isSatisfiesExpression(current) || ts.isAsExpression(current) || ts.isParenthesizedExpression(current))
5
+ current = current.expression;
6
+ return current;
7
+ }
8
+ function findScriptsObject(sourceFile) {
9
+ for (const statement of sourceFile.statements) {
10
+ if (!ts.isVariableStatement(statement))
11
+ continue;
12
+ for (const declaration of statement.declarationList.declarations) {
13
+ if (!ts.isIdentifier(declaration.name) || declaration.name.text !== 'scripts' || !declaration.initializer)
14
+ continue;
15
+ const initializer = unwrapExpression(declaration.initializer);
16
+ if (ts.isObjectLiteralExpression(initializer))
17
+ return initializer;
18
+ }
19
+ }
20
+ return undefined;
21
+ }
22
+ function readEntry(property, sourceFile) {
23
+ if (!ts.isPropertyAssignment(property) || !(ts.isIdentifier(property.name) || ts.isStringLiteral(property.name)))
24
+ return undefined;
25
+ const value = unwrapExpression(property.initializer);
26
+ if (!ts.isObjectLiteralExpression(value))
27
+ return undefined;
28
+ const entry = { name: property.name.text, browser: true };
29
+ for (const member of value.properties) {
30
+ if (!ts.isPropertyAssignment(member) || !ts.isIdentifier(member.name))
31
+ continue;
32
+ const memberValue = unwrapExpression(member.initializer);
33
+ if (member.name.text === 'kind' && ts.isStringLiteral(memberValue))
34
+ entry.kind = memberValue.text;
35
+ if (member.name.text === 'browser')
36
+ entry.browser = memberValue.kind !== ts.SyntaxKind.FalseKeyword;
37
+ }
38
+ void sourceFile;
39
+ return entry;
40
+ }
41
+ export function readScriptRegistry(filePath, source) {
42
+ const sourceFile = ts.createSourceFile(filePath, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
43
+ const entries = new Map();
44
+ const scriptsObject = findScriptsObject(sourceFile);
45
+ if (!scriptsObject) {
46
+ return { entries, problems: [{ filePath, message: "declares no 'export const scripts = { ... }'." }] };
47
+ }
48
+ const problems = [];
49
+ for (const property of scriptsObject.properties) {
50
+ const entry = readEntry(property, sourceFile);
51
+ if (entry)
52
+ entries.set(entry.name, entry);
53
+ else
54
+ problems.push({ filePath, message: `scripts has an entry that is not 'name: { kind, scriptId, deployId }' (${property.getText(sourceFile).split('\n')[0]}).` });
55
+ }
56
+ return { entries, problems };
57
+ }
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@amerilux/netsuite-api",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "The API layer for a NetSuite single-page app: endpoints served by a Restlet or a Suitelet, a typed browser client, SuiteScript module stubs for tests, and a generator that writes the client module from the controllers.",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/AmeriLux-Dev/netsuite-api.git"
10
+ },
11
+ "type": "module",
12
+ "main": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ },
19
+ "./server": {
20
+ "types": "./dist/server/index.d.ts",
21
+ "default": "./dist/server/index.js"
22
+ },
23
+ "./client": {
24
+ "types": "./dist/client/index.d.ts",
25
+ "default": "./dist/client/index.js"
26
+ },
27
+ "./testing": {
28
+ "types": "./dist/testing/index.d.ts",
29
+ "default": "./dist/testing/index.js"
30
+ },
31
+ "./cli": {
32
+ "types": "./dist-tooling/index.d.ts",
33
+ "default": "./dist-tooling/index.js"
34
+ }
35
+ },
36
+ "bin": {
37
+ "netsuite-api": "dist-tooling/cli/bin.js"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "dist-tooling",
42
+ "README.md"
43
+ ],
44
+ "scripts": {
45
+ "build": "npm run build:runtime && npm run build:tooling",
46
+ "build:runtime": "tsc -p tsconfig.build.json",
47
+ "build:tooling": "tsc -p tsconfig.tooling.json",
48
+ "typecheck": "tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.tooling.json --noEmit && tsc -p tsconfig.test.json --noEmit",
49
+ "test": "vitest run",
50
+ "pack:dry-run": "npm pack --dry-run"
51
+ },
52
+ "peerDependencies": {
53
+ "typescript": ">=5.0",
54
+ "vitest": ">=3.0"
55
+ },
56
+ "peerDependenciesMeta": {
57
+ "typescript": {
58
+ "optional": true
59
+ },
60
+ "vitest": {
61
+ "optional": true
62
+ }
63
+ },
64
+ "devDependencies": {
65
+ "@hitc/netsuite-types": "^2026.2.2",
66
+ "@types/node": "^22.20.2",
67
+ "typescript": "~5.9.3",
68
+ "vitest": "^5.0.0"
69
+ },
70
+ "publishConfig": {
71
+ "tag": "latest",
72
+ "access": "public"
73
+ },
74
+ "engines": {
75
+ "node": ">=22"
76
+ }
77
+ }